@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,8 @@
1
+ /**
2
+ * AI SDK integration. `aiSdkTelemetry` records `generateText`, `streamText`,
3
+ * and AI SDK agents as turns; `modelUsage` and `modelContent` convert AI SDK
4
+ * payloads for hosts that record model calls themselves.
5
+ */
6
+ export { aiSdkTelemetry, type AiSdkTelemetryOptions } from "./adapters/ai-sdk-telemetry.js";
7
+ export { modelUsage, modelContent } from "./adapters/ai-sdk-payload.js";
8
+ //# sourceMappingURL=ai-sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk.d.ts","sourceRoot":"","sources":["../../src/ai-sdk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * AI SDK integration. `aiSdkTelemetry` records `generateText`, `streamText`,
3
+ * and AI SDK agents as turns; `modelUsage` and `modelContent` convert AI SDK
4
+ * payloads for hosts that record model calls themselves.
5
+ */
6
+ export { aiSdkTelemetry } from "./adapters/ai-sdk-telemetry.js";
7
+ export { modelUsage, modelContent } from "./adapters/ai-sdk-payload.js";
8
+ //# sourceMappingURL=ai-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-sdk.js","sourceRoot":"","sources":["../../src/ai-sdk.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAA8B,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CaptureDecision } from "./core/types.js";
2
+ export declare function currentCapture(): CaptureDecision | undefined;
3
+ export declare function withCapture<T extends {
4
+ setValue(key: symbol, value: unknown): T;
5
+ }>(host: T, capture: CaptureDecision): T;
6
+ //# sourceMappingURL=capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,wBAAgB,cAAc,IAAI,eAAe,GAAG,SAAS,CAE5D;AACD,wBAAgB,WAAW,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAA;CAAE,EAChF,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,eAAe,GACvB,CAAC,CAEH"}
@@ -0,0 +1,9 @@
1
+ import { context, createContextKey } from "@opentelemetry/api";
2
+ const CAPTURE = createContextKey("agent.tracing.capture");
3
+ export function currentCapture() {
4
+ return context.active().getValue(CAPTURE);
5
+ }
6
+ export function withCapture(host, capture) {
7
+ return host.setValue(CAPTURE, capture);
8
+ }
9
+ //# sourceMappingURL=capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AAC1D,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAgC,CAAC;AAC3E,CAAC;AACD,MAAM,UAAU,WAAW,CACzB,IAAO,EACP,OAAwB;IAExB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ActiveOperation, CaptureDecision } from "./types.js";
2
+ export declare function intersectCapture(capture: CaptureDecision, ceiling?: CaptureDecision): CaptureDecision;
3
+ export declare function activeOperation(operation: ActiveOperation, capture: CaptureDecision): ActiveOperation;
4
+ //# sourceMappingURL=activation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../../src/core/activation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,eAAe,CAOjB;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,eAAe,GACvB,eAAe,CAwBjB"}
@@ -0,0 +1,31 @@
1
+ export function intersectCapture(capture, ceiling) {
2
+ const emit = capture.emit && (ceiling?.emit ?? true);
3
+ return {
4
+ emit,
5
+ recordInputs: emit && capture.recordInputs && (ceiling?.recordInputs ?? true),
6
+ recordOutputs: emit && capture.recordOutputs && (ceiling?.recordOutputs ?? true),
7
+ };
8
+ }
9
+ export function activeOperation(operation, capture) {
10
+ const mcp = operation.mcp;
11
+ return {
12
+ type: operation.type,
13
+ reference: operation.reference,
14
+ capture,
15
+ mcp: mcp === undefined
16
+ ? undefined
17
+ : {
18
+ update: (input) => mcp.update(input),
19
+ error: (error, type) => mcp.error(capture.recordOutputs ? error : undefined, type ?? (error instanceof Error ? error.name : undefined)),
20
+ arguments: (value) => {
21
+ if (capture.recordInputs)
22
+ mcp.arguments(value);
23
+ },
24
+ result: (value) => {
25
+ if (capture.recordOutputs)
26
+ mcp.result(value);
27
+ },
28
+ },
29
+ };
30
+ }
31
+ //# sourceMappingURL=activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation.js","sourceRoot":"","sources":["../../../src/core/activation.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC9B,OAAwB,EACxB,OAAyB;IAEzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACrD,OAAO;QACL,IAAI;QACJ,YAAY,EAAE,IAAI,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;QAC7E,aAAa,EAAE,IAAI,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,aAAa,IAAI,IAAI,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,SAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;IAC1B,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,OAAO;QACP,GAAG,EACD,GAAG,KAAK,SAAS;YACf,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CACrB,GAAG,CAAC,KAAK,CACP,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACzC,IAAI,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAC1D;gBACH,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;oBACnB,IAAI,OAAO,CAAC,YAAY;wBAAE,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChB,IAAI,OAAO,CAAC,aAAa;wBAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/C,CAAC;aACF;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Attributes, FrameworkIdentity, RunIdentity, Usage } from "./types.js";
2
+ export declare const USAGE_FIELDS: {
3
+ readonly costUsd: "agent.usage.cost_usd";
4
+ readonly inputTokens: "agent.usage.input_tokens";
5
+ readonly outputTokens: "agent.usage.output_tokens";
6
+ readonly cacheReadTokens: "agent.usage.cache_read_tokens";
7
+ readonly cacheWriteTokens: "agent.usage.cache_write_tokens";
8
+ };
9
+ export declare function identityAttributes(identity: Pick<RunIdentity, "runId" | "conversationId">): Attributes;
10
+ export declare function namingAttributes(name: string, operation?: string): Attributes;
11
+ export declare function frameworkAttributes(framework?: FrameworkIdentity): Attributes;
12
+ /** Invocation and model spans use GenAI token counts; structural spans use eve's. */
13
+ export declare function usageAttributes(usage: Usage, genAi?: boolean): Attributes;
14
+ export declare function runtimeContextAttributes(input: Readonly<Record<string, unknown>> | undefined): Attributes;
15
+ //# sourceMappingURL=attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/core/attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,UAAU,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEpG,eAAO,MAAM,YAAY;aACvB,OAAO,EAAE,sBAAsB;aAC/B,WAAW,EAAE,0BAA0B;aACvC,YAAY,EAAE,2BAA2B;aACzC,eAAe,EAAE,+BAA+B;aAChD,gBAAgB,EAAE,gCAAgC;CAC1C,CAAC;AAEX,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,gBAAgB,CAAC,GACtD,UAAU,CAMZ;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,UAAU,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAK7E;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,UAAQ,GAAG,UAAU,CAgBvE;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,GACnD,UAAU,CAgCZ"}
@@ -0,0 +1,76 @@
1
+ const TRACE_SCHEMA_VERSION = 4;
2
+ export const USAGE_FIELDS = {
3
+ costUsd: "agent.usage.cost_usd",
4
+ inputTokens: "agent.usage.input_tokens",
5
+ outputTokens: "agent.usage.output_tokens",
6
+ cacheReadTokens: "agent.usage.cache_read_tokens",
7
+ cacheWriteTokens: "agent.usage.cache_write_tokens",
8
+ };
9
+ export function identityAttributes(identity) {
10
+ return {
11
+ "agent.run.id": identity.runId,
12
+ "agent.trace.schema.version": TRACE_SCHEMA_VERSION,
13
+ "gen_ai.conversation.id": identity.conversationId,
14
+ };
15
+ }
16
+ export function namingAttributes(name, operation = name) {
17
+ return { "operation.name": operation, "resource.name": name };
18
+ }
19
+ export function frameworkAttributes(framework) {
20
+ return {
21
+ "agent.framework.name": framework?.name || undefined,
22
+ "agent.framework.version": framework?.version || undefined,
23
+ };
24
+ }
25
+ /** Invocation and model spans use GenAI token counts; structural spans use eve's. */
26
+ export function usageAttributes(usage, genAi = false) {
27
+ if (genAi)
28
+ return {
29
+ [USAGE_FIELDS.costUsd]: usage.costUsd,
30
+ "gen_ai.usage.input_tokens": usage.inputTokens,
31
+ "gen_ai.usage.output_tokens": usage.outputTokens,
32
+ "gen_ai.usage.cache_read.input_tokens": usage.inputTokenDetails?.cacheReadTokens,
33
+ "gen_ai.usage.cache_write.input_tokens": usage.inputTokenDetails?.cacheWriteTokens,
34
+ };
35
+ return {
36
+ [USAGE_FIELDS.costUsd]: usage.costUsd,
37
+ [USAGE_FIELDS.inputTokens]: usage.inputTokens,
38
+ [USAGE_FIELDS.outputTokens]: usage.outputTokens,
39
+ [USAGE_FIELDS.cacheReadTokens]: usage.inputTokenDetails?.cacheReadTokens,
40
+ [USAGE_FIELDS.cacheWriteTokens]: usage.inputTokenDetails?.cacheWriteTokens,
41
+ };
42
+ }
43
+ export function runtimeContextAttributes(input) {
44
+ const attributes = {};
45
+ const seen = new WeakSet();
46
+ let remaining = 256;
47
+ function visit(key, value, depth) {
48
+ if (remaining <= 0 || depth > 8 || value == null)
49
+ return;
50
+ if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
51
+ attributes[key] = value;
52
+ remaining -= 1;
53
+ }
54
+ else if (Array.isArray(value)) {
55
+ if (value.length <= 256 &&
56
+ value.every((item) => typeof item === "string" || typeof item === "number" || typeof item === "boolean") &&
57
+ new Set(value.map((item) => typeof item)).size === 1) {
58
+ attributes[key] = value;
59
+ remaining -= 1;
60
+ }
61
+ }
62
+ else if (typeof value === "object" && !seen.has(value)) {
63
+ seen.add(value);
64
+ for (const keyPart of Object.keys(value)) {
65
+ if (remaining <= 0)
66
+ break;
67
+ visit(`${key}.${keyPart}`, Reflect.get(value, keyPart), depth + 1);
68
+ }
69
+ seen.delete(value);
70
+ }
71
+ }
72
+ if (input !== undefined)
73
+ visit("ai.settings.context", input, 0);
74
+ return attributes;
75
+ }
76
+ //# sourceMappingURL=attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/core/attributes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Which span attributes carry conversation content, and in which direction.
3
+ *
4
+ * Two vocabularies land on the same spans: the ones the library sets on its own
5
+ * `agent.*` spans, and the ones the AI SDK's OpenTelemetry integration sets on
6
+ * the model-call spans beneath them. A destination that declined content has to
7
+ * be rid of both, so both are listed here rather than in the module that writes
8
+ * each.
9
+ *
10
+ * Listed by name rather than by prefix because the prefixes are shared with
11
+ * metadata that must survive: `ai.response.finish_reason` and
12
+ * `gen_ai.tool.name` say what happened, not what was said. The cost is that a
13
+ * new content attribute in a dependency is not covered until it is added here.
14
+ */
15
+ /** What one destination is willing to receive. */
16
+ export interface ResolvedContentOptions {
17
+ readonly recordInputs: boolean;
18
+ readonly recordOutputs: boolean;
19
+ }
20
+ /**
21
+ * The attributes with the declined content removed, or `undefined` when there
22
+ * was none to remove.
23
+ *
24
+ * The `undefined` return is what lets the caller forward the original span
25
+ * untouched in the common case, so a destination that declined a direction the
26
+ * span never carried costs one pass over its keys and no allocation.
27
+ */
28
+ export declare function withoutDeclinedContent(attributes: Readonly<Record<string, unknown>>, content: ResolvedContentOptions): Record<string, unknown> | undefined;
29
+ //# sourceMappingURL=content-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-policy.d.ts","sourceRoot":"","sources":["../../../src/core/content-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+CH,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AA2BD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC7C,OAAO,EAAE,sBAAsB,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAarC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Which span attributes carry conversation content, and in which direction.
3
+ *
4
+ * Two vocabularies land on the same spans: the ones the library sets on its own
5
+ * `agent.*` spans, and the ones the AI SDK's OpenTelemetry integration sets on
6
+ * the model-call spans beneath them. A destination that declined content has to
7
+ * be rid of both, so both are listed here rather than in the module that writes
8
+ * each.
9
+ *
10
+ * Listed by name rather than by prefix because the prefixes are shared with
11
+ * metadata that must survive: `ai.response.finish_reason` and
12
+ * `gen_ai.tool.name` say what happened, not what was said. The cost is that a
13
+ * new content attribute in a dependency is not covered until it is added here.
14
+ */
15
+ /** Prompts, instructions, tool arguments — what went in. */
16
+ const INPUT_CONTENT_ATTRIBUTES = new Set([
17
+ "agent.channel.delivery.input",
18
+ "agent.session.title",
19
+ "agent.approval.request",
20
+ "ai.documents",
21
+ "ai.prompt",
22
+ "ai.prompt.toolChoice",
23
+ "ai.prompt.tools",
24
+ "ai.value",
25
+ "ai.values",
26
+ "gen_ai.input.messages",
27
+ "gen_ai.memory.records",
28
+ "gen_ai.system_instructions",
29
+ "gen_ai.tool.call.arguments",
30
+ "gen_ai.tool.definitions",
31
+ ]);
32
+ /**
33
+ * Responses, reasoning, tool results — what came out.
34
+ *
35
+ * `ai.toolCall.args` is here rather than above because the AI SDK gates it on
36
+ * `recordOutputs`; matching that is what keeps one destination's view coherent.
37
+ */
38
+ const OUTPUT_CONTENT_ATTRIBUTES = new Set([
39
+ "agent.approval.response",
40
+ "ai.embedding",
41
+ "ai.embeddings",
42
+ "ai.ranking",
43
+ "ai.response.files",
44
+ "ai.response.object",
45
+ "ai.response.reasoning",
46
+ "ai.response.text",
47
+ "ai.response.toolCalls",
48
+ "ai.response.tool_calls",
49
+ "ai.response.tool_results",
50
+ "ai.toolCall.args",
51
+ "ai.toolCall.result",
52
+ "gen_ai.output.messages",
53
+ "gen_ai.tool.call.result",
54
+ ]);
55
+ const INPUT_POLICY_ATTRIBUTE = "agent.trace.content.input";
56
+ const OUTPUT_POLICY_ATTRIBUTE = "agent.trace.content.output";
57
+ function isDeclined(key, content) {
58
+ if (!content.recordInputs && INPUT_CONTENT_ATTRIBUTES.has(key))
59
+ return true;
60
+ return !content.recordOutputs && OUTPUT_CONTENT_ATTRIBUTES.has(key);
61
+ }
62
+ function narrowsContentPolicy(attributes, content) {
63
+ return ((!content.recordInputs && attributes[INPUT_POLICY_ATTRIBUTE] === true) ||
64
+ (!content.recordOutputs && attributes[OUTPUT_POLICY_ATTRIBUTE] === true));
65
+ }
66
+ function exportedAttributeValue(key, value, content) {
67
+ if (key === INPUT_POLICY_ATTRIBUTE && value === true && !content.recordInputs)
68
+ return false;
69
+ if (key === OUTPUT_POLICY_ATTRIBUTE && value === true && !content.recordOutputs)
70
+ return false;
71
+ return value;
72
+ }
73
+ /**
74
+ * The attributes with the declined content removed, or `undefined` when there
75
+ * was none to remove.
76
+ *
77
+ * The `undefined` return is what lets the caller forward the original span
78
+ * untouched in the common case, so a destination that declined a direction the
79
+ * span never carried costs one pass over its keys and no allocation.
80
+ */
81
+ export function withoutDeclinedContent(attributes, content) {
82
+ const keys = Object.keys(attributes);
83
+ if (!keys.some((key) => isDeclined(key, content)) && !narrowsContentPolicy(attributes, content)) {
84
+ return undefined;
85
+ }
86
+ const kept = {};
87
+ for (const key of keys) {
88
+ if (!isDeclined(key, content)) {
89
+ kept[key] = exportedAttributeValue(key, attributes[key], content);
90
+ }
91
+ }
92
+ return kept;
93
+ }
94
+ //# sourceMappingURL=content-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-policy.js","sourceRoot":"","sources":["../../../src/core/content-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,4DAA4D;AAC5D,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC5D,8BAA8B;IAC9B,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,WAAW;IACX,sBAAsB;IACtB,iBAAiB;IACjB,UAAU;IACV,WAAW;IACX,uBAAuB;IACvB,uBAAuB;IACvB,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;CAC1B,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IAC7D,yBAAyB;IACzB,cAAc;IACd,eAAe;IACf,YAAY;IACZ,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;IACxB,0BAA0B;IAC1B,kBAAkB;IAClB,oBAAoB;IACpB,wBAAwB;IACxB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAC3D,MAAM,uBAAuB,GAAG,4BAA4B,CAAC;AAQ7D,SAAS,UAAU,CAAC,GAAW,EAAE,OAA+B;IAC9D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5E,OAAO,CAAC,OAAO,CAAC,aAAa,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,oBAAoB,CAC3B,UAA6C,EAC7C,OAA+B;IAE/B,OAAO,CACL,CAAC,CAAC,OAAO,CAAC,YAAY,IAAI,UAAU,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC;QACtE,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,uBAAuB,CAAC,KAAK,IAAI,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAW,EACX,KAAc,EACd,OAA+B;IAE/B,IAAI,GAAG,KAAK,sBAAsB,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAC5F,IAAI,GAAG,KAAK,uBAAuB,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IAC9F,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAA6C,EAC7C,OAA+B;IAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ActiveOperation, AgentTelemetry, ExecutionContext } from "./types.js";
2
+ /** Runs `execute` exactly once, even when the telemetry cannot enter the context. */
3
+ export declare function runTraceContext<T>(telemetry: Pick<AgentTelemetry, "run" | "suppressed">, operation: ActiveOperation, execute: () => T, host?: ExecutionContext): T;
4
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpF,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,CAAC,EAC/B,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,YAAY,CAAC,EACrD,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,MAAM,CAAC,EAChB,IAAI,CAAC,EAAE,gBAAgB,GACtB,CAAC,CAyBH"}
@@ -0,0 +1,28 @@
1
+ /** Runs `execute` exactly once, even when the telemetry cannot enter the context. */
2
+ export function runTraceContext(telemetry, operation, execute, host) {
3
+ let entered = false;
4
+ try {
5
+ return telemetry.run(operation, () => {
6
+ entered = true;
7
+ return execute();
8
+ }, host);
9
+ }
10
+ catch (error) {
11
+ if (entered)
12
+ throw error;
13
+ if (telemetry.suppressed !== undefined) {
14
+ try {
15
+ return telemetry.suppressed(() => {
16
+ entered = true;
17
+ return execute();
18
+ });
19
+ }
20
+ catch (error) {
21
+ if (entered)
22
+ throw error;
23
+ }
24
+ }
25
+ return execute();
26
+ }
27
+ }
28
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/context.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAC7B,SAAqD,EACrD,SAA0B,EAC1B,OAAgB,EAChB,IAAuB;IAEvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,GAAG,CAClB,SAAS,EACT,GAAG,EAAE;YACH,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO;YAAE,MAAM,KAAK,CAAC;QACzB,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE;oBAC/B,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,OAAO,EAAE,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO;oBAAE,MAAM,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { CaptureDecision, TraceReference } from "./types.js";
2
+ export interface AgentHandoff {
3
+ readonly caller: TraceReference;
4
+ readonly conversationId: string;
5
+ readonly parentRunId: string;
6
+ readonly parentCallId: string;
7
+ readonly agentName: string;
8
+ readonly capture: CaptureDecision;
9
+ /** Set when the handoff crossed a process boundary; the callee then starts its own trace. */
10
+ readonly remote?: boolean;
11
+ }
12
+ export declare const currentAgentHandoff: () => AgentHandoff | undefined;
13
+ export declare function withAgentHandoff<T>(handoff: AgentHandoff, execute: () => T): T;
14
+ //# sourceMappingURL=delegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../../src/core/delegation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,eAAO,MAAM,mBAAmB,QACQ,YAAY,GAAG,SAAS,CAAC;AACjE,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAE9E"}
@@ -0,0 +1,7 @@
1
+ import { context, createContextKey } from "@opentelemetry/api";
2
+ const HANDOFF = createContextKey("agent.tracing.handoff");
3
+ export const currentAgentHandoff = () => context.active().getValue(HANDOFF);
4
+ export function withAgentHandoff(handoff, execute) {
5
+ return context.with(context.active().setValue(HANDOFF, handoff), execute);
6
+ }
7
+ //# sourceMappingURL=delegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../../src/core/delegation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAc/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CACtC,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAA6B,CAAC;AACjE,MAAM,UAAU,gBAAgB,CAAI,OAAqB,EAAE,OAAgB;IACzE,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { Attributes } from "./types.js";
2
+ import type { ContentSerializer } from "./types.js";
3
+ export interface McpUpdate {
4
+ readonly connectionName?: string;
5
+ readonly method?: string;
6
+ readonly toolName?: string;
7
+ readonly protocolVersion?: string;
8
+ readonly requestId?: string;
9
+ readonly sessionId?: string;
10
+ readonly statusCode?: string | number;
11
+ }
12
+ export interface McpLifecycle {
13
+ update(input: McpUpdate): void;
14
+ error(error?: unknown, type?: string): void;
15
+ arguments(value: unknown): void;
16
+ result(value: unknown): void;
17
+ }
18
+ export declare function mcpLifecycle(input: {
19
+ readonly write: (attributes: Attributes) => void;
20
+ readonly error: (error?: unknown, type?: string) => void;
21
+ readonly serializer: ContentSerializer;
22
+ readonly recordInputs: boolean;
23
+ readonly recordOutputs: boolean;
24
+ }): McpLifecycle;
25
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC,GAAG,YAAY,CAiCf"}
@@ -0,0 +1,33 @@
1
+ export function mcpLifecycle(input) {
2
+ return {
3
+ update(update) {
4
+ if (update.connectionName !== undefined && update.method !== undefined)
5
+ input.write({
6
+ "agent.connection.name": update.connectionName,
7
+ "mcp.method.name": update.method,
8
+ "network.protocol.name": "http",
9
+ "network.transport": "tcp",
10
+ "mcp.protocol.version": update.protocolVersion,
11
+ "jsonrpc.request.id": update.requestId,
12
+ "gen_ai.operation.name": update.method === "tools/call" ? "execute_tool" : undefined,
13
+ "gen_ai.tool.name": update.method === "tools/call" ? update.toolName : undefined,
14
+ });
15
+ if (update.sessionId !== undefined)
16
+ input.write({ "mcp.session.id": update.sessionId });
17
+ if (update.statusCode !== undefined)
18
+ input.write({ "rpc.response.status_code": update.statusCode });
19
+ },
20
+ error(error, type) {
21
+ input.error(input.recordOutputs ? error : undefined, type ?? (error instanceof Error ? error.name : undefined));
22
+ },
23
+ arguments(value) {
24
+ if (input.recordInputs)
25
+ input.write({ "gen_ai.tool.call.arguments": input.serializer.json(value) });
26
+ },
27
+ result(value) {
28
+ if (input.recordOutputs)
29
+ input.write({ "gen_ai.tool.call.result": input.serializer.json(value) });
30
+ },
31
+ };
32
+ }
33
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/core/mcp.ts"],"names":[],"mappings":"AAoBA,MAAM,UAAU,YAAY,CAAC,KAM5B;IACC,OAAO;QACL,MAAM,CAAC,MAAM;YACX,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBACpE,KAAK,CAAC,KAAK,CAAC;oBACV,uBAAuB,EAAE,MAAM,CAAC,cAAc;oBAC9C,iBAAiB,EAAE,MAAM,CAAC,MAAM;oBAChC,uBAAuB,EAAE,MAAM;oBAC/B,mBAAmB,EAAE,KAAK;oBAC1B,sBAAsB,EAAE,MAAM,CAAC,eAAe;oBAC9C,oBAAoB,EAAE,MAAM,CAAC,SAAS;oBACtC,uBAAuB,EAAE,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;oBACpF,kBAAkB,EAAE,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;iBACjF,CAAC,CAAC;YACL,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;gBAAE,KAAK,CAAC,KAAK,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACxF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;gBACjC,KAAK,CAAC,KAAK,CAAC,EAAE,0BAA0B,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,IAAI;YACf,KAAK,CAAC,KAAK,CACT,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EACvC,IAAI,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAC1D,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,KAAK;YACb,IAAI,KAAK,CAAC,YAAY;gBACpB,KAAK,CAAC,KAAK,CAAC,EAAE,4BAA4B,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,CAAC,KAAK;YACV,IAAI,KAAK,CAAC,aAAa;gBACrB,KAAK,CAAC,KAAK,CAAC,EAAE,yBAAyB,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { type McpLifecycle } from "./mcp.js";
2
+ import type { AgentTelemetry, CaptureDecision, ContentSerializer, ExecutionContext, Operation, ScopeData, ScopeIdentity, ScopeRecord, ScopeTerminal, TraceErrorHandler, TraceLink, TraceReference, Usage } from "./types.js";
3
+ export interface ChildOptions {
4
+ readonly links?: readonly TraceLink[];
5
+ readonly startTimeMs?: number;
6
+ }
7
+ export interface LiveOperation extends Operation {
8
+ child(data: ScopeData, key?: string, options?: ChildOptions): Promise<LiveOperation>;
9
+ /** Returns an unsettled child with this identity, without starting one. */
10
+ find(data: ScopeData): LiveOperation | undefined;
11
+ /** Unsettled children, in start order. */
12
+ readonly children: readonly LiveOperation[];
13
+ usage(usage: Usage, key?: string): Promise<void>;
14
+ /** Carries a model call's messages up to its turn: the first input and the latest output. */
15
+ turnContent(content: {
16
+ readonly input?: string;
17
+ readonly output?: string;
18
+ }): void;
19
+ error(error?: unknown, type?: string): void;
20
+ /** Replaces the host context for this operation and its descendants. */
21
+ useContext(context: ExecutionContext): void;
22
+ /** Fills in a deferred operation's details from a later call with the same identity. */
23
+ refine(data: ScopeData, startTimeMs?: number): void;
24
+ /** Lowers capture for this operation and its children, and drops retained content it no longer allows. */
25
+ narrow(capture: CaptureDecision): void;
26
+ /** Completes this operation, or closes the open descendants of a finished one. */
27
+ release(result: ScopeTerminal): Promise<void>;
28
+ /** Finished, with no unfinished descendants. */
29
+ readonly settled: boolean;
30
+ readonly callId?: string;
31
+ readonly mcp: McpLifecycle;
32
+ record(): ScopeRecord;
33
+ }
34
+ export declare function createScopes(input: {
35
+ readonly telemetry: AgentTelemetry;
36
+ readonly serializer: ContentSerializer;
37
+ readonly durable: boolean;
38
+ readonly onError?: TraceErrorHandler;
39
+ }): {
40
+ /** Starts a turn tree. Durable turns reserve their IDs from `key`. */
41
+ start(facts: {
42
+ identity: ScopeIdentity;
43
+ key: string;
44
+ capture: CaptureDecision;
45
+ data: ScopeData;
46
+ parent?: TraceReference;
47
+ reference?: TraceReference;
48
+ startTimeMs?: number;
49
+ links?: readonly TraceLink[];
50
+ context?: ExecutionContext;
51
+ onChange?: () => Promise<void>;
52
+ }): Promise<LiveOperation>;
53
+ /** Rebuilds a tree from a checkpoint, or returns `undefined` for an unusable one. */
54
+ restore(snapshot: unknown, options?: {
55
+ capture?: CaptureDecision;
56
+ context?: ExecutionContext;
57
+ onChange?: () => Promise<void>;
58
+ }): Promise<LiveOperation | undefined>;
59
+ };
60
+ //# sourceMappingURL=scopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../src/core/scopes.ts"],"names":[],"mappings":"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"}