@hanphone/dsh-a2a 0.1.0 → 0.2.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/README.md +98 -47
- package/README.zh.md +43 -42
- package/lib/client.js +49 -1
- package/lib/index.js +272 -17
- package/lib/tsconfig.client.tsbuildinfo +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/api.d.ts +13 -0
- package/lib/types/api.d.ts.map +1 -1
- package/lib/types/api.js +5 -0
- package/lib/types/api.js.map +1 -1
- package/lib/types/client/index.d.ts +5 -0
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +74 -10
- package/lib/types/index.js.map +1 -1
- package/lib/types/server/a2a-server.d.ts +3 -1
- package/lib/types/server/a2a-server.d.ts.map +1 -1
- package/lib/types/server/a2a-server.js +5 -1
- package/lib/types/server/a2a-server.js.map +1 -1
- package/lib/types/server/identity.d.ts +38 -0
- package/lib/types/server/identity.d.ts.map +1 -0
- package/lib/types/server/identity.js +89 -0
- package/lib/types/server/identity.js.map +1 -0
- package/lib/types/server/inbound-registry.d.ts +60 -0
- package/lib/types/server/inbound-registry.d.ts.map +1 -0
- package/lib/types/server/inbound-registry.js +86 -0
- package/lib/types/server/inbound-registry.js.map +1 -0
- package/lib/types/server/store.d.ts +2 -0
- package/lib/types/server/store.d.ts.map +1 -1
- package/lib/types/server/store.js +4 -0
- package/lib/types/server/store.js.map +1 -1
- package/lib/types/service.d.ts +19 -0
- package/lib/types/service.d.ts.map +1 -1
- package/lib/types/service.js +12 -0
- package/lib/types/service.js.map +1 -1
- package/package.json +2 -2
- package/src/api.ts +27 -2
- package/src/client/index.ts +99 -2
- package/src/index.ts +76 -10
- package/src/server/a2a-server.ts +7 -2
- package/src/server/identity.ts +109 -0
- package/src/server/inbound-registry.ts +129 -0
- package/src/server/store.ts +5 -0
- package/src/service.ts +23 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbound-registry.js","sourceRoot":"","sources":["../../../src/server/inbound-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,6 +53,7 @@ export declare const a2aDomainSpec: {
|
|
|
53
53
|
tasks: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;
|
|
54
54
|
contexts: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;
|
|
55
55
|
agents: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;
|
|
56
|
+
identity: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, string>;
|
|
56
57
|
};
|
|
57
58
|
};
|
|
58
59
|
export type A2aDomainSpec = typeof a2aDomainSpec;
|
|
@@ -74,6 +75,7 @@ export declare class A2aDomain {
|
|
|
74
75
|
get tasks(): KvTable<string, string>;
|
|
75
76
|
get contexts(): KvTable<string, string>;
|
|
76
77
|
get agents(): KvTable<string, string>;
|
|
78
|
+
get identity(): KvTable<string, string>;
|
|
77
79
|
close(): Promise<void>;
|
|
78
80
|
}
|
|
79
81
|
/** Task-store contract shared by the domain-backed and memory stores. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/server/store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,OAAO,EACb,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAErD,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;KAAE,EAAE,CAAA;IACvH,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CACrE;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAKD,iFAAiF;AACjF,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/server/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ export const a2aDomainSpec = defineDomain({
|
|
|
19
19
|
tasks: domainTable(json),
|
|
20
20
|
contexts: domainTable(json),
|
|
21
21
|
agents: domainTable(json),
|
|
22
|
+
identity: domainTable(json),
|
|
22
23
|
},
|
|
23
24
|
});
|
|
24
25
|
/**
|
|
@@ -59,6 +60,9 @@ export class A2aDomain {
|
|
|
59
60
|
get agents() {
|
|
60
61
|
return this.handle.table('agents');
|
|
61
62
|
}
|
|
63
|
+
get identity() {
|
|
64
|
+
return this.handle.table('identity');
|
|
65
|
+
}
|
|
62
66
|
async close() {
|
|
63
67
|
await this.handle.close();
|
|
64
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/server/store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EACL,YAAY,EACZ,WAAW,GAIZ,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,SAAS,EAAa,MAAM,gBAAgB,CAAA;AAmCrD,8DAA8D;AAC9D,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAA;AAEvB,iFAAiF;AACjF,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;IACxC,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,CAAC;IACV,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAAiB,IAAI,CAAC;QACxC,QAAQ,EAAE,WAAW,CAAiB,IAAI,CAAC;QAC3C,MAAM,EAAE,WAAW,CAAiB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/server/store.ts"],"names":[],"mappings":"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"}
|
package/lib/types/service.d.ts
CHANGED
|
@@ -26,6 +26,17 @@ export interface A2AServiceImpl {
|
|
|
26
26
|
removeAgent(id: string): Promise<OpResult>;
|
|
27
27
|
setAgentEnabled(id: string, enabled: boolean): Promise<OpResult>;
|
|
28
28
|
refreshAgentCard(id: string): Promise<OpResult>;
|
|
29
|
+
/** Current service identity (persisted override + composition defaults). */
|
|
30
|
+
identity(): unknown;
|
|
31
|
+
/** Persist and apply a new service identity onto the live AgentCard. */
|
|
32
|
+
updateIdentity(patch: {
|
|
33
|
+
readonly name?: string;
|
|
34
|
+
readonly description?: string;
|
|
35
|
+
readonly version?: string;
|
|
36
|
+
}): Promise<OpResult>;
|
|
37
|
+
/** Cancel an inbound peer's active tasks and drop its record. */
|
|
38
|
+
closeInbound(peerId: string): Promise<OpResult>;
|
|
39
|
+
inbounds(): unknown;
|
|
29
40
|
}
|
|
30
41
|
/** The service other plugins read as `ctx.a2a`. */
|
|
31
42
|
export declare class A2AService extends Service {
|
|
@@ -45,5 +56,13 @@ export declare class A2AService extends Service {
|
|
|
45
56
|
removeAgent(id: string): Promise<OpResult>;
|
|
46
57
|
setAgentEnabled(id: string, enabled: boolean): Promise<OpResult>;
|
|
47
58
|
refreshAgentCard(id: string): Promise<OpResult>;
|
|
59
|
+
identity(): unknown;
|
|
60
|
+
updateIdentity(patch: {
|
|
61
|
+
readonly name?: string;
|
|
62
|
+
readonly description?: string;
|
|
63
|
+
readonly version?: string;
|
|
64
|
+
}): Promise<OpResult>;
|
|
65
|
+
closeInbound(peerId: string): Promise<OpResult>;
|
|
66
|
+
inbounds(): unknown;
|
|
48
67
|
}
|
|
49
68
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE3D,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,MAAM,IAAI,OAAO,CAAA;IACjB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,SAAS,IAAI,OAAO,CAAA;IACpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,MAAM,IAAI,OAAO,CAAA;IACjB,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7H,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1C,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChE,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/types/service.js
CHANGED
|
@@ -42,5 +42,17 @@ export class A2AService extends Service {
|
|
|
42
42
|
async refreshAgentCard(id) {
|
|
43
43
|
return this.impl.refreshAgentCard(id);
|
|
44
44
|
}
|
|
45
|
+
identity() {
|
|
46
|
+
return this.impl.identity();
|
|
47
|
+
}
|
|
48
|
+
async updateIdentity(patch) {
|
|
49
|
+
return this.impl.updateIdentity(patch);
|
|
50
|
+
}
|
|
51
|
+
async closeInbound(peerId) {
|
|
52
|
+
return this.impl.closeInbound(peerId);
|
|
53
|
+
}
|
|
54
|
+
inbounds() {
|
|
55
|
+
return this.impl.inbounds();
|
|
56
|
+
}
|
|
45
57
|
}
|
|
46
58
|
//# sourceMappingURL=service.js.map
|
package/lib/types/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAgB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAgB,MAAM,qBAAqB,CAAA;AA6B3D,mDAAmD;AACnD,MAAM,OAAO,UAAW,SAAQ,OAAO;IAGlB;IAFnB,YACE,GAAY,EACK,IAAoB;QAErC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAFA,SAAI,GAAJ,IAAI,CAAgB;IAGvC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAe;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAClC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAgG;QAC7G,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU,EAAE,OAAgB;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAA2F;QAC9G,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC7B,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanphone/dsh-a2a",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Agent2Agent (A2A) v1.0 dual-end plugin for DeepSeek Harness: governed inbound tasks, durable task store, pluggable executors, multi-agent outbound consumption, GUI management dashboard.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -79,4 +79,4 @@
|
|
|
79
79
|
"typecheck": "tsc -b tsconfig.json && tsc -p tsconfig.client.json",
|
|
80
80
|
"test": "vitest run"
|
|
81
81
|
}
|
|
82
|
-
}
|
|
82
|
+
}
|
package/src/api.ts
CHANGED
|
@@ -19,12 +19,23 @@ export type ApiAction =
|
|
|
19
19
|
| { readonly action: 'agent.add'; readonly name: string; readonly agentCardUrl: string; readonly bearerTokenEnv?: string }
|
|
20
20
|
| { readonly action: 'agent.remove' | 'agent.enable' | 'agent.disable' | 'agent.refresh'; readonly id: string }
|
|
21
21
|
| { readonly action: 'task.cancel'; readonly id: string }
|
|
22
|
+
| { readonly action: 'identity.update'; readonly name?: string; readonly description?: string; readonly version?: string }
|
|
23
|
+
| { readonly action: 'inbound.close'; readonly id: string }
|
|
22
24
|
|
|
23
25
|
/** One snapshot of the whole plugin for the dashboard. */
|
|
24
26
|
export interface ApiSnapshot {
|
|
25
|
-
readonly server: {
|
|
27
|
+
readonly server: {
|
|
28
|
+
readonly enabled: boolean
|
|
29
|
+
readonly cardUrl?: string
|
|
30
|
+
readonly skills: readonly string[]
|
|
31
|
+
readonly name?: string
|
|
32
|
+
readonly description?: string
|
|
33
|
+
readonly version?: string
|
|
34
|
+
readonly configured: boolean
|
|
35
|
+
}
|
|
26
36
|
readonly tasks: readonly unknown[]
|
|
27
37
|
readonly agents: readonly unknown[]
|
|
38
|
+
readonly inbounds: readonly unknown[]
|
|
28
39
|
}
|
|
29
40
|
|
|
30
41
|
function readBody(req: IncomingMessage): Promise<string> {
|
|
@@ -80,14 +91,24 @@ export async function handleApiRequest(
|
|
|
80
91
|
|
|
81
92
|
function snapshotOf(impl: A2AServiceImpl): ApiSnapshot {
|
|
82
93
|
const status = impl.status() as {
|
|
83
|
-
server: {
|
|
94
|
+
server: {
|
|
95
|
+
enabled: boolean
|
|
96
|
+
cardUrl?: string
|
|
97
|
+
skills: readonly string[]
|
|
98
|
+
name?: string
|
|
99
|
+
description?: string
|
|
100
|
+
version?: string
|
|
101
|
+
configured: boolean
|
|
102
|
+
}
|
|
84
103
|
tasks: number
|
|
85
104
|
agents: readonly unknown[]
|
|
105
|
+
inbounds: readonly unknown[]
|
|
86
106
|
}
|
|
87
107
|
return {
|
|
88
108
|
server: status.server,
|
|
89
109
|
tasks: impl.listTasks() as readonly unknown[],
|
|
90
110
|
agents: impl.agents() as readonly unknown[],
|
|
111
|
+
inbounds: status.inbounds ?? [],
|
|
91
112
|
}
|
|
92
113
|
}
|
|
93
114
|
|
|
@@ -109,6 +130,10 @@ async function dispatch(payload: ApiAction, impl: A2AServiceImpl): Promise<{ rea
|
|
|
109
130
|
return impl.refreshAgentCard(payload.id)
|
|
110
131
|
case 'task.cancel':
|
|
111
132
|
return impl.cancelTask(payload.id)
|
|
133
|
+
case 'identity.update':
|
|
134
|
+
return impl.updateIdentity({ ...(payload.name !== undefined ? { name: payload.name } : {}), ...(payload.description !== undefined ? { description: payload.description } : {}), ...(payload.version !== undefined ? { version: payload.version } : {}) })
|
|
135
|
+
case 'inbound.close':
|
|
136
|
+
return impl.closeInbound(payload.id)
|
|
112
137
|
default:
|
|
113
138
|
return { ok: false, message: `unknown action ${String((payload as { action?: unknown }).action)}` }
|
|
114
139
|
}
|
package/src/client/index.ts
CHANGED
|
@@ -69,9 +69,18 @@ export function apply(ctx: ClientContext): void {
|
|
|
69
69
|
|
|
70
70
|
/** Wire types — mirror the host's src/api.ts snapshot. */
|
|
71
71
|
export interface ApiSnapshot {
|
|
72
|
-
readonly server: {
|
|
72
|
+
readonly server: {
|
|
73
|
+
readonly enabled: boolean
|
|
74
|
+
readonly cardUrl?: string
|
|
75
|
+
readonly skills: readonly string[]
|
|
76
|
+
readonly name?: string
|
|
77
|
+
readonly description?: string
|
|
78
|
+
readonly version?: string
|
|
79
|
+
readonly configured: boolean
|
|
80
|
+
}
|
|
73
81
|
readonly tasks: readonly unknown[]
|
|
74
82
|
readonly agents: readonly unknown[]
|
|
83
|
+
readonly inbounds: readonly unknown[]
|
|
75
84
|
}
|
|
76
85
|
|
|
77
86
|
interface AgentView {
|
|
@@ -85,6 +94,17 @@ interface AgentView {
|
|
|
85
94
|
readonly lastError?: string
|
|
86
95
|
}
|
|
87
96
|
|
|
97
|
+
interface InboundPeerView {
|
|
98
|
+
readonly id: string
|
|
99
|
+
readonly label: string
|
|
100
|
+
readonly source?: string
|
|
101
|
+
readonly firstSeen?: string
|
|
102
|
+
readonly lastSeen?: string
|
|
103
|
+
readonly taskCount: number
|
|
104
|
+
readonly activeTaskIds: readonly string[]
|
|
105
|
+
readonly streaming: boolean
|
|
106
|
+
}
|
|
107
|
+
|
|
88
108
|
interface TaskView {
|
|
89
109
|
readonly id: string
|
|
90
110
|
readonly contextId?: string
|
|
@@ -116,13 +136,26 @@ export function A2aSection(_props: SectionProps): ReactElement {
|
|
|
116
136
|
const [agentName, setAgentName] = useState('')
|
|
117
137
|
const [agentUrl, setAgentUrl] = useState('')
|
|
118
138
|
const [busy, setBusy] = useState(false)
|
|
139
|
+
const [editing, setEditing] = useState(false)
|
|
140
|
+
const [idName, setIdName] = useState('')
|
|
141
|
+
const [idDescription, setIdDescription] = useState('')
|
|
142
|
+
const [idVersion, setIdVersion] = useState('')
|
|
119
143
|
|
|
120
144
|
useEffect(() => {
|
|
121
145
|
let alive = true
|
|
122
146
|
const tick = async (): Promise<void> => {
|
|
123
147
|
try {
|
|
124
148
|
const next = await fetchSnapshot()
|
|
125
|
-
if (alive) {
|
|
149
|
+
if (alive) {
|
|
150
|
+
setSnap(next)
|
|
151
|
+
setError(undefined)
|
|
152
|
+
// Seed the identity form from the live card when not editing.
|
|
153
|
+
if (!editing) {
|
|
154
|
+
setIdName(next.server.name ?? '')
|
|
155
|
+
setIdDescription(next.server.description ?? '')
|
|
156
|
+
setIdVersion(next.server.version ?? '')
|
|
157
|
+
}
|
|
158
|
+
}
|
|
126
159
|
} catch (err) {
|
|
127
160
|
if (alive) setError((err as Error).message)
|
|
128
161
|
}
|
|
@@ -150,6 +183,7 @@ export function A2aSection(_props: SectionProps): ReactElement {
|
|
|
150
183
|
|
|
151
184
|
const server = snap?.server
|
|
152
185
|
const agents = (snap?.agents ?? []) as readonly AgentView[]
|
|
186
|
+
const inbounds = (snap?.inbounds ?? []) as readonly InboundPeerView[]
|
|
153
187
|
const tasks = (snap?.tasks ?? []) as readonly TaskView[]
|
|
154
188
|
|
|
155
189
|
return createElement(
|
|
@@ -191,6 +225,69 @@ export function A2aSection(_props: SectionProps): ReactElement {
|
|
|
191
225
|
: null,
|
|
192
226
|
),
|
|
193
227
|
|
|
228
|
+
// ── service identity (guided first-run + edit) ───────────────────────
|
|
229
|
+
createElement(
|
|
230
|
+
'div',
|
|
231
|
+
{ className: 'dsh-a2a-card' },
|
|
232
|
+
server === undefined || (server as { configured?: boolean }).configured === false
|
|
233
|
+
? createElement('h3', null, '服务身份(首次配置)')
|
|
234
|
+
: createElement('h3', null, '服务身份'),
|
|
235
|
+
createElement(
|
|
236
|
+
'form',
|
|
237
|
+
{
|
|
238
|
+
className: 'dsh-a2a-form',
|
|
239
|
+
onSubmit: (ev: { preventDefault(): void }) => {
|
|
240
|
+
ev.preventDefault()
|
|
241
|
+
void control({ action: 'identity.update', name: idName, description: idDescription, version: idVersion }).then(() => {
|
|
242
|
+
setEditing(false)
|
|
243
|
+
})
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
createElement('input', { value: idVersion, placeholder: '版本', onChange: (e: { target: { value: string } }) => setIdVersion(e.target.value), style: { width: '60px' } }),
|
|
247
|
+
createElement('input', { value: idName, placeholder: '服务名称', onChange: (e: { target: { value: string } }) => setIdName(e.target.value), style: { width: '160px' } }),
|
|
248
|
+
createElement('input', { value: idDescription, placeholder: '服务描述', onChange: (e: { target: { value: string } }) => setIdDescription(e.target.value), style: { width: '260px' } }),
|
|
249
|
+
createElement('button', { type: 'submit', className: 'primary', disabled: busy }, '保存身份'),
|
|
250
|
+
),
|
|
251
|
+
createElement('div', { className: 'dsh-a2a-row muted' }, '名称、描述、版本即刻重建 AgentCard;技能始终从工具注册表派生。'),
|
|
252
|
+
),
|
|
253
|
+
|
|
254
|
+
// ── inbound peers monitoring ─────────────────────────────────────────
|
|
255
|
+
createElement(
|
|
256
|
+
'div',
|
|
257
|
+
{ className: 'dsh-a2a-card' },
|
|
258
|
+
createElement('h3', null, `入站连接(${inbounds.length})`),
|
|
259
|
+
inbounds.length === 0
|
|
260
|
+
? createElement('div', { className: 'muted' }, '当前无远程对端正在调用本服务。')
|
|
261
|
+
: createElement(
|
|
262
|
+
'table',
|
|
263
|
+
{ className: 'dsh-a2a-table' },
|
|
264
|
+
createElement('thead', null,
|
|
265
|
+
createElement('tr', null,
|
|
266
|
+
createElement('th', null, '来源'),
|
|
267
|
+
createElement('th', null, '任务'),
|
|
268
|
+
createElement('th', null, '流式'),
|
|
269
|
+
createElement('th', null, '首次 / 最近'),
|
|
270
|
+
createElement('th', null, '操作'),
|
|
271
|
+
),
|
|
272
|
+
),
|
|
273
|
+
createElement('tbody', null,
|
|
274
|
+
...inbounds.map((p) =>
|
|
275
|
+
createElement('tr', { key: p.id },
|
|
276
|
+
createElement('td', null, p.source ?? p.label),
|
|
277
|
+
createElement('td', null, `${p.taskCount}(活跃 ${p.activeTaskIds.length})`),
|
|
278
|
+
createElement('td', null, p.streaming ? '●' : '—'),
|
|
279
|
+
createElement('td', null,
|
|
280
|
+
createElement('span', { className: 'muted' }, `${p.firstSeen ?? ''} / ${p.lastSeen ?? ''}`),
|
|
281
|
+
),
|
|
282
|
+
createElement('td', null,
|
|
283
|
+
createElement('button', { disabled: busy, onClick: () => void control({ action: 'inbound.close', id: p.id }) }, '关闭'),
|
|
284
|
+
),
|
|
285
|
+
),
|
|
286
|
+
),
|
|
287
|
+
),
|
|
288
|
+
),
|
|
289
|
+
),
|
|
290
|
+
|
|
194
291
|
// ── outbound agents ──────────────────────────────────────────────────
|
|
195
292
|
createElement(
|
|
196
293
|
'div',
|
package/src/index.ts
CHANGED
|
@@ -21,6 +21,8 @@ import { join } from 'node:path'
|
|
|
21
21
|
import { mkdirSync } from 'node:fs'
|
|
22
22
|
import { deriveSkills, buildCard, type ToolGetter } from './server/card.ts'
|
|
23
23
|
import { openDomain, DomainTaskStore, type A2aDomain, type TaskStore } from './server/store.ts'
|
|
24
|
+
import { LiveInboundRegistry, type InboundRegistry } from './server/inbound-registry.ts'
|
|
25
|
+
import { cardOptionsFor, readIdentity, rebuildCardWithIdentity, writeIdentity, type A2aIdentity } from './server/identity.ts'
|
|
24
26
|
import { ExecutorSet } from './server/executor.ts'
|
|
25
27
|
import { ContextSessionPool, probeService, type AgentPresetsLike, type AgentRegistryLike } from './server/exec/agent-runtime.ts'
|
|
26
28
|
import { createSessionExecutor } from './server/exec/session.ts'
|
|
@@ -94,11 +96,14 @@ interface Shared {
|
|
|
94
96
|
readonly domain: A2aDomain
|
|
95
97
|
readonly store: TaskStore
|
|
96
98
|
registry: OutboundAgentRegistry | undefined
|
|
99
|
+
inbound: InboundRegistry | undefined
|
|
97
100
|
server: A2AServer | undefined
|
|
98
101
|
routes: A2aRoutes | undefined
|
|
99
102
|
card: AgentCard | undefined
|
|
100
103
|
executors: ExecutorSet | undefined
|
|
101
104
|
enabled: boolean
|
|
105
|
+
/** Composition defaults for the card identity (before any persisted override). */
|
|
106
|
+
identityDefaults: { name: string; description: string; version: string }
|
|
102
107
|
}
|
|
103
108
|
|
|
104
109
|
export function apply(ctx: Context, config: A2AConfig) {
|
|
@@ -118,11 +123,17 @@ export function apply(ctx: Context, config: A2AConfig) {
|
|
|
118
123
|
domain,
|
|
119
124
|
store,
|
|
120
125
|
registry: undefined,
|
|
126
|
+
inbound: undefined,
|
|
121
127
|
server: undefined,
|
|
122
128
|
routes: undefined,
|
|
123
129
|
card: undefined,
|
|
124
130
|
executors: undefined,
|
|
125
131
|
enabled: serverConfig.enabled,
|
|
132
|
+
identityDefaults: {
|
|
133
|
+
name: serverConfig.name ?? 'My DSH Agent',
|
|
134
|
+
description: serverConfig.description ?? 'A DeepSeek Harness agent exposed over A2A v1.0',
|
|
135
|
+
version: serverConfig.version ?? '0.1.0',
|
|
136
|
+
},
|
|
126
137
|
}
|
|
127
138
|
|
|
128
139
|
// ── inbound server half ────────────────────────────────────────────
|
|
@@ -139,17 +150,14 @@ export function apply(ctx: Context, config: A2AConfig) {
|
|
|
139
150
|
)
|
|
140
151
|
const baseUrl = serverConfig.baseUrl ?? `http://127.0.0.1:${process.env['DSH_A2A_PORT'] ?? '3000'}`
|
|
141
152
|
const endpointPath = serverConfig.endpointPath ?? '/a2a'
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
endpointPath,
|
|
145
|
-
name: serverConfig.name ?? 'My DSH Agent',
|
|
146
|
-
description: serverConfig.description ?? 'A DeepSeek Harness agent exposed over A2A v1.0',
|
|
147
|
-
version: serverConfig.version ?? '0.1.0',
|
|
148
|
-
skills,
|
|
149
|
-
...(authToken ? { authToken } : {}),
|
|
150
|
-
})
|
|
153
|
+
const persistedIdentity = readIdentity(domain)
|
|
154
|
+
const card = buildCard(cardOptionsFor(baseUrl, endpointPath, holder.identityDefaults, persistedIdentity, skills, authToken))
|
|
151
155
|
holder.card = card
|
|
152
156
|
|
|
157
|
+
// Inbound connection registry (dashboard "who is talking to us").
|
|
158
|
+
const inbound = new LiveInboundRegistry()
|
|
159
|
+
holder.inbound = inbound
|
|
160
|
+
|
|
153
161
|
// Executors: probe the agent loop; refuse tasks readably without it.
|
|
154
162
|
const agents = probeService(ctx, 'agents', 'create') as AgentRegistryLike | undefined
|
|
155
163
|
const presets = probeService(ctx, 'agentPresets', 'resolve') as AgentPresetsLike | undefined
|
|
@@ -192,7 +200,16 @@ export function apply(ctx: Context, config: A2AConfig) {
|
|
|
192
200
|
executors,
|
|
193
201
|
...(authToken ? { authToken } : {}),
|
|
194
202
|
gate,
|
|
195
|
-
|
|
203
|
+
onInbound: (facts) => inbound.note({
|
|
204
|
+
method: facts.method,
|
|
205
|
+
...(facts.source !== undefined ? { source: facts.source } : {}),
|
|
206
|
+
taskIds: facts.taskIds,
|
|
207
|
+
streaming: facts.streaming,
|
|
208
|
+
}),
|
|
209
|
+
onTaskSettled: (taskId) => {
|
|
210
|
+
logger.info(`[a2a] task settled ${taskId}`)
|
|
211
|
+
inbound.settle(taskId)
|
|
212
|
+
},
|
|
196
213
|
})
|
|
197
214
|
holder.server = server
|
|
198
215
|
const routes = new A2aRoutes(webServer as never, server)
|
|
@@ -271,9 +288,16 @@ function makeFacade(holder: Shared, log: (message: string) => void): A2AServiceI
|
|
|
271
288
|
cardUrl: holder.card?.supportedInterfaces?.[0]?.url,
|
|
272
289
|
skills: holder.card?.skills?.map((s) => s.id) ?? [],
|
|
273
290
|
executors: holder.executors ? ['session', ...(holder.executors['subagent'] !== undefined ? ['subagent'] : [])] : [],
|
|
291
|
+
name: holder.card?.name,
|
|
292
|
+
description: holder.card?.description,
|
|
293
|
+
version: holder.card?.version,
|
|
294
|
+
// True when a persisted identity override exists (the dashboard has
|
|
295
|
+
// been configured); guides the first-run onboarding.
|
|
296
|
+
configured: readIdentity(holder.domain) !== undefined,
|
|
274
297
|
},
|
|
275
298
|
tasks: holder.store.list().length,
|
|
276
299
|
agents: holder.registry?.list() ?? [],
|
|
300
|
+
inbounds: holder.inbound?.list() ?? [],
|
|
277
301
|
}
|
|
278
302
|
},
|
|
279
303
|
async enableServer(enable: boolean): Promise<OpResult> {
|
|
@@ -313,6 +337,48 @@ function makeFacade(holder: Shared, log: (message: string) => void): A2AServiceI
|
|
|
313
337
|
async refreshAgentCard(id: string): Promise<OpResult> {
|
|
314
338
|
return holder.registry?.refresh(id) ?? { ok: false, message: 'outbound client not mounted' }
|
|
315
339
|
},
|
|
340
|
+
identity(): unknown {
|
|
341
|
+
const current = holder.card
|
|
342
|
+
const persisted = readIdentity(holder.domain)
|
|
343
|
+
return {
|
|
344
|
+
...(persisted ?? {}),
|
|
345
|
+
// Composition defaults shown when nothing is persisted yet.
|
|
346
|
+
defaults: holder.identityDefaults,
|
|
347
|
+
name: current?.name ?? holder.identityDefaults.name,
|
|
348
|
+
description: current?.description ?? holder.identityDefaults.description,
|
|
349
|
+
version: current?.version ?? holder.identityDefaults.version,
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
async updateIdentity(patch: { name?: string; description?: string; version?: string }): Promise<OpResult> {
|
|
353
|
+
const card = holder.card
|
|
354
|
+
const server = holder.server
|
|
355
|
+
if (card === undefined || server === undefined) return { ok: false, message: 'inbound server not mounted (no card)' }
|
|
356
|
+
const persisted = readIdentity(holder.domain)
|
|
357
|
+
const base = persisted ?? holder.identityDefaults
|
|
358
|
+
const next: A2aIdentity = {
|
|
359
|
+
name: patch.name?.trim() || base.name,
|
|
360
|
+
description: patch.description?.trim() || base.description,
|
|
361
|
+
version: patch.version?.trim() || base.version,
|
|
362
|
+
}
|
|
363
|
+
writeIdentity(holder.domain, next)
|
|
364
|
+
const rebuilt = rebuildCardWithIdentity(card, next, card.skills ?? [])
|
|
365
|
+
server.setCard(rebuilt)
|
|
366
|
+
holder.card = rebuilt
|
|
367
|
+
log(`[a2a] identity updated: ${next.name}`)
|
|
368
|
+
return { ok: true, message: `service identity updated (${next.name})` }
|
|
369
|
+
},
|
|
370
|
+
async closeInbound(peerId: string): Promise<OpResult> {
|
|
371
|
+
const inbound = holder.inbound
|
|
372
|
+
if (inbound === undefined) return { ok: false, message: 'inbound registry not mounted' }
|
|
373
|
+
// Cancel the peer's active tasks, then drop the record.
|
|
374
|
+
for (const taskId of inbound.activeTasksOf(peerId)) {
|
|
375
|
+
await holder.server?.abort?.(taskId)
|
|
376
|
+
}
|
|
377
|
+
return inbound.closePeer(peerId)
|
|
378
|
+
},
|
|
379
|
+
inbounds(): unknown {
|
|
380
|
+
return holder.inbound?.list() ?? []
|
|
381
|
+
},
|
|
316
382
|
}
|
|
317
383
|
}
|
|
318
384
|
|
package/src/server/a2a-server.ts
CHANGED
|
@@ -70,7 +70,7 @@ export interface ServerResponseSpec {
|
|
|
70
70
|
|
|
71
71
|
/** A2A JSON-RPC / SSE server over a structural request. */
|
|
72
72
|
export class A2AServer {
|
|
73
|
-
|
|
73
|
+
card: AgentCard
|
|
74
74
|
private readonly listeners = new Set<(frame: StreamResponse) => void>()
|
|
75
75
|
private readonly waiters = new Map<string, () => void>()
|
|
76
76
|
private readonly running = new Map<string, AbortController>()
|
|
@@ -79,6 +79,11 @@ export class A2AServer {
|
|
|
79
79
|
this.card = opts.card
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
/** Swap the served AgentCard (runtime identity edits). Routes re-read `server.card` on every request. */
|
|
83
|
+
setCard(next: AgentCard): void {
|
|
84
|
+
this.card = next
|
|
85
|
+
}
|
|
86
|
+
|
|
82
87
|
/**
|
|
83
88
|
* Abort a running task by control path (facade /a2a task cancel): abort the
|
|
84
89
|
* executor's signal, settle the task CANCELED, and wake stream waiters.
|
|
@@ -226,7 +231,7 @@ export class A2AServer {
|
|
|
226
231
|
const gateOutcome = await this.opts.gate(gateInputFrom(message, null))
|
|
227
232
|
if (!gateOutcome.ok) throw rpcFault(A2A_ERROR_CODES.INVALID_PARAMS, gateOutcome.reason)
|
|
228
233
|
const record = this.ensureTask(message, null)
|
|
229
|
-
|
|
234
|
+
// handle() records this inbound after dispatch with the real source.
|
|
230
235
|
await this.runTask(record)
|
|
231
236
|
const settled = this.opts.store.get(record.taskId)
|
|
232
237
|
return toTask(settled ?? record)
|