@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.
Files changed (232) hide show
  1. package/dist/agent/agent-factory.d.ts +67 -71
  2. package/dist/agent/agent-factory.d.ts.map +1 -1
  3. package/dist/agent/agent-factory.js +658 -100
  4. package/dist/agent/agent.test.d.ts +2 -0
  5. package/dist/agent/agent.test.d.ts.map +1 -0
  6. package/dist/agent/contract-spec-agent.d.ts +48 -52
  7. package/dist/agent/contract-spec-agent.d.ts.map +1 -1
  8. package/dist/agent/contract-spec-agent.js +605 -146
  9. package/dist/agent/index.d.ts +4 -4
  10. package/dist/agent/index.d.ts.map +1 -0
  11. package/dist/agent/index.js +2102 -4
  12. package/dist/agent/json-runner.d.ts +15 -19
  13. package/dist/agent/json-runner.d.ts.map +1 -1
  14. package/dist/agent/json-runner.js +672 -57
  15. package/dist/agent/json-runner.test.d.ts +2 -0
  16. package/dist/agent/json-runner.test.d.ts.map +1 -0
  17. package/dist/agent/unified-agent.d.ts +132 -109
  18. package/dist/agent/unified-agent.d.ts.map +1 -1
  19. package/dist/agent/unified-agent.js +2011 -293
  20. package/dist/approval/index.d.ts +3 -2
  21. package/dist/approval/index.d.ts.map +1 -0
  22. package/dist/approval/index.js +128 -2
  23. package/dist/approval/workflow.d.ts +106 -110
  24. package/dist/approval/workflow.d.ts.map +1 -1
  25. package/dist/approval/workflow.js +126 -157
  26. package/dist/exporters/claude-agent-exporter.d.ts +50 -48
  27. package/dist/exporters/claude-agent-exporter.d.ts.map +1 -1
  28. package/dist/exporters/claude-agent-exporter.js +258 -203
  29. package/dist/exporters/index.d.ts +28 -4
  30. package/dist/exporters/index.d.ts.map +1 -0
  31. package/dist/exporters/index.js +737 -3
  32. package/dist/exporters/opencode-exporter.d.ts +47 -45
  33. package/dist/exporters/opencode-exporter.d.ts.map +1 -1
  34. package/dist/exporters/opencode-exporter.js +507 -191
  35. package/dist/exporters/types.d.ts +171 -169
  36. package/dist/exporters/types.d.ts.map +1 -1
  37. package/dist/exporters/types.js +1 -0
  38. package/dist/index.d.ts +15 -39
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +3337 -32
  41. package/dist/interop/index.d.ts +48 -4
  42. package/dist/interop/index.d.ts.map +1 -0
  43. package/dist/interop/index.js +709 -3
  44. package/dist/interop/spec-consumer.d.ts +57 -53
  45. package/dist/interop/spec-consumer.d.ts.map +1 -1
  46. package/dist/interop/spec-consumer.js +302 -282
  47. package/dist/interop/tool-consumer.d.ts +57 -53
  48. package/dist/interop/tool-consumer.d.ts.map +1 -1
  49. package/dist/interop/tool-consumer.js +412 -213
  50. package/dist/interop/types.d.ts +173 -171
  51. package/dist/interop/types.d.ts.map +1 -1
  52. package/dist/interop/types.js +1 -0
  53. package/dist/knowledge/index.d.ts +2 -2
  54. package/dist/knowledge/index.d.ts.map +1 -0
  55. package/dist/knowledge/index.js +66 -2
  56. package/dist/knowledge/injector.d.ts +16 -20
  57. package/dist/knowledge/injector.d.ts.map +1 -1
  58. package/dist/knowledge/injector.js +56 -47
  59. package/dist/memory/in-memory.d.ts +15 -19
  60. package/dist/memory/in-memory.d.ts.map +1 -1
  61. package/dist/memory/in-memory.js +152 -46
  62. package/dist/memory/index.d.ts +3 -3
  63. package/dist/memory/index.d.ts.map +1 -0
  64. package/dist/memory/index.js +155 -3
  65. package/dist/memory/manager.d.ts +32 -36
  66. package/dist/memory/manager.d.ts.map +1 -1
  67. package/dist/memory/manager.js +96 -70
  68. package/dist/memory/memory.test.d.ts +2 -0
  69. package/dist/memory/memory.test.d.ts.map +1 -0
  70. package/dist/node/agent/agent-factory.js +661 -0
  71. package/dist/node/agent/contract-spec-agent.js +607 -0
  72. package/dist/node/agent/index.js +2103 -0
  73. package/dist/node/agent/json-runner.js +684 -0
  74. package/dist/node/agent/unified-agent.js +2019 -0
  75. package/dist/node/approval/index.js +129 -0
  76. package/dist/node/approval/workflow.js +129 -0
  77. package/dist/node/exporters/claude-agent-exporter.js +265 -0
  78. package/dist/node/exporters/index.js +738 -0
  79. package/dist/node/exporters/opencode-exporter.js +516 -0
  80. package/dist/node/exporters/types.js +0 -0
  81. package/dist/node/index.js +3337 -0
  82. package/dist/node/interop/index.js +710 -0
  83. package/dist/node/interop/spec-consumer.js +307 -0
  84. package/dist/node/interop/tool-consumer.js +419 -0
  85. package/dist/node/interop/types.js +0 -0
  86. package/dist/node/knowledge/index.js +67 -0
  87. package/dist/node/knowledge/injector.js +67 -0
  88. package/dist/node/memory/in-memory.js +154 -0
  89. package/dist/node/memory/index.js +156 -0
  90. package/dist/node/memory/manager.js +105 -0
  91. package/dist/node/providers/claude-agent-sdk/adapter.js +624 -0
  92. package/dist/node/providers/claude-agent-sdk/index.js +673 -0
  93. package/dist/node/providers/claude-agent-sdk/session-bridge.js +149 -0
  94. package/dist/node/providers/claude-agent-sdk/tool-bridge.js +118 -0
  95. package/dist/node/providers/index.js +1261 -0
  96. package/dist/node/providers/opencode-sdk/adapter.js +669 -0
  97. package/dist/node/providers/opencode-sdk/agent-bridge.js +299 -0
  98. package/dist/node/providers/opencode-sdk/index.js +703 -0
  99. package/dist/node/providers/opencode-sdk/tool-bridge.js +141 -0
  100. package/dist/node/providers/registry.js +89 -0
  101. package/dist/node/providers/types.js +56 -0
  102. package/dist/node/schema/index.js +195 -0
  103. package/dist/node/schema/json-schema-to-zod.js +152 -0
  104. package/dist/node/schema/schema-output.js +190 -0
  105. package/dist/node/session/index.js +90 -0
  106. package/dist/node/session/store.js +90 -0
  107. package/dist/node/spec/index.js +85 -0
  108. package/dist/node/spec/registry.js +56 -0
  109. package/dist/node/spec/spec.js +44 -0
  110. package/dist/node/telemetry/adapter.js +85 -0
  111. package/dist/node/telemetry/index.js +86 -0
  112. package/dist/node/tools/index.js +345 -0
  113. package/dist/node/tools/knowledge-tool.js +74 -0
  114. package/dist/node/tools/mcp-client.js +47 -0
  115. package/dist/node/tools/mcp-server.js +205 -0
  116. package/dist/node/tools/tool-adapter.js +197 -0
  117. package/dist/node/types.js +0 -0
  118. package/dist/providers/claude-agent-sdk/adapter.d.ts +60 -52
  119. package/dist/providers/claude-agent-sdk/adapter.d.ts.map +1 -1
  120. package/dist/providers/claude-agent-sdk/adapter.js +622 -304
  121. package/dist/providers/claude-agent-sdk/index.d.ts +22 -4
  122. package/dist/providers/claude-agent-sdk/index.d.ts.map +1 -0
  123. package/dist/providers/claude-agent-sdk/index.js +672 -4
  124. package/dist/providers/claude-agent-sdk/session-bridge.d.ts +43 -40
  125. package/dist/providers/claude-agent-sdk/session-bridge.d.ts.map +1 -1
  126. package/dist/providers/claude-agent-sdk/session-bridge.js +121 -130
  127. package/dist/providers/claude-agent-sdk/tool-bridge.d.ts +63 -60
  128. package/dist/providers/claude-agent-sdk/tool-bridge.d.ts.map +1 -1
  129. package/dist/providers/claude-agent-sdk/tool-bridge.js +104 -108
  130. package/dist/providers/index.d.ts +28 -7
  131. package/dist/providers/index.d.ts.map +1 -0
  132. package/dist/providers/index.js +1261 -8
  133. package/dist/providers/opencode-sdk/adapter.d.ts +56 -48
  134. package/dist/providers/opencode-sdk/adapter.d.ts.map +1 -1
  135. package/dist/providers/opencode-sdk/adapter.js +667 -274
  136. package/dist/providers/opencode-sdk/agent-bridge.d.ts +62 -57
  137. package/dist/providers/opencode-sdk/agent-bridge.d.ts.map +1 -1
  138. package/dist/providers/opencode-sdk/agent-bridge.js +289 -155
  139. package/dist/providers/opencode-sdk/index.d.ts +22 -4
  140. package/dist/providers/opencode-sdk/index.d.ts.map +1 -0
  141. package/dist/providers/opencode-sdk/index.js +702 -4
  142. package/dist/providers/opencode-sdk/tool-bridge.d.ts +41 -42
  143. package/dist/providers/opencode-sdk/tool-bridge.d.ts.map +1 -1
  144. package/dist/providers/opencode-sdk/tool-bridge.js +121 -107
  145. package/dist/providers/registry.d.ts +10 -11
  146. package/dist/providers/registry.d.ts.map +1 -1
  147. package/dist/providers/registry.js +86 -49
  148. package/dist/providers/types.d.ts +169 -166
  149. package/dist/providers/types.d.ts.map +1 -1
  150. package/dist/providers/types.js +54 -42
  151. package/dist/schema/index.d.ts +3 -3
  152. package/dist/schema/index.d.ts.map +1 -0
  153. package/dist/schema/index.js +194 -3
  154. package/dist/schema/json-schema-to-zod.d.ts +23 -26
  155. package/dist/schema/json-schema-to-zod.d.ts.map +1 -1
  156. package/dist/schema/json-schema-to-zod.js +138 -110
  157. package/dist/schema/schema-output.d.ts +29 -32
  158. package/dist/schema/schema-output.d.ts.map +1 -1
  159. package/dist/schema/schema-output.js +178 -53
  160. package/dist/session/index.d.ts +2 -2
  161. package/dist/session/index.d.ts.map +1 -0
  162. package/dist/session/index.js +89 -2
  163. package/dist/session/store.d.ts +51 -55
  164. package/dist/session/store.d.ts.map +1 -1
  165. package/dist/session/store.js +85 -74
  166. package/dist/spec/index.d.ts +3 -3
  167. package/dist/spec/index.d.ts.map +1 -0
  168. package/dist/spec/index.js +84 -3
  169. package/dist/spec/registry.d.ts +32 -36
  170. package/dist/spec/registry.d.ts.map +1 -1
  171. package/dist/spec/registry.js +51 -60
  172. package/dist/spec/spec.d.ts +80 -84
  173. package/dist/spec/spec.d.ts.map +1 -1
  174. package/dist/spec/spec.js +40 -26
  175. package/dist/telemetry/adapter.d.ts +33 -37
  176. package/dist/telemetry/adapter.d.ts.map +1 -1
  177. package/dist/telemetry/adapter.js +78 -96
  178. package/dist/telemetry/index.d.ts +2 -2
  179. package/dist/telemetry/index.d.ts.map +1 -0
  180. package/dist/telemetry/index.js +85 -2
  181. package/dist/tools/index.d.ts +5 -5
  182. package/dist/tools/index.d.ts.map +1 -0
  183. package/dist/tools/index.js +344 -5
  184. package/dist/tools/knowledge-tool.d.ts +4 -8
  185. package/dist/tools/knowledge-tool.d.ts.map +1 -1
  186. package/dist/tools/knowledge-tool.js +68 -48
  187. package/dist/tools/mcp-client.d.ts +17 -21
  188. package/dist/tools/mcp-client.d.ts.map +1 -1
  189. package/dist/tools/mcp-client.js +42 -53
  190. package/dist/tools/mcp-server.d.ts +14 -18
  191. package/dist/tools/mcp-server.d.ts.map +1 -1
  192. package/dist/tools/mcp-server.js +200 -64
  193. package/dist/tools/tool-adapter.d.ts +7 -11
  194. package/dist/tools/tool-adapter.d.ts.map +1 -1
  195. package/dist/tools/tool-adapter.js +187 -70
  196. package/dist/tools/tools.test.d.ts +2 -0
  197. package/dist/tools/tools.test.d.ts.map +1 -0
  198. package/dist/types.d.ts +108 -111
  199. package/dist/types.d.ts.map +1 -1
  200. package/dist/types.js +1 -0
  201. package/package.json +448 -90
  202. package/dist/_virtual/_rolldown/runtime.js +0 -8
  203. package/dist/agent/agent-factory.js.map +0 -1
  204. package/dist/agent/contract-spec-agent.js.map +0 -1
  205. package/dist/agent/json-runner.js.map +0 -1
  206. package/dist/agent/unified-agent.js.map +0 -1
  207. package/dist/approval/workflow.js.map +0 -1
  208. package/dist/exporters/claude-agent-exporter.js.map +0 -1
  209. package/dist/exporters/opencode-exporter.js.map +0 -1
  210. package/dist/interop/spec-consumer.js.map +0 -1
  211. package/dist/interop/tool-consumer.js.map +0 -1
  212. package/dist/knowledge/injector.js.map +0 -1
  213. package/dist/memory/in-memory.js.map +0 -1
  214. package/dist/memory/manager.js.map +0 -1
  215. package/dist/providers/claude-agent-sdk/adapter.js.map +0 -1
  216. package/dist/providers/claude-agent-sdk/session-bridge.js.map +0 -1
  217. package/dist/providers/claude-agent-sdk/tool-bridge.js.map +0 -1
  218. package/dist/providers/opencode-sdk/adapter.js.map +0 -1
  219. package/dist/providers/opencode-sdk/agent-bridge.js.map +0 -1
  220. package/dist/providers/opencode-sdk/tool-bridge.js.map +0 -1
  221. package/dist/providers/registry.js.map +0 -1
  222. package/dist/providers/types.js.map +0 -1
  223. package/dist/schema/json-schema-to-zod.js.map +0 -1
  224. package/dist/schema/schema-output.js.map +0 -1
  225. package/dist/session/store.js.map +0 -1
  226. package/dist/spec/registry.js.map +0 -1
  227. package/dist/spec/spec.js.map +0 -1
  228. package/dist/telemetry/adapter.js.map +0 -1
  229. package/dist/tools/knowledge-tool.js.map +0 -1
  230. package/dist/tools/mcp-client.js.map +0 -1
  231. package/dist/tools/mcp-server.js.map +0 -1
  232. package/dist/tools/tool-adapter.js.map +0 -1
@@ -0,0 +1,149 @@
1
+ import { createRequire } from "node:module";
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 = /* @__PURE__ */ createRequire(import.meta.url);
14
+
15
+ // src/providers/claude-agent-sdk/session-bridge.ts
16
+ function toClaudeAgentSession(state) {
17
+ const messages = [];
18
+ for (const msg of state.messages) {
19
+ if (msg.role === "user" || msg.role === "assistant") {
20
+ const content = typeof msg.content === "string" ? msg.content : JSON.stringify(msg.content);
21
+ messages.push({
22
+ role: msg.role,
23
+ content
24
+ });
25
+ }
26
+ }
27
+ return {
28
+ sessionId: state.sessionId,
29
+ messages,
30
+ metadata: {
31
+ agentId: state.agentId,
32
+ tenantId: state.tenantId,
33
+ actorId: state.actorId
34
+ }
35
+ };
36
+ }
37
+ function createClaudeAgentSession(options) {
38
+ return {
39
+ sessionId: options?.sessionId,
40
+ messages: [],
41
+ metadata: {
42
+ tenantId: options?.tenantId,
43
+ actorId: options?.actorId,
44
+ ...options?.metadata
45
+ }
46
+ };
47
+ }
48
+ function createEmptyClaudeSession() {
49
+ return createClaudeAgentSession();
50
+ }
51
+ function buildClaudeAgentContext(options) {
52
+ return {
53
+ tenantId: options?.tenantId,
54
+ actorId: options?.actorId,
55
+ sessionId: options?.sessionId,
56
+ ...options?.metadata
57
+ };
58
+ }
59
+ function appendUserMessage(session, content) {
60
+ return {
61
+ ...session,
62
+ messages: [...session.messages, { role: "user", content }]
63
+ };
64
+ }
65
+ function appendAssistantMessage(session, content) {
66
+ return {
67
+ ...session,
68
+ messages: [...session.messages, { role: "assistant", content }]
69
+ };
70
+ }
71
+ function clearSession(session) {
72
+ return {
73
+ ...session,
74
+ messages: []
75
+ };
76
+ }
77
+ function getRecentMessages(session, count) {
78
+ return session.messages.slice(-count);
79
+ }
80
+ function extractToolUseBlocks(content) {
81
+ if (typeof content === "string") {
82
+ return [];
83
+ }
84
+ return content.filter((block) => block.type === "tool_use");
85
+ }
86
+ function createToolResultBlock(toolUseId, result, isError = false) {
87
+ return {
88
+ type: "tool_result",
89
+ tool_use_id: toolUseId,
90
+ content: typeof result === "string" ? result : JSON.stringify(result),
91
+ is_error: isError
92
+ };
93
+ }
94
+ function updateSessionMetadata(session, metadata) {
95
+ return {
96
+ ...session,
97
+ metadata: {
98
+ ...session.metadata,
99
+ ...metadata
100
+ }
101
+ };
102
+ }
103
+ function getMessageCount(session) {
104
+ return session.messages.length;
105
+ }
106
+ function estimateTokens(session) {
107
+ let chars = 0;
108
+ for (const msg of session.messages) {
109
+ if (typeof msg.content === "string") {
110
+ chars += msg.content.length;
111
+ } else {
112
+ chars += JSON.stringify(msg.content).length;
113
+ }
114
+ }
115
+ return Math.ceil(chars / 4);
116
+ }
117
+ function summarizeSession(session) {
118
+ let userMessages = 0;
119
+ let assistantMessages = 0;
120
+ for (const msg of session.messages) {
121
+ if (msg.role === "user") {
122
+ userMessages++;
123
+ } else {
124
+ assistantMessages++;
125
+ }
126
+ }
127
+ return {
128
+ messageCount: session.messages.length,
129
+ userMessages,
130
+ assistantMessages,
131
+ estimatedTokens: estimateTokens(session)
132
+ };
133
+ }
134
+ export {
135
+ updateSessionMetadata,
136
+ toClaudeAgentSession,
137
+ summarizeSession,
138
+ getRecentMessages,
139
+ getMessageCount,
140
+ extractToolUseBlocks,
141
+ estimateTokens,
142
+ createToolResultBlock,
143
+ createEmptyClaudeSession,
144
+ createClaudeAgentSession,
145
+ clearSession,
146
+ buildClaudeAgentContext,
147
+ appendUserMessage,
148
+ appendAssistantMessage
149
+ };
@@ -0,0 +1,118 @@
1
+ import { createRequire } from "node:module";
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 = /* @__PURE__ */ createRequire(import.meta.url);
14
+
15
+ // src/providers/claude-agent-sdk/tool-bridge.ts
16
+ function specToolToClaudeAgentTool(tool, handler, context) {
17
+ return {
18
+ name: tool.name,
19
+ description: tool.description ?? `Execute ${tool.name}`,
20
+ input_schema: normalizeSchema(tool.schema),
21
+ requires_confirmation: tool.requiresApproval ?? !tool.automationSafe,
22
+ execute: async (input) => {
23
+ const fullContext = {
24
+ agentId: context.agentId ?? "unknown",
25
+ sessionId: context.sessionId ?? "unknown",
26
+ tenantId: context.tenantId,
27
+ actorId: context.actorId,
28
+ metadata: context.metadata,
29
+ signal: context.signal
30
+ };
31
+ return handler(input, fullContext);
32
+ }
33
+ };
34
+ }
35
+ function specToolsToClaudeAgentTools(tools, handlers, context) {
36
+ return tools.filter((tool) => handlers.has(tool.name)).map((tool) => {
37
+ const handler = handlers.get(tool.name);
38
+ if (!handler) {
39
+ throw new Error(`Handler not found for tool ${tool.name}`);
40
+ }
41
+ return specToolToClaudeAgentTool(tool, handler, context);
42
+ });
43
+ }
44
+ function claudeAgentToolToSpecTool(claudeTool, execute) {
45
+ const config = {
46
+ name: claudeTool.name,
47
+ description: claudeTool.description,
48
+ schema: claudeTool.input_schema,
49
+ requiresApproval: claudeTool.requires_confirmation,
50
+ automationSafe: !claudeTool.requires_confirmation
51
+ };
52
+ const handler = execute ? async (input, _ctx) => String(await execute(input)) : undefined;
53
+ return { config, handler };
54
+ }
55
+ function claudeAgentToolsToSpecTools(claudeTools) {
56
+ const configs = [];
57
+ const handlers = new Map;
58
+ for (const claudeTool of claudeTools) {
59
+ const { config, handler } = claudeAgentToolToSpecTool(claudeTool, claudeTool.execute);
60
+ configs.push(config);
61
+ if (handler) {
62
+ handlers.set(config.name, handler);
63
+ }
64
+ }
65
+ return { configs, handlers };
66
+ }
67
+ function specToolToExternalTool(tool, handler, context) {
68
+ return {
69
+ name: tool.name,
70
+ description: tool.description ?? `Execute ${tool.name}`,
71
+ inputSchema: tool.schema ?? { type: "object" },
72
+ requiresApproval: tool.requiresApproval ?? !tool.automationSafe,
73
+ execute: handler ? async (input) => {
74
+ const fullContext = {
75
+ agentId: context?.agentId ?? "unknown",
76
+ sessionId: context?.sessionId ?? "unknown",
77
+ tenantId: context?.tenantId,
78
+ actorId: context?.actorId,
79
+ metadata: context?.metadata,
80
+ signal: context?.signal
81
+ };
82
+ return handler(input, fullContext);
83
+ } : undefined
84
+ };
85
+ }
86
+ function normalizeSchema(schema) {
87
+ if (!schema) {
88
+ return { type: "object" };
89
+ }
90
+ if (schema.type === "object") {
91
+ return schema;
92
+ }
93
+ return {
94
+ type: "object",
95
+ properties: {
96
+ value: schema
97
+ },
98
+ required: ["value"]
99
+ };
100
+ }
101
+ function extractToolCalls(response) {
102
+ if (!response.content) {
103
+ return [];
104
+ }
105
+ return response.content.filter((block) => block.type === "tool_use").map((block) => ({
106
+ toolCallId: block.id ?? "",
107
+ toolName: block.name ?? "",
108
+ args: block.input
109
+ }));
110
+ }
111
+ export {
112
+ specToolsToClaudeAgentTools,
113
+ specToolToExternalTool,
114
+ specToolToClaudeAgentTool,
115
+ extractToolCalls,
116
+ claudeAgentToolsToSpecTools,
117
+ claudeAgentToolToSpecTool
118
+ };