agentfootprint 2.8.2 → 2.9.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/adapters/observability/otel.js +294 -0
- package/dist/adapters/observability/otel.js.map +1 -0
- package/dist/adapters/observability/xray.js +370 -0
- package/dist/adapters/observability/xray.js.map +1 -0
- package/dist/esm/adapters/observability/otel.js +290 -0
- package/dist/esm/adapters/observability/otel.js.map +1 -0
- package/dist/esm/adapters/observability/xray.js +366 -0
- package/dist/esm/adapters/observability/xray.js.map +1 -0
- package/dist/esm/observability-providers.js +10 -3
- package/dist/esm/observability-providers.js.map +1 -1
- package/dist/observability-providers.js +13 -4
- package/dist/observability-providers.js.map +1 -1
- package/dist/types/adapters/observability/otel.d.ts +115 -0
- package/dist/types/adapters/observability/otel.d.ts.map +1 -0
- package/dist/types/adapters/observability/xray.d.ts +83 -0
- package/dist/types/adapters/observability/xray.d.ts.map +1 -0
- package/dist/types/observability-providers.d.ts +10 -3
- package/dist/types/observability-providers.d.ts.map +1 -1
- package/package.json +9 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xray.js","sourceRoot":"","sources":["../../../src/adapters/observability/xray.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* otelObservability — OpenTelemetry distributed-tracing adapter.
|
|
3
|
+
*
|
|
4
|
+
* Ships every agentfootprint event as OpenTelemetry spans + log
|
|
5
|
+
* records via a consumer-supplied OTel API. Same hierarchical
|
|
6
|
+
* mapping as the X-Ray adapter, but the destination is whichever
|
|
7
|
+
* OTel-compat backend the consumer's SDK exports to:
|
|
8
|
+
*
|
|
9
|
+
* - **Honeycomb** (OTLP/HTTP)
|
|
10
|
+
* - **Grafana Cloud / Tempo / Mimir** (OTLP)
|
|
11
|
+
* - **AWS Distro for OTel** → AWS X-Ray (alternative to xrayObservability)
|
|
12
|
+
* - **Datadog APM** (OTLP endpoint)
|
|
13
|
+
* - **Splunk Observability Cloud** (OTLP)
|
|
14
|
+
* - **New Relic** (OTLP endpoint)
|
|
15
|
+
* - **Lightstep / ServiceNow Cloud Observability** (OTLP)
|
|
16
|
+
* - any custom OTel collector / processor pipeline
|
|
17
|
+
*
|
|
18
|
+
* Subpath: `agentfootprint/observability-providers`
|
|
19
|
+
* Peer dep: `@opentelemetry/api` (OPTIONAL — installed only when
|
|
20
|
+
* this adapter is used. The consumer ALSO installs the
|
|
21
|
+
* OTel SDK + exporter of their choice — that's the BYO
|
|
22
|
+
* contract that makes this adapter backend-agnostic.).
|
|
23
|
+
*
|
|
24
|
+
* **Why BYO SDK:** OTel's SDK is heavyweight and exporter-specific
|
|
25
|
+
* (each backend has its own exporter package). Forcing a particular
|
|
26
|
+
* exporter would defeat the "OTel is portable" guarantee. Consumers
|
|
27
|
+
* configure the SDK + exporter once at app startup; we just speak
|
|
28
|
+
* the typed OTel API.
|
|
29
|
+
*
|
|
30
|
+
* Mapping:
|
|
31
|
+
*
|
|
32
|
+
* agent.turn_start ↦ start root span (one trace per turn)
|
|
33
|
+
* agent.turn_end ↦ end root span
|
|
34
|
+
* agent.iteration_start ↦ start child span under root
|
|
35
|
+
* agent.iteration_end ↦ end iteration span
|
|
36
|
+
* stream.llm_start ↦ start child span (model call)
|
|
37
|
+
* stream.llm_end ↦ end llm span
|
|
38
|
+
* stream.tool_start ↦ start child span (tool call)
|
|
39
|
+
* stream.tool_end ↦ end tool span (with `error: true` if errored)
|
|
40
|
+
* cost.tick ↦ setAttribute on topmost active span
|
|
41
|
+
*
|
|
42
|
+
* @example Basic — Honeycomb via OTLP
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
|
|
45
|
+
* import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
46
|
+
* import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
47
|
+
* import { trace } from '@opentelemetry/api';
|
|
48
|
+
* import { otelObservability } from 'agentfootprint/observability-providers';
|
|
49
|
+
*
|
|
50
|
+
* // Set up OTel ONCE at app startup.
|
|
51
|
+
* const provider = new NodeTracerProvider();
|
|
52
|
+
* provider.addSpanProcessor(new BatchSpanProcessor(new OTLPTraceExporter({
|
|
53
|
+
* url: 'https://api.honeycomb.io/v1/traces',
|
|
54
|
+
* headers: { 'x-honeycomb-team': process.env.HONEYCOMB_KEY },
|
|
55
|
+
* })));
|
|
56
|
+
* provider.register();
|
|
57
|
+
*
|
|
58
|
+
* agent.enable.observability({
|
|
59
|
+
* strategy: otelObservability({
|
|
60
|
+
* serviceName: 'my-agent',
|
|
61
|
+
* // tracer optional — defaults to trace.getTracer('agentfootprint').
|
|
62
|
+
* }),
|
|
63
|
+
* });
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* @example Test injection
|
|
67
|
+
* ```ts
|
|
68
|
+
* otelObservability({
|
|
69
|
+
* serviceName: 'test',
|
|
70
|
+
* tracer: mockTracer, // anything matching the OTel Tracer interface
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
import { lazyRequire } from '../../lib/lazyRequire.js';
|
|
75
|
+
// ─── Strategy factory ────────────────────────────────────────────────
|
|
76
|
+
export function otelObservability(opts) {
|
|
77
|
+
if (!opts.serviceName) {
|
|
78
|
+
throw new TypeError(`[otelObservability] \`serviceName\` is required. ` +
|
|
79
|
+
`Pass an identifier visible in your OTel backend's service map, e.g. 'my-agent-prod'.`);
|
|
80
|
+
}
|
|
81
|
+
const sampleRate = opts.sampleRate ?? 1;
|
|
82
|
+
// Lazy-resolve tracer if not injected. Defer the API import until
|
|
83
|
+
// first event so consumers who don't actually fire events (no agent
|
|
84
|
+
// run yet) don't even hit the OTel API surface.
|
|
85
|
+
let tracer = opts.tracer;
|
|
86
|
+
let otelApi;
|
|
87
|
+
function ensureTracer() {
|
|
88
|
+
if (tracer)
|
|
89
|
+
return tracer;
|
|
90
|
+
if (!otelApi) {
|
|
91
|
+
try {
|
|
92
|
+
otelApi = lazyRequire('@opentelemetry/api');
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
throw new Error('otelObservability requires the `@opentelemetry/api` peer dependency.\n' +
|
|
96
|
+
' Install: npm install @opentelemetry/api\n' +
|
|
97
|
+
' Plus an OTel SDK + exporter for your backend (e.g.,\n' +
|
|
98
|
+
' `@opentelemetry/sdk-trace-node` + `@opentelemetry/exporter-trace-otlp-http`).\n' +
|
|
99
|
+
' Or pass `tracer` for test injection.');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (!otelApi.trace?.getTracer) {
|
|
103
|
+
throw new Error('otelObservability: `@opentelemetry/api` is installed but `trace.getTracer` not found. Update the package.');
|
|
104
|
+
}
|
|
105
|
+
tracer = otelApi.trace.getTracer('agentfootprint');
|
|
106
|
+
return tracer;
|
|
107
|
+
}
|
|
108
|
+
// Per-turn state — same pattern as xrayObservability. Events for
|
|
109
|
+
// multiple in-flight turns interleave correctly because we key by
|
|
110
|
+
// `runId` from the event payload.
|
|
111
|
+
const activeTurns = new Map();
|
|
112
|
+
let stopped = false;
|
|
113
|
+
let onErrorHook;
|
|
114
|
+
function pushSpan(turnState, name, attrs) {
|
|
115
|
+
// OTel parent-context wiring: we capture the parent in a context
|
|
116
|
+
// and start the new span under it. (For BYO SDK setups, the
|
|
117
|
+
// `trace.setSpan` + `context.with` pattern is canonical. For
|
|
118
|
+
// the test-injected tracer path, we just pass the parent as
|
|
119
|
+
// implicit context.)
|
|
120
|
+
const parent = turnState.stack[turnState.stack.length - 1]?.span;
|
|
121
|
+
let ctx;
|
|
122
|
+
if (parent && otelApi?.trace?.setSpan && otelApi?.context?.active) {
|
|
123
|
+
ctx = otelApi.trace.setSpan(otelApi.context.active(), parent);
|
|
124
|
+
}
|
|
125
|
+
const span = ensureTracer().startSpan(name, attrs ? { attributes: attrs } : undefined, ctx);
|
|
126
|
+
turnState.stack.push({ name, span });
|
|
127
|
+
return span;
|
|
128
|
+
}
|
|
129
|
+
function popSpan(turnState, expectedName) {
|
|
130
|
+
let idx = turnState.stack.length - 1;
|
|
131
|
+
if (expectedName) {
|
|
132
|
+
while (idx >= 0 && turnState.stack[idx].name !== expectedName)
|
|
133
|
+
idx--;
|
|
134
|
+
}
|
|
135
|
+
if (idx < 0)
|
|
136
|
+
return undefined;
|
|
137
|
+
return turnState.stack.splice(idx, 1)[0].span;
|
|
138
|
+
}
|
|
139
|
+
function endSpan(span, opts) {
|
|
140
|
+
if (opts?.error) {
|
|
141
|
+
const code = otelApi?.SpanStatusCode?.ERROR ?? 2;
|
|
142
|
+
try {
|
|
143
|
+
span.setStatus({ code });
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
/* mock tracers may not implement setStatus — ignore */
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
span.end();
|
|
150
|
+
}
|
|
151
|
+
// ─── Event-to-span dispatch ────────────────────────────────────────
|
|
152
|
+
function handleEvent(event) {
|
|
153
|
+
if (stopped)
|
|
154
|
+
return;
|
|
155
|
+
const runId = event.payload?.runId;
|
|
156
|
+
if (!runId)
|
|
157
|
+
return; // Events without a turn anchor — skip.
|
|
158
|
+
switch (event.type) {
|
|
159
|
+
case 'agentfootprint.agent.turn_start': {
|
|
160
|
+
const sampled = sampleRate >= 1 || Math.random() < sampleRate;
|
|
161
|
+
const turnState = { stack: [], sampled };
|
|
162
|
+
activeTurns.set(runId, turnState);
|
|
163
|
+
if (sampled)
|
|
164
|
+
pushSpan(turnState, opts.serviceName, { 'service.name': opts.serviceName });
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
case 'agentfootprint.agent.turn_end': {
|
|
168
|
+
const t = activeTurns.get(runId);
|
|
169
|
+
if (!t)
|
|
170
|
+
break;
|
|
171
|
+
// Defensive: end everything still on the stack.
|
|
172
|
+
while (t.stack.length > 0) {
|
|
173
|
+
const span = popSpan(t);
|
|
174
|
+
if (span)
|
|
175
|
+
endSpan(span);
|
|
176
|
+
}
|
|
177
|
+
activeTurns.delete(runId);
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
case 'agentfootprint.agent.iteration_start': {
|
|
181
|
+
const t = activeTurns.get(runId);
|
|
182
|
+
if (t?.sampled) {
|
|
183
|
+
const iteration = event.payload.iteration;
|
|
184
|
+
pushSpan(t, `iteration:${iteration ?? '?'}`, {
|
|
185
|
+
...(typeof iteration === 'number' && { 'iteration.number': iteration }),
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
case 'agentfootprint.agent.iteration_end': {
|
|
191
|
+
const t = activeTurns.get(runId);
|
|
192
|
+
if (t?.sampled) {
|
|
193
|
+
const span = popSpan(t);
|
|
194
|
+
if (span)
|
|
195
|
+
endSpan(span);
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
case 'agentfootprint.stream.llm_start': {
|
|
200
|
+
const t = activeTurns.get(runId);
|
|
201
|
+
if (!t?.sampled)
|
|
202
|
+
break;
|
|
203
|
+
const model = event.payload.model;
|
|
204
|
+
pushSpan(t, 'llm', model ? { 'gen_ai.request.model': model } : undefined);
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 'agentfootprint.stream.llm_end': {
|
|
208
|
+
const t = activeTurns.get(runId);
|
|
209
|
+
if (!t?.sampled)
|
|
210
|
+
break;
|
|
211
|
+
const span = popSpan(t, 'llm');
|
|
212
|
+
if (span)
|
|
213
|
+
endSpan(span);
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
case 'agentfootprint.stream.tool_start': {
|
|
217
|
+
const t = activeTurns.get(runId);
|
|
218
|
+
if (!t?.sampled)
|
|
219
|
+
break;
|
|
220
|
+
const toolName = event.payload.toolName ?? 'tool';
|
|
221
|
+
pushSpan(t, `tool:${toolName}`, { 'tool.name': toolName });
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
case 'agentfootprint.stream.tool_end': {
|
|
225
|
+
const t = activeTurns.get(runId);
|
|
226
|
+
if (!t?.sampled)
|
|
227
|
+
break;
|
|
228
|
+
const toolName = event.payload.toolName;
|
|
229
|
+
const errored = event.payload.error !== undefined;
|
|
230
|
+
const span = popSpan(t, toolName ? `tool:${toolName}` : undefined);
|
|
231
|
+
if (span)
|
|
232
|
+
endSpan(span, { error: errored });
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
// Other events — annotate the topmost active span.
|
|
236
|
+
default: {
|
|
237
|
+
const t = activeTurns.get(runId);
|
|
238
|
+
const top = t?.stack[t.stack.length - 1]?.span;
|
|
239
|
+
if (!t?.sampled || !top)
|
|
240
|
+
break;
|
|
241
|
+
// Cost ticks are particularly valuable as attributes.
|
|
242
|
+
if (event.type === 'agentfootprint.cost.tick') {
|
|
243
|
+
const p = event.payload;
|
|
244
|
+
if (typeof p.cumulativeCostUsd === 'number') {
|
|
245
|
+
try {
|
|
246
|
+
top.setAttribute('cost.cumulative_usd', p.cumulativeCostUsd);
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
/* ignore */
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return {
|
|
258
|
+
name: 'otel',
|
|
259
|
+
capabilities: { events: true, traces: true },
|
|
260
|
+
exportEvent: handleEvent,
|
|
261
|
+
flush() {
|
|
262
|
+
// OTel SDKs handle their own flushing (the consumer-configured
|
|
263
|
+
// SpanProcessor's `forceFlush()`). We don't cross that boundary
|
|
264
|
+
// here — calling `provider.forceFlush()` is the consumer's
|
|
265
|
+
// responsibility on shutdown. Documented in the README.
|
|
266
|
+
},
|
|
267
|
+
stop() {
|
|
268
|
+
stopped = true;
|
|
269
|
+
// Defensive: end any spans the agent loop didn't close.
|
|
270
|
+
for (const [, t] of activeTurns) {
|
|
271
|
+
while (t.stack.length > 0) {
|
|
272
|
+
const span = popSpan(t);
|
|
273
|
+
if (span)
|
|
274
|
+
endSpan(span);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
activeTurns.clear();
|
|
278
|
+
},
|
|
279
|
+
_onError(err, event) {
|
|
280
|
+
onErrorHook =
|
|
281
|
+
onErrorHook ??
|
|
282
|
+
((e) => {
|
|
283
|
+
// eslint-disable-next-line no-console
|
|
284
|
+
console.error(`[otelObservability] error:`, e.message);
|
|
285
|
+
});
|
|
286
|
+
onErrorHook(err, event);
|
|
287
|
+
},
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=otel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../../../../src/adapters/observability/otel.ts"],"names":[],"mappings":"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"}
|