@contractspec/lib.ai-agent 1.57.0 → 1.59.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/dist/agent/agent-factory.d.ts +67 -71
- package/dist/agent/agent-factory.d.ts.map +1 -1
- package/dist/agent/agent-factory.js +658 -100
- package/dist/agent/agent.test.d.ts +2 -0
- package/dist/agent/agent.test.d.ts.map +1 -0
- package/dist/agent/contract-spec-agent.d.ts +48 -52
- package/dist/agent/contract-spec-agent.d.ts.map +1 -1
- package/dist/agent/contract-spec-agent.js +605 -146
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +2102 -4
- package/dist/agent/json-runner.d.ts +15 -19
- package/dist/agent/json-runner.d.ts.map +1 -1
- package/dist/agent/json-runner.js +672 -57
- package/dist/agent/json-runner.test.d.ts +2 -0
- package/dist/agent/json-runner.test.d.ts.map +1 -0
- package/dist/agent/unified-agent.d.ts +132 -109
- package/dist/agent/unified-agent.d.ts.map +1 -1
- package/dist/agent/unified-agent.js +2011 -293
- package/dist/approval/index.d.ts +3 -2
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +128 -2
- package/dist/approval/workflow.d.ts +106 -110
- package/dist/approval/workflow.d.ts.map +1 -1
- package/dist/approval/workflow.js +126 -157
- package/dist/exporters/claude-agent-exporter.d.ts +50 -48
- package/dist/exporters/claude-agent-exporter.d.ts.map +1 -1
- package/dist/exporters/claude-agent-exporter.js +258 -203
- package/dist/exporters/index.d.ts +28 -4
- package/dist/exporters/index.d.ts.map +1 -0
- package/dist/exporters/index.js +737 -3
- package/dist/exporters/opencode-exporter.d.ts +47 -45
- package/dist/exporters/opencode-exporter.d.ts.map +1 -1
- package/dist/exporters/opencode-exporter.js +507 -191
- package/dist/exporters/types.d.ts +171 -169
- package/dist/exporters/types.d.ts.map +1 -1
- package/dist/exporters/types.js +1 -0
- package/dist/index.d.ts +15 -39
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3337 -32
- package/dist/interop/index.d.ts +48 -4
- package/dist/interop/index.d.ts.map +1 -0
- package/dist/interop/index.js +709 -3
- package/dist/interop/spec-consumer.d.ts +57 -53
- package/dist/interop/spec-consumer.d.ts.map +1 -1
- package/dist/interop/spec-consumer.js +302 -282
- package/dist/interop/tool-consumer.d.ts +57 -53
- package/dist/interop/tool-consumer.d.ts.map +1 -1
- package/dist/interop/tool-consumer.js +412 -213
- package/dist/interop/types.d.ts +173 -171
- package/dist/interop/types.d.ts.map +1 -1
- package/dist/interop/types.js +1 -0
- package/dist/knowledge/index.d.ts +2 -2
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +66 -2
- package/dist/knowledge/injector.d.ts +16 -20
- package/dist/knowledge/injector.d.ts.map +1 -1
- package/dist/knowledge/injector.js +56 -47
- package/dist/memory/in-memory.d.ts +15 -19
- package/dist/memory/in-memory.d.ts.map +1 -1
- package/dist/memory/in-memory.js +152 -46
- package/dist/memory/index.d.ts +3 -3
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +155 -3
- package/dist/memory/manager.d.ts +32 -36
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +96 -70
- package/dist/memory/memory.test.d.ts +2 -0
- package/dist/memory/memory.test.d.ts.map +1 -0
- package/dist/node/agent/agent-factory.js +661 -0
- package/dist/node/agent/contract-spec-agent.js +607 -0
- package/dist/node/agent/index.js +2103 -0
- package/dist/node/agent/json-runner.js +684 -0
- package/dist/node/agent/unified-agent.js +2019 -0
- package/dist/node/approval/index.js +129 -0
- package/dist/node/approval/workflow.js +129 -0
- package/dist/node/exporters/claude-agent-exporter.js +265 -0
- package/dist/node/exporters/index.js +738 -0
- package/dist/node/exporters/opencode-exporter.js +516 -0
- package/dist/node/exporters/types.js +0 -0
- package/dist/node/index.js +3337 -0
- package/dist/node/interop/index.js +710 -0
- package/dist/node/interop/spec-consumer.js +307 -0
- package/dist/node/interop/tool-consumer.js +419 -0
- package/dist/node/interop/types.js +0 -0
- package/dist/node/knowledge/index.js +67 -0
- package/dist/node/knowledge/injector.js +67 -0
- package/dist/node/memory/in-memory.js +154 -0
- package/dist/node/memory/index.js +156 -0
- package/dist/node/memory/manager.js +105 -0
- package/dist/node/providers/claude-agent-sdk/adapter.js +624 -0
- package/dist/node/providers/claude-agent-sdk/index.js +673 -0
- package/dist/node/providers/claude-agent-sdk/session-bridge.js +149 -0
- package/dist/node/providers/claude-agent-sdk/tool-bridge.js +118 -0
- package/dist/node/providers/index.js +1261 -0
- package/dist/node/providers/opencode-sdk/adapter.js +669 -0
- package/dist/node/providers/opencode-sdk/agent-bridge.js +299 -0
- package/dist/node/providers/opencode-sdk/index.js +703 -0
- package/dist/node/providers/opencode-sdk/tool-bridge.js +141 -0
- package/dist/node/providers/registry.js +89 -0
- package/dist/node/providers/types.js +56 -0
- package/dist/node/schema/index.js +195 -0
- package/dist/node/schema/json-schema-to-zod.js +152 -0
- package/dist/node/schema/schema-output.js +190 -0
- package/dist/node/session/index.js +90 -0
- package/dist/node/session/store.js +90 -0
- package/dist/node/spec/index.js +85 -0
- package/dist/node/spec/registry.js +56 -0
- package/dist/node/spec/spec.js +44 -0
- package/dist/node/telemetry/adapter.js +85 -0
- package/dist/node/telemetry/index.js +86 -0
- package/dist/node/tools/index.js +345 -0
- package/dist/node/tools/knowledge-tool.js +74 -0
- package/dist/node/tools/mcp-client.js +47 -0
- package/dist/node/tools/mcp-server.js +205 -0
- package/dist/node/tools/tool-adapter.js +197 -0
- package/dist/node/types.js +0 -0
- package/dist/providers/claude-agent-sdk/adapter.d.ts +60 -52
- package/dist/providers/claude-agent-sdk/adapter.d.ts.map +1 -1
- package/dist/providers/claude-agent-sdk/adapter.js +622 -304
- package/dist/providers/claude-agent-sdk/index.d.ts +22 -4
- package/dist/providers/claude-agent-sdk/index.d.ts.map +1 -0
- package/dist/providers/claude-agent-sdk/index.js +672 -4
- package/dist/providers/claude-agent-sdk/session-bridge.d.ts +43 -40
- package/dist/providers/claude-agent-sdk/session-bridge.d.ts.map +1 -1
- package/dist/providers/claude-agent-sdk/session-bridge.js +121 -130
- package/dist/providers/claude-agent-sdk/tool-bridge.d.ts +63 -60
- package/dist/providers/claude-agent-sdk/tool-bridge.d.ts.map +1 -1
- package/dist/providers/claude-agent-sdk/tool-bridge.js +104 -108
- package/dist/providers/index.d.ts +28 -7
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +1261 -8
- package/dist/providers/opencode-sdk/adapter.d.ts +56 -48
- package/dist/providers/opencode-sdk/adapter.d.ts.map +1 -1
- package/dist/providers/opencode-sdk/adapter.js +667 -274
- package/dist/providers/opencode-sdk/agent-bridge.d.ts +62 -57
- package/dist/providers/opencode-sdk/agent-bridge.d.ts.map +1 -1
- package/dist/providers/opencode-sdk/agent-bridge.js +289 -155
- package/dist/providers/opencode-sdk/index.d.ts +22 -4
- package/dist/providers/opencode-sdk/index.d.ts.map +1 -0
- package/dist/providers/opencode-sdk/index.js +702 -4
- package/dist/providers/opencode-sdk/tool-bridge.d.ts +41 -42
- package/dist/providers/opencode-sdk/tool-bridge.d.ts.map +1 -1
- package/dist/providers/opencode-sdk/tool-bridge.js +121 -107
- package/dist/providers/registry.d.ts +10 -11
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +86 -49
- package/dist/providers/types.d.ts +169 -166
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +54 -42
- package/dist/schema/index.d.ts +3 -3
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +194 -3
- package/dist/schema/json-schema-to-zod.d.ts +23 -26
- package/dist/schema/json-schema-to-zod.d.ts.map +1 -1
- package/dist/schema/json-schema-to-zod.js +138 -110
- package/dist/schema/schema-output.d.ts +29 -32
- package/dist/schema/schema-output.d.ts.map +1 -1
- package/dist/schema/schema-output.js +178 -53
- package/dist/session/index.d.ts +2 -2
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +89 -2
- package/dist/session/store.d.ts +51 -55
- package/dist/session/store.d.ts.map +1 -1
- package/dist/session/store.js +85 -74
- package/dist/spec/index.d.ts +3 -3
- package/dist/spec/index.d.ts.map +1 -0
- package/dist/spec/index.js +84 -3
- package/dist/spec/registry.d.ts +32 -36
- package/dist/spec/registry.d.ts.map +1 -1
- package/dist/spec/registry.js +51 -60
- package/dist/spec/spec.d.ts +80 -84
- package/dist/spec/spec.d.ts.map +1 -1
- package/dist/spec/spec.js +40 -26
- package/dist/telemetry/adapter.d.ts +33 -37
- package/dist/telemetry/adapter.d.ts.map +1 -1
- package/dist/telemetry/adapter.js +78 -96
- package/dist/telemetry/index.d.ts +2 -2
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +85 -2
- package/dist/tools/index.d.ts +5 -5
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +344 -5
- package/dist/tools/knowledge-tool.d.ts +4 -8
- package/dist/tools/knowledge-tool.d.ts.map +1 -1
- package/dist/tools/knowledge-tool.js +68 -48
- package/dist/tools/mcp-client.d.ts +17 -21
- package/dist/tools/mcp-client.d.ts.map +1 -1
- package/dist/tools/mcp-client.js +42 -53
- package/dist/tools/mcp-server.d.ts +14 -18
- package/dist/tools/mcp-server.d.ts.map +1 -1
- package/dist/tools/mcp-server.js +200 -64
- package/dist/tools/tool-adapter.d.ts +7 -11
- package/dist/tools/tool-adapter.d.ts.map +1 -1
- package/dist/tools/tool-adapter.js +187 -70
- package/dist/tools/tools.test.d.ts +2 -0
- package/dist/tools/tools.test.d.ts.map +1 -0
- package/dist/types.d.ts +108 -111
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/package.json +448 -90
- package/dist/_virtual/_rolldown/runtime.js +0 -8
- package/dist/agent/agent-factory.js.map +0 -1
- package/dist/agent/contract-spec-agent.js.map +0 -1
- package/dist/agent/json-runner.js.map +0 -1
- package/dist/agent/unified-agent.js.map +0 -1
- package/dist/approval/workflow.js.map +0 -1
- package/dist/exporters/claude-agent-exporter.js.map +0 -1
- package/dist/exporters/opencode-exporter.js.map +0 -1
- package/dist/interop/spec-consumer.js.map +0 -1
- package/dist/interop/tool-consumer.js.map +0 -1
- package/dist/knowledge/injector.js.map +0 -1
- package/dist/memory/in-memory.js.map +0 -1
- package/dist/memory/manager.js.map +0 -1
- package/dist/providers/claude-agent-sdk/adapter.js.map +0 -1
- package/dist/providers/claude-agent-sdk/session-bridge.js.map +0 -1
- package/dist/providers/claude-agent-sdk/tool-bridge.js.map +0 -1
- package/dist/providers/opencode-sdk/adapter.js.map +0 -1
- package/dist/providers/opencode-sdk/agent-bridge.js.map +0 -1
- package/dist/providers/opencode-sdk/tool-bridge.js.map +0 -1
- package/dist/providers/registry.js.map +0 -1
- package/dist/providers/types.js.map +0 -1
- package/dist/schema/json-schema-to-zod.js.map +0 -1
- package/dist/schema/schema-output.js.map +0 -1
- package/dist/session/store.js.map +0 -1
- package/dist/spec/registry.js.map +0 -1
- package/dist/spec/spec.js.map +0 -1
- package/dist/telemetry/adapter.js.map +0 -1
- package/dist/tools/knowledge-tool.js.map +0 -1
- package/dist/tools/mcp-client.js.map +0 -1
- package/dist/tools/mcp-server.js.map +0 -1
- package/dist/tools/tool-adapter.js.map +0 -1
|
@@ -1,80 +1,79 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Tool bridge for converting between ContractSpec and OpenCode SDK tool formats.
|
|
3
|
+
*/
|
|
4
|
+
import type { AgentToolConfig } from '../../spec/spec';
|
|
5
|
+
import type { ToolHandler, ToolExecutionContext } from '../../types';
|
|
6
|
+
import type { ExternalToolDefinition } from '../types';
|
|
6
7
|
/**
|
|
7
8
|
* OpenCode SDK tool definition.
|
|
8
9
|
*/
|
|
9
|
-
interface OpenCodeTool {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
export interface OpenCodeTool {
|
|
11
|
+
/** Tool name */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Tool description */
|
|
14
|
+
description: string;
|
|
15
|
+
/** Input parameters schema */
|
|
16
|
+
parameters: {
|
|
17
|
+
type: 'object';
|
|
18
|
+
properties?: Record<string, OpenCodeParameter>;
|
|
19
|
+
required?: string[];
|
|
20
|
+
};
|
|
21
|
+
/** Tool category */
|
|
22
|
+
category?: string;
|
|
23
|
+
/** Permission level */
|
|
24
|
+
permission?: 'allow' | 'ask' | 'deny';
|
|
24
25
|
}
|
|
25
26
|
/**
|
|
26
27
|
* OpenCode parameter definition.
|
|
27
28
|
*/
|
|
28
|
-
interface OpenCodeParameter {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
export interface OpenCodeParameter {
|
|
30
|
+
type: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
enum?: string[];
|
|
33
|
+
default?: unknown;
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* OpenCode tool call from session.
|
|
36
37
|
*/
|
|
37
|
-
interface OpenCodeToolCall {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
export interface OpenCodeToolCall {
|
|
39
|
+
id: string;
|
|
40
|
+
name: string;
|
|
41
|
+
arguments: Record<string, unknown>;
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* OpenCode tool result.
|
|
44
45
|
*/
|
|
45
|
-
interface OpenCodeToolResult {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
export interface OpenCodeToolResult {
|
|
47
|
+
tool_call_id: string;
|
|
48
|
+
output: string;
|
|
49
|
+
is_error?: boolean;
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
51
52
|
* Convert a ContractSpec AgentToolConfig to OpenCode tool format.
|
|
52
53
|
*/
|
|
53
|
-
declare function specToolToOpenCodeTool(tool: AgentToolConfig): OpenCodeTool;
|
|
54
|
+
export declare function specToolToOpenCodeTool(tool: AgentToolConfig): OpenCodeTool;
|
|
54
55
|
/**
|
|
55
56
|
* Convert multiple ContractSpec tools to OpenCode format.
|
|
56
57
|
*/
|
|
57
|
-
declare function specToolsToOpenCodeTools(tools: AgentToolConfig[]): OpenCodeTool[];
|
|
58
|
+
export declare function specToolsToOpenCodeTools(tools: AgentToolConfig[]): OpenCodeTool[];
|
|
58
59
|
/**
|
|
59
60
|
* Convert an OpenCode tool to ContractSpec AgentToolConfig.
|
|
60
61
|
*/
|
|
61
|
-
declare function openCodeToolToSpecTool(openCodeTool: OpenCodeTool): AgentToolConfig;
|
|
62
|
+
export declare function openCodeToolToSpecTool(openCodeTool: OpenCodeTool): AgentToolConfig;
|
|
62
63
|
/**
|
|
63
64
|
* Convert multiple OpenCode tools to ContractSpec format.
|
|
64
65
|
*/
|
|
65
|
-
declare function openCodeToolsToSpecTools(openCodeTools: OpenCodeTool[]): AgentToolConfig[];
|
|
66
|
+
export declare function openCodeToolsToSpecTools(openCodeTools: OpenCodeTool[]): AgentToolConfig[];
|
|
66
67
|
/**
|
|
67
68
|
* Convert ContractSpec tool to ExternalToolDefinition format for OpenCode.
|
|
68
69
|
*/
|
|
69
|
-
declare function specToolToExternalToolForOpenCode(tool: AgentToolConfig, handler?: ToolHandler, context?: Partial<ToolExecutionContext>): ExternalToolDefinition;
|
|
70
|
+
export declare function specToolToExternalToolForOpenCode(tool: AgentToolConfig, handler?: ToolHandler, context?: Partial<ToolExecutionContext>): ExternalToolDefinition;
|
|
70
71
|
/**
|
|
71
72
|
* Create a tool handler map from ExternalToolSet.
|
|
72
73
|
*/
|
|
73
|
-
declare function createToolHandlerMap(tools: Record<string, ExternalToolDefinition>): Map<string, (input: unknown) => Promise<unknown>>;
|
|
74
|
+
export declare function createToolHandlerMap(tools: Record<string, ExternalToolDefinition>): Map<string, (input: unknown) => Promise<unknown>>;
|
|
74
75
|
/**
|
|
75
76
|
* Execute a tool call and format the result.
|
|
76
77
|
*/
|
|
77
|
-
declare function executeToolCall(toolCall: OpenCodeToolCall, handlers: Map<string, (input: unknown) => Promise<unknown>>): Promise<OpenCodeToolResult>;
|
|
78
|
-
//#endregion
|
|
79
|
-
export { OpenCodeParameter, OpenCodeTool, OpenCodeToolCall, OpenCodeToolResult, createToolHandlerMap, executeToolCall, openCodeToolToSpecTool, openCodeToolsToSpecTools, specToolToExternalToolForOpenCode, specToolToOpenCodeTool, specToolsToOpenCodeTools };
|
|
78
|
+
export declare function executeToolCall(toolCall: OpenCodeToolCall, handlers: Map<string, (input: unknown) => Promise<unknown>>): Promise<OpenCodeToolResult>;
|
|
80
79
|
//# sourceMappingURL=tool-bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-bridge.d.ts","
|
|
1
|
+
{"version":3,"file":"tool-bridge.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode-sdk/tool-bridge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAMvD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB;IACvB,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,GAAG,YAAY,CAQ1E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,eAAe,EAAE,GACvB,YAAY,EAAE,CAEhB;AAmBD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,YAAY,GACzB,eAAe,CASjB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,YAAY,EAAE,GAC5B,eAAe,EAAE,CAEnB;AAMD;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACtC,sBAAsB,CAoBxB;AAkED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAC5C,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAUnD;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAC1D,OAAO,CAAC,kBAAkB,CAAC,CAwB7B"}
|
|
@@ -1,127 +1,141 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// @bun
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, {
|
|
6
|
+
get: all[name],
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
set: (newValue) => all[name] = () => newValue
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
13
|
+
var __require = import.meta.require;
|
|
14
|
+
|
|
15
|
+
// src/providers/opencode-sdk/tool-bridge.ts
|
|
5
16
|
function specToolToOpenCodeTool(tool) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
return {
|
|
18
|
+
name: tool.name,
|
|
19
|
+
description: tool.description ?? `Execute ${tool.name}`,
|
|
20
|
+
parameters: normalizeToOpenCodeParameters(tool.schema),
|
|
21
|
+
permission: getPermissionLevel(tool)
|
|
22
|
+
};
|
|
12
23
|
}
|
|
13
|
-
/**
|
|
14
|
-
* Convert multiple ContractSpec tools to OpenCode format.
|
|
15
|
-
*/
|
|
16
24
|
function specToolsToOpenCodeTools(tools) {
|
|
17
|
-
|
|
25
|
+
return tools.map(specToolToOpenCodeTool);
|
|
18
26
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Determine permission level from tool config.
|
|
21
|
-
*/
|
|
22
27
|
function getPermissionLevel(tool) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
if (tool.requiresApproval) {
|
|
29
|
+
return "ask";
|
|
30
|
+
}
|
|
31
|
+
if (tool.automationSafe === false) {
|
|
32
|
+
return "ask";
|
|
33
|
+
}
|
|
34
|
+
return "allow";
|
|
26
35
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Convert an OpenCode tool to ContractSpec AgentToolConfig.
|
|
29
|
-
*/
|
|
30
36
|
function openCodeToolToSpecTool(openCodeTool) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
return {
|
|
38
|
+
name: openCodeTool.name,
|
|
39
|
+
description: openCodeTool.description,
|
|
40
|
+
schema: openCodeTool.parameters,
|
|
41
|
+
requiresApproval: openCodeTool.permission === "ask",
|
|
42
|
+
automationSafe: openCodeTool.permission === "allow"
|
|
43
|
+
};
|
|
38
44
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Convert multiple OpenCode tools to ContractSpec format.
|
|
41
|
-
*/
|
|
42
45
|
function openCodeToolsToSpecTools(openCodeTools) {
|
|
43
|
-
|
|
46
|
+
return openCodeTools.map(openCodeToolToSpecTool);
|
|
44
47
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Convert ContractSpec tool to ExternalToolDefinition format for OpenCode.
|
|
47
|
-
*/
|
|
48
48
|
function specToolToExternalToolForOpenCode(tool, handler, context) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
49
|
+
return {
|
|
50
|
+
name: tool.name,
|
|
51
|
+
description: tool.description ?? `Execute ${tool.name}`,
|
|
52
|
+
inputSchema: tool.schema ?? { type: "object" },
|
|
53
|
+
requiresApproval: tool.requiresApproval ?? !tool.automationSafe,
|
|
54
|
+
execute: handler ? async (input) => {
|
|
55
|
+
const fullContext = {
|
|
56
|
+
agentId: context?.agentId ?? "unknown",
|
|
57
|
+
sessionId: context?.sessionId ?? "unknown",
|
|
58
|
+
tenantId: context?.tenantId,
|
|
59
|
+
actorId: context?.actorId,
|
|
60
|
+
metadata: context?.metadata,
|
|
61
|
+
signal: context?.signal
|
|
62
|
+
};
|
|
63
|
+
return handler(input, fullContext);
|
|
64
|
+
} : undefined
|
|
65
|
+
};
|
|
65
66
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Normalize a schema to OpenCode's expected parameter format.
|
|
68
|
-
*/
|
|
69
67
|
function normalizeToOpenCodeParameters(schema) {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
if (!schema) {
|
|
69
|
+
return { type: "object" };
|
|
70
|
+
}
|
|
71
|
+
if (schema.type === "object") {
|
|
72
|
+
return {
|
|
73
|
+
type: "object",
|
|
74
|
+
properties: schema.properties,
|
|
75
|
+
required: schema.required
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: {
|
|
81
|
+
value: convertToOpenCodeParameter(schema)
|
|
82
|
+
},
|
|
83
|
+
required: ["value"]
|
|
84
|
+
};
|
|
81
85
|
}
|
|
82
|
-
/**
|
|
83
|
-
* Convert a JSON Schema property to OpenCode parameter format.
|
|
84
|
-
*/
|
|
85
86
|
function convertToOpenCodeParameter(schema) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
const param = {
|
|
88
|
+
type: schema.type ?? "string"
|
|
89
|
+
};
|
|
90
|
+
if (schema.description) {
|
|
91
|
+
param.description = schema.description;
|
|
92
|
+
}
|
|
93
|
+
if (schema.enum) {
|
|
94
|
+
param.enum = schema.enum;
|
|
95
|
+
}
|
|
96
|
+
if (schema.default !== undefined) {
|
|
97
|
+
param.default = schema.default;
|
|
98
|
+
}
|
|
99
|
+
return param;
|
|
91
100
|
}
|
|
92
|
-
/**
|
|
93
|
-
* Create a tool handler map from ExternalToolSet.
|
|
94
|
-
*/
|
|
95
101
|
function createToolHandlerMap(tools) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
102
|
+
const handlers = new Map;
|
|
103
|
+
for (const [name, tool] of Object.entries(tools)) {
|
|
104
|
+
if (tool.execute) {
|
|
105
|
+
handlers.set(name, tool.execute);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return handlers;
|
|
99
109
|
}
|
|
100
|
-
/**
|
|
101
|
-
* Execute a tool call and format the result.
|
|
102
|
-
*/
|
|
103
110
|
async function executeToolCall(toolCall, handlers) {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
111
|
+
const handler = handlers.get(toolCall.name);
|
|
112
|
+
if (!handler) {
|
|
113
|
+
return {
|
|
114
|
+
tool_call_id: toolCall.id,
|
|
115
|
+
output: `Error: Tool '${toolCall.name}' not found`,
|
|
116
|
+
is_error: true
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const result = await handler(toolCall.arguments);
|
|
121
|
+
return {
|
|
122
|
+
tool_call_id: toolCall.id,
|
|
123
|
+
output: typeof result === "string" ? result : JSON.stringify(result)
|
|
124
|
+
};
|
|
125
|
+
} catch (error) {
|
|
126
|
+
return {
|
|
127
|
+
tool_call_id: toolCall.id,
|
|
128
|
+
output: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
129
|
+
is_error: true
|
|
130
|
+
};
|
|
131
|
+
}
|
|
123
132
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
export {
|
|
134
|
+
specToolsToOpenCodeTools,
|
|
135
|
+
specToolToOpenCodeTool,
|
|
136
|
+
specToolToExternalToolForOpenCode,
|
|
137
|
+
openCodeToolsToSpecTools,
|
|
138
|
+
openCodeToolToSpecTool,
|
|
139
|
+
executeToolCall,
|
|
140
|
+
createToolHandlerMap
|
|
141
|
+
};
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Provider registry for managing external SDK providers.
|
|
3
|
+
*/
|
|
4
|
+
import type { ExternalAgentProvider, ProviderRegistry } from './types';
|
|
4
5
|
/**
|
|
5
6
|
* Create a new provider registry.
|
|
6
7
|
*/
|
|
7
|
-
declare function createProviderRegistry(): ProviderRegistry & {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
export declare function createProviderRegistry(): ProviderRegistry & {
|
|
9
|
+
require: (name: string) => ExternalAgentProvider;
|
|
10
|
+
clear: () => void;
|
|
10
11
|
};
|
|
11
12
|
/**
|
|
12
13
|
* Global default provider registry.
|
|
13
14
|
* Use this for convenience when you don't need multiple registries.
|
|
14
15
|
*/
|
|
15
|
-
declare const defaultProviderRegistry: ProviderRegistry & {
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
export declare const defaultProviderRegistry: ProviderRegistry & {
|
|
17
|
+
require: (name: string) => ExternalAgentProvider;
|
|
18
|
+
clear: () => void;
|
|
18
19
|
};
|
|
19
|
-
//#endregion
|
|
20
|
-
export { createProviderRegistry, defaultProviderRegistry };
|
|
21
20
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmDvE;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,GAAG;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACjD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,CAEA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;aAVzB,CAAC,IAAI,EAAE,MAAM,KAAK,qBAAqB;WACzC,MAAM,IAAI;CAS4C,CAAC"}
|
|
@@ -1,52 +1,89 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
register(name, provider) {
|
|
13
|
-
this.providers.set(name, provider);
|
|
14
|
-
}
|
|
15
|
-
list() {
|
|
16
|
-
return Array.from(this.providers.keys());
|
|
17
|
-
}
|
|
18
|
-
isAvailable(name) {
|
|
19
|
-
const provider = this.providers.get(name);
|
|
20
|
-
return provider !== void 0 && provider.isAvailable();
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Get a provider, throwing if not found or not available.
|
|
24
|
-
*/
|
|
25
|
-
require(name) {
|
|
26
|
-
const provider = this.providers.get(name);
|
|
27
|
-
if (!provider) throw new ProviderNotAvailableError(name, "not registered");
|
|
28
|
-
if (!provider.isAvailable()) throw new ProviderNotAvailableError(name, "dependencies not installed or not configured");
|
|
29
|
-
return provider;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Clear all registered providers.
|
|
33
|
-
*/
|
|
34
|
-
clear() {
|
|
35
|
-
this.providers.clear();
|
|
36
|
-
}
|
|
1
|
+
// @bun
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (target, all) => {
|
|
4
|
+
for (var name in all)
|
|
5
|
+
__defProp(target, name, {
|
|
6
|
+
get: all[name],
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
set: (newValue) => all[name] = () => newValue
|
|
10
|
+
});
|
|
37
11
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
12
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
13
|
+
var __require = import.meta.require;
|
|
14
|
+
|
|
15
|
+
// src/providers/types.ts
|
|
16
|
+
var ExternalProviderError, ProviderNotAvailableError, ProviderExecutionError, ContextCreationError;
|
|
17
|
+
var init_types = __esm(() => {
|
|
18
|
+
ExternalProviderError = class ExternalProviderError extends Error {
|
|
19
|
+
provider;
|
|
20
|
+
code;
|
|
21
|
+
cause;
|
|
22
|
+
constructor(message, provider, code, cause) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.provider = provider;
|
|
25
|
+
this.code = code;
|
|
26
|
+
this.cause = cause;
|
|
27
|
+
this.name = "ExternalProviderError";
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
ProviderNotAvailableError = class ProviderNotAvailableError extends ExternalProviderError {
|
|
31
|
+
constructor(provider, reason) {
|
|
32
|
+
super(`Provider '${provider}' is not available${reason ? `: ${reason}` : ""}`, provider, "PROVIDER_NOT_AVAILABLE");
|
|
33
|
+
this.name = "ProviderNotAvailableError";
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
ProviderExecutionError = class ProviderExecutionError extends ExternalProviderError {
|
|
37
|
+
constructor(provider, message, cause) {
|
|
38
|
+
super(message, provider, "EXECUTION_FAILED", cause);
|
|
39
|
+
this.name = "ProviderExecutionError";
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
ContextCreationError = class ContextCreationError extends ExternalProviderError {
|
|
43
|
+
constructor(provider, message, cause) {
|
|
44
|
+
super(message, provider, "CONTEXT_CREATION_FAILED", cause);
|
|
45
|
+
this.name = "ContextCreationError";
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// src/providers/registry.ts
|
|
51
|
+
init_types();
|
|
52
|
+
|
|
53
|
+
class InMemoryProviderRegistry {
|
|
54
|
+
providers = new Map;
|
|
55
|
+
get(name) {
|
|
56
|
+
return this.providers.get(name);
|
|
57
|
+
}
|
|
58
|
+
register(name, provider) {
|
|
59
|
+
this.providers.set(name, provider);
|
|
60
|
+
}
|
|
61
|
+
list() {
|
|
62
|
+
return Array.from(this.providers.keys());
|
|
63
|
+
}
|
|
64
|
+
isAvailable(name) {
|
|
65
|
+
const provider = this.providers.get(name);
|
|
66
|
+
return provider !== undefined && provider.isAvailable();
|
|
67
|
+
}
|
|
68
|
+
require(name) {
|
|
69
|
+
const provider = this.providers.get(name);
|
|
70
|
+
if (!provider) {
|
|
71
|
+
throw new ProviderNotAvailableError(name, "not registered");
|
|
72
|
+
}
|
|
73
|
+
if (!provider.isAvailable()) {
|
|
74
|
+
throw new ProviderNotAvailableError(name, "dependencies not installed or not configured");
|
|
75
|
+
}
|
|
76
|
+
return provider;
|
|
77
|
+
}
|
|
78
|
+
clear() {
|
|
79
|
+
this.providers.clear();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
41
82
|
function createProviderRegistry() {
|
|
42
|
-
|
|
83
|
+
return new InMemoryProviderRegistry;
|
|
43
84
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
//#endregion
|
|
51
|
-
export { createProviderRegistry, defaultProviderRegistry };
|
|
52
|
-
//# sourceMappingURL=registry.js.map
|
|
85
|
+
var defaultProviderRegistry = createProviderRegistry();
|
|
86
|
+
export {
|
|
87
|
+
defaultProviderRegistry,
|
|
88
|
+
createProviderRegistry
|
|
89
|
+
};
|