feat: expand outreach targeting and messaging
This commit is contained in:
1 parent
7defff422d
commit
d0a8bd0e2f
40 files changed
+890
-82
No files matched your search
@@ -1,6 +1,11 @@
|
||||
import { Router } from 'express';
|
||||
import type { WebContext } from '../context.js';
|
||||
import { ConfigSchema, SubredditConfigSchema, type SubredditConfig } from '../../config/index.js';
|
||||
import {
|
||||
ConfigSchema,
|
||||
PhysiqueTargetingSchema,
|
||||
SubredditConfigSchema,
|
||||
type SubredditConfig,
|
||||
} from '../../config/index.js';
|
||||
import { TONE_KEYS } from '../../config/tone-profiles.js';
|
||||
import { z } from 'zod';
|
||||
|
||||
@@ -75,6 +80,16 @@ export function createConfigRouter(ctx: WebContext): Router {
|
||||
res.status(400).json({ error: 'Invalid advanced configuration', detail: parsedAdvanced.error.format() });
|
||||
return;
|
||||
}
|
||||
const parsedPhysiqueTargeting = updates.reddit?.physiqueTargeting === undefined
|
||||
? null
|
||||
: PhysiqueTargetingSchema.safeParse(updates.reddit.physiqueTargeting);
|
||||
if (parsedPhysiqueTargeting && !parsedPhysiqueTargeting.success) {
|
||||
res.status(400).json({
|
||||
error: 'Invalid physique targeting configuration',
|
||||
detail: parsedPhysiqueTargeting.error.format(),
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (updates.rateLimit) {
|
||||
if (typeof updates.rateLimit.minDelayBetweenMessagesMs === 'number') {
|
||||
@@ -113,6 +128,9 @@ export function createConfigRouter(ctx: WebContext): Router {
|
||||
&& updates.reddit.maxReadyCandidates <= 500) {
|
||||
ctx.runtimeConfig.reddit.maxReadyCandidates = updates.reddit.maxReadyCandidates;
|
||||
}
|
||||
if (parsedPhysiqueTargeting?.success) {
|
||||
Object.assign(ctx.runtimeConfig.reddit.physiqueTargeting, parsedPhysiqueTargeting.data);
|
||||
}
|
||||
}
|
||||
|
||||
// Mirror into the loaded config so getStats reflects new values.
|
||||
@@ -123,6 +141,7 @@ export function createConfigRouter(ctx: WebContext): Router {
|
||||
ctx.config.reddit.prioritizeRecentPosts = ctx.runtimeConfig.reddit.prioritizeRecentPosts;
|
||||
ctx.config.reddit.recentWindowMinutes = ctx.runtimeConfig.reddit.recentWindowMinutes;
|
||||
ctx.config.reddit.maxReadyCandidates = ctx.runtimeConfig.reddit.maxReadyCandidates;
|
||||
Object.assign(ctx.config.reddit.physiqueTargeting, ctx.runtimeConfig.reddit.physiqueTargeting);
|
||||
|
||||
if (parsedSubreddits?.success) {
|
||||
const next: SubredditConfig[] = parsedSubreddits.data;
|
||||
|
||||
Reference in new issue
Block a user