@zhin.js/a2a 2.0.0 → 2.0.2
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/CHANGELOG.md +35 -0
- package/lib/index.d.ts +21 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +10 -2
- package/lib/index.js.map +1 -1
- package/package.json +7 -9
- package/src/index.ts +33 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
# @zhin.js/a2a
|
|
2
2
|
|
|
3
|
+
## 2.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- zhin.js@5.0.2
|
|
8
|
+
- @zhin.js/core@1.4.2
|
|
9
|
+
- @zhin.js/agent@1.0.7
|
|
10
|
+
|
|
11
|
+
## 2.0.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- 3e925d0: 删除 legacy 插件包 `@zhin.js/host-api` 与 `@zhin.js/host-router`(legacy `usePlugin` 插件栈下线):
|
|
16
|
+
|
|
17
|
+
- **包删除**:`@zhin.js/host-api`、`@zhin.js/host-router` 从仓库移除,后续版本不再发布。Console / HTTP Host 由 `@zhin.js/cli`(composition root)用 `@zhin.js/host-http` + `@zhin.js/pagemanager` 自动装配,用户无需、也不能再安装这两个插件。
|
|
18
|
+
- **zhin.js**:移除对 host-api / host-router 的 optional peer 依赖;`shutdown.ts` 不再动态导入 host-api 的 `stopSseHub`(SSE Hub 生命周期由 CLI 装配层管理)。
|
|
19
|
+
- **@zhin.js/mcp / @zhin.js/a2a**:移除对 host-router 的 peer 依赖;legacy `usePlugin` 入口改为本地结构类型(运行时走 `./runtime` 子路径,由 CLI 经 host-http 装配,行为不变)。
|
|
20
|
+
- **@zhin.js/cli**:`config check` / `doctor` / `setup` 不再检查或写入 host 插件;全局实例(~/.zhin)脚手架不再声明 host-api / host-router。
|
|
21
|
+
- **@zhin.js/scaffold-wizard**:移除 `CONSOLE_HOST_PLUGINS` 导出与 `ConsoleConfigDiagnosis.missingHostPlugins` 字段;`zhin-stack-deps` 不再含 host 包;`stack-versions.generated.json` 同步移除。
|
|
22
|
+
- **@zhin.js/agent**:稳定性监控移除 host-api SSE 订阅数采集(`collectStabilityMetrics` 不再支持 `includeSse`,快照不再有 `sseSubscribers`)。
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [cdf64e7]
|
|
25
|
+
- Updated dependencies [2d0a159]
|
|
26
|
+
- Updated dependencies [5691aba]
|
|
27
|
+
- Updated dependencies [078e3f7]
|
|
28
|
+
- Updated dependencies [43485a9]
|
|
29
|
+
- Updated dependencies [f0ec5ab]
|
|
30
|
+
- Updated dependencies [3e925d0]
|
|
31
|
+
- Updated dependencies [fa66c4c]
|
|
32
|
+
- Updated dependencies [6cb6152]
|
|
33
|
+
- @zhin.js/agent@1.0.6
|
|
34
|
+
- @zhin.js/host-http@1.0.3
|
|
35
|
+
- zhin.js@5.0.1
|
|
36
|
+
- @zhin.js/core@1.4.1
|
|
37
|
+
|
|
3
38
|
## 2.0.0
|
|
4
39
|
|
|
5
40
|
### Patch Changes
|
package/lib/index.d.ts
CHANGED
|
@@ -1,2 +1,23 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
interface RouterContext {
|
|
3
|
+
req: IncomingMessage;
|
|
4
|
+
res: ServerResponse;
|
|
5
|
+
request: {
|
|
6
|
+
body?: unknown;
|
|
7
|
+
};
|
|
8
|
+
method: string;
|
|
9
|
+
params: Record<string, string | string[] | undefined>;
|
|
10
|
+
respond: boolean;
|
|
11
|
+
}
|
|
12
|
+
interface Router {
|
|
13
|
+
all(path: string, handler: (ctx: RouterContext) => void | Promise<void>): void;
|
|
14
|
+
}
|
|
15
|
+
declare module '@zhin.js/core' {
|
|
16
|
+
namespace Plugin {
|
|
17
|
+
interface Contexts {
|
|
18
|
+
router: Router;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
1
22
|
export {};
|
|
2
23
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAmBjE,UAAU,aAAa;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,MAAM;IACd,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChF;AAED,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,MAAM,EAAE,MAAM,CAAC;SAChB;KACF;CACF"}
|
package/lib/index.js
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
* * /a2a/{agentName}/rest/*
|
|
8
8
|
*/
|
|
9
9
|
import { formatCompact, usePlugin } from '@zhin.js/core';
|
|
10
|
-
import { paramPath } from '@zhin.js/host-router';
|
|
11
10
|
import { DefaultRequestHandler, InMemoryTaskStore, } from '@a2a-js/sdk/server';
|
|
12
11
|
import { AGENT_CARD_PATH } from '@a2a-js/sdk';
|
|
13
12
|
import { getAgentRuntimeRegistry } from '@zhin.js/agent';
|
|
@@ -16,6 +15,15 @@ import { verifyA2aBearer } from './auth.js';
|
|
|
16
15
|
import { buildAgentCardForBinding, listExposableAgentNames } from './card-builder.js';
|
|
17
16
|
import { ZhinA2AExecutor } from './agent-executor.js';
|
|
18
17
|
import { handleAgentCard, handleJsonRpc, handleRest } from './http-handlers.js';
|
|
18
|
+
/** 路径参数(含 `*name` 通配时可能返回 string[])。 */
|
|
19
|
+
function paramPath(ctx, key) {
|
|
20
|
+
const v = ctx.params[key];
|
|
21
|
+
if (v === undefined || v === null)
|
|
22
|
+
return '';
|
|
23
|
+
if (Array.isArray(v))
|
|
24
|
+
return v.map(String).join('/');
|
|
25
|
+
return String(v);
|
|
26
|
+
}
|
|
19
27
|
const A2A_ROUTE = '/a2a/:agentName/:tail+';
|
|
20
28
|
const plugin = usePlugin();
|
|
21
29
|
const { root, useContext, logger, onDispose } = plugin;
|
|
@@ -76,7 +84,7 @@ useContext('router', (router) => {
|
|
|
76
84
|
if (ai?.isReady())
|
|
77
85
|
rebuildAgentStacks(ai);
|
|
78
86
|
const a2aHandler = async (ctx) => {
|
|
79
|
-
const agentName = decodeURIComponent(ctx
|
|
87
|
+
const agentName = decodeURIComponent(paramPath(ctx, 'agentName'));
|
|
80
88
|
const parsed = parseA2aTail(paramPath(ctx, 'tail'));
|
|
81
89
|
if (!parsed) {
|
|
82
90
|
sendJsonViaRawRes(ctx, 404, { error: 'Not found' });
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGzD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAkB,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAyBhF,wCAAwC;AACxC,SAAS,SAAS,CAAC,GAAkB,EAAE,GAAW;IAChD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAQD,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAE3C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;AAEvD,IAAI,WAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;AACnD,IAAI,SAAS,GAAG,EAAE,CAAC;AACnB,IAAI,aAAa,GAAG,uBAAuB,CAAC;AAE5C,SAAS,kBAAkB,CAAC,EAAa;IACvC,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC;IACzC,aAAa,GAAG,oBAAoB,CAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAkE,iBAAiB,CAAC,IAAI,EAAE,CACrH,CAAC;IACF,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAE9C,KAAK,MAAM,SAAS,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY;YAAE,SAAS;QAErC,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC;YACnC,SAAS;YACT,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;YACpC,cAAc,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;SACrD,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,qBAAqB,CAC9C,IAAI,EACJ,IAAI,iBAAiB,EAAE,EACvB,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,WAAW,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,UAAU,KAAK,eAAe,eAAe,EAAE,IAAI,UAAU,KAAK,6BAA6B,EAAE,CAAC;QACpG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5D,MAAM,WAAW,GAAG,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,EAAyB;IAC7C,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE;QAAE,OAAO;IACnD,kBAAkB,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAkB,EAAE,MAAc,EAAE,IAAa;IAC1E,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACpB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAClE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,UAAU,CAAC,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE;IACtC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,aAAa,EAAE,GAAG,CAAkF,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC/I,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;IACxC,aAAa,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,CAAC;IACtD,IAAI,EAAE,EAAE,OAAO,EAAE;QAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE1C,MAAM,UAAU,GAAG,KAAK,EAAE,GAAkB,EAAiB,EAAE;QAC7D,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAA0B,CAAC;QACzD,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpB,IAAI,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;YACtD,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,SAAS,aAAa,EAAE,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3E,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;YAChE,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACrC,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YAC7E,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACzB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAElC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAE1G,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,oDAAoD;AACpD,UAAU,CAAC,IAAI,EAAE,CAAC,EAAa,EAAE,EAAE;IACjC,IAAI,EAAE,CAAC,OAAO,EAAE;QAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,EAAE;QACV,WAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/a2a",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "A2A Protocol server for Zhin.js — multi-agent Agent Cards and task delegation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -36,22 +36,20 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@a2a-js/sdk": "1.0.0-beta.0",
|
|
39
|
-
"@zhin.js/core": "1.4.
|
|
40
|
-
"@zhin.js/host-http": "1.0.
|
|
39
|
+
"@zhin.js/core": "1.4.2",
|
|
40
|
+
"@zhin.js/host-http": "1.0.3",
|
|
41
41
|
"@zhin.js/logger": "1.0.75"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@zhin.js/agent": "1.0.
|
|
45
|
-
"
|
|
46
|
-
"zhin.js": "5.0.0"
|
|
44
|
+
"@zhin.js/agent": "1.0.7",
|
|
45
|
+
"zhin.js": "5.0.2"
|
|
47
46
|
},
|
|
48
47
|
"devDependencies": {
|
|
49
48
|
"@types/node": "^26.1.0",
|
|
50
49
|
"rimraf": "^6.0.0",
|
|
51
50
|
"typescript": "^6.0.3",
|
|
52
|
-
"@zhin.js/agent": "1.0.
|
|
53
|
-
"
|
|
54
|
-
"zhin.js": "5.0.0"
|
|
51
|
+
"@zhin.js/agent": "1.0.7",
|
|
52
|
+
"zhin.js": "5.0.2"
|
|
55
53
|
},
|
|
56
54
|
"files": [
|
|
57
55
|
"src",
|
package/src/index.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* * /a2a/{agentName}/rest/*
|
|
8
8
|
*/
|
|
9
9
|
import { formatCompact, usePlugin } from '@zhin.js/core';
|
|
10
|
-
import {
|
|
10
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
11
11
|
|
|
12
12
|
import {
|
|
13
13
|
DefaultRequestHandler,
|
|
@@ -24,6 +24,37 @@ import { buildAgentCardForBinding, listExposableAgentNames } from './card-builde
|
|
|
24
24
|
import { ZhinA2AExecutor } from './agent-executor.js';
|
|
25
25
|
import { handleAgentCard, handleJsonRpc, handleRest } from './http-handlers.js';
|
|
26
26
|
|
|
27
|
+
// Legacy usePlugin 入口:`router` context 原由已删除的 @zhin.js/host-router(koa 风格)提供。
|
|
28
|
+
// 新 Plugin Runtime 走 ./runtime.ts(@zhin.js/host-http),本入口仅保留结构类型以便编译。
|
|
29
|
+
interface RouterContext {
|
|
30
|
+
req: IncomingMessage;
|
|
31
|
+
res: ServerResponse;
|
|
32
|
+
request: { body?: unknown };
|
|
33
|
+
method: string;
|
|
34
|
+
params: Record<string, string | string[] | undefined>;
|
|
35
|
+
respond: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface Router {
|
|
39
|
+
all(path: string, handler: (ctx: RouterContext) => void | Promise<void>): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare module '@zhin.js/core' {
|
|
43
|
+
namespace Plugin {
|
|
44
|
+
interface Contexts {
|
|
45
|
+
router: Router;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** 路径参数(含 `*name` 通配时可能返回 string[])。 */
|
|
51
|
+
function paramPath(ctx: RouterContext, key: string): string {
|
|
52
|
+
const v = ctx.params[key];
|
|
53
|
+
if (v === undefined || v === null) return '';
|
|
54
|
+
if (Array.isArray(v)) return v.map(String).join('/');
|
|
55
|
+
return String(v);
|
|
56
|
+
}
|
|
57
|
+
|
|
27
58
|
interface AgentA2AStack {
|
|
28
59
|
agentName: string;
|
|
29
60
|
requestHandler: A2ARequestHandler;
|
|
@@ -107,7 +138,7 @@ useContext('router', (router: Router) => {
|
|
|
107
138
|
if (ai?.isReady()) rebuildAgentStacks(ai);
|
|
108
139
|
|
|
109
140
|
const a2aHandler = async (ctx: RouterContext): Promise<void> => {
|
|
110
|
-
const agentName = decodeURIComponent(ctx
|
|
141
|
+
const agentName = decodeURIComponent(paramPath(ctx, 'agentName'));
|
|
111
142
|
const parsed = parseA2aTail(paramPath(ctx, 'tail'));
|
|
112
143
|
if (!parsed) {
|
|
113
144
|
sendJsonViaRawRes(ctx, 404, { error: 'Not found' });
|
|
@@ -163,5 +194,3 @@ useContext('ai', (ai: AIService) => {
|
|
|
163
194
|
agentStacks.clear();
|
|
164
195
|
};
|
|
165
196
|
});
|
|
166
|
-
|
|
167
|
-
import type {} from '@zhin.js/host-router';
|