import type { EnrichmentClient, Logger, SourceAdapter } from "@onenomad/przm-cortex-core"; import type { LLMRouter } from "@onenomad/przm-cortex-llm-core"; import type { EngramClient } from "./clients/engram.js"; import type { HeartbeatWriter } from "./heartbeat.js"; import type { LoadedTaxonomy } from "./taxonomy.js"; export interface SchedulerOptions { engram: EngramClient; /** Optional in Cortex 0.2 — adapters that don't need LLM enrichment * still run on schedule when this is undefined. */ llmRouter?: LLMRouter; /** Optional — Cortex Enrichment Protocol callback for pipelines * when there's no local LLM. */ enrichment?: EnrichmentClient; /** Optional — pipelines use this for mention/owner enrichment. */ taxonomy?: LoadedTaxonomy; logger: Logger; /** * Optional — when set, sync calls pass this as `since`. In v1 we * don't persist per-adapter cursors yet, so every scheduler-driven * run is either a full sweep (bounded by the adapter's own * maxItemsPerRun) or `since = lastRunAt` (kept in memory only). */ rememberLastRun?: boolean; /** * Optional — when provided, the scheduler reports per-run stats to * the heartbeat writer. `cortex status` reads the resulting file. */ heartbeat?: HeartbeatWriter; } export interface Scheduler { register(adapter: SourceAdapter, cronExpr: string | undefined): void; start(): Promise; stop(): Promise; /** * Remove every registered entry. Used by the hot-reload path so a * fresh config doesn't pile new entries on top of the old ones. * Callers should `stop()` first to cancel live timers. */ clear(): void; /** Number of currently-registered adapter entries. */ size(): number; } export declare function createScheduler(opts: SchedulerOptions): Scheduler; //# sourceMappingURL=scheduler.d.ts.map