/** * [ref] A9 域模块 —— 同步提交面 `POST /v1/tasks` / `POST /v1/tasks/stream`(+ [ref] B3 三腿具名化)。 * * 一条路由两条腿:`/v1/tasks/stream` = SSE 活流(单次尝试,verify/cascade 在此 400);`/v1/tasks` = 同步等结果 * (verify / cascade / plain 三选一)。两腿共享同一个 Idempotency-Key 包装:先 `peek` 重放(含 IN-FLIGHT 的 * promise),未命中才进 `idemCache.run` —— 在飞的 promise **先于**工作落缓存,于是重试撞上仍在跑的原始流时 * 只会重放,不会开第二条计费流。 * * ── B3(本批):原来这里是两个**匿名** `idemCache.run` 回调(活流腿 703 行、同步腿 128 行),外加同步腿里 * 一处三层三元把 verify/cascade/plain 三条驱动腿挤在五行里。本批把它们提为具名闭包: * · {@link handleTasksBody} 内的 `runStreamSubmitLeg` —— plain-stream 腿(原 703 行匿名体); * · `runSyncSubmitLeg` —— 同步腿(原 128 行匿名体); * · 同步腿内 `verifyLeg` / `cascadeLeg` / `plainLeg` —— 三条模型驱动腿,判别顺序与短路语义逐字不变。 * 提名**只改名字不改行为**:闭包捕获的自由变量、语句顺序、`cancelledViaVerb` 的 first-writer-wins 取值时点 * ([1.207 codex H2]:在 `inflightRuns` 身份守卫内先取后删)、settle/registry 生命周期注释全部随代码原样迁移。 * * 与 runs 域共用 `ctx.legs.prepareSpec`(读体/校验/建 spec 的同一条前段)。 */ import type { IncomingMessage, ServerResponse } from "node:http"; import type { RouteCtx, RouteMatch, RouteIdsOf } from "../route-ctx.js"; /** 路由体 = 从 `server.ts` 的 `handle()` 里**整段剪切**过来的原文(A9 的唯一改动:去缩进;B3 的唯一改动: * 给两个匿名 `idemCache.run` 回调与三条驱动腿起名)。裸 `return;` = 「本域已应答」;走到函数尾才是「没匹配上」。 */ export declare function handleTasks(req: IncomingMessage, res: ServerResponse, match: RouteMatch, ctx: RouteCtx): Promise; export declare const TASKS_ROUTES: readonly [{ readonly id: "tasks-submit"; readonly path: "/v1/tasks"; readonly billable: true; readonly methods: readonly ["POST"]; }, { readonly id: "tasks-submit-stream"; readonly path: "/v1/tasks/stream"; readonly billable: true; readonly methods: readonly ["POST"]; }]; /** 本域可分派行的 `id` 闭集 —— handler 的 `switch` 按它判穷尽(漏一口 = 编译红)。 */ export type TasksRouteId = RouteIdsOf; //# sourceMappingURL=tasks.d.ts.map