@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.
- package/dist/agent/agent-factory.d.ts +5 -1
- package/dist/agent/agent-factory.js +2293 -31
- package/dist/agent/agent.test.d.ts +0 -1
- package/dist/agent/contract-spec-agent.d.ts +6 -1
- package/dist/agent/contract-spec-agent.js +2292 -31
- package/dist/agent/index.d.ts +0 -1
- package/dist/agent/index.js +2408 -91
- package/dist/agent/json-runner.d.ts +1 -1
- package/dist/agent/json-runner.js +2326 -57
- package/dist/agent/json-runner.test.d.ts +0 -1
- package/dist/agent/unified-agent.d.ts +0 -1
- package/dist/agent/unified-agent.js +2374 -65
- package/dist/approval/index.d.ts +0 -1
- package/dist/approval/index.js +2122 -2
- package/dist/approval/workflow.d.ts +7 -2
- package/dist/approval/workflow.js +2122 -2
- package/dist/exporters/claude-agent-exporter.d.ts +0 -1
- package/dist/exporters/claude-agent-exporter.js +2144 -35
- package/dist/exporters/index.d.ts +0 -1
- package/dist/exporters/index.js +2193 -69
- package/dist/exporters/opencode-exporter.d.ts +0 -1
- package/dist/exporters/opencode-exporter.js +2152 -39
- package/dist/exporters/types.d.ts +0 -1
- package/dist/i18n/catalogs/en.d.ts +8 -0
- package/dist/i18n/catalogs/en.js +614 -0
- package/dist/i18n/catalogs/es.d.ts +8 -0
- package/dist/i18n/catalogs/es.js +663 -0
- package/dist/i18n/catalogs/fr.d.ts +8 -0
- package/dist/i18n/catalogs/fr.js +629 -0
- package/dist/i18n/catalogs/index.d.ts +8 -0
- package/dist/i18n/catalogs/index.js +1875 -0
- package/dist/i18n/i18n.test.d.ts +1 -0
- package/dist/i18n/index.d.ts +29 -0
- package/dist/i18n/index.js +2127 -0
- package/dist/i18n/keys.d.ts +552 -0
- package/dist/i18n/keys.js +188 -0
- package/dist/i18n/locale.d.ts +33 -0
- package/dist/i18n/locale.js +41 -0
- package/dist/i18n/messages.d.ts +65 -0
- package/dist/i18n/messages.js +1939 -0
- package/dist/index.d.ts +0 -13
- package/dist/index.js +2106 -3254
- package/dist/interop/index.d.ts +0 -1
- package/dist/interop/index.js +2182 -47
- package/dist/interop/spec-consumer.d.ts +0 -1
- package/dist/interop/spec-consumer.js +2151 -34
- package/dist/interop/tool-consumer.d.ts +0 -1
- package/dist/interop/tool-consumer.js +2122 -13
- package/dist/interop/types.d.ts +0 -1
- package/dist/knowledge/index.d.ts +0 -1
- package/dist/knowledge/index.js +2105 -7
- package/dist/knowledge/injector.d.ts +2 -3
- package/dist/knowledge/injector.js +2104 -7
- package/dist/memory/in-memory.d.ts +0 -1
- package/dist/memory/index.d.ts +0 -1
- package/dist/memory/manager.d.ts +0 -1
- package/dist/memory/memory.test.d.ts +0 -1
- package/dist/node/agent/agent-factory.js +2293 -31
- package/dist/node/agent/contract-spec-agent.js +2292 -31
- package/dist/node/agent/index.js +2408 -91
- package/dist/node/agent/json-runner.js +2326 -57
- package/dist/node/agent/unified-agent.js +2374 -65
- package/dist/node/approval/index.js +2122 -2
- package/dist/node/approval/workflow.js +2122 -2
- package/dist/node/exporters/claude-agent-exporter.js +2144 -35
- package/dist/node/exporters/index.js +2193 -69
- package/dist/node/exporters/opencode-exporter.js +2152 -39
- package/dist/node/i18n/catalogs/en.js +614 -0
- package/dist/node/i18n/catalogs/es.js +663 -0
- package/dist/node/i18n/catalogs/fr.js +629 -0
- package/dist/node/i18n/catalogs/index.js +1875 -0
- package/dist/node/i18n/index.js +2127 -0
- package/dist/node/i18n/keys.js +188 -0
- package/dist/node/i18n/locale.js +41 -0
- package/dist/node/i18n/messages.js +1939 -0
- package/dist/node/index.js +2106 -3254
- package/dist/node/interop/index.js +2182 -47
- package/dist/node/interop/spec-consumer.js +2151 -34
- package/dist/node/interop/tool-consumer.js +2122 -13
- package/dist/node/knowledge/index.js +2105 -7
- package/dist/node/knowledge/injector.js +2104 -7
- package/dist/node/providers/claude-agent-sdk/adapter.js +2143 -22
- package/dist/node/providers/claude-agent-sdk/index.js +2144 -22
- package/dist/node/providers/claude-agent-sdk/tool-bridge.js +2101 -3
- package/dist/node/providers/index.js +2182 -39
- package/dist/node/providers/opencode-sdk/adapter.js +2148 -27
- package/dist/node/providers/opencode-sdk/agent-bridge.js +2110 -10
- package/dist/node/providers/opencode-sdk/index.js +2149 -27
- package/dist/node/providers/opencode-sdk/tool-bridge.js +2101 -3
- package/dist/node/providers/registry.js +2094 -2
- package/dist/node/session/index.js +37 -2
- package/dist/node/session/store.js +37 -2
- package/dist/node/spec/index.js +2111 -7
- package/dist/node/spec/registry.js +2096 -2
- package/dist/node/spec/spec.js +2105 -5
- package/dist/node/telemetry/index.js +117 -1
- package/dist/node/telemetry/posthog-types.js +0 -0
- package/dist/node/telemetry/posthog.js +132 -0
- package/dist/node/tools/index.js +2117 -17
- package/dist/node/tools/knowledge-tool.js +2105 -11
- package/dist/node/tools/mcp-server.js +2101 -5
- package/dist/node/tools/tool-adapter.js +2093 -1
- package/dist/providers/claude-agent-sdk/adapter.d.ts +0 -1
- package/dist/providers/claude-agent-sdk/adapter.js +2143 -22
- package/dist/providers/claude-agent-sdk/index.d.ts +0 -1
- package/dist/providers/claude-agent-sdk/index.js +2144 -22
- package/dist/providers/claude-agent-sdk/session-bridge.d.ts +0 -1
- package/dist/providers/claude-agent-sdk/tool-bridge.d.ts +0 -1
- package/dist/providers/claude-agent-sdk/tool-bridge.js +2101 -3
- package/dist/providers/index.d.ts +0 -1
- package/dist/providers/index.js +2182 -39
- package/dist/providers/opencode-sdk/adapter.d.ts +0 -1
- package/dist/providers/opencode-sdk/adapter.js +2148 -27
- package/dist/providers/opencode-sdk/agent-bridge.d.ts +0 -1
- package/dist/providers/opencode-sdk/agent-bridge.js +2110 -10
- package/dist/providers/opencode-sdk/index.d.ts +0 -1
- package/dist/providers/opencode-sdk/index.js +2149 -27
- package/dist/providers/opencode-sdk/tool-bridge.d.ts +0 -1
- package/dist/providers/opencode-sdk/tool-bridge.js +2101 -3
- package/dist/providers/registry.d.ts +0 -1
- package/dist/providers/registry.js +2094 -2
- package/dist/providers/types.d.ts +0 -1
- package/dist/schema/index.d.ts +0 -1
- package/dist/schema/json-schema-to-zod.d.ts +0 -1
- package/dist/schema/schema-output.d.ts +0 -1
- package/dist/session/index.d.ts +0 -1
- package/dist/session/index.js +37 -2
- package/dist/session/store.d.ts +12 -2
- package/dist/session/store.js +37 -2
- package/dist/spec/index.d.ts +0 -1
- package/dist/spec/index.js +2111 -7
- package/dist/spec/registry.d.ts +1 -2
- package/dist/spec/registry.js +2096 -2
- package/dist/spec/spec.d.ts +5 -4
- package/dist/spec/spec.js +2105 -5
- package/dist/telemetry/adapter.d.ts +0 -1
- package/dist/telemetry/index.d.ts +2 -1
- package/dist/telemetry/index.js +117 -1
- package/dist/telemetry/posthog-types.d.ts +59 -0
- package/dist/telemetry/posthog-types.js +1 -0
- package/dist/telemetry/posthog.d.ts +80 -0
- package/dist/telemetry/posthog.js +132 -0
- package/dist/telemetry/posthog.test.d.ts +1 -0
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.js +2117 -17
- package/dist/tools/knowledge-tool.d.ts +1 -2
- package/dist/tools/knowledge-tool.js +2105 -11
- package/dist/tools/mcp-client.d.ts +0 -1
- package/dist/tools/mcp-server.d.ts +0 -1
- package/dist/tools/mcp-server.js +2101 -5
- package/dist/tools/tool-adapter.d.ts +0 -1
- package/dist/tools/tool-adapter.js +2093 -1
- package/dist/tools/tools.test.d.ts +0 -1
- package/dist/types.d.ts +4 -1
- package/package.json +166 -13
- package/dist/agent/agent-factory.d.ts.map +0 -1
- package/dist/agent/agent.test.d.ts.map +0 -1
- package/dist/agent/contract-spec-agent.d.ts.map +0 -1
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/json-runner.d.ts.map +0 -1
- package/dist/agent/json-runner.test.d.ts.map +0 -1
- package/dist/agent/unified-agent.d.ts.map +0 -1
- package/dist/approval/index.d.ts.map +0 -1
- package/dist/approval/workflow.d.ts.map +0 -1
- package/dist/exporters/claude-agent-exporter.d.ts.map +0 -1
- package/dist/exporters/index.d.ts.map +0 -1
- package/dist/exporters/opencode-exporter.d.ts.map +0 -1
- package/dist/exporters/types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/interop/index.d.ts.map +0 -1
- package/dist/interop/spec-consumer.d.ts.map +0 -1
- package/dist/interop/tool-consumer.d.ts.map +0 -1
- package/dist/interop/types.d.ts.map +0 -1
- package/dist/knowledge/index.d.ts.map +0 -1
- package/dist/knowledge/injector.d.ts.map +0 -1
- package/dist/memory/in-memory.d.ts.map +0 -1
- package/dist/memory/index.d.ts.map +0 -1
- package/dist/memory/manager.d.ts.map +0 -1
- package/dist/memory/memory.test.d.ts.map +0 -1
- package/dist/providers/claude-agent-sdk/adapter.d.ts.map +0 -1
- package/dist/providers/claude-agent-sdk/index.d.ts.map +0 -1
- package/dist/providers/claude-agent-sdk/session-bridge.d.ts.map +0 -1
- package/dist/providers/claude-agent-sdk/tool-bridge.d.ts.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/opencode-sdk/adapter.d.ts.map +0 -1
- package/dist/providers/opencode-sdk/agent-bridge.d.ts.map +0 -1
- package/dist/providers/opencode-sdk/index.d.ts.map +0 -1
- package/dist/providers/opencode-sdk/tool-bridge.d.ts.map +0 -1
- package/dist/providers/registry.d.ts.map +0 -1
- package/dist/providers/types.d.ts.map +0 -1
- package/dist/schema/index.d.ts.map +0 -1
- package/dist/schema/json-schema-to-zod.d.ts.map +0 -1
- package/dist/schema/schema-output.d.ts.map +0 -1
- package/dist/session/index.d.ts.map +0 -1
- package/dist/session/store.d.ts.map +0 -1
- package/dist/spec/index.d.ts.map +0 -1
- package/dist/spec/registry.d.ts.map +0 -1
- package/dist/spec/spec.d.ts.map +0 -1
- package/dist/telemetry/adapter.d.ts.map +0 -1
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/knowledge-tool.d.ts.map +0 -1
- package/dist/tools/mcp-client.d.ts.map +0 -1
- package/dist/tools/mcp-server.d.ts.map +0 -1
- package/dist/tools/tool-adapter.d.ts.map +0 -1
- package/dist/tools/tools.test.d.ts.map +0 -1
- 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
|
-
|
|
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
|
+
};
|