33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import type { Config, CronJobConfig } from '../config/schema.js';
|
|
|
|
/**
|
|
* Builds config-derived cron jobs that are not manually listed under automation.cron.
|
|
* This keeps opinionated automation features opt-in while reusing the existing CronScheduler.
|
|
*/
|
|
export function buildPresetCronJobs(config: Config): CronJobConfig[] {
|
|
const jobs: CronJobConfig[] = [];
|
|
const existingNames = new Set(config.automation.cron.map((job) => job.name));
|
|
|
|
const briefing = config.automation.daily_briefing;
|
|
if (briefing.enabled) {
|
|
if (!briefing.output) {
|
|
console.warn('automation.daily_briefing.enabled=true but output is missing; skipping daily briefing job');
|
|
} else if (existingNames.has(briefing.name)) {
|
|
console.warn(`automation.daily_briefing name '${briefing.name}' conflicts with automation.cron; skipping preset job`);
|
|
} else {
|
|
jobs.push({
|
|
name: briefing.name,
|
|
schedule: briefing.schedule,
|
|
message: briefing.prompt,
|
|
output: briefing.output,
|
|
enabled: true,
|
|
timezone: briefing.timezone,
|
|
model_tier: briefing.model_tier,
|
|
once_per_local_day: briefing.dedupe_per_local_day,
|
|
});
|
|
}
|
|
}
|
|
|
|
return jobs;
|
|
}
|