/** * [ref] A9 域模块 —— 能力/场景/模型目录只读面。 * * 路由:`GET /v1/capabilities/scenarios/:name`、`GET /v1/capabilities`、`GET /v1/models`。 * 三条都在全局 service-credential 门**之后**(config 面非密只读),装配表里的位置必须保住这一点。 * 本域零可变状态;deps 面宽(能力布尔逐条对应各路由的 501 门,单源不许漂移)但全是存在性只读。 */ import type { IncomingMessage, ServerResponse } from "node:http"; import { type McpProbeLocal } from "../../capabilities/mcp-probe.js"; import type { RouteCtx, RouteMatch, RouteIdsOf } from "../route-ctx.js"; /** 路由体 = 从 `server.ts` 的 `handle()` 里**整段剪切**过来的原文(唯一改动:统一去缩进两格)。裸 `return;` * 的语义原样 =「本域已应答」;走到函数尾才是「没匹配上」,置 `miss.fell` 交回装配器继续下一个域。 * 跨域的东西(deps / 助手 / 单域状态 / 每请求量)一律在首行解构出来,于是下面每一行都逐字不变。 */ /** * S-481 —— 本域独占的运行期状态(每 `createHttpServer` 实例一份)。**模块级不行**:测试里一个进程建几十台 * server,一张模块级缓存会把 A 台的探测读数发给 B 台,一只模块级限速窗会让第二台起来就被第一台的计数挡住。 */ export interface CapabilitiesLocal { readonly mcpProbe: McpProbeLocal; } export declare function createCapabilitiesLocal(): CapabilitiesLocal; export declare function handleCapabilities(req: IncomingMessage, res: ServerResponse, match: RouteMatch, ctx: RouteCtx): Promise; export declare const CAPABILITIES_ROUTES: readonly [{ readonly id: "models"; readonly path: "/v1/models"; readonly methods: readonly ["GET"]; }, { readonly id: "capabilities"; readonly path: "/v1/capabilities"; readonly methods: readonly ["GET"]; }, { readonly id: "capability-scenario"; readonly pattern: RegExp; readonly label: "/v1/capabilities/scenarios/:name"; readonly methods: readonly ["GET"]; }, { readonly id: "capability-mcp"; readonly path: "/v1/capabilities/mcp"; readonly methods: readonly ["GET"]; }, { readonly id: "capability-mcp-probe"; readonly path: "/v1/capabilities/mcp/probe"; readonly methods: readonly ["POST"]; }]; /** 本域可分派行的 `id` 闭集 —— handler 的 `switch` 按它判穷尽(漏一口 = 编译红)。 */ export type CapabilitiesRouteId = RouteIdsOf; //# sourceMappingURL=capabilities.d.ts.map