/** * [ref] A9 域模块 —— 会话外事件注入 / 唤醒([ref] §2 §3)。 * * 路由:`POST /v1/sessions/:id/notify`(external-notification-bridge 的 HTTP 入站门:live 走 core * `TaskStream.notify()`,idle 走 inbox park,下次开流 drain)、`POST /v1/sessions/:id/wake`(对 task_done * 纯 park 的「消息唤醒」——非门决策,不 allow/deny 任何 pending 动作)。 * * wake 会**烧模型**(续跑),所以它经 `ctx.legs.resumeWake` 复用 resume 家族的同一条腿(lease/CAS/写 run log * 都在腿里),而不是在本域自建第二条驱动路径。本域零可变状态。 */ import type { IncomingMessage, ServerResponse } from "node:http"; import { type RouteCtx, type RouteMatch, type RouteIdsOf } from "../route-ctx.js"; /** * 🔴 `POST /v1/sessions/:id/wake` 的匹配形与它的 `billable` 位**同住一行声明**(下面的 * `NOTIFY_WAKE_ROUTES`)。历史:2026-07-31 的缝合审查出这两件事**曾经不同步** —— 匹配形写死在本文件的 * 判路代码里、`isBillableSubmitPath` 的名单写在 `server.ts` 里,wake 从来没进过名单,于是同一条 * `driveResumeIntoRunLog` 模型腿从 `/v1/assistant/tasks/:id/resume` 进来受三道提交门管、从 wake 进来 * 一道都不受。S-146 让两件事变成同一行的两列,再想漏就得把一行拆成两处才做得到。 */ export declare function handleNotifyWake(req: IncomingMessage, res: ServerResponse, match: RouteMatch, ctx: RouteCtx): Promise; export declare const NOTIFY_WAKE_ROUTES: readonly [{ readonly id: "session-wake"; readonly pattern: RegExp; readonly label: "/v1/sessions/:id/$verb"; readonly billable: true; readonly methods: readonly ["POST"]; }, { readonly id: "session-notify"; readonly pattern: RegExp; readonly label: "/v1/sessions/:id/$verb"; readonly methods: readonly ["POST"]; }]; /** 本域可分派行的 `id` 闭集 —— handler 的 `switch` 按它判穷尽(漏一口 = 编译红)。 */ export type NotifyWakeRouteId = RouteIdsOf; //# sourceMappingURL=notify-wake.d.ts.map