Add per-subreddit R4R conversation modes

This commit is contained in:
jjbrunton committed 2026-08-09 11:30:32 +01:00
1 parent 23d4c3a320
commit 0f76bcf59a
14 files changed
+343 -24

No files matched your search

+27 -1
View File
@@ -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');
});