export type RoutineKind = "user-brief" | "background"; export interface RoutineConfig { id: string; name: string; kind: RoutineKind; /** Always "workflow" in v0.2.4+. Kept as field for forward extensibility. */ channel: string; /** System thread inside #workflow for background routines. user-brief posts to channel root. */ threadName?: string; emoji: string; memoryTargets: string[]; } /** * v0.8.5 routine layout — four entries total: * - 2 user-facing briefs (morning, evening) post to works- * - 1 PM-compaction (background, context management) * - 1 system-housekeeping (silent infra — archive rotation + log retention) * * Removed in v0.8.5 (was v0.2.4 background analysis layer): `signal-scan`, * `experiment-check`, `weekly-review`, `v06-retrospective-stats`. They were * speculative analysis routines that required the user to author a product * brief / experiment ledger before producing useful output — friction without * payoff. Domain-specific analysis should ship as user-authored workflows or * goals, not as default-on cron jobs. * * Merged in v0.8.5: `archive-rotate` + `log-rotate` → `system-housekeeping`. * Both are deterministic midnight cleanup jobs (no LLM, no user notification); * a single cron + a single inline dispatch reduces UI clutter without losing * isolation (the dispatch wraps each cleanup call in try/catch). * * Cron times are resolved at scheduler startup from workspace.yaml * (`briefings` for morning/evening). */ export declare const ROUTINES: RoutineConfig[]; /** Load routine prompt from schedules/{id}.md (v1.1 rename; resolver * preserves legacy `.solosquad/routines/` overrides — see getSchedulesDir). */ export declare function loadRoutinePrompt(routineId: string): string; /** Convert "HH:MM" into a node-cron expression for daily execution. */ export declare function timeToDailyCron(hhmm: string): string; /** Convert ("sunday", "20:00") into a node-cron weekly expression. */ export declare function weeklyToCron(day: string, hhmm: string): string;