@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,160 +1,129 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
async get(id) {
|
|
13
|
-
return this.items.get(id) ?? null;
|
|
14
|
-
}
|
|
15
|
-
async getByToolCallId(toolCallId) {
|
|
16
|
-
for (const request of this.items.values()) if (request.toolCallId === toolCallId) return request;
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
async update(id, updates) {
|
|
20
|
-
const existing = this.items.get(id);
|
|
21
|
-
if (existing) this.items.set(id, {
|
|
22
|
-
...existing,
|
|
23
|
-
...updates
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
async list(options) {
|
|
27
|
-
let results = [...this.items.values()];
|
|
28
|
-
if (options?.status) results = results.filter((r) => r.status === options.status);
|
|
29
|
-
if (options?.agentId) results = results.filter((r) => r.agentId === options.agentId);
|
|
30
|
-
if (options?.tenantId) results = results.filter((r) => r.tenantId === options.tenantId);
|
|
31
|
-
return results.sort((a, b) => b.requestedAt.getTime() - a.requestedAt.getTime());
|
|
32
|
-
}
|
|
33
|
-
clear() {
|
|
34
|
-
this.items.clear();
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Approval workflow for managing tool execution approvals.
|
|
39
|
-
*
|
|
40
|
-
* Integrates with AI SDK v6's `needsApproval` feature on tools.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```typescript
|
|
44
|
-
* const workflow = new ApprovalWorkflow();
|
|
45
|
-
*
|
|
46
|
-
* // When a tool needs approval
|
|
47
|
-
* const request = await workflow.requestApproval({
|
|
48
|
-
* sessionId: 'sess_123',
|
|
49
|
-
* agentId: 'support.bot.v1',
|
|
50
|
-
* toolName: 'delete_account',
|
|
51
|
-
* toolCallId: 'call_abc',
|
|
52
|
-
* toolArgs: { userId: 'user_123' },
|
|
53
|
-
* reason: 'Account deletion requires human approval',
|
|
54
|
-
* });
|
|
55
|
-
*
|
|
56
|
-
* // When approval is granted
|
|
57
|
-
* await workflow.approve(request.id, 'admin@example.com', 'Verified identity');
|
|
58
|
-
*
|
|
59
|
-
* // Or rejected
|
|
60
|
-
* await workflow.reject(request.id, 'admin@example.com', 'Suspicious activity');
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
var ApprovalWorkflow = class {
|
|
64
|
-
constructor(store = new InMemoryApprovalStore()) {
|
|
65
|
-
this.store = store;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Request approval for a tool execution.
|
|
69
|
-
*/
|
|
70
|
-
async requestApproval(params) {
|
|
71
|
-
const request = {
|
|
72
|
-
id: randomUUID(),
|
|
73
|
-
sessionId: params.sessionId,
|
|
74
|
-
agentId: params.agentId,
|
|
75
|
-
tenantId: params.tenantId,
|
|
76
|
-
toolName: params.toolName,
|
|
77
|
-
toolCallId: params.toolCallId,
|
|
78
|
-
toolArgs: params.toolArgs,
|
|
79
|
-
reason: params.reason,
|
|
80
|
-
requestedAt: /* @__PURE__ */ new Date(),
|
|
81
|
-
status: "pending",
|
|
82
|
-
payload: params.payload
|
|
83
|
-
};
|
|
84
|
-
await this.store.create(request);
|
|
85
|
-
return request;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Request approval from an AI SDK tool call.
|
|
89
|
-
*/
|
|
90
|
-
async requestApprovalFromToolCall(toolCall, context) {
|
|
91
|
-
return this.requestApproval({
|
|
92
|
-
sessionId: context.sessionId,
|
|
93
|
-
agentId: context.agentId,
|
|
94
|
-
tenantId: context.tenantId,
|
|
95
|
-
toolName: toolCall.toolName,
|
|
96
|
-
toolCallId: toolCall.toolCallId,
|
|
97
|
-
toolArgs: toolCall.args,
|
|
98
|
-
reason: context.reason ?? `Tool "${toolCall.toolName}" requires approval`
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Approve a pending request.
|
|
103
|
-
*/
|
|
104
|
-
async approve(id, reviewer, notes) {
|
|
105
|
-
await this.store.update(id, {
|
|
106
|
-
status: "approved",
|
|
107
|
-
reviewer,
|
|
108
|
-
resolvedAt: /* @__PURE__ */ new Date(),
|
|
109
|
-
notes
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Reject a pending request.
|
|
114
|
-
*/
|
|
115
|
-
async reject(id, reviewer, notes) {
|
|
116
|
-
await this.store.update(id, {
|
|
117
|
-
status: "rejected",
|
|
118
|
-
reviewer,
|
|
119
|
-
resolvedAt: /* @__PURE__ */ new Date(),
|
|
120
|
-
notes
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get approval status for a tool call.
|
|
125
|
-
*/
|
|
126
|
-
async getStatus(toolCallId) {
|
|
127
|
-
return (await this.store.getByToolCallId(toolCallId))?.status ?? null;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Check if a tool call is approved.
|
|
131
|
-
*/
|
|
132
|
-
async isApproved(toolCallId) {
|
|
133
|
-
return await this.getStatus(toolCallId) === "approved";
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* List pending approvals.
|
|
137
|
-
*/
|
|
138
|
-
async listPending(options) {
|
|
139
|
-
return this.store.list({
|
|
140
|
-
...options,
|
|
141
|
-
status: "pending"
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Get approval request by ID.
|
|
146
|
-
*/
|
|
147
|
-
async get(id) {
|
|
148
|
-
return this.store.get(id);
|
|
149
|
-
}
|
|
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
|
+
});
|
|
150
11
|
};
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
12
|
+
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
13
|
+
var __require = import.meta.require;
|
|
14
|
+
|
|
15
|
+
// src/approval/workflow.ts
|
|
16
|
+
import { randomUUID } from "crypto";
|
|
17
|
+
|
|
18
|
+
class InMemoryApprovalStore {
|
|
19
|
+
items = new Map;
|
|
20
|
+
async create(request) {
|
|
21
|
+
this.items.set(request.id, request);
|
|
22
|
+
}
|
|
23
|
+
async get(id) {
|
|
24
|
+
return this.items.get(id) ?? null;
|
|
25
|
+
}
|
|
26
|
+
async getByToolCallId(toolCallId) {
|
|
27
|
+
for (const request of this.items.values()) {
|
|
28
|
+
if (request.toolCallId === toolCallId) {
|
|
29
|
+
return request;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
async update(id, updates) {
|
|
35
|
+
const existing = this.items.get(id);
|
|
36
|
+
if (existing) {
|
|
37
|
+
this.items.set(id, { ...existing, ...updates });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async list(options) {
|
|
41
|
+
let results = [...this.items.values()];
|
|
42
|
+
if (options?.status) {
|
|
43
|
+
results = results.filter((r) => r.status === options.status);
|
|
44
|
+
}
|
|
45
|
+
if (options?.agentId) {
|
|
46
|
+
results = results.filter((r) => r.agentId === options.agentId);
|
|
47
|
+
}
|
|
48
|
+
if (options?.tenantId) {
|
|
49
|
+
results = results.filter((r) => r.tenantId === options.tenantId);
|
|
50
|
+
}
|
|
51
|
+
return results.sort((a, b) => b.requestedAt.getTime() - a.requestedAt.getTime());
|
|
52
|
+
}
|
|
53
|
+
clear() {
|
|
54
|
+
this.items.clear();
|
|
55
|
+
}
|
|
156
56
|
}
|
|
157
57
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
58
|
+
class ApprovalWorkflow {
|
|
59
|
+
store;
|
|
60
|
+
constructor(store = new InMemoryApprovalStore) {
|
|
61
|
+
this.store = store;
|
|
62
|
+
}
|
|
63
|
+
async requestApproval(params) {
|
|
64
|
+
const request = {
|
|
65
|
+
id: randomUUID(),
|
|
66
|
+
sessionId: params.sessionId,
|
|
67
|
+
agentId: params.agentId,
|
|
68
|
+
tenantId: params.tenantId,
|
|
69
|
+
toolName: params.toolName,
|
|
70
|
+
toolCallId: params.toolCallId,
|
|
71
|
+
toolArgs: params.toolArgs,
|
|
72
|
+
reason: params.reason,
|
|
73
|
+
requestedAt: new Date,
|
|
74
|
+
status: "pending",
|
|
75
|
+
payload: params.payload
|
|
76
|
+
};
|
|
77
|
+
await this.store.create(request);
|
|
78
|
+
return request;
|
|
79
|
+
}
|
|
80
|
+
async requestApprovalFromToolCall(toolCall, context) {
|
|
81
|
+
return this.requestApproval({
|
|
82
|
+
sessionId: context.sessionId,
|
|
83
|
+
agentId: context.agentId,
|
|
84
|
+
tenantId: context.tenantId,
|
|
85
|
+
toolName: toolCall.toolName,
|
|
86
|
+
toolCallId: toolCall.toolCallId,
|
|
87
|
+
toolArgs: toolCall.args,
|
|
88
|
+
reason: context.reason ?? `Tool "${toolCall.toolName}" requires approval`
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
async approve(id, reviewer, notes) {
|
|
92
|
+
await this.store.update(id, {
|
|
93
|
+
status: "approved",
|
|
94
|
+
reviewer,
|
|
95
|
+
resolvedAt: new Date,
|
|
96
|
+
notes
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
async reject(id, reviewer, notes) {
|
|
100
|
+
await this.store.update(id, {
|
|
101
|
+
status: "rejected",
|
|
102
|
+
reviewer,
|
|
103
|
+
resolvedAt: new Date,
|
|
104
|
+
notes
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async getStatus(toolCallId) {
|
|
108
|
+
const request = await this.store.getByToolCallId(toolCallId);
|
|
109
|
+
return request?.status ?? null;
|
|
110
|
+
}
|
|
111
|
+
async isApproved(toolCallId) {
|
|
112
|
+
const status = await this.getStatus(toolCallId);
|
|
113
|
+
return status === "approved";
|
|
114
|
+
}
|
|
115
|
+
async listPending(options) {
|
|
116
|
+
return this.store.list({ ...options, status: "pending" });
|
|
117
|
+
}
|
|
118
|
+
async get(id) {
|
|
119
|
+
return this.store.get(id);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function createApprovalWorkflow(store) {
|
|
123
|
+
return new ApprovalWorkflow(store);
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
createApprovalWorkflow,
|
|
127
|
+
InMemoryApprovalStore,
|
|
128
|
+
ApprovalWorkflow
|
|
129
|
+
};
|
|
@@ -1,63 +1,65 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Claude Agent SDK Exporter
|
|
3
|
+
*
|
|
4
|
+
* Exports ContractSpec AgentSpec definitions to formats compatible with
|
|
5
|
+
* @anthropic-ai/claude-agent-sdk and Claude Code CLI.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentSpec } from '../spec/spec';
|
|
8
|
+
import type { Exporter, ClaudeAgentExportOptions, ClaudeAgentExportResult } from './types';
|
|
5
9
|
/**
|
|
6
10
|
* Claude Agent SDK Exporter.
|
|
7
11
|
*/
|
|
8
|
-
declare class ClaudeAgentExporter implements Exporter<ClaudeAgentExportOptions, ClaudeAgentExportResult> {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
12
|
+
export declare class ClaudeAgentExporter implements Exporter<ClaudeAgentExportOptions, ClaudeAgentExportResult> {
|
|
13
|
+
readonly format: "claude-agent";
|
|
14
|
+
/**
|
|
15
|
+
* Export an AgentSpec to Claude Agent SDK format.
|
|
16
|
+
*/
|
|
17
|
+
export(spec: AgentSpec, options?: ClaudeAgentExportOptions): ClaudeAgentExportResult;
|
|
18
|
+
/**
|
|
19
|
+
* Export multiple specs.
|
|
20
|
+
*/
|
|
21
|
+
exportMany(specs: AgentSpec[], options?: ClaudeAgentExportOptions): ClaudeAgentExportResult[];
|
|
22
|
+
/**
|
|
23
|
+
* Validate that a spec can be exported.
|
|
24
|
+
*/
|
|
25
|
+
validate(spec: AgentSpec): {
|
|
26
|
+
valid: boolean;
|
|
27
|
+
errors: string[];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Build Claude Agent SDK configuration.
|
|
31
|
+
*/
|
|
32
|
+
private buildConfig;
|
|
33
|
+
/**
|
|
34
|
+
* Build system prompt from spec.
|
|
35
|
+
*/
|
|
36
|
+
private buildSystemPrompt;
|
|
37
|
+
/**
|
|
38
|
+
* Export tools to Claude Agent SDK format.
|
|
39
|
+
*/
|
|
40
|
+
private exportTools;
|
|
41
|
+
/**
|
|
42
|
+
* Normalize schema to Claude Agent SDK format.
|
|
43
|
+
*/
|
|
44
|
+
private normalizeSchema;
|
|
45
|
+
/**
|
|
46
|
+
* Generate CLAUDE.md content for Claude Code CLI integration.
|
|
47
|
+
*/
|
|
48
|
+
private generateClaudeMd;
|
|
45
49
|
}
|
|
46
50
|
/**
|
|
47
51
|
* Export an AgentSpec to Claude Agent SDK format.
|
|
48
52
|
*/
|
|
49
|
-
declare function exportToClaudeAgent(spec: AgentSpec, options?: ClaudeAgentExportOptions): ClaudeAgentExportResult;
|
|
53
|
+
export declare function exportToClaudeAgent(spec: AgentSpec, options?: ClaudeAgentExportOptions): ClaudeAgentExportResult;
|
|
50
54
|
/**
|
|
51
55
|
* Generate CLAUDE.md content from an AgentSpec.
|
|
52
56
|
*/
|
|
53
|
-
declare function generateClaudeMd(spec: AgentSpec, options?: Omit<ClaudeAgentExportOptions, 'generateClaudeMd'>): string;
|
|
57
|
+
export declare function generateClaudeMd(spec: AgentSpec, options?: Omit<ClaudeAgentExportOptions, 'generateClaudeMd'>): string;
|
|
54
58
|
/**
|
|
55
59
|
* Validate an AgentSpec for Claude Agent SDK export.
|
|
56
60
|
*/
|
|
57
|
-
declare function validateForClaudeAgent(spec: AgentSpec): {
|
|
58
|
-
|
|
59
|
-
|
|
61
|
+
export declare function validateForClaudeAgent(spec: AgentSpec): {
|
|
62
|
+
valid: boolean;
|
|
63
|
+
errors: string[];
|
|
60
64
|
};
|
|
61
|
-
//#endregion
|
|
62
|
-
export { ClaudeAgentExporter, exportToClaudeAgent, generateClaudeMd, validateForClaudeAgent };
|
|
63
65
|
//# sourceMappingURL=claude-agent-exporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-agent-exporter.d.ts","
|
|
1
|
+
{"version":3,"file":"claude-agent-exporter.d.ts","sourceRoot":"","sources":["../../src/exporters/claude-agent-exporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EACV,QAAQ,EACR,wBAAwB,EACxB,uBAAuB,EAGxB,MAAM,SAAS,CAAC;AAMjB;;GAEG;AACH,qBAAa,mBAAoB,YAAW,QAAQ,CAClD,wBAAwB,EACxB,uBAAuB,CACxB;IACC,QAAQ,CAAC,MAAM,EAAG,cAAc,CAAU;IAE1C;;OAEG;IACH,MAAM,CACJ,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,wBAA6B,GACrC,uBAAuB;IAgB1B;;OAEG;IACH,UAAU,CACR,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,EAAE;IAI5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA+B/D;;OAEG;IACH,OAAO,CAAC,WAAW;IA2BnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAkHzB;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,wBAAwB,GACjC,uBAAuB,CAGzB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,GAC3D,MAAM,CAIR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG;IACvD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAGA"}
|