@zhin.js/agent 1.1.21 → 1.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 +7 -0
- package/lib/builtins/builtin-tool-service.d.ts +2 -1
- package/lib/builtins/builtin-tool-service.d.ts.map +1 -1
- package/lib/builtins/builtin-tool-service.js +16 -5
- package/lib/builtins/builtin-tool-service.js.map +1 -1
- package/lib/data-governance/governance-authority-repository.d.ts +3 -0
- package/lib/data-governance/governance-authority-repository.d.ts.map +1 -1
- package/lib/data-governance/governance-authority-repository.js +10 -1
- package/lib/data-governance/governance-authority-repository.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/plugin-runtime/capability-ingress.d.ts.map +1 -1
- package/lib/plugin-runtime/capability-ingress.js +66 -4
- package/lib/plugin-runtime/capability-ingress.js.map +1 -1
- package/lib/plugin-runtime/index.d.ts +1 -0
- package/lib/plugin-runtime/index.d.ts.map +1 -1
- package/lib/plugin-runtime/index.js +1 -0
- package/lib/plugin-runtime/index.js.map +1 -1
- package/lib/plugin-runtime/workroom-acceptance-internal-providers.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-acceptance-internal-providers.js +7 -2
- package/lib/plugin-runtime/workroom-acceptance-internal-providers.js.map +1 -1
- package/lib/plugin-runtime/workroom-acceptance-production-composition.d.ts +2 -0
- package/lib/plugin-runtime/workroom-acceptance-production-composition.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-acceptance-production-composition.js +1 -0
- package/lib/plugin-runtime/workroom-acceptance-production-composition.js.map +1 -1
- package/lib/plugin-runtime/workroom-acceptance-provider-composition.d.ts +3 -0
- package/lib/plugin-runtime/workroom-acceptance-provider-composition.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-acceptance-provider-composition.js +43 -6
- package/lib/plugin-runtime/workroom-acceptance-provider-composition.js.map +1 -1
- package/lib/plugin-runtime/workroom-assignment-authority-provider.d.ts +1 -2
- package/lib/plugin-runtime/workroom-assignment-authority-provider.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-assignment-authority-provider.js +4 -5
- package/lib/plugin-runtime/workroom-assignment-authority-provider.js.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-authority-writer.d.ts +2 -0
- package/lib/plugin-runtime/workroom-data-governance-authority-writer.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-authority-writer.js +25 -1
- package/lib/plugin-runtime/workroom-data-governance-authority-writer.js.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-bootstrap.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-bootstrap.js +66 -0
- package/lib/plugin-runtime/workroom-data-governance-bootstrap.js.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-runtime.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-runtime.js +144 -41
- package/lib/plugin-runtime/workroom-data-governance-runtime.js.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-storage.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-data-governance-storage.js +1 -2
- package/lib/plugin-runtime/workroom-data-governance-storage.js.map +1 -1
- package/lib/plugin-runtime/workroom-dynamic-planning-provider.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-dynamic-planning-provider.js +2 -1
- package/lib/plugin-runtime/workroom-dynamic-planning-provider.js.map +1 -1
- package/lib/plugin-runtime/workroom-local-agent-loop.d.ts +1 -0
- package/lib/plugin-runtime/workroom-local-agent-loop.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-local-agent-loop.js +11 -1
- package/lib/plugin-runtime/workroom-local-agent-loop.js.map +1 -1
- package/lib/plugin-runtime/workroom-local-assignment-runtime.d.ts +1 -0
- package/lib/plugin-runtime/workroom-local-assignment-runtime.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-local-assignment-runtime.js +71 -25
- package/lib/plugin-runtime/workroom-local-assignment-runtime.js.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-control-composition.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-control-composition.js +1 -0
- package/lib/plugin-runtime/workroom-portfolio-control-composition.js.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-control-runtime.d.ts +1 -0
- package/lib/plugin-runtime/workroom-portfolio-control-runtime.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-control-runtime.js +1 -0
- package/lib/plugin-runtime/workroom-portfolio-control-runtime.js.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-grant-assignment.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-grant-assignment.js +6 -3
- package/lib/plugin-runtime/workroom-portfolio-grant-assignment.js.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-kernel-authority.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-portfolio-kernel-authority.js +11 -5
- package/lib/plugin-runtime/workroom-portfolio-kernel-authority.js.map +1 -1
- package/lib/plugin-runtime/workroom-profile-authority-composition.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-profile-authority-composition.js +2 -1
- package/lib/plugin-runtime/workroom-profile-authority-composition.js.map +1 -1
- package/lib/plugin-runtime/workroom-profile-authority-runtime.d.ts +1 -0
- package/lib/plugin-runtime/workroom-profile-authority-runtime.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-profile-authority-runtime.js +1 -0
- package/lib/plugin-runtime/workroom-profile-authority-runtime.js.map +1 -1
- package/lib/plugin-runtime/workroom-projection-runtime.d.ts +3 -1
- package/lib/plugin-runtime/workroom-projection-runtime.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-projection-runtime.js +10 -0
- package/lib/plugin-runtime/workroom-projection-runtime.js.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.d.ts +7 -0
- package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.js +4 -0
- package/lib/plugin-runtime/workroom-scheduler-portfolio-composition.js.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.d.ts +3 -0
- package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.js +23 -6
- package/lib/plugin-runtime/workroom-scheduler-portfolio-request-authority.js.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.d.ts +5 -0
- package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.js +20 -1
- package/lib/plugin-runtime/workroom-scheduler-portfolio-supply.js.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-runtime.d.ts.map +1 -1
- package/lib/plugin-runtime/workroom-scheduler-runtime.js +6 -1
- package/lib/plugin-runtime/workroom-scheduler-runtime.js.map +1 -1
- package/lib/seam/index.d.ts +3 -2
- package/lib/seam/index.d.ts.map +1 -1
- package/lib/seam/index.js +1 -1
- package/lib/seam/index.js.map +1 -1
- package/lib/seam/seam-integration.d.ts +31 -34
- package/lib/seam/seam-integration.d.ts.map +1 -1
- package/lib/seam/seam-integration.js +98 -50
- package/lib/seam/seam-integration.js.map +1 -1
- package/lib/seam/seam-provider.d.ts +2 -1
- package/lib/seam/seam-provider.d.ts.map +1 -1
- package/lib/seam/seam-provider.js +25 -11
- package/lib/seam/seam-provider.js.map +1 -1
- package/lib/seam/skill-service.d.ts +4 -10
- package/lib/seam/skill-service.d.ts.map +1 -1
- package/lib/seam/tokens.d.ts +4 -0
- package/lib/seam/tokens.d.ts.map +1 -1
- package/lib/seam/tokens.js +4 -0
- package/lib/seam/tokens.js.map +1 -1
- package/lib/seam/tool-service.d.ts +11 -5
- package/lib/seam/tool-service.d.ts.map +1 -1
- package/lib/skill/skill-registry-as-service.d.ts +5 -5
- package/lib/skill/skill-registry-as-service.d.ts.map +1 -1
- package/lib/skill/skill-registry-as-service.js +21 -16
- package/lib/skill/skill-registry-as-service.js.map +1 -1
- package/lib/tool/tool-registry-as-service.d.ts +17 -0
- package/lib/tool/tool-registry-as-service.d.ts.map +1 -0
- package/lib/tool/tool-registry-as-service.js +54 -0
- package/lib/tool/tool-registry-as-service.js.map +1 -0
- package/lib/workroom/assignment-authority-grant-application.d.ts.map +1 -1
- package/lib/workroom/assignment-authority-grant-application.js +2 -1
- package/lib/workroom/assignment-authority-grant-application.js.map +1 -1
- package/lib/workroom/assignment-authority-grant-repository.d.ts +2 -1
- package/lib/workroom/assignment-authority-grant-repository.d.ts.map +1 -1
- package/lib/workroom/assignment-authority-grant-repository.js +3 -1
- package/lib/workroom/assignment-authority-grant-repository.js.map +1 -1
- package/lib/workroom/catalog-definition.d.ts +2 -0
- package/lib/workroom/catalog-definition.d.ts.map +1 -1
- package/lib/workroom/catalog-definition.js +5 -1
- package/lib/workroom/catalog-definition.js.map +1 -1
- package/lib/workroom/human-ingress-orchestrator.d.ts.map +1 -1
- package/lib/workroom/human-ingress-orchestrator.js +29 -1
- package/lib/workroom/human-ingress-orchestrator.js.map +1 -1
- package/lib/workroom/journal.d.ts +2 -0
- package/lib/workroom/journal.d.ts.map +1 -1
- package/lib/workroom/journal.js +52 -36
- package/lib/workroom/journal.js.map +1 -1
- package/lib/workroom/projection-outbox.d.ts.map +1 -1
- package/lib/workroom/projection-outbox.js +3 -1
- package/lib/workroom/projection-outbox.js.map +1 -1
- package/lib/workroom/runtime.d.ts.map +1 -1
- package/lib/workroom/runtime.js +2 -1
- package/lib/workroom/runtime.js.map +1 -1
- package/lib/workroom/workroom-kernel.d.ts +10 -0
- package/lib/workroom/workroom-kernel.d.ts.map +1 -1
- package/lib/workroom/workroom-kernel.js +71 -17
- package/lib/workroom/workroom-kernel.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,70 +1,118 @@
|
|
|
1
|
+
/** Generation-owned Tool / Skill provider integration. */
|
|
2
|
+
import { SeamProviderRegistry } from './seam-provider.js';
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* 在 ZhinAgent 的作用域中提供,供 capability projector 与 PromptAssemblyRegistry 使用。
|
|
4
|
+
* Collects service providers, while leaving execution authority to the
|
|
5
|
+
* canonical TurnToolRuntime. `projectTools()` returns bound definitions; it
|
|
6
|
+
* deliberately does not expose a second, policy-free execute-by-name path.
|
|
6
7
|
*/
|
|
7
|
-
import { SeamProviderRegistry } from './seam-provider.js';
|
|
8
8
|
export class SeamIntegration {
|
|
9
9
|
toolRegistry = new SeamProviderRegistry();
|
|
10
10
|
skillRegistry = new SeamProviderRegistry();
|
|
11
|
-
// ── Tool ────────────────────────────────────────────────────────────
|
|
12
|
-
/**
|
|
13
|
-
* 在指定作用域下注册一个 Tool Service
|
|
14
|
-
*/
|
|
15
11
|
registerToolService(scope, service) {
|
|
16
|
-
this.toolRegistry.register(scope, service);
|
|
12
|
+
return this.toolRegistry.register(scope, service);
|
|
17
13
|
}
|
|
18
|
-
/**
|
|
19
|
-
* 获取指定作用域下的所有 Tool Schema
|
|
20
|
-
*
|
|
21
|
-
* 自动遍历所有注册的 Tool Services,收集 schemas。
|
|
22
|
-
*/
|
|
23
14
|
getToolSchemas(scope) {
|
|
24
|
-
return this.
|
|
25
|
-
.getFor(scope)
|
|
26
|
-
.flatMap((service) => service.schema(scope));
|
|
15
|
+
return this.projectToolSchemas(scope).map(({ schema }) => schema);
|
|
27
16
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
17
|
+
projectTools(scope) {
|
|
18
|
+
return this.projectToolSchemas(scope).map(({ service, schema }) => Object.freeze({
|
|
19
|
+
providerId: service.id,
|
|
20
|
+
schema,
|
|
21
|
+
execute: async (input, context) => {
|
|
22
|
+
if (service.isAvailable?.(scope, schema.function.name) === false) {
|
|
23
|
+
return { success: false, error: `Tool unavailable: ${schema.function.name}` };
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
await service.applyPolicy?.(scope, schema.function.name, input, context);
|
|
27
|
+
return await service.execute(scope, schema.function.name, input, context);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
error: error instanceof Error ? error.message : String(error),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
}));
|
|
40
37
|
}
|
|
41
|
-
// ── Skill ────────────────────────────────────────────────────────────
|
|
42
38
|
/**
|
|
43
|
-
*
|
|
39
|
+
* @deprecated Direct execution would bypass TurnToolRuntime. This
|
|
40
|
+
* compatibility method always rejects; project the provider through
|
|
41
|
+
* CapabilityIngress and execute the resulting Tool capability.
|
|
44
42
|
*/
|
|
43
|
+
async executeTool(_scope, toolName, _args) {
|
|
44
|
+
return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: `Direct Seam execution is disabled for Tool: ${toolName}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
45
49
|
registerSkillService(scope, service) {
|
|
46
|
-
this.skillRegistry.register(scope, service);
|
|
50
|
+
return this.skillRegistry.register(scope, service);
|
|
47
51
|
}
|
|
48
|
-
/**
|
|
49
|
-
* 获取指定作用域下的所有 Skill 元数据
|
|
50
|
-
*
|
|
51
|
-
* 自动遍历所有注册的 Skill Services,收集 catalogs。
|
|
52
|
-
*/
|
|
53
52
|
async getSkillCatalog(scope) {
|
|
54
|
-
|
|
55
|
-
return results.flat();
|
|
53
|
+
return (await this.projectSkills(scope)).map(({ metadata }) => metadata);
|
|
56
54
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
55
|
+
async projectSkills(scope) {
|
|
56
|
+
const projected = [];
|
|
57
|
+
const names = new Set();
|
|
58
|
+
for (const service of this.skillRegistry.getFor(scope)) {
|
|
59
|
+
for (const metadata of await service.catalog(scope)) {
|
|
60
|
+
const name = metadata.name?.trim();
|
|
61
|
+
if (!name || service.isAvailable?.(scope, name) === false)
|
|
62
|
+
continue;
|
|
63
|
+
if (names.has(name))
|
|
64
|
+
throw new Error(`Duplicate Seam Skill capability: ${name}`);
|
|
65
|
+
names.add(name);
|
|
66
|
+
projected.push(Object.freeze({
|
|
67
|
+
providerId: service.id,
|
|
68
|
+
metadata: immutableSnapshot({ ...metadata, name }),
|
|
69
|
+
instructions: await service.describe(scope, name),
|
|
70
|
+
}));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return projected;
|
|
74
|
+
}
|
|
75
|
+
/** @deprecated Skills are declarative; load their instructions and execute Tools. */
|
|
76
|
+
async invokeSkill(_scope, skillId, _input) {
|
|
77
|
+
return {
|
|
78
|
+
success: false,
|
|
79
|
+
error: `Direct Skill invocation is disabled: ${skillId}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
dispose() {
|
|
83
|
+
this.toolRegistry.dispose();
|
|
84
|
+
this.skillRegistry.dispose();
|
|
85
|
+
}
|
|
86
|
+
projectToolSchemas(scope) {
|
|
87
|
+
const projected = [];
|
|
88
|
+
const names = new Set();
|
|
89
|
+
for (const service of this.toolRegistry.getFor(scope)) {
|
|
90
|
+
for (const schema of service.schema(scope)) {
|
|
91
|
+
const name = schema.function.name.trim();
|
|
92
|
+
if (!name || service.isAvailable?.(scope, name) === false)
|
|
93
|
+
continue;
|
|
94
|
+
if (names.has(name))
|
|
95
|
+
throw new Error(`Duplicate Seam Tool capability: ${name}`);
|
|
96
|
+
names.add(name);
|
|
97
|
+
projected.push({
|
|
98
|
+
service,
|
|
99
|
+
schema: immutableSnapshot({
|
|
100
|
+
...schema,
|
|
101
|
+
function: { ...schema.function, name },
|
|
102
|
+
}),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
66
105
|
}
|
|
67
|
-
return
|
|
106
|
+
return projected;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function immutableSnapshot(value) {
|
|
110
|
+
if (Array.isArray(value)) {
|
|
111
|
+
return Object.freeze(value.map((entry) => immutableSnapshot(entry)));
|
|
112
|
+
}
|
|
113
|
+
if (value && typeof value === 'object') {
|
|
114
|
+
return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, immutableSnapshot(entry)])));
|
|
68
115
|
}
|
|
116
|
+
return value;
|
|
69
117
|
}
|
|
70
118
|
//# sourceMappingURL=seam-integration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seam-integration.js","sourceRoot":"","sources":["../../src/seam/seam-integration.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"seam-integration.js","sourceRoot":"","sources":["../../src/seam/seam-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export declare class SeamProviderRegistry<T extends SeamProvider> {
|
|
|
42
42
|
/**
|
|
43
43
|
* 在指定作用域下注册一个 Service Provider
|
|
44
44
|
*/
|
|
45
|
-
register(scope: SeamScope | 'global', provider: T): void;
|
|
45
|
+
register(scope: SeamScope | 'global', provider: T): () => void;
|
|
46
46
|
/**
|
|
47
47
|
* 获取指定作用域下的所有提供者(包含 global 中的提供者)
|
|
48
48
|
*/
|
|
@@ -59,5 +59,6 @@ export declare class SeamProviderRegistry<T extends SeamProvider> {
|
|
|
59
59
|
* 移除已注册的提供者(返回是否实际移除)
|
|
60
60
|
*/
|
|
61
61
|
remove(scope: SeamScope | 'global', id: string): boolean;
|
|
62
|
+
dispose(): void;
|
|
62
63
|
}
|
|
63
64
|
//# sourceMappingURL=seam-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seam-provider.d.ts","sourceRoot":"","sources":["../../src/seam/seam-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"seam-provider.d.ts","sourceRoot":"","sources":["../../src/seam/seam-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC;;;;;GAKG;AACH,qBAAa,oBAAoB,CAAC,CAAC,SAAS,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAElE;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI;IAgB9D;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,CAAC,EAAE;IAUxC;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,GAAG,IAAI;IAKzE;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAI1D;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAWxD,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 所有 Service Provider(LLM / Tool / Skill)必须遵循此约束。
|
|
5
5
|
*/
|
|
6
|
-
function toKey(scope) {
|
|
7
|
-
return typeof scope === 'symbol' ? scope.toString() : scope;
|
|
8
|
-
}
|
|
9
6
|
/**
|
|
10
7
|
* 能力接缝提供者注册表
|
|
11
8
|
*
|
|
@@ -18,22 +15,34 @@ export class SeamProviderRegistry {
|
|
|
18
15
|
* 在指定作用域下注册一个 Service Provider
|
|
19
16
|
*/
|
|
20
17
|
register(scope, provider) {
|
|
21
|
-
const key =
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
const key = scope;
|
|
19
|
+
const providers = this.providers.get(key) ?? [];
|
|
20
|
+
if (providers.some((candidate) => candidate.id === provider.id)) {
|
|
21
|
+
throw new Error(`Duplicate Seam provider "${provider.id}" in scope "${String(key)}"`);
|
|
24
22
|
}
|
|
25
|
-
|
|
23
|
+
providers.push(provider);
|
|
24
|
+
this.providers.set(key, providers);
|
|
25
|
+
let active = true;
|
|
26
|
+
return () => {
|
|
27
|
+
if (!active)
|
|
28
|
+
return;
|
|
29
|
+
active = false;
|
|
30
|
+
this.remove(scope, provider.id);
|
|
31
|
+
};
|
|
26
32
|
}
|
|
27
33
|
/**
|
|
28
34
|
* 获取指定作用域下的所有提供者(包含 global 中的提供者)
|
|
29
35
|
*/
|
|
30
36
|
getFor(scope) {
|
|
31
|
-
const key =
|
|
37
|
+
const key = scope;
|
|
32
38
|
const scoped = this.providers.get(key) ?? [];
|
|
33
39
|
if (key === 'global')
|
|
34
|
-
return scoped;
|
|
40
|
+
return [...scoped];
|
|
35
41
|
const global = this.providers.get('global') ?? [];
|
|
36
|
-
|
|
42
|
+
const visible = new Map(global.map((provider) => [provider.id, provider]));
|
|
43
|
+
for (const provider of scoped)
|
|
44
|
+
visible.set(provider.id, provider);
|
|
45
|
+
return [...visible.values()];
|
|
37
46
|
}
|
|
38
47
|
/**
|
|
39
48
|
* 查询满足条件的首个提供者
|
|
@@ -52,7 +61,7 @@ export class SeamProviderRegistry {
|
|
|
52
61
|
* 移除已注册的提供者(返回是否实际移除)
|
|
53
62
|
*/
|
|
54
63
|
remove(scope, id) {
|
|
55
|
-
const key =
|
|
64
|
+
const key = scope;
|
|
56
65
|
const list = this.providers.get(key);
|
|
57
66
|
if (!list)
|
|
58
67
|
return false;
|
|
@@ -60,7 +69,12 @@ export class SeamProviderRegistry {
|
|
|
60
69
|
if (idx === -1)
|
|
61
70
|
return false;
|
|
62
71
|
list.splice(idx, 1);
|
|
72
|
+
if (list.length === 0)
|
|
73
|
+
this.providers.delete(key);
|
|
63
74
|
return true;
|
|
64
75
|
}
|
|
76
|
+
dispose() {
|
|
77
|
+
this.providers.clear();
|
|
78
|
+
}
|
|
65
79
|
}
|
|
66
80
|
//# sourceMappingURL=seam-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seam-provider.js","sourceRoot":"","sources":["../../src/seam/seam-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmCH
|
|
1
|
+
{"version":3,"file":"seam-provider.js","sourceRoot":"","sources":["../../src/seam/seam-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,17 +7,13 @@
|
|
|
7
7
|
import type { SeamProvider, SeamScope } from './seam-provider.js';
|
|
8
8
|
import type { SkillMetadata } from '../resource-hub/types.js';
|
|
9
9
|
export type { SkillMetadata };
|
|
10
|
-
/**
|
|
11
|
-
* Skill 调用请求
|
|
12
|
-
*/
|
|
10
|
+
/** @deprecated Skills are declarative capability metadata; use catalog/describe. */
|
|
13
11
|
export interface SkillInvocationRequest {
|
|
14
12
|
skillId: string;
|
|
15
13
|
input: unknown;
|
|
16
14
|
context?: Record<string, unknown>;
|
|
17
15
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Skill 调用结果
|
|
20
|
-
*/
|
|
16
|
+
/** @deprecated Skills are not directly executable; use Tool capabilities. */
|
|
21
17
|
export interface SkillInvocationResult {
|
|
22
18
|
success: boolean;
|
|
23
19
|
output?: unknown;
|
|
@@ -36,10 +32,8 @@ export interface SkillService extends SeamProvider {
|
|
|
36
32
|
* 获取指定 Skill 的完整文档
|
|
37
33
|
*/
|
|
38
34
|
describe(scope: SeamScope | 'global', skillId: string): Promise<string>;
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
*/
|
|
42
|
-
invoke(scope: SeamScope | 'global', request: SkillInvocationRequest): Promise<SkillInvocationResult>;
|
|
35
|
+
/** @deprecated Provider-specific compatibility only; CapabilityIngress never calls it. */
|
|
36
|
+
invoke?(scope: SeamScope | 'global', request: SkillInvocationRequest): Promise<SkillInvocationResult>;
|
|
43
37
|
/**
|
|
44
38
|
* 可选:Skill 是否在该作用域可用
|
|
45
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-service.d.ts","sourceRoot":"","sources":["../../src/seam/skill-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B
|
|
1
|
+
{"version":3,"file":"skill-service.d.ts","sourceRoot":"","sources":["../../src/seam/skill-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,oFAAoF;AACpF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAE/D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExE,0FAA0F;IAC1F,MAAM,CAAC,CACL,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;OAEG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACrE;AAED,MAAM,MAAM,oBAAoB,GAAG,YAAY,CAAC"}
|
package/lib/seam/tokens.d.ts
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
* 能力接缝 DI Token
|
|
3
3
|
*/
|
|
4
4
|
import type { SeamIntegration } from './seam-integration.js';
|
|
5
|
+
/** @deprecated Legacy non-Runtime DI symbol. Use capabilitySeamToken. */
|
|
5
6
|
export declare const seamIntegrationToken: unique symbol;
|
|
7
|
+
/** Canonical Plugin Runtime resource token consumed by CapabilityIngress. */
|
|
8
|
+
export declare const capabilitySeamToken: import("@zhin.js/plugin-runtime").Token<SeamIntegration>;
|
|
6
9
|
export type SeamIntegrationToken = typeof seamIntegrationToken;
|
|
10
|
+
export type CapabilitySeamToken = typeof capabilitySeamToken;
|
|
7
11
|
export type { SeamIntegration };
|
|
8
12
|
//# sourceMappingURL=tokens.d.ts.map
|
package/lib/seam/tokens.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/seam/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/seam/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,eAAgD,CAAC;AAElF,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,0DAG/B,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAC/D,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAE7D,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
package/lib/seam/tokens.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 能力接缝 DI Token
|
|
3
3
|
*/
|
|
4
|
+
import { createToken } from '@zhin.js/plugin-runtime';
|
|
5
|
+
/** @deprecated Legacy non-Runtime DI symbol. Use capabilitySeamToken. */
|
|
4
6
|
export const seamIntegrationToken = Symbol.for('@zhin.js/agent:seam-integration');
|
|
7
|
+
/** Canonical Plugin Runtime resource token consumed by CapabilityIngress. */
|
|
8
|
+
export const capabilitySeamToken = createToken('zhin.agent.capability-seam', 'Generation-owned Agent Tool and Skill service providers');
|
|
5
9
|
//# sourceMappingURL=tokens.js.map
|
package/lib/seam/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/seam/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/seam/tokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,yEAAyE;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAElF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAC5C,4BAA4B,EAC5B,yDAAyD,CAC1D,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* 支持按作用域隔离,避免不同 agent/session 间的工具冲突。
|
|
6
6
|
*/
|
|
7
7
|
import type { SeamProvider, SeamScope } from './seam-provider.js';
|
|
8
|
+
import type { ToolInvocationContext, ToolApproval, ToolScope } from '@zhin.js/tool';
|
|
8
9
|
/**
|
|
9
10
|
* Tool 的 OpenAI 格式 Schema
|
|
10
11
|
*/
|
|
@@ -15,6 +16,13 @@ export interface ToolSchema {
|
|
|
15
16
|
description: string;
|
|
16
17
|
parameters: unknown;
|
|
17
18
|
};
|
|
19
|
+
/** Runtime policy metadata projected into the canonical Tool capability. */
|
|
20
|
+
approval?: ToolApproval;
|
|
21
|
+
platforms?: readonly string[];
|
|
22
|
+
scopes?: readonly ToolScope[];
|
|
23
|
+
permissions?: readonly string[];
|
|
24
|
+
hidden?: boolean;
|
|
25
|
+
source?: string;
|
|
18
26
|
}
|
|
19
27
|
/**
|
|
20
28
|
* Tool 执行结果
|
|
@@ -44,15 +52,13 @@ export interface ToolService extends SeamProvider {
|
|
|
44
52
|
* @param args - 工具参数
|
|
45
53
|
* @returns 执行结果
|
|
46
54
|
*/
|
|
47
|
-
execute(scope: SeamScope | 'global', toolName: string, args: unknown): Promise<ToolExecutionResult>;
|
|
55
|
+
execute(scope: SeamScope | 'global', toolName: string, args: unknown, context?: ToolInvocationContext): Promise<ToolExecutionResult>;
|
|
48
56
|
/**
|
|
49
57
|
* 可选:检查工具是否在该作用域可用
|
|
50
58
|
*/
|
|
51
59
|
isAvailable?(scope: SeamScope | 'global', toolName: string): boolean;
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
*/
|
|
55
|
-
applyPolicy?(scope: SeamScope | 'global', toolName: string, args: unknown): Promise<void>;
|
|
60
|
+
/** Provider-local policy. Runtime generation, permission and approval policy always runs first. */
|
|
61
|
+
applyPolicy?(scope: SeamScope | 'global', toolName: string, args: unknown, context?: ToolInvocationContext): Promise<void>;
|
|
56
62
|
}
|
|
57
63
|
export type ToolServiceProvider = ToolService;
|
|
58
64
|
//# sourceMappingURL=tool-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-service.d.ts","sourceRoot":"","sources":["../../src/seam/tool-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-service.d.ts","sourceRoot":"","sources":["../../src/seam/tool-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC;IAElD;;;;;;;OAOG;IACH,OAAO,CACL,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;OAEG;IACH,WAAW,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAErE,mGAAmG;IACnG,WAAW,CAAC,CACV,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* 使其符合统一的能力接缝(Capability Seam)架构。
|
|
6
6
|
*/
|
|
7
7
|
import type { SeamScope } from '../seam/seam-provider.js';
|
|
8
|
-
import type { SkillService, SkillMetadata
|
|
8
|
+
import type { SkillService, SkillMetadata } from '../seam/skill-service.js';
|
|
9
9
|
import type { SkillRegistry } from '../resource-hub/skill-registry.js';
|
|
10
10
|
/**
|
|
11
11
|
* 将 SkillRegistry 适配为 SkillService
|
|
@@ -21,9 +21,9 @@ export declare class SkillRegistryAsService implements SkillService {
|
|
|
21
21
|
readonly description = "Zhin skill registry";
|
|
22
22
|
readonly tags: string[];
|
|
23
23
|
constructor(registry: SkillRegistry);
|
|
24
|
-
catalog(
|
|
25
|
-
describe(
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
catalog(scope: SeamScope | 'global'): Promise<SkillMetadata[]>;
|
|
25
|
+
describe(scope: SeamScope | 'global', skillId: string): Promise<string>;
|
|
26
|
+
isAvailable(scope: SeamScope | 'global', skillId: string): boolean;
|
|
27
|
+
private findSkill;
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=skill-registry-as-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-registry-as-service.d.ts","sourceRoot":"","sources":["../../src/skill/skill-registry-as-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"skill-registry-as-service.d.ts","sourceRoot":"","sources":["../../src/skill/skill-registry-as-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGvE;;;;;;;GAOG;AACH,qBAAa,sBAAuB,YAAW,YAAY;IAK7C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJrC,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,WAAW,yBAAyB;IAC7C,QAAQ,CAAC,IAAI,WAA2B;gBAEX,QAAQ,EAAE,aAAa;IAE9C,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAY9D,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7E,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAIlE,OAAO,CAAC,SAAS;CAMlB"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* 将现有的 SkillRegistry 和约定目录发现逻辑包装为标准的 SkillService,
|
|
5
5
|
* 使其符合统一的能力接缝(Capability Seam)架构。
|
|
6
6
|
*/
|
|
7
|
+
import { readFile } from 'node:fs/promises';
|
|
7
8
|
/**
|
|
8
9
|
* 将 SkillRegistry 适配为 SkillService
|
|
9
10
|
*
|
|
@@ -20,34 +21,38 @@ export class SkillRegistryAsService {
|
|
|
20
21
|
constructor(registry) {
|
|
21
22
|
this.registry = registry;
|
|
22
23
|
}
|
|
23
|
-
async catalog(
|
|
24
|
-
|
|
24
|
+
async catalog(scope) {
|
|
25
|
+
const skills = scope === 'global'
|
|
26
|
+
? this.registry.getAll()
|
|
27
|
+
: this.registry.getForAgent(String(scope));
|
|
28
|
+
return skills.map((skill) => ({
|
|
25
29
|
name: skill.name,
|
|
26
30
|
description: skill.description,
|
|
27
31
|
keywords: skill.keywords,
|
|
28
32
|
category: skill.tags?.[0],
|
|
29
33
|
}));
|
|
30
34
|
}
|
|
31
|
-
async describe(
|
|
32
|
-
const skill = this.
|
|
35
|
+
async describe(scope, skillId) {
|
|
36
|
+
const skill = this.findSkill(scope, skillId);
|
|
33
37
|
if (!skill)
|
|
34
38
|
throw new Error(`Skill not found: ${skillId}`);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
async invoke(_scope, request) {
|
|
39
|
+
if (!skill.filePath)
|
|
40
|
+
return skill.description;
|
|
38
41
|
try {
|
|
39
|
-
|
|
40
|
-
if (!skill) {
|
|
41
|
-
return { success: false, error: `Skill not found: ${request.skillId}` };
|
|
42
|
-
}
|
|
43
|
-
return { success: true, output: skill };
|
|
42
|
+
return await readFile(skill.filePath, 'utf8');
|
|
44
43
|
}
|
|
45
|
-
catch
|
|
46
|
-
return
|
|
44
|
+
catch {
|
|
45
|
+
return skill.description;
|
|
47
46
|
}
|
|
48
47
|
}
|
|
49
|
-
isAvailable(
|
|
50
|
-
return this.
|
|
48
|
+
isAvailable(scope, skillId) {
|
|
49
|
+
return this.findSkill(scope, skillId) !== undefined;
|
|
50
|
+
}
|
|
51
|
+
findSkill(scope, skillId) {
|
|
52
|
+
const skills = scope === 'global'
|
|
53
|
+
? this.registry.getAll()
|
|
54
|
+
: this.registry.getForAgent(String(scope));
|
|
55
|
+
return skills.find((skill) => skill.name === skillId);
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
58
|
//# sourceMappingURL=skill-registry-as-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-registry-as-service.js","sourceRoot":"","sources":["../../src/skill/skill-registry-as-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"skill-registry-as-service.js","sourceRoot":"","sources":["../../src/skill/skill-registry-as-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,OAAO,sBAAsB;IAKJ;IAJpB,EAAE,GAAG,aAAa,CAAC;IACnB,WAAW,GAAG,qBAAqB,CAAC;IACpC,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAExC,YAA6B,QAAuB;QAAvB,aAAQ,GAAR,QAAQ,CAAe;IAAG,CAAC;IAExD,KAAK,CAAC,OAAO,CAAC,KAA2B;QACvC,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SAC1B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAA2B,EAAE,OAAe;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,WAAW,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAA2B,EAAE,OAAe;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IACtD,CAAC;IAEO,SAAS,CAAC,KAA2B,EAAE,OAAe;QAC5D,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ;YAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACxD,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Projects the generation-owned ResourceHub ToolRegistry into Capability Seam. */
|
|
2
|
+
import type { ToolInvocationContext } from '@zhin.js/tool';
|
|
3
|
+
import type { ToolRegistry } from '../resource-hub/tool-registry.js';
|
|
4
|
+
import type { SeamScope } from '../seam/seam-provider.js';
|
|
5
|
+
import type { ToolExecutionResult, ToolSchema, ToolService } from '../seam/tool-service.js';
|
|
6
|
+
export declare class ToolRegistryAsService implements ToolService {
|
|
7
|
+
private readonly registry;
|
|
8
|
+
readonly id = "zhin:resource-hub-tools";
|
|
9
|
+
readonly description = "Generation-owned Agent ResourceHub tools";
|
|
10
|
+
readonly tags: string[];
|
|
11
|
+
constructor(registry: ToolRegistry);
|
|
12
|
+
schema(scope: SeamScope | 'global'): ToolSchema[];
|
|
13
|
+
execute(scope: SeamScope | 'global', toolName: string, args: unknown, context?: ToolInvocationContext): Promise<ToolExecutionResult>;
|
|
14
|
+
isAvailable(scope: SeamScope | 'global', toolName: string): boolean;
|
|
15
|
+
private tools;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=tool-registry-as-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry-as-service.d.ts","sourceRoot":"","sources":["../../src/tool/tool-registry-as-service.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAGnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE5F,qBAAa,qBAAsB,YAAW,WAAW;IAK3C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJrC,QAAQ,CAAC,EAAE,6BAA6B;IACxC,QAAQ,CAAC,WAAW,8CAA8C;IAClE,QAAQ,CAAC,IAAI,WAA0B;gBAEV,QAAQ,EAAE,YAAY;IAEnD,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,EAAE;IAe3C,OAAO,CACX,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,mBAAmB,CAAC;IAwB/B,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInE,OAAO,CAAC,KAAK;CAKd"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Projects the generation-owned ResourceHub ToolRegistry into Capability Seam. */
|
|
2
|
+
export class ToolRegistryAsService {
|
|
3
|
+
registry;
|
|
4
|
+
id = 'zhin:resource-hub-tools';
|
|
5
|
+
description = 'Generation-owned Agent ResourceHub tools';
|
|
6
|
+
tags = ['tools', 'framework'];
|
|
7
|
+
constructor(registry) {
|
|
8
|
+
this.registry = registry;
|
|
9
|
+
}
|
|
10
|
+
schema(scope) {
|
|
11
|
+
return this.tools(scope).map((tool) => ({
|
|
12
|
+
type: 'function',
|
|
13
|
+
function: {
|
|
14
|
+
name: tool.name,
|
|
15
|
+
description: tool.description,
|
|
16
|
+
parameters: tool.parameters,
|
|
17
|
+
},
|
|
18
|
+
approval: typeof tool.approval === 'string' ? tool.approval : 'on-risk',
|
|
19
|
+
permissions: tool.permissions,
|
|
20
|
+
hidden: tool.hidden,
|
|
21
|
+
source: tool.source,
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
async execute(scope, toolName, args, context) {
|
|
25
|
+
const tool = this.tools(scope).find((candidate) => candidate.name === toolName);
|
|
26
|
+
if (!tool)
|
|
27
|
+
return { success: false, error: `Tool not found: ${toolName}` };
|
|
28
|
+
if (!context) {
|
|
29
|
+
return { success: false, error: `Tool execution requires Turn context: ${toolName}` };
|
|
30
|
+
}
|
|
31
|
+
const executionContext = {
|
|
32
|
+
signal: context.signal,
|
|
33
|
+
sessionId: context.sessionKey,
|
|
34
|
+
toolCallId: context.turnId,
|
|
35
|
+
toolName,
|
|
36
|
+
};
|
|
37
|
+
try {
|
|
38
|
+
const output = await tool.execute((args && typeof args === 'object' ? args : {}), undefined, executionContext);
|
|
39
|
+
return { success: true, output };
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return { success: false, error: error instanceof Error ? error.message : String(error) };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
isAvailable(scope, toolName) {
|
|
46
|
+
return this.tools(scope).some((tool) => tool.name === toolName);
|
|
47
|
+
}
|
|
48
|
+
tools(scope) {
|
|
49
|
+
return scope === 'global'
|
|
50
|
+
? this.registry.getAll()
|
|
51
|
+
: this.registry.getForAgent(String(scope));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=tool-registry-as-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry-as-service.js","sourceRoot":"","sources":["../../src/tool/tool-registry-as-service.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAQnF,MAAM,OAAO,qBAAqB;IAKH;IAJpB,EAAE,GAAG,yBAAyB,CAAC;IAC/B,WAAW,GAAG,0CAA0C,CAAC;IACzD,IAAI,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAEvC,YAA6B,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAEvD,MAAM,CAAC,KAA2B;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACR,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B;YACD,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACvE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAG,IAA6B,CAAC,MAAM;YAC7C,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAA2B,EAC3B,QAAgB,EAChB,IAAa,EACb,OAA+B;QAE/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,QAAQ,EAAE,EAAE,CAAC;QAC3E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,QAAQ,EAAE,EAAE,CAAC;QACxF,CAAC;QACD,MAAM,gBAAgB,GAA8B;YAClD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,QAAQ;SACT,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAA4B,EACzE,SAAS,EACT,gBAAgB,CACjB,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAA2B,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,KAA2B;QACvC,OAAO,KAAK,KAAK,QAAQ;YACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;CACF"}
|