@vercel/agent-runs 0.0.0-stage → 0.0.1

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 (129) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +77 -0
  3. package/README.md +251 -2
  4. package/dist/src/adapters/agent-transport.d.ts +9 -0
  5. package/dist/src/adapters/agent-transport.d.ts.map +1 -0
  6. package/dist/src/adapters/agent-transport.js +87 -0
  7. package/dist/src/adapters/agent-transport.js.map +1 -0
  8. package/dist/src/adapters/ai-sdk-payload.d.ts +16 -0
  9. package/dist/src/adapters/ai-sdk-payload.d.ts.map +1 -0
  10. package/dist/src/adapters/ai-sdk-payload.js +30 -0
  11. package/dist/src/adapters/ai-sdk-payload.js.map +1 -0
  12. package/dist/src/adapters/ai-sdk-telemetry.d.ts +15 -0
  13. package/dist/src/adapters/ai-sdk-telemetry.d.ts.map +1 -0
  14. package/dist/src/adapters/ai-sdk-telemetry.js +151 -0
  15. package/dist/src/adapters/ai-sdk-telemetry.js.map +1 -0
  16. package/dist/src/adapters/otel-error.d.ts +4 -0
  17. package/dist/src/adapters/otel-error.d.ts.map +1 -0
  18. package/dist/src/adapters/otel-error.js +32 -0
  19. package/dist/src/adapters/otel-error.js.map +1 -0
  20. package/dist/src/adapters/otel-ids.d.ts +20 -0
  21. package/dist/src/adapters/otel-ids.d.ts.map +1 -0
  22. package/dist/src/adapters/otel-ids.js +74 -0
  23. package/dist/src/adapters/otel-ids.js.map +1 -0
  24. package/dist/src/adapters/otel.d.ts +34 -0
  25. package/dist/src/adapters/otel.d.ts.map +1 -0
  26. package/dist/src/adapters/otel.js +147 -0
  27. package/dist/src/adapters/otel.js.map +1 -0
  28. package/dist/src/adapters/serialization.d.ts +37 -0
  29. package/dist/src/adapters/serialization.d.ts.map +1 -0
  30. package/dist/src/adapters/serialization.js +318 -0
  31. package/dist/src/adapters/serialization.js.map +1 -0
  32. package/dist/src/agent-run.d.ts +85 -0
  33. package/dist/src/agent-run.d.ts.map +1 -0
  34. package/dist/src/agent-run.js +213 -0
  35. package/dist/src/agent-run.js.map +1 -0
  36. package/dist/src/ai-sdk.d.ts +8 -0
  37. package/dist/src/ai-sdk.d.ts.map +1 -0
  38. package/dist/src/ai-sdk.js +8 -0
  39. package/dist/src/ai-sdk.js.map +1 -0
  40. package/dist/src/capture.d.ts +6 -0
  41. package/dist/src/capture.d.ts.map +1 -0
  42. package/dist/src/capture.js +9 -0
  43. package/dist/src/capture.js.map +1 -0
  44. package/dist/src/core/activation.d.ts +4 -0
  45. package/dist/src/core/activation.d.ts.map +1 -0
  46. package/dist/src/core/activation.js +31 -0
  47. package/dist/src/core/activation.js.map +1 -0
  48. package/dist/src/core/attributes.d.ts +15 -0
  49. package/dist/src/core/attributes.d.ts.map +1 -0
  50. package/dist/src/core/attributes.js +76 -0
  51. package/dist/src/core/attributes.js.map +1 -0
  52. package/dist/src/core/content-policy.d.ts +29 -0
  53. package/dist/src/core/content-policy.d.ts.map +1 -0
  54. package/dist/src/core/content-policy.js +94 -0
  55. package/dist/src/core/content-policy.js.map +1 -0
  56. package/dist/src/core/context.d.ts +4 -0
  57. package/dist/src/core/context.d.ts.map +1 -0
  58. package/dist/src/core/context.js +28 -0
  59. package/dist/src/core/context.js.map +1 -0
  60. package/dist/src/core/delegation.d.ts +14 -0
  61. package/dist/src/core/delegation.d.ts.map +1 -0
  62. package/dist/src/core/delegation.js +7 -0
  63. package/dist/src/core/delegation.js.map +1 -0
  64. package/dist/src/core/mcp.d.ts +25 -0
  65. package/dist/src/core/mcp.d.ts.map +1 -0
  66. package/dist/src/core/mcp.js +33 -0
  67. package/dist/src/core/mcp.js.map +1 -0
  68. package/dist/src/core/scopes.d.ts +60 -0
  69. package/dist/src/core/scopes.d.ts.map +1 -0
  70. package/dist/src/core/scopes.js +574 -0
  71. package/dist/src/core/scopes.js.map +1 -0
  72. package/dist/src/core/snapshot.d.ts +8 -0
  73. package/dist/src/core/snapshot.d.ts.map +1 -0
  74. package/dist/src/core/snapshot.js +207 -0
  75. package/dist/src/core/snapshot.js.map +1 -0
  76. package/dist/src/core/span-kinds.d.ts +13 -0
  77. package/dist/src/core/span-kinds.d.ts.map +1 -0
  78. package/dist/src/core/span-kinds.js +338 -0
  79. package/dist/src/core/span-kinds.js.map +1 -0
  80. package/dist/src/core/types.d.ts +298 -0
  81. package/dist/src/core/types.d.ts.map +1 -0
  82. package/dist/src/core/types.js +2 -0
  83. package/dist/src/core/types.js.map +1 -0
  84. package/dist/src/core/writer.d.ts +16 -0
  85. package/dist/src/core/writer.d.ts.map +1 -0
  86. package/dist/src/core/writer.js +77 -0
  87. package/dist/src/core/writer.js.map +1 -0
  88. package/dist/src/delegation.d.ts +3 -0
  89. package/dist/src/delegation.d.ts.map +1 -0
  90. package/dist/src/delegation.js +3 -0
  91. package/dist/src/delegation.js.map +1 -0
  92. package/dist/src/index.d.ts +7 -0
  93. package/dist/src/index.d.ts.map +1 -0
  94. package/dist/src/index.js +5 -0
  95. package/dist/src/index.js.map +1 -0
  96. package/dist/src/operations.d.ts +97 -0
  97. package/dist/src/operations.d.ts.map +1 -0
  98. package/dist/src/operations.js +185 -0
  99. package/dist/src/operations.js.map +1 -0
  100. package/dist/src/otel.d.ts +13 -0
  101. package/dist/src/otel.d.ts.map +1 -0
  102. package/dist/src/otel.js +13 -0
  103. package/dist/src/otel.js.map +1 -0
  104. package/package.json +75 -3
  105. package/src/adapters/agent-transport.ts +113 -0
  106. package/src/adapters/ai-sdk-payload.ts +44 -0
  107. package/src/adapters/ai-sdk-telemetry.ts +179 -0
  108. package/src/adapters/otel-error.ts +34 -0
  109. package/src/adapters/otel-ids.ts +82 -0
  110. package/src/adapters/otel.ts +232 -0
  111. package/src/adapters/serialization.ts +338 -0
  112. package/src/agent-run.ts +341 -0
  113. package/src/ai-sdk.ts +7 -0
  114. package/src/capture.ts +13 -0
  115. package/src/core/activation.ts +42 -0
  116. package/src/core/attributes.ts +85 -0
  117. package/src/core/content-policy.ts +116 -0
  118. package/src/core/context.ts +34 -0
  119. package/src/core/delegation.ts +20 -0
  120. package/src/core/mcp.ts +60 -0
  121. package/src/core/scopes.ts +761 -0
  122. package/src/core/snapshot.ts +245 -0
  123. package/src/core/span-kinds.ts +406 -0
  124. package/src/core/types.ts +304 -0
  125. package/src/core/writer.ts +135 -0
  126. package/src/delegation.ts +2 -0
  127. package/src/index.ts +44 -0
  128. package/src/operations.ts +342 -0
  129. package/src/otel.ts +18 -0
@@ -0,0 +1,574 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { boundedTraceError } from "../adapters/serialization.js";
3
+ import { createSpanWriter } from "./writer.js";
4
+ import { usageAttributes } from "./attributes.js";
5
+ import { completeScope, capturedScopeData as capturedData, prepareScope, parentKinds, applyAttributes, } from "./span-kinds.js";
6
+ import { mcpLifecycle } from "./mcp.js";
7
+ import { intersectCapture } from "./activation.js";
8
+ import { snapshotRecord, traceSnapshot, validSnapshot, boundedSerializer } from "./snapshot.js";
9
+ import { withAgentHandoff } from "./delegation.js";
10
+ import { withoutDeclinedContent } from "./content-policy.js";
11
+ import { runTraceContext } from "./context.js";
12
+ const UNFINISHED_CHILDREN = 10000;
13
+ const NO_CAPTURE = { emit: false, recordInputs: false, recordOutputs: false };
14
+ /** Durable trees reserve stable IDs and defer spans whose lifetime can cross processes. */
15
+ const DEFERRED_WHEN_DURABLE = new Set([
16
+ "activation",
17
+ "tool",
18
+ "approval",
19
+ ]);
20
+ /** Durable work a successful attempt or turn leaves open, such as a tool awaiting approval. */
21
+ const OUTLIVES_ATTEMPT = new Set(["tool", "approval"]);
22
+ function segment(value) {
23
+ return encodeURIComponent(String(value));
24
+ }
25
+ /** Children with a stable identity hydrate on re-entry; the rest are numbered. */
26
+ function semanticKey(data) {
27
+ switch (data.type) {
28
+ case "step":
29
+ return `step:${segment(data.options.index)}:${segment(data.options.attempt ?? 0)}`;
30
+ case "tool":
31
+ return `tool:${segment(data.options.callId)}`;
32
+ case "approval":
33
+ return `approval:${segment(data.options.requestId)}`;
34
+ default:
35
+ return undefined;
36
+ }
37
+ }
38
+ function terminalOf(result) {
39
+ const failed = result.failed || result.outcome === "failed";
40
+ return {
41
+ ...result,
42
+ model: "result" in result ? result.result : result.model,
43
+ failed,
44
+ errorCode: "errorType" in result ? result.errorType : result.errorCode,
45
+ };
46
+ }
47
+ export function createScopes(input) {
48
+ const telemetry = input.telemetry;
49
+ const serializer = boundedSerializer(input.serializer, input.onError);
50
+ const engine = createSpanWriter({ telemetry, onError: input.onError });
51
+ const report = (error, context) => {
52
+ try {
53
+ input.onError?.(error, context);
54
+ }
55
+ catch { }
56
+ };
57
+ function snapshotContent(value) {
58
+ const json = serializer.json(value);
59
+ try {
60
+ return json === undefined ? undefined : JSON.parse(json);
61
+ }
62
+ catch {
63
+ return undefined;
64
+ }
65
+ }
66
+ function reserve(data, key, parent, prepared, capture) {
67
+ const ids = telemetry.ids;
68
+ if (!input.durable || ids === undefined)
69
+ return undefined;
70
+ // Re-executed model calls and memory reads are new work and get new IDs.
71
+ if (data.type === "model" || data.type === "memory")
72
+ return undefined;
73
+ if (data.type === "activation" && parent !== undefined)
74
+ return {
75
+ traceId: parent.traceId,
76
+ spanId: ids.spanId(key),
77
+ traceFlags: capture.emit ? parent.traceFlags & 1 : 0,
78
+ };
79
+ if (data.type === "activation") {
80
+ const traceId = ids.traceId(key);
81
+ return {
82
+ traceId,
83
+ spanId: ids.spanId(key),
84
+ traceFlags: capture.emit && (telemetry.samples?.(traceId, prepared) ?? true) ? 1 : 0,
85
+ };
86
+ }
87
+ return parent === undefined
88
+ ? undefined
89
+ : { ...parent, spanId: ids.spanId(key), isRemote: false };
90
+ }
91
+ async function construct(identity, capture, data, parent, attempt, binding, onChange) {
92
+ try {
93
+ return await constructOperation(identity, capture, data, parent, attempt, binding, onChange);
94
+ }
95
+ catch (error) {
96
+ report(error, { phase: "start", operation: data.type, reference: binding.reference });
97
+ return constructOperation(identity, NO_CAPTURE, capturedData(data, NO_CAPTURE), parent, attempt, {
98
+ ...binding,
99
+ sample: false,
100
+ reference: {
101
+ traceId: binding.reference?.traceId ??
102
+ parent?.reference.traceId ??
103
+ binding.parent?.traceId ??
104
+ randomBytes(16).toString("hex"),
105
+ spanId: binding.reference?.spanId ?? randomBytes(8).toString("hex"),
106
+ traceFlags: 0,
107
+ },
108
+ }, onChange);
109
+ }
110
+ }
111
+ async function constructOperation(identity, capture, data, parent, attempt, binding, onChange) {
112
+ if (binding.terminal?.error !== null &&
113
+ typeof binding.terminal?.error === "object" &&
114
+ !(binding.terminal.error instanceof Error) &&
115
+ "message" in binding.terminal.error &&
116
+ typeof binding.terminal.error.message === "string") {
117
+ const error = new Error(binding.terminal.error.message);
118
+ error.name = binding.terminal.errorCode ?? "Error";
119
+ binding = { ...binding, terminal: { ...binding.terminal, error } };
120
+ }
121
+ const key = binding.key;
122
+ let startTimeMs = binding.startTimeMs ?? Date.now();
123
+ // A restored record keeps its saved parent; a nested activation names its own.
124
+ const parentReference = binding.parent ?? parent?.reference;
125
+ if (capture.emit)
126
+ capture = intersectCapture(capture, telemetry.active()?.capture);
127
+ let actualCapture = capture;
128
+ let actualData = capturedData(data, actualCapture);
129
+ let prepared = prepareScope({
130
+ identity,
131
+ data: actualData,
132
+ attempt,
133
+ capture: actualCapture,
134
+ key,
135
+ parent: parentReference,
136
+ startTimeMs,
137
+ links: binding.links,
138
+ }, serializer);
139
+ prepared = { ...prepared, attributes: { ...prepared.attributes, ...binding.attributes } };
140
+ actualData = snapshotRecord({
141
+ key,
142
+ identity,
143
+ data: actualData,
144
+ capture: actualCapture,
145
+ reference: binding.reference ?? {
146
+ traceId: "0".repeat(32),
147
+ spanId: "0".repeat(16),
148
+ traceFlags: 0,
149
+ },
150
+ startTimeMs,
151
+ }, serializer).data;
152
+ const deferred = binding.deferred ?? (input.durable && DEFERRED_WHEN_DURABLE.has(actualData.type));
153
+ let host = binding.executionContext;
154
+ let reference = binding.reference ?? reserve(data, key, parentReference, prepared, actualCapture);
155
+ // A nested turn joins its parent's sampling decision; a root turn asks the sampler.
156
+ if (binding.sample === true && reference !== undefined)
157
+ reference = {
158
+ ...reference,
159
+ traceFlags: (reference.traceFlags & 1) !== 0 &&
160
+ actualCapture.emit &&
161
+ (parentReference !== undefined ||
162
+ (telemetry.samples?.(reference.traceId, prepared) ?? true))
163
+ ? 1
164
+ : 0,
165
+ };
166
+ let operation = deferred
167
+ ? undefined
168
+ : engine.start(prepared, actualCapture, host, reference);
169
+ const retainedReference = reference ?? operation?.reference;
170
+ if (retainedReference === undefined)
171
+ throw new Error("A deferred trace scope requires a reserved reference.");
172
+ const sampled = (retainedReference.traceFlags & 1) !== 0;
173
+ actualCapture = {
174
+ emit: actualCapture.emit && sampled,
175
+ recordInputs: actualCapture.emit && sampled && actualCapture.recordInputs,
176
+ recordOutputs: actualCapture.emit && sampled && actualCapture.recordOutputs,
177
+ };
178
+ actualData = capturedData(actualData, actualCapture);
179
+ let finished = binding.finished ?? false;
180
+ let terminalResult = binding.terminal;
181
+ const children = new Map();
182
+ const pending = new Set();
183
+ let childSequence = binding.childSequence ?? 0;
184
+ let totalUsage = binding.usage;
185
+ const usageKeys = new Set(binding.usageKeys ?? []);
186
+ const enrichment = {};
187
+ const callId = actualData.type === "tool" ? actualData.options.callId : undefined;
188
+ function changed() {
189
+ void onChange();
190
+ }
191
+ /** Content arriving now is held to any narrower run ceiling in force. */
192
+ function current() {
193
+ return intersectCapture(actualCapture, telemetry.active()?.capture);
194
+ }
195
+ async function child(childData, childKey, options = {}) {
196
+ const existing = children.get(childKey);
197
+ if (input.durable && existing !== undefined && !existing.settled) {
198
+ existing.refine(childData, options.startTimeMs);
199
+ return existing;
200
+ }
201
+ if (finished)
202
+ throw new Error("The operation is not permitted in this trace scope.");
203
+ for (const [previousKey, previous] of children)
204
+ if (previous.settled)
205
+ children.delete(previousKey);
206
+ let childCapture = actualCapture;
207
+ if (children.size >= UNFINISHED_CHILDREN) {
208
+ report(new Error("Trace unfinished-child limit reached."), {
209
+ phase: "start",
210
+ operation: childData.type,
211
+ reference: retainedReference,
212
+ });
213
+ childCapture = NO_CAPTURE;
214
+ }
215
+ if (childData.type === "model" && operation !== undefined)
216
+ applyAttributes(operation, { "agent.model.id": childData.options.modelId });
217
+ const next = await construct(identity, childCapture, childData, runtime, childData.type === "step"
218
+ ? { index: childData.options.index, attempt: childData.options.attempt ?? 0 }
219
+ : attempt, {
220
+ key: childKey,
221
+ executionContext: host,
222
+ links: options.links,
223
+ startTimeMs: options.startTimeMs,
224
+ }, onChange);
225
+ if (childCapture.emit || children.size < UNFINISHED_CHILDREN)
226
+ children.set(childKey, next);
227
+ await onChange();
228
+ return next;
229
+ }
230
+ async function closeChildren(result, all) {
231
+ const container = actualData.type === "step" || actualData.type === "activation";
232
+ for (const next of children.values())
233
+ if (all || !container || !OUTLIVES_ATTEMPT.has(next.type))
234
+ await next.release({ failed: result.failed, error: result.error, outcome: "abandoned" });
235
+ }
236
+ async function finish(result) {
237
+ if (pending.size > 0)
238
+ await Promise.allSettled(pending);
239
+ if (finished)
240
+ return;
241
+ const capture = current();
242
+ if (!capture.recordOutputs)
243
+ result = { ...result, error: undefined };
244
+ // A call whose work already failed cannot finish as completed.
245
+ if (terminalResult?.failed)
246
+ result = {
247
+ ...result,
248
+ outcome: result.outcome === "completed" ? "failed" : result.outcome,
249
+ failed: true,
250
+ error: terminalResult.error,
251
+ errorCode: result.errorCode ?? terminalResult.errorCode,
252
+ };
253
+ finished = true;
254
+ terminalResult = result;
255
+ await closeChildren(result, result.failed === true || !input.durable);
256
+ operation ??= engine.start(prepared, actualCapture, host, retainedReference);
257
+ const terminal = actualData.type === "activation" && result.usage === undefined
258
+ ? { ...result, usage: totalUsage }
259
+ : result;
260
+ try {
261
+ completeScope(operation, actualData, terminal, { ...capture, emit: actualCapture.emit }, startTimeMs, serializer);
262
+ }
263
+ catch (error) {
264
+ report(error, {
265
+ phase: "complete",
266
+ operation: actualData.type,
267
+ reference: retainedReference,
268
+ });
269
+ }
270
+ applyAttributes(operation, enrichment);
271
+ if (actualData.type === "model" && result.model !== undefined) {
272
+ await parent?.usage(result.model.usage, key);
273
+ const content = result.model.content;
274
+ if (capture.recordOutputs && actualCapture.recordOutputs && content !== undefined) {
275
+ const output = serializer.outputMessages(content, result.model.finishReason);
276
+ if (output !== undefined)
277
+ parent?.turnContent({ output });
278
+ }
279
+ }
280
+ operation.end(result.endTimeMs);
281
+ await onChange();
282
+ }
283
+ const runtime = {
284
+ waitUntil(completion) {
285
+ pending.add(completion);
286
+ parent?.waitUntil(completion);
287
+ void completion.then(() => pending.delete(completion), () => pending.delete(completion));
288
+ },
289
+ snapshot: () => traceSnapshot(runtime.record()),
290
+ attributes: (attributes) => runtime.update({ attributes }),
291
+ modelCall: (options, key) => runtime.child({ type: "model", options }, key),
292
+ fail(error) {
293
+ runtime.error(error);
294
+ return runtime.complete({ outcome: "failed", failed: true });
295
+ },
296
+ update(update) {
297
+ if (finished)
298
+ return;
299
+ const attributes = (withoutDeclinedContent(update.attributes ?? {}, current()) ??
300
+ update.attributes);
301
+ if (actualData.type === "activation")
302
+ actualData = {
303
+ ...actualData,
304
+ options: {
305
+ ...actualData.options,
306
+ attributes: { ...actualData.options.attributes, ...attributes },
307
+ },
308
+ };
309
+ prepared = {
310
+ ...prepared,
311
+ attributes: { ...prepared.attributes, ...attributes },
312
+ links: update.links ?? prepared.links,
313
+ };
314
+ if (operation !== undefined)
315
+ applyAttributes(operation, attributes);
316
+ changed();
317
+ },
318
+ useContext(context) {
319
+ host = context;
320
+ for (const next of children.values())
321
+ next.useContext(context);
322
+ },
323
+ refine(next, earlierStart) {
324
+ if (finished || operation !== undefined)
325
+ return;
326
+ if (earlierStart !== undefined && earlierStart < startTimeMs)
327
+ startTimeMs = earlierStart;
328
+ if (next.type === "tool" && actualData.type === "tool") {
329
+ const known = actualData.options;
330
+ actualData = capturedData({
331
+ type: "tool",
332
+ options: {
333
+ ...known,
334
+ kind: known.kind ?? next.options.kind,
335
+ // Earlier arguments were recorded with consent; new ones need it now.
336
+ arguments: known.arguments ??
337
+ (current().recordInputs ? snapshotContent(next.options.arguments) : undefined),
338
+ },
339
+ }, actualCapture);
340
+ }
341
+ const again = prepareScope({
342
+ identity,
343
+ data: actualData,
344
+ attempt,
345
+ capture: actualCapture,
346
+ key,
347
+ parent: parentReference,
348
+ startTimeMs,
349
+ links: prepared.links,
350
+ }, serializer);
351
+ const defined = Object.fromEntries(Object.entries(again.attributes).filter(([, value]) => value !== undefined));
352
+ prepared = {
353
+ ...prepared,
354
+ name: again.name,
355
+ kind: again.kind,
356
+ startTimeMs,
357
+ attributes: { ...prepared.attributes, ...defined },
358
+ };
359
+ changed();
360
+ },
361
+ narrow(next) {
362
+ const narrowed = intersectCapture(actualCapture, next);
363
+ actualCapture = { ...narrowed, emit: actualCapture.emit };
364
+ actualData = capturedData(actualData, actualCapture);
365
+ const kept = (withoutDeclinedContent(prepared.attributes, actualCapture) ??
366
+ prepared.attributes);
367
+ prepared = {
368
+ ...prepared,
369
+ attributes: actualData.type === "activation"
370
+ ? {
371
+ ...kept,
372
+ "agent.trace.content.input": actualCapture.recordInputs,
373
+ "agent.trace.content.output": actualCapture.recordOutputs,
374
+ }
375
+ : kept,
376
+ };
377
+ const permitted = withoutDeclinedContent(enrichment, actualCapture) ?? enrichment;
378
+ for (const key of Object.keys(enrichment))
379
+ if (!(key in permitted))
380
+ delete enrichment[key];
381
+ if (!actualCapture.recordOutputs && terminalResult?.error !== undefined)
382
+ terminalResult = { ...terminalResult, error: undefined };
383
+ operation?.narrow(actualCapture);
384
+ for (const child of children.values())
385
+ child.narrow(actualCapture);
386
+ changed();
387
+ },
388
+ async release(result) {
389
+ if (finished)
390
+ await closeChildren(result, result.failed === true || !input.durable);
391
+ else
392
+ await finish(terminalOf(result));
393
+ },
394
+ record() {
395
+ return snapshotRecord({
396
+ version: 1,
397
+ finished,
398
+ terminal: terminalResult,
399
+ usage: totalUsage,
400
+ usageKeys: [...usageKeys],
401
+ attributes: { ...prepared.attributes, ...enrichment },
402
+ childSequence,
403
+ children: [...children.values()]
404
+ .filter((child) => !child.settled)
405
+ .map((child) => child.record()),
406
+ key,
407
+ identity,
408
+ data: actualData,
409
+ capture: actualCapture,
410
+ reference: retainedReference,
411
+ parent: parentReference,
412
+ startTimeMs,
413
+ attempt,
414
+ links: prepared.links,
415
+ }, serializer);
416
+ },
417
+ get parent() {
418
+ return parentReference;
419
+ },
420
+ get startTimeMs() {
421
+ return startTimeMs;
422
+ },
423
+ child(data, childKey, options) {
424
+ if (!parentKinds(data).includes(actualData.type))
425
+ throw new Error("The operation is not permitted in this trace scope.");
426
+ const name = childKey === undefined
427
+ ? ((input.durable ? semanticKey(data) : undefined) ?? `${data.type}:${childSequence++}`)
428
+ : `${data.type}:${segment(childKey)}`;
429
+ return child(data, `${key}/${name}`, options);
430
+ },
431
+ find(data) {
432
+ const name = semanticKey(data);
433
+ const found = name === undefined ? undefined : children.get(`${key}/${name}`);
434
+ return found === undefined || found.settled ? undefined : found;
435
+ },
436
+ get children() {
437
+ return [...children.values()].filter((next) => !next.settled);
438
+ },
439
+ type: actualData.type,
440
+ reference: retainedReference,
441
+ callId,
442
+ get capture() {
443
+ return actualCapture;
444
+ },
445
+ mcp: mcpLifecycle({
446
+ serializer,
447
+ ...actualCapture,
448
+ write(attributes) {
449
+ const permitted = (withoutDeclinedContent(attributes, current()) ??
450
+ attributes);
451
+ Object.assign(enrichment, permitted);
452
+ if (operation !== undefined)
453
+ applyAttributes(operation, permitted);
454
+ },
455
+ error(error, type) {
456
+ runtime.error(error, type);
457
+ },
458
+ }),
459
+ get finished() {
460
+ return finished;
461
+ },
462
+ get settled() {
463
+ return finished && [...children.values()].every((next) => next.settled);
464
+ },
465
+ run(execute, ceiling) {
466
+ if (finished)
467
+ throw new Error("The trace scope has already finished.");
468
+ // The ceiling governs work inside this run, not what the operation already recorded.
469
+ const scoped = intersectCapture(intersectCapture(actualCapture, ceiling), telemetry.active()?.capture);
470
+ const delegation = actualData.type === "tool" &&
471
+ (actualData.options.kind === "subagent-call" ||
472
+ actualData.options.kind === "remote-agent-call")
473
+ ? actualData.options
474
+ : undefined;
475
+ const callback = delegation === undefined
476
+ ? execute
477
+ : () => withAgentHandoff({
478
+ caller: retainedReference,
479
+ conversationId: identity.conversationId,
480
+ parentRunId: identity.runId,
481
+ parentCallId: delegation.callId,
482
+ agentName: delegation.name,
483
+ capture: scoped,
484
+ }, execute);
485
+ return runTraceContext(telemetry, { type: runtime.type, reference: retainedReference, capture: scoped, mcp: runtime.mcp }, callback, host);
486
+ },
487
+ async complete(result = terminalResult ?? {}) {
488
+ if (finished)
489
+ return;
490
+ await finish(terminalOf(result));
491
+ },
492
+ async usage(usage, callKey) {
493
+ if (callKey !== undefined && usageKeys.has(callKey))
494
+ return;
495
+ if (callKey !== undefined)
496
+ usageKeys.add(callKey);
497
+ if (operation !== undefined)
498
+ applyAttributes(operation, usageAttributes(usage));
499
+ totalUsage = {
500
+ inputTokens: usage.inputTokens === undefined
501
+ ? totalUsage?.inputTokens
502
+ : (totalUsage?.inputTokens ?? 0) + usage.inputTokens,
503
+ outputTokens: usage.outputTokens === undefined
504
+ ? totalUsage?.outputTokens
505
+ : (totalUsage?.outputTokens ?? 0) + usage.outputTokens,
506
+ costUsd: usage.costUsd === undefined
507
+ ? totalUsage?.costUsd
508
+ : (totalUsage?.costUsd ?? 0) + usage.costUsd,
509
+ };
510
+ await parent?.usage(usage, callKey);
511
+ },
512
+ turnContent(content) {
513
+ if (actualData.type !== "activation")
514
+ return parent?.turnContent(content);
515
+ if (finished)
516
+ return;
517
+ const attributes = {};
518
+ if (content.input !== undefined &&
519
+ prepared.attributes["gen_ai.input.messages"] === undefined)
520
+ attributes["gen_ai.input.messages"] = content.input;
521
+ if (content.output !== undefined)
522
+ attributes["gen_ai.output.messages"] = content.output;
523
+ if (Object.keys(attributes).length > 0)
524
+ runtime.update({ attributes });
525
+ },
526
+ error(error, errorType) {
527
+ terminalResult = {
528
+ ...terminalResult,
529
+ failed: true,
530
+ error: current().recordOutputs
531
+ ? error instanceof Error
532
+ ? boundedTraceError(error)
533
+ : snapshotContent(error)
534
+ : undefined,
535
+ errorCode: errorType ?? (error instanceof Error ? error.name : undefined),
536
+ };
537
+ if (operation !== undefined)
538
+ operation.fail(terminalResult.error, terminalResult.errorCode);
539
+ changed();
540
+ },
541
+ };
542
+ for (const saved of binding.children ?? [])
543
+ children.set(saved.key, await construct(saved.identity, intersectCapture(saved.capture, actualCapture), saved.data, runtime, saved.attempt, { ...saved, deferred: true, executionContext: host }, onChange));
544
+ if (!finished && operation !== undefined && actualData.type === "step")
545
+ operation.addEvent("step.started", undefined, startTimeMs);
546
+ const inputMessages = prepared.attributes["gen_ai.input.messages"];
547
+ if (!finished && actualData.type === "model" && typeof inputMessages === "string")
548
+ parent?.turnContent({ input: inputMessages });
549
+ return runtime;
550
+ }
551
+ return {
552
+ /** Starts a turn tree. Durable turns reserve their IDs from `key`. */
553
+ start(facts) {
554
+ return construct(facts.identity, facts.capture, facts.data, undefined, undefined, {
555
+ key: facts.key,
556
+ parent: facts.parent,
557
+ reference: facts.reference,
558
+ sample: facts.reference !== undefined && facts.data.type === "activation",
559
+ startTimeMs: facts.startTimeMs,
560
+ links: facts.links,
561
+ executionContext: facts.context,
562
+ }, facts.onChange ?? (() => Promise.resolve()));
563
+ },
564
+ /** Rebuilds a tree from a checkpoint, or returns `undefined` for an unusable one. */
565
+ async restore(snapshot, options = {}) {
566
+ if (!validSnapshot(snapshot)) {
567
+ report(new Error("Invalid tracing checkpoint."), { phase: "restore" });
568
+ return undefined;
569
+ }
570
+ return construct(snapshot.identity, intersectCapture(snapshot.capture, options.capture), snapshot.data, undefined, snapshot.attempt, { ...snapshot, deferred: true, executionContext: options.context }, options.onChange ?? (() => Promise.resolve()));
571
+ },
572
+ };
573
+ }
574
+ //# sourceMappingURL=scopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../src/core/scopes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ScopeRecord } from "./types.js";
2
+ import type { ContentSerializer } from "./types.js";
3
+ import type { TraceSnapshot } from "./types.js";
4
+ export declare function boundedSerializer(serializer: ContentSerializer, onError?: import("./types.js").TraceErrorHandler): ContentSerializer;
5
+ export declare function traceSnapshot(value: unknown): TraceSnapshot;
6
+ export declare function validSnapshot(value: unknown, maxBytes?: number, depth?: number): value is ScopeRecord;
7
+ export declare function snapshotRecord(record: ScopeRecord, serializer: ContentSerializer): ScopeRecord;
8
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/core/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,iBAAiB,EAC7B,OAAO,CAAC,EAAE,OAAO,YAAY,EAAE,iBAAiB,GAC/C,iBAAiB,CAkCnB;AAOD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAE3D;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,QAAQ,GAAE,MAAuB,EACjC,KAAK,SAAI,GACR,KAAK,IAAI,WAAW,CAoFtB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,GAAG,WAAW,CAiG9F"}