@contractspec/lib.ai-agent 1.61.0 → 2.0.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 (207) hide show
  1. package/dist/agent/agent-factory.d.ts +5 -1
  2. package/dist/agent/agent-factory.js +2293 -31
  3. package/dist/agent/agent.test.d.ts +0 -1
  4. package/dist/agent/contract-spec-agent.d.ts +6 -1
  5. package/dist/agent/contract-spec-agent.js +2292 -31
  6. package/dist/agent/index.d.ts +0 -1
  7. package/dist/agent/index.js +2408 -91
  8. package/dist/agent/json-runner.d.ts +1 -1
  9. package/dist/agent/json-runner.js +2326 -57
  10. package/dist/agent/json-runner.test.d.ts +0 -1
  11. package/dist/agent/unified-agent.d.ts +0 -1
  12. package/dist/agent/unified-agent.js +2374 -65
  13. package/dist/approval/index.d.ts +0 -1
  14. package/dist/approval/index.js +2122 -2
  15. package/dist/approval/workflow.d.ts +7 -2
  16. package/dist/approval/workflow.js +2122 -2
  17. package/dist/exporters/claude-agent-exporter.d.ts +0 -1
  18. package/dist/exporters/claude-agent-exporter.js +2144 -35
  19. package/dist/exporters/index.d.ts +0 -1
  20. package/dist/exporters/index.js +2193 -69
  21. package/dist/exporters/opencode-exporter.d.ts +0 -1
  22. package/dist/exporters/opencode-exporter.js +2152 -39
  23. package/dist/exporters/types.d.ts +0 -1
  24. package/dist/i18n/catalogs/en.d.ts +8 -0
  25. package/dist/i18n/catalogs/en.js +614 -0
  26. package/dist/i18n/catalogs/es.d.ts +8 -0
  27. package/dist/i18n/catalogs/es.js +663 -0
  28. package/dist/i18n/catalogs/fr.d.ts +8 -0
  29. package/dist/i18n/catalogs/fr.js +629 -0
  30. package/dist/i18n/catalogs/index.d.ts +8 -0
  31. package/dist/i18n/catalogs/index.js +1875 -0
  32. package/dist/i18n/i18n.test.d.ts +1 -0
  33. package/dist/i18n/index.d.ts +29 -0
  34. package/dist/i18n/index.js +2127 -0
  35. package/dist/i18n/keys.d.ts +552 -0
  36. package/dist/i18n/keys.js +188 -0
  37. package/dist/i18n/locale.d.ts +33 -0
  38. package/dist/i18n/locale.js +41 -0
  39. package/dist/i18n/messages.d.ts +65 -0
  40. package/dist/i18n/messages.js +1939 -0
  41. package/dist/index.d.ts +0 -13
  42. package/dist/index.js +2106 -3254
  43. package/dist/interop/index.d.ts +0 -1
  44. package/dist/interop/index.js +2182 -47
  45. package/dist/interop/spec-consumer.d.ts +0 -1
  46. package/dist/interop/spec-consumer.js +2151 -34
  47. package/dist/interop/tool-consumer.d.ts +0 -1
  48. package/dist/interop/tool-consumer.js +2122 -13
  49. package/dist/interop/types.d.ts +0 -1
  50. package/dist/knowledge/index.d.ts +0 -1
  51. package/dist/knowledge/index.js +2105 -7
  52. package/dist/knowledge/injector.d.ts +2 -3
  53. package/dist/knowledge/injector.js +2104 -7
  54. package/dist/memory/in-memory.d.ts +0 -1
  55. package/dist/memory/index.d.ts +0 -1
  56. package/dist/memory/manager.d.ts +0 -1
  57. package/dist/memory/memory.test.d.ts +0 -1
  58. package/dist/node/agent/agent-factory.js +2293 -31
  59. package/dist/node/agent/contract-spec-agent.js +2292 -31
  60. package/dist/node/agent/index.js +2408 -91
  61. package/dist/node/agent/json-runner.js +2326 -57
  62. package/dist/node/agent/unified-agent.js +2374 -65
  63. package/dist/node/approval/index.js +2122 -2
  64. package/dist/node/approval/workflow.js +2122 -2
  65. package/dist/node/exporters/claude-agent-exporter.js +2144 -35
  66. package/dist/node/exporters/index.js +2193 -69
  67. package/dist/node/exporters/opencode-exporter.js +2152 -39
  68. package/dist/node/i18n/catalogs/en.js +614 -0
  69. package/dist/node/i18n/catalogs/es.js +663 -0
  70. package/dist/node/i18n/catalogs/fr.js +629 -0
  71. package/dist/node/i18n/catalogs/index.js +1875 -0
  72. package/dist/node/i18n/index.js +2127 -0
  73. package/dist/node/i18n/keys.js +188 -0
  74. package/dist/node/i18n/locale.js +41 -0
  75. package/dist/node/i18n/messages.js +1939 -0
  76. package/dist/node/index.js +2106 -3254
  77. package/dist/node/interop/index.js +2182 -47
  78. package/dist/node/interop/spec-consumer.js +2151 -34
  79. package/dist/node/interop/tool-consumer.js +2122 -13
  80. package/dist/node/knowledge/index.js +2105 -7
  81. package/dist/node/knowledge/injector.js +2104 -7
  82. package/dist/node/providers/claude-agent-sdk/adapter.js +2143 -22
  83. package/dist/node/providers/claude-agent-sdk/index.js +2144 -22
  84. package/dist/node/providers/claude-agent-sdk/tool-bridge.js +2101 -3
  85. package/dist/node/providers/index.js +2182 -39
  86. package/dist/node/providers/opencode-sdk/adapter.js +2148 -27
  87. package/dist/node/providers/opencode-sdk/agent-bridge.js +2110 -10
  88. package/dist/node/providers/opencode-sdk/index.js +2149 -27
  89. package/dist/node/providers/opencode-sdk/tool-bridge.js +2101 -3
  90. package/dist/node/providers/registry.js +2094 -2
  91. package/dist/node/session/index.js +37 -2
  92. package/dist/node/session/store.js +37 -2
  93. package/dist/node/spec/index.js +2111 -7
  94. package/dist/node/spec/registry.js +2096 -2
  95. package/dist/node/spec/spec.js +2105 -5
  96. package/dist/node/telemetry/index.js +117 -1
  97. package/dist/node/telemetry/posthog-types.js +0 -0
  98. package/dist/node/telemetry/posthog.js +132 -0
  99. package/dist/node/tools/index.js +2117 -17
  100. package/dist/node/tools/knowledge-tool.js +2105 -11
  101. package/dist/node/tools/mcp-server.js +2101 -5
  102. package/dist/node/tools/tool-adapter.js +2093 -1
  103. package/dist/providers/claude-agent-sdk/adapter.d.ts +0 -1
  104. package/dist/providers/claude-agent-sdk/adapter.js +2143 -22
  105. package/dist/providers/claude-agent-sdk/index.d.ts +0 -1
  106. package/dist/providers/claude-agent-sdk/index.js +2144 -22
  107. package/dist/providers/claude-agent-sdk/session-bridge.d.ts +0 -1
  108. package/dist/providers/claude-agent-sdk/tool-bridge.d.ts +0 -1
  109. package/dist/providers/claude-agent-sdk/tool-bridge.js +2101 -3
  110. package/dist/providers/index.d.ts +0 -1
  111. package/dist/providers/index.js +2182 -39
  112. package/dist/providers/opencode-sdk/adapter.d.ts +0 -1
  113. package/dist/providers/opencode-sdk/adapter.js +2148 -27
  114. package/dist/providers/opencode-sdk/agent-bridge.d.ts +0 -1
  115. package/dist/providers/opencode-sdk/agent-bridge.js +2110 -10
  116. package/dist/providers/opencode-sdk/index.d.ts +0 -1
  117. package/dist/providers/opencode-sdk/index.js +2149 -27
  118. package/dist/providers/opencode-sdk/tool-bridge.d.ts +0 -1
  119. package/dist/providers/opencode-sdk/tool-bridge.js +2101 -3
  120. package/dist/providers/registry.d.ts +0 -1
  121. package/dist/providers/registry.js +2094 -2
  122. package/dist/providers/types.d.ts +0 -1
  123. package/dist/schema/index.d.ts +0 -1
  124. package/dist/schema/json-schema-to-zod.d.ts +0 -1
  125. package/dist/schema/schema-output.d.ts +0 -1
  126. package/dist/session/index.d.ts +0 -1
  127. package/dist/session/index.js +37 -2
  128. package/dist/session/store.d.ts +12 -2
  129. package/dist/session/store.js +37 -2
  130. package/dist/spec/index.d.ts +0 -1
  131. package/dist/spec/index.js +2111 -7
  132. package/dist/spec/registry.d.ts +1 -2
  133. package/dist/spec/registry.js +2096 -2
  134. package/dist/spec/spec.d.ts +5 -4
  135. package/dist/spec/spec.js +2105 -5
  136. package/dist/telemetry/adapter.d.ts +0 -1
  137. package/dist/telemetry/index.d.ts +2 -1
  138. package/dist/telemetry/index.js +117 -1
  139. package/dist/telemetry/posthog-types.d.ts +59 -0
  140. package/dist/telemetry/posthog-types.js +1 -0
  141. package/dist/telemetry/posthog.d.ts +80 -0
  142. package/dist/telemetry/posthog.js +132 -0
  143. package/dist/telemetry/posthog.test.d.ts +1 -0
  144. package/dist/tools/index.d.ts +0 -1
  145. package/dist/tools/index.js +2117 -17
  146. package/dist/tools/knowledge-tool.d.ts +1 -2
  147. package/dist/tools/knowledge-tool.js +2105 -11
  148. package/dist/tools/mcp-client.d.ts +0 -1
  149. package/dist/tools/mcp-server.d.ts +0 -1
  150. package/dist/tools/mcp-server.js +2101 -5
  151. package/dist/tools/tool-adapter.d.ts +0 -1
  152. package/dist/tools/tool-adapter.js +2093 -1
  153. package/dist/tools/tools.test.d.ts +0 -1
  154. package/dist/types.d.ts +4 -1
  155. package/package.json +166 -13
  156. package/dist/agent/agent-factory.d.ts.map +0 -1
  157. package/dist/agent/agent.test.d.ts.map +0 -1
  158. package/dist/agent/contract-spec-agent.d.ts.map +0 -1
  159. package/dist/agent/index.d.ts.map +0 -1
  160. package/dist/agent/json-runner.d.ts.map +0 -1
  161. package/dist/agent/json-runner.test.d.ts.map +0 -1
  162. package/dist/agent/unified-agent.d.ts.map +0 -1
  163. package/dist/approval/index.d.ts.map +0 -1
  164. package/dist/approval/workflow.d.ts.map +0 -1
  165. package/dist/exporters/claude-agent-exporter.d.ts.map +0 -1
  166. package/dist/exporters/index.d.ts.map +0 -1
  167. package/dist/exporters/opencode-exporter.d.ts.map +0 -1
  168. package/dist/exporters/types.d.ts.map +0 -1
  169. package/dist/index.d.ts.map +0 -1
  170. package/dist/interop/index.d.ts.map +0 -1
  171. package/dist/interop/spec-consumer.d.ts.map +0 -1
  172. package/dist/interop/tool-consumer.d.ts.map +0 -1
  173. package/dist/interop/types.d.ts.map +0 -1
  174. package/dist/knowledge/index.d.ts.map +0 -1
  175. package/dist/knowledge/injector.d.ts.map +0 -1
  176. package/dist/memory/in-memory.d.ts.map +0 -1
  177. package/dist/memory/index.d.ts.map +0 -1
  178. package/dist/memory/manager.d.ts.map +0 -1
  179. package/dist/memory/memory.test.d.ts.map +0 -1
  180. package/dist/providers/claude-agent-sdk/adapter.d.ts.map +0 -1
  181. package/dist/providers/claude-agent-sdk/index.d.ts.map +0 -1
  182. package/dist/providers/claude-agent-sdk/session-bridge.d.ts.map +0 -1
  183. package/dist/providers/claude-agent-sdk/tool-bridge.d.ts.map +0 -1
  184. package/dist/providers/index.d.ts.map +0 -1
  185. package/dist/providers/opencode-sdk/adapter.d.ts.map +0 -1
  186. package/dist/providers/opencode-sdk/agent-bridge.d.ts.map +0 -1
  187. package/dist/providers/opencode-sdk/index.d.ts.map +0 -1
  188. package/dist/providers/opencode-sdk/tool-bridge.d.ts.map +0 -1
  189. package/dist/providers/registry.d.ts.map +0 -1
  190. package/dist/providers/types.d.ts.map +0 -1
  191. package/dist/schema/index.d.ts.map +0 -1
  192. package/dist/schema/json-schema-to-zod.d.ts.map +0 -1
  193. package/dist/schema/schema-output.d.ts.map +0 -1
  194. package/dist/session/index.d.ts.map +0 -1
  195. package/dist/session/store.d.ts.map +0 -1
  196. package/dist/spec/index.d.ts.map +0 -1
  197. package/dist/spec/registry.d.ts.map +0 -1
  198. package/dist/spec/spec.d.ts.map +0 -1
  199. package/dist/telemetry/adapter.d.ts.map +0 -1
  200. package/dist/telemetry/index.d.ts.map +0 -1
  201. package/dist/tools/index.d.ts.map +0 -1
  202. package/dist/tools/knowledge-tool.d.ts.map +0 -1
  203. package/dist/tools/mcp-client.d.ts.map +0 -1
  204. package/dist/tools/mcp-server.d.ts.map +0 -1
  205. package/dist/tools/tool-adapter.d.ts.map +0 -1
  206. package/dist/tools/tools.test.d.ts.map +0 -1
  207. package/dist/types.d.ts.map +0 -1
@@ -242,4 +242,3 @@ export declare class ProviderExecutionError extends ExternalProviderError {
242
242
  export declare class ContextCreationError extends ExternalProviderError {
243
243
  constructor(provider: string, message: string, cause?: Error);
244
244
  }
245
- //# sourceMappingURL=types.d.ts.map
@@ -1,3 +1,2 @@
1
1
  export * from './json-schema-to-zod';
2
2
  export * from './schema-output';
3
- //# sourceMappingURL=index.d.ts.map
@@ -48,4 +48,3 @@ export declare function jsonSchemaToZod(schema: JsonSchema | Record<string, unkn
48
48
  */
49
49
  export declare function jsonSchemaToZodSafe(schema?: Record<string, unknown>): ZodType;
50
50
  export {};
51
- //# sourceMappingURL=json-schema-to-zod.d.ts.map
@@ -70,4 +70,3 @@ export declare const SchemaOutput: {
70
70
  readonly text: typeof textOutput;
71
71
  };
72
72
  export {};
73
- //# sourceMappingURL=schema-output.d.ts.map
@@ -1,2 +1 @@
1
1
  export * from './store';
2
- //# sourceMappingURL=index.d.ts.map
@@ -15,10 +15,19 @@ var __require = import.meta.require;
15
15
  // src/session/store.ts
16
16
  class InMemorySessionStore {
17
17
  sessions = new Map;
18
+ maxSessions;
19
+ maxMessagesPerSession;
20
+ maxStepsPerSession;
21
+ constructor(options = {}) {
22
+ this.maxSessions = options.maxSessions ?? 500;
23
+ this.maxMessagesPerSession = options.maxMessagesPerSession ?? 200;
24
+ this.maxStepsPerSession = options.maxStepsPerSession ?? 200;
25
+ }
18
26
  async get(sessionId) {
19
27
  return this.sessions.get(sessionId) ?? null;
20
28
  }
21
29
  async create(session) {
30
+ this.evictIfNeeded();
22
31
  const now = new Date;
23
32
  const fullSession = {
24
33
  ...session,
@@ -32,6 +41,7 @@ class InMemorySessionStore {
32
41
  const session = this.sessions.get(sessionId);
33
42
  if (session) {
34
43
  session.steps.push(step);
44
+ this.trimArray(session.steps, this.maxStepsPerSession);
35
45
  session.updatedAt = new Date;
36
46
  }
37
47
  }
@@ -39,6 +49,7 @@ class InMemorySessionStore {
39
49
  const session = this.sessions.get(sessionId);
40
50
  if (session) {
41
51
  session.messages.push(message);
52
+ this.trimArray(session.messages, this.maxMessagesPerSession);
42
53
  session.updatedAt = new Date;
43
54
  }
44
55
  }
@@ -76,9 +87,33 @@ class InMemorySessionStore {
76
87
  clear() {
77
88
  this.sessions.clear();
78
89
  }
90
+ evictIfNeeded() {
91
+ if (this.sessions.size < this.maxSessions) {
92
+ return;
93
+ }
94
+ let oldestSessionId = null;
95
+ let oldestUpdatedAt = Number.POSITIVE_INFINITY;
96
+ for (const [sessionId, session] of this.sessions.entries()) {
97
+ const updatedAt = session.updatedAt.getTime();
98
+ if (updatedAt < oldestUpdatedAt) {
99
+ oldestUpdatedAt = updatedAt;
100
+ oldestSessionId = sessionId;
101
+ }
102
+ }
103
+ if (oldestSessionId) {
104
+ this.sessions.delete(oldestSessionId);
105
+ }
106
+ }
107
+ trimArray(items, maxItems) {
108
+ if (items.length <= maxItems) {
109
+ return;
110
+ }
111
+ const overflow = items.length - maxItems;
112
+ items.splice(0, overflow);
113
+ }
79
114
  }
80
- function createInMemorySessionStore() {
81
- return new InMemorySessionStore;
115
+ function createInMemorySessionStore(options) {
116
+ return new InMemorySessionStore(options);
82
117
  }
83
118
  function generateSessionId() {
84
119
  return `sess_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
@@ -40,11 +40,20 @@ export interface AgentSessionStore {
40
40
  */
41
41
  listByTenant(tenantId: string, limit?: number): Promise<AgentSessionState[]>;
42
42
  }
43
+ export interface InMemorySessionStoreOptions {
44
+ maxSessions?: number;
45
+ maxMessagesPerSession?: number;
46
+ maxStepsPerSession?: number;
47
+ }
43
48
  /**
44
49
  * In-memory session store for development and testing.
45
50
  */
46
51
  export declare class InMemorySessionStore implements AgentSessionStore {
47
52
  private readonly sessions;
53
+ private readonly maxSessions;
54
+ private readonly maxMessagesPerSession;
55
+ private readonly maxStepsPerSession;
56
+ constructor(options?: InMemorySessionStoreOptions);
48
57
  get(sessionId: string): Promise<AgentSessionState | null>;
49
58
  create(session: Omit<AgentSessionState, 'createdAt' | 'updatedAt'>): Promise<AgentSessionState>;
50
59
  appendStep(sessionId: string, step: StepResult<ToolSet>): Promise<void>;
@@ -57,13 +66,14 @@ export declare class InMemorySessionStore implements AgentSessionStore {
57
66
  * Clear all sessions (for testing).
58
67
  */
59
68
  clear(): void;
69
+ private evictIfNeeded;
70
+ private trimArray;
60
71
  }
61
72
  /**
62
73
  * Create an in-memory session store.
63
74
  */
64
- export declare function createInMemorySessionStore(): AgentSessionStore;
75
+ export declare function createInMemorySessionStore(options?: InMemorySessionStoreOptions): AgentSessionStore;
65
76
  /**
66
77
  * Generate a unique session ID.
67
78
  */
68
79
  export declare function generateSessionId(): string;
69
- //# sourceMappingURL=store.d.ts.map
@@ -15,10 +15,19 @@ var __require = import.meta.require;
15
15
  // src/session/store.ts
16
16
  class InMemorySessionStore {
17
17
  sessions = new Map;
18
+ maxSessions;
19
+ maxMessagesPerSession;
20
+ maxStepsPerSession;
21
+ constructor(options = {}) {
22
+ this.maxSessions = options.maxSessions ?? 500;
23
+ this.maxMessagesPerSession = options.maxMessagesPerSession ?? 200;
24
+ this.maxStepsPerSession = options.maxStepsPerSession ?? 200;
25
+ }
18
26
  async get(sessionId) {
19
27
  return this.sessions.get(sessionId) ?? null;
20
28
  }
21
29
  async create(session) {
30
+ this.evictIfNeeded();
22
31
  const now = new Date;
23
32
  const fullSession = {
24
33
  ...session,
@@ -32,6 +41,7 @@ class InMemorySessionStore {
32
41
  const session = this.sessions.get(sessionId);
33
42
  if (session) {
34
43
  session.steps.push(step);
44
+ this.trimArray(session.steps, this.maxStepsPerSession);
35
45
  session.updatedAt = new Date;
36
46
  }
37
47
  }
@@ -39,6 +49,7 @@ class InMemorySessionStore {
39
49
  const session = this.sessions.get(sessionId);
40
50
  if (session) {
41
51
  session.messages.push(message);
52
+ this.trimArray(session.messages, this.maxMessagesPerSession);
42
53
  session.updatedAt = new Date;
43
54
  }
44
55
  }
@@ -76,9 +87,33 @@ class InMemorySessionStore {
76
87
  clear() {
77
88
  this.sessions.clear();
78
89
  }
90
+ evictIfNeeded() {
91
+ if (this.sessions.size < this.maxSessions) {
92
+ return;
93
+ }
94
+ let oldestSessionId = null;
95
+ let oldestUpdatedAt = Number.POSITIVE_INFINITY;
96
+ for (const [sessionId, session] of this.sessions.entries()) {
97
+ const updatedAt = session.updatedAt.getTime();
98
+ if (updatedAt < oldestUpdatedAt) {
99
+ oldestUpdatedAt = updatedAt;
100
+ oldestSessionId = sessionId;
101
+ }
102
+ }
103
+ if (oldestSessionId) {
104
+ this.sessions.delete(oldestSessionId);
105
+ }
106
+ }
107
+ trimArray(items, maxItems) {
108
+ if (items.length <= maxItems) {
109
+ return;
110
+ }
111
+ const overflow = items.length - maxItems;
112
+ items.splice(0, overflow);
113
+ }
79
114
  }
80
- function createInMemorySessionStore() {
81
- return new InMemorySessionStore;
115
+ function createInMemorySessionStore(options) {
116
+ return new InMemorySessionStore(options);
82
117
  }
83
118
  function generateSessionId() {
84
119
  return `sess_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`;
@@ -1,3 +1,2 @@
1
1
  export * from './spec';
2
2
  export * from './registry';
3
- //# sourceMappingURL=index.d.ts.map