Add per-subreddit R4R conversation modes
This commit is contained in:
1 parent
23d4c3a320
commit
0f76bcf59a
14 files changed
+343
-24
No files matched your search
+27
-1
@@ -55,6 +55,29 @@ describe('ConfigSchema', () => {
|
||||
if (result.success) expect(result.data.reddit.subreddits[0].enabled).toBe(true);
|
||||
});
|
||||
|
||||
it('defaults existing subreddit entries to legacy conversation behaviour', () => {
|
||||
const result = ConfigSchema.safeParse(minimalConfig({ reddit: { subreddits: ['test'] } }));
|
||||
expect(result.success).toBe(true);
|
||||
if (result.success) {
|
||||
expect(result.data.reddit.subreddits[0].conversation).toEqual({
|
||||
mode: 'legacy',
|
||||
maxAutomatedTurns: 3,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
it('accepts r4r and manual behaviour while enforcing the autonomous turn limit', () => {
|
||||
expect(ConfigSchema.safeParse(minimalConfig({
|
||||
reddit: { subreddits: [{ name: 'r4r', conversation: { mode: 'r4r', maxAutomatedTurns: 12 } }] },
|
||||
})).success).toBe(true);
|
||||
expect(ConfigSchema.safeParse(minimalConfig({
|
||||
reddit: { subreddits: [{ name: 'r4r', conversation: { mode: 'manual' } }] },
|
||||
})).success).toBe(true);
|
||||
expect(ConfigSchema.safeParse(minimalConfig({
|
||||
reddit: { subreddits: [{ name: 'r4r', conversation: { mode: 'r4r', maxAutomatedTurns: 21 } }] },
|
||||
})).success).toBe(false);
|
||||
});
|
||||
|
||||
it('accepts valid tone values', () => {
|
||||
for (const tone of ['default', 'dominant', 'submissive', 'playful', 'direct', 'gentle', 'kink-friendly', 'teasing']) {
|
||||
const result = ConfigSchema.safeParse({
|
||||
@@ -351,7 +374,10 @@ openrouter:
|
||||
`);
|
||||
|
||||
const config = loadConfig();
|
||||
expect(config.reddit.subreddits).toEqual([{ name: 'test-sub', enabled: true, type: 'image', tone: 'default' }]);
|
||||
expect(config.reddit.subreddits).toEqual([{
|
||||
name: 'test-sub', enabled: true, type: 'image', tone: 'default',
|
||||
conversation: { mode: 'legacy', maxAutomatedTurns: 3 },
|
||||
}]);
|
||||
expect(config.reddit.pollIntervalMs).toBe(5000);
|
||||
expect(config.openrouter.apiKey).toBe('yaml-key');
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user