@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
@@ -1,4 +1,85 @@
1
- import { agentKey, defineAgent } from "./spec.js";
2
- import { AgentRegistry, createAgentRegistry } from "./registry.js";
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;
3
14
 
4
- export { AgentRegistry, agentKey, createAgentRegistry, defineAgent };
15
+ // src/spec/spec.ts
16
+ function defineAgent(spec) {
17
+ if (!spec.meta?.key) {
18
+ throw new Error("Agent key is required");
19
+ }
20
+ if (typeof spec.meta.version !== "string") {
21
+ throw new Error(`Agent ${spec.meta.key} is missing a string version`);
22
+ }
23
+ if (!spec.instructions?.trim()) {
24
+ throw new Error(`Agent ${spec.meta.key} requires instructions`);
25
+ }
26
+ if (!spec.tools?.length) {
27
+ throw new Error(`Agent ${spec.meta.key} must expose at least one tool`);
28
+ }
29
+ const toolNames = new Set;
30
+ for (const tool of spec.tools) {
31
+ if (toolNames.has(tool.name)) {
32
+ throw new Error(`Agent ${spec.meta.key} has duplicate tool name: ${tool.name}`);
33
+ }
34
+ toolNames.add(tool.name);
35
+ }
36
+ return Object.freeze(spec);
37
+ }
38
+ function agentKey(meta) {
39
+ return `${meta.key}.v${meta.version}`;
40
+ }
41
+
42
+ // src/spec/registry.ts
43
+ import { compareVersions } from "compare-versions";
44
+ import { SpecContractRegistry } from "@contractspec/lib.contracts/registry";
45
+
46
+ class AgentRegistry extends SpecContractRegistry {
47
+ constructor(items) {
48
+ super("agent", items);
49
+ }
50
+ listNames() {
51
+ const names = new Set;
52
+ for (const spec of this.items.values()) {
53
+ names.add(spec.meta.key);
54
+ }
55
+ return [...names];
56
+ }
57
+ require(name, version) {
58
+ const spec = this.get(name, version);
59
+ if (!spec) {
60
+ throw new Error(`Agent spec not found for ${name}${version != null ? `.v${version}` : ""}`);
61
+ }
62
+ return spec;
63
+ }
64
+ has(name, version) {
65
+ return this.get(name, version) !== undefined;
66
+ }
67
+ getVersions(name) {
68
+ const versions = [];
69
+ for (const spec of this.items.values()) {
70
+ if (spec.meta.key === name) {
71
+ versions.push(spec);
72
+ }
73
+ }
74
+ return versions.sort((a, b) => compareVersions(a.meta.version, b.meta.version));
75
+ }
76
+ }
77
+ function createAgentRegistry() {
78
+ return new AgentRegistry;
79
+ }
80
+ export {
81
+ defineAgent,
82
+ createAgentRegistry,
83
+ agentKey,
84
+ AgentRegistry
85
+ };
@@ -1,46 +1,42 @@
1
- import { AgentSpec } from "./spec.js";
2
- import { SpecContractRegistry } from "@contractspec/lib.contracts/registry";
3
-
4
- //#region src/spec/registry.d.ts
1
+ import type { AgentSpec } from './spec';
2
+ import { SpecContractRegistry } from '@contractspec/lib.contracts/registry';
5
3
  /**
6
4
  * Registry for managing agent specifications.
7
5
  *
8
6
  * Provides registration, lookup, and version management for agent specs.
9
7
  */
10
- declare class AgentRegistry extends SpecContractRegistry<'agent', AgentSpec> {
11
- constructor(items?: AgentSpec[]);
12
- /**
13
- * List all unique agent names (without versions).
14
- */
15
- listNames(): string[];
16
- /**
17
- * Get an agent specification or throw if not found.
18
- *
19
- * @param name - Agent name
20
- * @param version - Optional version
21
- * @returns The agent spec
22
- * @throws Error if the spec is not found
23
- */
24
- require(name: string, version?: string): AgentSpec;
25
- /**
26
- * Check if an agent is registered.
27
- *
28
- * @param name - Agent name
29
- * @param version - Optional version
30
- */
31
- has(name: string, version?: string): boolean;
32
- /**
33
- * Get all versions of an agent.
34
- *
35
- * @param name - Agent name
36
- * @returns Array of specs sorted by version (ascending)
37
- */
38
- getVersions(name: string): AgentSpec[];
8
+ export declare class AgentRegistry extends SpecContractRegistry<'agent', AgentSpec> {
9
+ constructor(items?: AgentSpec[]);
10
+ /**
11
+ * List all unique agent names (without versions).
12
+ */
13
+ listNames(): string[];
14
+ /**
15
+ * Get an agent specification or throw if not found.
16
+ *
17
+ * @param name - Agent name
18
+ * @param version - Optional version
19
+ * @returns The agent spec
20
+ * @throws Error if the spec is not found
21
+ */
22
+ require(name: string, version?: string): AgentSpec;
23
+ /**
24
+ * Check if an agent is registered.
25
+ *
26
+ * @param name - Agent name
27
+ * @param version - Optional version
28
+ */
29
+ has(name: string, version?: string): boolean;
30
+ /**
31
+ * Get all versions of an agent.
32
+ *
33
+ * @param name - Agent name
34
+ * @returns Array of specs sorted by version (ascending)
35
+ */
36
+ getVersions(name: string): AgentSpec[];
39
37
  }
40
38
  /**
41
39
  * Create a new agent registry.
42
40
  */
43
- declare function createAgentRegistry(): AgentRegistry;
44
- //#endregion
45
- export { AgentRegistry, createAgentRegistry };
41
+ export declare function createAgentRegistry(): AgentRegistry;
46
42
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","names":[],"sources":["../../src/spec/registry.ts"],"mappings":";;;;;;AASA;;;cAAa,aAAA,SAAsB,oBAAA,UAA8B,SAAA;cAC5C,KAAA,GAAQ,SAAA;EAuBc;;;EAhBzC,SAAA,CAAA;EARqD;;;;;;;;EAwBrD,OAAA,CAAQ,IAAA,UAAc,OAAA,YAAmB,SAAA;EAAnB;;;;;;EAgBtB,GAAA,CAAI,IAAA,UAAc,OAAA;EAUS;;;AAgB7B;;;EAhBE,WAAA,CAAY,IAAA,WAAe,SAAA;AAAA;;;;iBAgBb,mBAAA,CAAA,GAAuB,aAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/spec/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC;gBACtD,KAAK,CAAC,EAAE,SAAS,EAAE;IAItC;;OAEG;IACH,SAAS,IAAI,MAAM,EAAE;IAQrB;;;;;;;OAOG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS;IAUlD;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAI5C;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;CAWvC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -1,65 +1,56 @@
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/spec/registry.ts
1
16
  import { compareVersions } from "compare-versions";
2
17
  import { SpecContractRegistry } from "@contractspec/lib.contracts/registry";
3
18
 
4
- //#region src/spec/registry.ts
5
- /**
6
- * Registry for managing agent specifications.
7
- *
8
- * Provides registration, lookup, and version management for agent specs.
9
- */
10
- var AgentRegistry = class extends SpecContractRegistry {
11
- constructor(items) {
12
- super("agent", items);
13
- }
14
- /**
15
- * List all unique agent names (without versions).
16
- */
17
- listNames() {
18
- const names = /* @__PURE__ */ new Set();
19
- for (const spec of this.items.values()) names.add(spec.meta.key);
20
- return [...names];
21
- }
22
- /**
23
- * Get an agent specification or throw if not found.
24
- *
25
- * @param name - Agent name
26
- * @param version - Optional version
27
- * @returns The agent spec
28
- * @throws Error if the spec is not found
29
- */
30
- require(name, version) {
31
- const spec = this.get(name, version);
32
- if (!spec) throw new Error(`Agent spec not found for ${name}${version != null ? `.v${version}` : ""}`);
33
- return spec;
34
- }
35
- /**
36
- * Check if an agent is registered.
37
- *
38
- * @param name - Agent name
39
- * @param version - Optional version
40
- */
41
- has(name, version) {
42
- return this.get(name, version) !== void 0;
43
- }
44
- /**
45
- * Get all versions of an agent.
46
- *
47
- * @param name - Agent name
48
- * @returns Array of specs sorted by version (ascending)
49
- */
50
- getVersions(name) {
51
- const versions = [];
52
- for (const spec of this.items.values()) if (spec.meta.key === name) versions.push(spec);
53
- return versions.sort((a, b) => compareVersions(a.meta.version, b.meta.version));
54
- }
55
- };
56
- /**
57
- * Create a new agent registry.
58
- */
19
+ class AgentRegistry extends SpecContractRegistry {
20
+ constructor(items) {
21
+ super("agent", items);
22
+ }
23
+ listNames() {
24
+ const names = new Set;
25
+ for (const spec of this.items.values()) {
26
+ names.add(spec.meta.key);
27
+ }
28
+ return [...names];
29
+ }
30
+ require(name, version) {
31
+ const spec = this.get(name, version);
32
+ if (!spec) {
33
+ throw new Error(`Agent spec not found for ${name}${version != null ? `.v${version}` : ""}`);
34
+ }
35
+ return spec;
36
+ }
37
+ has(name, version) {
38
+ return this.get(name, version) !== undefined;
39
+ }
40
+ getVersions(name) {
41
+ const versions = [];
42
+ for (const spec of this.items.values()) {
43
+ if (spec.meta.key === name) {
44
+ versions.push(spec);
45
+ }
46
+ }
47
+ return versions.sort((a, b) => compareVersions(a.meta.version, b.meta.version));
48
+ }
49
+ }
59
50
  function createAgentRegistry() {
60
- return new AgentRegistry();
51
+ return new AgentRegistry;
61
52
  }
62
-
63
- //#endregion
64
- export { AgentRegistry, createAgentRegistry };
65
- //# sourceMappingURL=registry.js.map
53
+ export {
54
+ createAgentRegistry,
55
+ AgentRegistry
56
+ };
@@ -1,113 +1,111 @@
1
- import { OwnerShipMeta } from "@contractspec/lib.contracts/ownership";
2
- import { KnowledgeCategory } from "@contractspec/lib.contracts/knowledge/spec";
3
- import { PolicyRef } from "@contractspec/lib.contracts/policy/spec";
4
-
5
- //#region src/spec/spec.d.ts
1
+ import type { OwnerShipMeta } from '@contractspec/lib.contracts/ownership';
2
+ import type { KnowledgeCategory } from '@contractspec/lib.contracts/knowledge/spec';
3
+ import type { PolicyRef } from '@contractspec/lib.contracts/policy/spec';
6
4
  /**
7
5
  * Metadata for an agent specification.
8
6
  */
9
- type AgentMeta = OwnerShipMeta;
7
+ export type AgentMeta = OwnerShipMeta;
10
8
  /**
11
9
  * Configuration for a tool that an agent can use.
12
10
  */
13
- interface AgentToolConfig {
14
- /** Tool name (unique within the agent) */
15
- name: string;
16
- /** Human-readable description for the LLM */
17
- description?: string;
18
- /** JSON Schema fragment for tool parameters */
19
- schema?: Record<string, unknown>;
20
- /** Optional cooldown in milliseconds between invocations */
21
- cooldownMs?: number;
22
- /** Maximum execution time before timeout */
23
- timeoutMs?: number;
24
- /** Whether the tool can be executed without human approval (AI SDK needsApproval = !automationSafe) */
25
- automationSafe?: boolean;
26
- /** Explicit approval requirement (overrides automationSafe) */
27
- requiresApproval?: boolean;
28
- /** Optional policy guard that must evaluate to allow the tool call */
29
- policy?: PolicyRef;
11
+ export interface AgentToolConfig {
12
+ /** Tool name (unique within the agent) */
13
+ name: string;
14
+ /** Human-readable description for the LLM */
15
+ description?: string;
16
+ /** JSON Schema fragment for tool parameters */
17
+ schema?: Record<string, unknown>;
18
+ /** Optional cooldown in milliseconds between invocations */
19
+ cooldownMs?: number;
20
+ /** Maximum execution time before timeout */
21
+ timeoutMs?: number;
22
+ /** Whether the tool can be executed without human approval (AI SDK needsApproval = !automationSafe) */
23
+ automationSafe?: boolean;
24
+ /** Explicit approval requirement (overrides automationSafe) */
25
+ requiresApproval?: boolean;
26
+ /** Optional policy guard that must evaluate to allow the tool call */
27
+ policy?: PolicyRef;
30
28
  }
31
29
  /**
32
30
  * Reference to a knowledge space that the agent can access.
33
31
  */
34
- interface AgentKnowledgeRef {
35
- /** Knowledge space key */
36
- key: string;
37
- /** Optional specific version */
38
- version?: number;
39
- /** Filter by knowledge category */
40
- category?: KnowledgeCategory;
41
- /** Whether the knowledge is required (static injection) or optional (dynamic RAG) */
42
- required?: boolean;
43
- /** Additional instructions appended when the space is available */
44
- instructions?: string;
32
+ export interface AgentKnowledgeRef {
33
+ /** Knowledge space key */
34
+ key: string;
35
+ /** Optional specific version */
36
+ version?: number;
37
+ /** Filter by knowledge category */
38
+ category?: KnowledgeCategory;
39
+ /** Whether the knowledge is required (static injection) or optional (dynamic RAG) */
40
+ required?: boolean;
41
+ /** Additional instructions appended when the space is available */
42
+ instructions?: string;
45
43
  }
46
44
  /**
47
45
  * Memory configuration for agent session persistence.
48
46
  */
49
- interface AgentMemoryConfig {
50
- /** Maximum entries to keep in memory */
51
- maxEntries?: number;
52
- /** Time-to-live in minutes */
53
- ttlMinutes?: number;
54
- /** Number of messages before triggering summarization */
55
- summaryTrigger?: number;
56
- /** Whether to persist to long-term storage */
57
- persistLongTerm?: boolean;
47
+ export interface AgentMemoryConfig {
48
+ /** Maximum entries to keep in memory */
49
+ maxEntries?: number;
50
+ /** Time-to-live in minutes */
51
+ ttlMinutes?: number;
52
+ /** Number of messages before triggering summarization */
53
+ summaryTrigger?: number;
54
+ /** Whether to persist to long-term storage */
55
+ persistLongTerm?: boolean;
58
56
  }
59
57
  /**
60
58
  * Confidence policy for agent responses.
61
59
  */
62
- interface AgentConfidencePolicy {
63
- /** Minimum acceptable confidence before escalation. Defaults to 0.7 */
64
- min?: number;
65
- /** Default value used when provider does not report confidence */
66
- default?: number;
60
+ export interface AgentConfidencePolicy {
61
+ /** Minimum acceptable confidence before escalation. Defaults to 0.7 */
62
+ min?: number;
63
+ /** Default value used when provider does not report confidence */
64
+ default?: number;
67
65
  }
68
66
  /**
69
67
  * Escalation policy for handling uncertain or failed agent responses.
70
68
  */
71
- interface AgentEscalationPolicy {
72
- /** Auto escalate when confidence < threshold */
73
- confidenceThreshold?: number;
74
- /** Escalate when a tool throws irrecoverable errors */
75
- onToolFailure?: boolean;
76
- /** Escalate when iteration budget exceeded */
77
- onTimeout?: boolean;
78
- /** Optional human approval workflow ID */
79
- approvalWorkflow?: string;
69
+ export interface AgentEscalationPolicy {
70
+ /** Auto escalate when confidence < threshold */
71
+ confidenceThreshold?: number;
72
+ /** Escalate when a tool throws irrecoverable errors */
73
+ onToolFailure?: boolean;
74
+ /** Escalate when iteration budget exceeded */
75
+ onTimeout?: boolean;
76
+ /** Optional human approval workflow ID */
77
+ approvalWorkflow?: string;
80
78
  }
81
79
  /**
82
80
  * Combined policy configuration for an agent.
83
81
  */
84
- interface AgentPolicy {
85
- confidence?: AgentConfidencePolicy;
86
- escalation?: AgentEscalationPolicy;
87
- /** Feature flags to apply to this agent */
88
- flags?: string[];
82
+ export interface AgentPolicy {
83
+ confidence?: AgentConfidencePolicy;
84
+ escalation?: AgentEscalationPolicy;
85
+ /** Feature flags to apply to this agent */
86
+ flags?: string[];
89
87
  }
90
88
  /**
91
89
  * Complete specification for a ContractSpec agent.
92
90
  */
93
- interface AgentSpec {
94
- meta: AgentMeta;
95
- /** System instructions for the agent */
96
- instructions: string;
97
- /** Human-readable description */
98
- description?: string;
99
- /** Tags for categorization */
100
- tags?: string[];
101
- /** Tools the agent can use */
102
- tools: AgentToolConfig[];
103
- /** Memory/session configuration */
104
- memory?: AgentMemoryConfig;
105
- /** Knowledge spaces the agent can access */
106
- knowledge?: AgentKnowledgeRef[];
107
- /** Policy configuration */
108
- policy?: AgentPolicy;
109
- /** Maximum steps per generation (defaults to 10) */
110
- maxSteps?: number;
91
+ export interface AgentSpec {
92
+ meta: AgentMeta;
93
+ /** System instructions for the agent */
94
+ instructions: string;
95
+ /** Human-readable description */
96
+ description?: string;
97
+ /** Tags for categorization */
98
+ tags?: string[];
99
+ /** Tools the agent can use */
100
+ tools: AgentToolConfig[];
101
+ /** Memory/session configuration */
102
+ memory?: AgentMemoryConfig;
103
+ /** Knowledge spaces the agent can access */
104
+ knowledge?: AgentKnowledgeRef[];
105
+ /** Policy configuration */
106
+ policy?: AgentPolicy;
107
+ /** Maximum steps per generation (defaults to 10) */
108
+ maxSteps?: number;
111
109
  }
112
110
  /**
113
111
  * Define and validate an agent specification.
@@ -116,11 +114,9 @@ interface AgentSpec {
116
114
  * @returns The frozen, validated specification
117
115
  * @throws Error if the specification is invalid
118
116
  */
119
- declare function defineAgent(spec: AgentSpec): AgentSpec;
117
+ export declare function defineAgent(spec: AgentSpec): AgentSpec;
120
118
  /**
121
119
  * Generate a unique key for an agent spec.
122
120
  */
123
- declare function agentKey(meta: AgentMeta): string;
124
- //#endregion
125
- export { AgentConfidencePolicy, AgentEscalationPolicy, AgentKnowledgeRef, AgentMemoryConfig, AgentMeta, AgentPolicy, AgentSpec, AgentToolConfig, agentKey, defineAgent };
121
+ export declare function agentKey(meta: AgentMeta): string;
126
122
  //# sourceMappingURL=spec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec.d.ts","names":[],"sources":["../../src/spec/spec.ts"],"mappings":";;;;;;;AAOA;KAAY,SAAA,GAAY,aAAA;;;;UAKP,eAAA;EAAe;EAE9B,IAAA;EAckB;EAZlB,WAAA;EAAA;EAEA,MAAA,GAAS,MAAA;EAAA;EAET,UAAA;EAEA;EAAA,SAAA;EAIA;EAFA,cAAA;EAIS;EAFT,gBAAA;EAEkB;EAAlB,MAAA,GAAS,SAAA;AAAA;;;;UAMM,iBAAA;EAMf;EAJA,GAAA;EAMA;EAJA,OAAA;EAMY;EAJZ,QAAA,GAAW,iBAAA;EAUI;EARf,QAAA;;EAEA,YAAA;AAAA;;;;UAMe,iBAAA;EAQA;EANf,UAAA;EAYoC;EAVpC,UAAA;EAYA;EAVA,cAAA;EAkBe;EAhBf,eAAA;AAAA;;;;UAMe,qBAAA;EAkBf;EAhBA,GAAA;EAgBgB;EAdhB,OAAA;AAAA;;;;UAMe,qBAAA;EAgBf;EAdA,mBAAA;EAgBA;EAdA,aAAA;EAcK;EAZL,SAAA;EAkBwB;EAhBxB,gBAAA;AAAA;;;;UAMe,WAAA;EACf,UAAA,GAAa,qBAAA;EACb,UAAA,GAAa,qBAAA;EASb;EAPA,KAAA;AAAA;;;;UAMe,SAAA;EACf,IAAA,EAAM,SAAA;EAUG;EART,YAAA;EAUY;EARZ,WAAA;EAUS;EART,IAAA;EAUQ;EARR,KAAA,EAAO,eAAA;EAkBO;EAhBd,MAAA,GAAS,iBAAA;;EAET,SAAA,GAAY,iBAAA;EAcoB;EAZhC,MAAA,GAAS,WAAA;EAYmC;EAV5C,QAAA;AAAA;AAyCF;;;;;;;AAAA,iBA/BgB,WAAA,CAAY,IAAA,EAAM,SAAA,GAAY,SAAA;;;;iBA+B9B,QAAA,CAAS,IAAA,EAAM,SAAA"}
1
+ {"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/spec/spec.ts"],"names":[],"mappings":"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"}
package/dist/spec/spec.js CHANGED
@@ -1,30 +1,44 @@
1
- //#region src/spec/spec.ts
2
- /**
3
- * Define and validate an agent specification.
4
- *
5
- * @param spec - The agent specification
6
- * @returns The frozen, validated specification
7
- * @throws Error if the specification is invalid
8
- */
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/spec/spec.ts
9
16
  function defineAgent(spec) {
10
- if (!spec.meta?.key) throw new Error("Agent key is required");
11
- if (typeof spec.meta.version !== "string") throw new Error(`Agent ${spec.meta.key} is missing a string version`);
12
- if (!spec.instructions?.trim()) throw new Error(`Agent ${spec.meta.key} requires instructions`);
13
- if (!spec.tools?.length) throw new Error(`Agent ${spec.meta.key} must expose at least one tool`);
14
- const toolNames = /* @__PURE__ */ new Set();
15
- for (const tool of spec.tools) {
16
- if (toolNames.has(tool.name)) throw new Error(`Agent ${spec.meta.key} has duplicate tool name: ${tool.name}`);
17
- toolNames.add(tool.name);
18
- }
19
- return Object.freeze(spec);
17
+ if (!spec.meta?.key) {
18
+ throw new Error("Agent key is required");
19
+ }
20
+ if (typeof spec.meta.version !== "string") {
21
+ throw new Error(`Agent ${spec.meta.key} is missing a string version`);
22
+ }
23
+ if (!spec.instructions?.trim()) {
24
+ throw new Error(`Agent ${spec.meta.key} requires instructions`);
25
+ }
26
+ if (!spec.tools?.length) {
27
+ throw new Error(`Agent ${spec.meta.key} must expose at least one tool`);
28
+ }
29
+ const toolNames = new Set;
30
+ for (const tool of spec.tools) {
31
+ if (toolNames.has(tool.name)) {
32
+ throw new Error(`Agent ${spec.meta.key} has duplicate tool name: ${tool.name}`);
33
+ }
34
+ toolNames.add(tool.name);
35
+ }
36
+ return Object.freeze(spec);
20
37
  }
21
- /**
22
- * Generate a unique key for an agent spec.
23
- */
24
38
  function agentKey(meta) {
25
- return `${meta.key}.v${meta.version}`;
39
+ return `${meta.key}.v${meta.version}`;
26
40
  }
27
-
28
- //#endregion
29
- export { agentKey, defineAgent };
30
- //# sourceMappingURL=spec.js.map
41
+ export {
42
+ defineAgent,
43
+ agentKey
44
+ };