@sema-agent/server 7.26.0 → 7.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/USAGE.md +29 -0
- package/dist/boot/config-center.js +5 -1
- package/dist/boot/resolve-spec.js +13 -1
- package/dist/boot/runner-deps.js +10 -0
- package/dist/config-center/facade.d.ts +2 -2
- package/dist/config-center/facade.js +1 -1
- package/dist/config-center/restart-signal.d.ts +1 -1
- package/dist/config-center/restart-signal.js +6 -1
- package/dist/config-center/skills-mcp.d.ts +28 -3
- package/dist/config-center/skills-mcp.js +64 -6
- package/dist/config-center/types.d.ts +28 -0
- package/dist/config-types.d.ts +72 -3
- package/dist/config.d.ts +2 -1
- package/dist/config.js +109 -3
- package/dist/http/route-ctx.d.ts +12 -2
- package/dist/http/routes/a2a-serve.d.ts +75 -0
- package/dist/http/routes/a2a-serve.js +710 -0
- package/dist/http/routes/capabilities.js +20 -0
- package/dist/http/routes/fleet.js +6 -1
- package/dist/http/routes/runs.d.ts +27 -1
- package/dist/http/routes/runs.js +163 -120
- package/dist/http/routes/sessions.d.ts +11 -0
- package/dist/http/routes/sessions.js +100 -3
- package/dist/http/server.d.ts +17 -0
- package/dist/http/server.js +65 -6
- package/dist/http/wire-types.d.ts +12 -1
- package/dist/main.js +17 -0
- package/dist/observability/metrics.js +11 -0
- package/dist/run-local.js +14 -1
- package/dist/task-a2a.d.ts +114 -0
- package/dist/task-a2a.js +245 -0
- package/package.json +1 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { type A2ATaskState } from "@sema-agent/core";
|
|
3
|
+
import type { A2aServeConfig } from "../../config-types.js";
|
|
4
|
+
import { type RunRecord } from "../../plugins/store-contracts.js";
|
|
5
|
+
import type { RouteCtx } from "../route-ctx.js";
|
|
6
|
+
/** 本实现说的 A2A 协议版本 —— 卡的 `protocolVersion` 与每条 RPC 响应的 `a2a-version` 头同源(单点)。 */
|
|
7
|
+
export declare const A2A_PROTOCOL_VERSION = "1.0";
|
|
8
|
+
/** 版本头名。**读**请求侧的它只是诊断材料(开集容忍:认识与否都照常答),**写**响应侧的它是我们自报
|
|
9
|
+
* 家门 —— 设计稿 §4-1 版本槽。 */
|
|
10
|
+
export declare const A2A_VERSION_HEADER = "a2a-version";
|
|
11
|
+
/** 卡上的一条 skill —— **投影**,不是配置形。`scenario` 在这里结构性地不存在(不是「记得别加」,是
|
|
12
|
+
* 这个类型里没有那个键):自动枚举内部场景名给公网是设计稿 §3.1 唯一点名禁止的事。 */
|
|
13
|
+
interface A2aCardSkill {
|
|
14
|
+
id: string;
|
|
15
|
+
name: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
18
|
+
/** A2A AgentCard 的 server 铸面。**具名字段 + 允许未来 additive**(设计稿 §4-5 数据形扩展槽)。 */
|
|
19
|
+
interface A2aAgentCard {
|
|
20
|
+
name: string;
|
|
21
|
+
description?: string;
|
|
22
|
+
protocolVersion: string;
|
|
23
|
+
url: string;
|
|
24
|
+
preferredTransport: "JSONRPC";
|
|
25
|
+
skills: A2aCardSkill[];
|
|
26
|
+
}
|
|
27
|
+
/** 配置 → 卡(纯投影,零 I/O、零存量读)。`build*`:返回纯数据。 */
|
|
28
|
+
export declare function buildAgentCard(serve: A2aServeConfig): A2aAgentCard;
|
|
29
|
+
/**
|
|
30
|
+
* 域入口①:公开发现面。**位置即契约** —— 必须挂在 `server.ts` 的全局 service-credential 门**之前**
|
|
31
|
+
* (R-11「公网匿名可发现」;挂在门后等于要凭据才能发现,协商第一步就断)。
|
|
32
|
+
*
|
|
33
|
+
* 命名:本模块有**两个**域入口(卡在凭据门外、RPC 在门内),而 `route-shape-roster` 层E 的判据是
|
|
34
|
+
* 「域名词干 ⊆ 某个 capability 位名」。两个名字都取成 `capabilities.a2aServe` 的**子串**
|
|
35
|
+
* (`a2aServe` / `a2a`),于是两条都被那道门如实认出来 —— 而不是去放宽那道门的判据。
|
|
36
|
+
*/
|
|
37
|
+
export declare function handleA2aServe(req: IncomingMessage, res: ServerResponse, url: string, ctx: RouteCtx): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* 🔴 **反枚举不变式(A-041)在本模块的执行点**:`tasks/get` 的「这条 task 不存在」与「这条 task 不是
|
|
40
|
+
* 你的」必须**逐字节**同形 —— 同一个 code、同一条 message、同一个(缺席的)data。两臂共用**这一个**
|
|
41
|
+
* 常量就是那条不变式的机制支撑:任何一臂想说得更具体,都得先改这里,而改这里会被
|
|
42
|
+
* `a2a-serve-rpc.test.ts` 的逐字节比对当场钉住。
|
|
43
|
+
*
|
|
44
|
+
* (同族先例:`route-ctx.ts` 的 `RUN_NOT_FOUND_MESSAGE` —— #262 抓到的正是两臂**文案长度**不同就足以
|
|
45
|
+
* 枚举他人 run id 的存在性。JSON-RPC 侧一模一样,只是载体从 HTTP body 换成了 error 对象。)
|
|
46
|
+
*/
|
|
47
|
+
export declare const A2A_TASK_NOT_FOUND_MESSAGE = "task not found";
|
|
48
|
+
/**
|
|
49
|
+
* run 行 → A2A 任务态。词表槽(设计稿 §4-2):我们是铸点,只发 core `A2A_TASK_STATES` 九词闭集。
|
|
50
|
+
*
|
|
51
|
+
* 判据分工:park 与否问**属主谓词**;其余按 {@link A2A_STATE_BY_RUN_STATUS} 投影(那张表的
|
|
52
|
+
* `satisfies` 是词表增删两向的编译期执行点)。
|
|
53
|
+
*
|
|
54
|
+
* park → `input-required` 的语义:协议的「等调用方给点什么」在本引擎被**收窄**成「等一个审批决议」,
|
|
55
|
+
* 而那个决议走的是持久审批口、不是一条回信 —— 与 core 对自己 `parked` 行的裁词同源。A2A 调用方因此
|
|
56
|
+
* **不能**靠再发一条 message 解开它(附录 C.3 的表里成文写着这句)。
|
|
57
|
+
*/
|
|
58
|
+
export declare function a2aStateForRun(run: Pick<RunRecord, "status" | "errorCode">, stale: boolean): A2ATaskState;
|
|
59
|
+
/**
|
|
60
|
+
* 域入口②:JSON-RPC 端点。**位置即契约** —— 挂在全局 service-credential 门**之后**(R-11「持服务凭据
|
|
61
|
+
* 才可调」),且在 drain / model-roster-pending 两道 503 门之后(`/v1/a2a` 进 `isBillableSubmitPath`:
|
|
62
|
+
* `message/send` 会烧模型)。
|
|
63
|
+
*
|
|
64
|
+
* ⚠️ 代价成文:端点是**单 URL** 的(卡上只能公告一个 `url`),所以排空期 `tasks/get` 也一并 503。
|
|
65
|
+
* 方向取「宁紧」—— 让一台正在下线的副本开新模型工作,正是那几道门存在的全部理由;而读面的补偿是
|
|
66
|
+
* 现成的:行是 durable 的,调用方按 A2A 的传输层重试语义换一台副本读同一条行即可。
|
|
67
|
+
*
|
|
68
|
+
* 命名(`handleA2a`,与 `handleA2aServe` 同族):见域入口①的命名注 —— 两个名字都取成
|
|
69
|
+
* `capabilities.a2aServe` 的子串,好让 `route-shape-roster` 层E 如实认出它们。
|
|
70
|
+
*/
|
|
71
|
+
export declare function handleA2a(req: IncomingMessage, res: ServerResponse, url: string, ctx: RouteCtx): Promise<boolean>;
|
|
72
|
+
/** 九词闭集的对外可见锚(测试用它证明我们只发闭集词;也让「加一个自造词」在这里就被看见)。 */
|
|
73
|
+
export declare const A2A_SERVE_TASK_STATES: readonly A2ATaskState[];
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=a2a-serve.d.ts.map
|