/** * design/105 — Scheduler 工具壳(CronCreate / CronDelete / CronList + ScheduleWakeup)。模型可调,把未来意图交给注入的 * daemon backend(`env` 实现 {@link SchedulerCapability})。**core 薄壳**:工具只做 ① cron expr 白名单校验 * ② 组装 `intent`(模型面) + `SchedulerContext`(Runner-held,闭包捕获 principal/scope/sessionId) ③ 调 * `env.schedule/cancel/list`。持久化/触发/起新 task 全在 daemon。 * design/136 §2.2(BREAKING 去超集批):`Sleep` 工具已撤除(CC 无此工具;等待抽象=Monitor/后台通知,定时再醒 * =CronCreate delay/at——纯语法糖零缺口)。旧名调用收 TOMBSTONED_TOOLS 迁移文案;daemon 已排的 `label:"sleep"` * delayed intent 照常触发(daemon 只存 prompt+when,零迁移)。 * * 挂载:prepare-task 在 `hasScheduler(executionEnv)` 时调 {@link createSchedulerTools}(需 Runner-held 上下文,故不在 * `createHandsToolkit` —— 与 present_plan/AskUserQuestion 同:这些工具都在 prepare-task 单独挂,那里有 spec.principal)。 */ import type { AgentTool, ExecutionEnv } from "../internal/harness.js"; export declare const SCHEDULE_WAKEUP_TOOL_NAME = "ScheduleWakeup"; /** CronCreate-based autonomous-loop 哨兵(CC `Ldt`)。loop runtime(部署侧)在 fire 时解析回 autonomous-loop 指令。 */ export declare const AUTONOMOUS_LOOP_SENTINEL = "<>"; /** ScheduleWakeup(dynamic-pacing)哨兵(CC `ePe`)——ScheduleWakeup 一律用 `-dynamic` 变体。 */ export declare const AUTONOMOUS_LOOP_DYNAMIC_SENTINEL = "<>"; /** Runner-held 上下文 + run-stop 出口,工具工厂闭包捕获(模型触不到)。 */ export interface SchedulerToolContext { /** 越权隔离键(Runner 填 sessionId ?? principal ?? taskId)。 */ scope: string; principal?: string; sessionId?: string; taskConfig?: unknown; /** `ctx.requestStopAfterTurn`(干净结束本 run 的 runner 原语出口)。design/136 §2.2:Sleep 撤除后本槽位 * 保留(human-suspend saga 等共用同一 runner 原语;prepare-task 仍注入)——当前 scheduler 三件不消费。 */ requestStopAfterTurn?: () => void; } /** * cron 深校验(CC CronCreateTool.validateInput:82-96 parity):数值域(如 `61 * * * *` 分钟越域)+ 永不触发 * (如 `31 2 30 2 *` 二月 30 日)。返回给模型自纠的错误句;合法返回 null。6 段(带秒)校验秒域后按尾 5 段走。 * * 永不触发判定:标准 cron OR 语义(CC utils/cron.ts:150-158)—— dom 与 dow **都**受限时任一匹配即触发,而任何受限 * dow 每周都出现 → 必触发。所以唯一永不触发形态 = dom 受限 + dow 通配 + dom 值全部超出所有排程月份的天数上限。 */ export declare function cronScheduleError(expr: string): string | null; /** * cron → 人话(CC utils/cron.ts cronToHuman:218-308 类比,收窄到常见形态):"star/N * * * *"→"every N minutes"、 * "M star/N * * *"→"every N hours"、`M H * * *`→"daily at H:MM"、`M H * * D`→"weekly on at H:MM"、 * `M H * * 1-5`→"weekdays at H:MM";其余原样返回(调用方以 `human !== expr` 判断是否可译)。带秒 6 段取尾 5 段。 */ export declare function cronToHuman(expr: string): string; /** * 构建三个 scheduler 工具(仅当 `env` 暴露 {@link SchedulerCapability} 且 `supported:true`)。否则返回 `[]`(INERT)。 */ export declare function createSchedulerTools(env: ExecutionEnv, ctx: SchedulerToolContext): AgentTool[]; //# sourceMappingURL=scheduler-tools.d.ts.map