@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
@@ -76,11 +76,127 @@ var init_adapter = __esm(() => {
76
76
  };
77
77
  });
78
78
 
79
+ // src/telemetry/posthog.ts
80
+ var exports_posthog = {};
81
+ __export(exports_posthog, {
82
+ createPostHogTracedModel: () => createPostHogTracedModel,
83
+ createPostHogTelemetryCollector: () => createPostHogTelemetryCollector,
84
+ createCompositeTelemetryCollector: () => createCompositeTelemetryCollector,
85
+ PostHogTelemetryCollector: () => PostHogTelemetryCollector,
86
+ CompositeTelemetryCollector: () => CompositeTelemetryCollector
87
+ });
88
+ async function createPostHogTracedModel(model, config, overrides) {
89
+ const { withTracing } = await importPostHogAI();
90
+ const phClient = await resolvePostHogClient(config);
91
+ const tracingOptions = {
92
+ ...config.defaults,
93
+ ...overrides
94
+ };
95
+ return withTracing(model, phClient, tracingOptions);
96
+ }
97
+
98
+ class PostHogTelemetryCollector {
99
+ phClient;
100
+ config;
101
+ initPromise;
102
+ constructor(config) {
103
+ this.config = config;
104
+ this.phClient = config.client;
105
+ }
106
+ async collect(sample) {
107
+ const client = await this.getClient();
108
+ const distinctId = this.config.defaults?.posthogDistinctId ?? sample.metadata?.["actorId"] ?? "system";
109
+ client.capture({
110
+ distinctId,
111
+ event: "$ai_generation",
112
+ properties: {
113
+ $ai_model: sample.operation.name,
114
+ $ai_provider: "contractspec",
115
+ $ai_latency: sample.durationMs / 1000,
116
+ $ai_is_error: !sample.success,
117
+ $ai_trace_id: this.config.defaults?.posthogTraceId,
118
+ ...sample.metadata?.["tokenUsage"] ? mapTokenUsage(sample.metadata["tokenUsage"]) : {},
119
+ ...this.config.defaults?.posthogProperties,
120
+ contractspec_operation: sample.operation.name,
121
+ contractspec_version: sample.operation.version,
122
+ contractspec_agent_id: sample.metadata?.["agentId"],
123
+ contractspec_finish_reason: sample.metadata?.["finishReason"],
124
+ contractspec_tool_count: sample.metadata?.["toolCallCount"]
125
+ },
126
+ groups: this.config.defaults?.posthogGroups
127
+ });
128
+ }
129
+ async shutdown() {
130
+ if (this.phClient?.shutdown) {
131
+ await this.phClient.shutdown();
132
+ }
133
+ }
134
+ async getClient() {
135
+ if (this.phClient)
136
+ return this.phClient;
137
+ if (!this.initPromise) {
138
+ this.initPromise = resolvePostHogClient(this.config).then((client) => {
139
+ this.phClient = client;
140
+ return client;
141
+ });
142
+ }
143
+ return this.initPromise;
144
+ }
145
+ }
146
+ function createPostHogTelemetryCollector(config) {
147
+ return new PostHogTelemetryCollector(config);
148
+ }
149
+
150
+ class CompositeTelemetryCollector {
151
+ collectors;
152
+ constructor(collectors) {
153
+ this.collectors = collectors;
154
+ }
155
+ async collect(sample) {
156
+ await Promise.all(this.collectors.map((c) => c.collect(sample)));
157
+ }
158
+ }
159
+ function createCompositeTelemetryCollector(collectors) {
160
+ return new CompositeTelemetryCollector(collectors);
161
+ }
162
+ async function importPostHogAI() {
163
+ try {
164
+ return await import("@posthog/ai");
165
+ } catch {
166
+ throw new Error("PostHog LLM Analytics requires @posthog/ai to be installed. Run: npm install @posthog/ai posthog-node");
167
+ }
168
+ }
169
+ async function resolvePostHogClient(config) {
170
+ if (config.client)
171
+ return config.client;
172
+ if (!config.apiKey) {
173
+ throw new Error("PostHog LLM Analytics requires either a client instance or an apiKey.");
174
+ }
175
+ try {
176
+ const { PostHog } = await import("posthog-node");
177
+ return new PostHog(config.apiKey, {
178
+ host: config.host ?? "https://us.i.posthog.com"
179
+ });
180
+ } catch {
181
+ throw new Error("PostHog LLM Analytics requires posthog-node to be installed. Run: npm install posthog-node");
182
+ }
183
+ }
184
+ function mapTokenUsage(usage) {
185
+ return {
186
+ $ai_input_tokens: usage["promptTokens"],
187
+ $ai_output_tokens: usage["completionTokens"]
188
+ };
189
+ }
79
190
  // src/telemetry/index.ts
80
191
  init_adapter();
81
192
  export {
82
193
  trackAgentStep,
83
194
  noopTelemetryCollector,
195
+ createPostHogTracedModel,
196
+ createPostHogTelemetryCollector,
84
197
  createInMemoryTelemetryCollector,
85
- InMemoryTelemetryCollector
198
+ createCompositeTelemetryCollector,
199
+ PostHogTelemetryCollector,
200
+ InMemoryTelemetryCollector,
201
+ CompositeTelemetryCollector
86
202
  };
File without changes
@@ -0,0 +1,132 @@
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/telemetry/posthog.ts
16
+ var exports_posthog = {};
17
+ __export(exports_posthog, {
18
+ createPostHogTracedModel: () => createPostHogTracedModel,
19
+ createPostHogTelemetryCollector: () => createPostHogTelemetryCollector,
20
+ createCompositeTelemetryCollector: () => createCompositeTelemetryCollector,
21
+ PostHogTelemetryCollector: () => PostHogTelemetryCollector,
22
+ CompositeTelemetryCollector: () => CompositeTelemetryCollector
23
+ });
24
+ async function createPostHogTracedModel(model, config, overrides) {
25
+ const { withTracing } = await importPostHogAI();
26
+ const phClient = await resolvePostHogClient(config);
27
+ const tracingOptions = {
28
+ ...config.defaults,
29
+ ...overrides
30
+ };
31
+ return withTracing(model, phClient, tracingOptions);
32
+ }
33
+
34
+ class PostHogTelemetryCollector {
35
+ phClient;
36
+ config;
37
+ initPromise;
38
+ constructor(config) {
39
+ this.config = config;
40
+ this.phClient = config.client;
41
+ }
42
+ async collect(sample) {
43
+ const client = await this.getClient();
44
+ const distinctId = this.config.defaults?.posthogDistinctId ?? sample.metadata?.["actorId"] ?? "system";
45
+ client.capture({
46
+ distinctId,
47
+ event: "$ai_generation",
48
+ properties: {
49
+ $ai_model: sample.operation.name,
50
+ $ai_provider: "contractspec",
51
+ $ai_latency: sample.durationMs / 1000,
52
+ $ai_is_error: !sample.success,
53
+ $ai_trace_id: this.config.defaults?.posthogTraceId,
54
+ ...sample.metadata?.["tokenUsage"] ? mapTokenUsage(sample.metadata["tokenUsage"]) : {},
55
+ ...this.config.defaults?.posthogProperties,
56
+ contractspec_operation: sample.operation.name,
57
+ contractspec_version: sample.operation.version,
58
+ contractspec_agent_id: sample.metadata?.["agentId"],
59
+ contractspec_finish_reason: sample.metadata?.["finishReason"],
60
+ contractspec_tool_count: sample.metadata?.["toolCallCount"]
61
+ },
62
+ groups: this.config.defaults?.posthogGroups
63
+ });
64
+ }
65
+ async shutdown() {
66
+ if (this.phClient?.shutdown) {
67
+ await this.phClient.shutdown();
68
+ }
69
+ }
70
+ async getClient() {
71
+ if (this.phClient)
72
+ return this.phClient;
73
+ if (!this.initPromise) {
74
+ this.initPromise = resolvePostHogClient(this.config).then((client) => {
75
+ this.phClient = client;
76
+ return client;
77
+ });
78
+ }
79
+ return this.initPromise;
80
+ }
81
+ }
82
+ function createPostHogTelemetryCollector(config) {
83
+ return new PostHogTelemetryCollector(config);
84
+ }
85
+
86
+ class CompositeTelemetryCollector {
87
+ collectors;
88
+ constructor(collectors) {
89
+ this.collectors = collectors;
90
+ }
91
+ async collect(sample) {
92
+ await Promise.all(this.collectors.map((c) => c.collect(sample)));
93
+ }
94
+ }
95
+ function createCompositeTelemetryCollector(collectors) {
96
+ return new CompositeTelemetryCollector(collectors);
97
+ }
98
+ async function importPostHogAI() {
99
+ try {
100
+ return await import("@posthog/ai");
101
+ } catch {
102
+ throw new Error("PostHog LLM Analytics requires @posthog/ai to be installed. Run: npm install @posthog/ai posthog-node");
103
+ }
104
+ }
105
+ async function resolvePostHogClient(config) {
106
+ if (config.client)
107
+ return config.client;
108
+ if (!config.apiKey) {
109
+ throw new Error("PostHog LLM Analytics requires either a client instance or an apiKey.");
110
+ }
111
+ try {
112
+ const { PostHog } = await import("posthog-node");
113
+ return new PostHog(config.apiKey, {
114
+ host: config.host ?? "https://us.i.posthog.com"
115
+ });
116
+ } catch {
117
+ throw new Error("PostHog LLM Analytics requires posthog-node to be installed. Run: npm install posthog-node");
118
+ }
119
+ }
120
+ function mapTokenUsage(usage) {
121
+ return {
122
+ $ai_input_tokens: usage["promptTokens"],
123
+ $ai_output_tokens: usage["completionTokens"]
124
+ };
125
+ }
126
+ export {
127
+ createPostHogTracedModel,
128
+ createPostHogTelemetryCollector,
129
+ createCompositeTelemetryCollector,
130
+ PostHogTelemetryCollector,
131
+ CompositeTelemetryCollector
132
+ };