Add hybrid R4R media conversation mode

This commit is contained in:
jjbrunton committed 2026-08-09 11:45:45 +01:00
1 parent 927636ec8b
commit b73e305cf3
15 files changed
+357 -35

No files matched your search

+17 -1
View File
@@ -62,6 +62,7 @@ describe('ConfigSchema', () => {
expect(result.data.reddit.subreddits[0].conversation).toEqual({
mode: 'legacy',
maxAutomatedTurns: 3,
rapportTurnsBeforeMediaAsk: 3,
});
}
});
@@ -78,6 +79,21 @@ describe('ConfigSchema', () => {
})).success).toBe(false);
});
it('accepts the hybrid mode only when rapport completes before the turn limit', () => {
expect(ConfigSchema.safeParse(minimalConfig({
reddit: { subreddits: [{
name: 'r4r',
conversation: { mode: 'r4r-media', maxAutomatedTurns: 6, rapportTurnsBeforeMediaAsk: 3 },
}] },
})).success).toBe(true);
expect(ConfigSchema.safeParse(minimalConfig({
reddit: { subreddits: [{
name: 'r4r',
conversation: { mode: 'r4r-media', maxAutomatedTurns: 3, rapportTurnsBeforeMediaAsk: 3 },
}] },
})).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({
@@ -376,7 +392,7 @@ openrouter:
const config = loadConfig();
expect(config.reddit.subreddits).toEqual([{
name: 'test-sub', enabled: true, type: 'image', tone: 'default',
conversation: { mode: 'legacy', maxAutomatedTurns: 3 },
conversation: { mode: 'legacy', maxAutomatedTurns: 3, rapportTurnsBeforeMediaAsk: 3 },
}]);
expect(config.reddit.pollIntervalMs).toBe(5000);
expect(config.openrouter.apiKey).toBe('yaml-key');