@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.
- package/LICENSE +202 -0
- package/NOTICE +77 -0
- package/README.md +251 -2
- package/dist/src/adapters/agent-transport.d.ts +9 -0
- package/dist/src/adapters/agent-transport.d.ts.map +1 -0
- package/dist/src/adapters/agent-transport.js +87 -0
- package/dist/src/adapters/agent-transport.js.map +1 -0
- package/dist/src/adapters/ai-sdk-payload.d.ts +16 -0
- package/dist/src/adapters/ai-sdk-payload.d.ts.map +1 -0
- package/dist/src/adapters/ai-sdk-payload.js +30 -0
- package/dist/src/adapters/ai-sdk-payload.js.map +1 -0
- package/dist/src/adapters/ai-sdk-telemetry.d.ts +15 -0
- package/dist/src/adapters/ai-sdk-telemetry.d.ts.map +1 -0
- package/dist/src/adapters/ai-sdk-telemetry.js +151 -0
- package/dist/src/adapters/ai-sdk-telemetry.js.map +1 -0
- package/dist/src/adapters/otel-error.d.ts +4 -0
- package/dist/src/adapters/otel-error.d.ts.map +1 -0
- package/dist/src/adapters/otel-error.js +32 -0
- package/dist/src/adapters/otel-error.js.map +1 -0
- package/dist/src/adapters/otel-ids.d.ts +20 -0
- package/dist/src/adapters/otel-ids.d.ts.map +1 -0
- package/dist/src/adapters/otel-ids.js +74 -0
- package/dist/src/adapters/otel-ids.js.map +1 -0
- package/dist/src/adapters/otel.d.ts +34 -0
- package/dist/src/adapters/otel.d.ts.map +1 -0
- package/dist/src/adapters/otel.js +147 -0
- package/dist/src/adapters/otel.js.map +1 -0
- package/dist/src/adapters/serialization.d.ts +37 -0
- package/dist/src/adapters/serialization.d.ts.map +1 -0
- package/dist/src/adapters/serialization.js +318 -0
- package/dist/src/adapters/serialization.js.map +1 -0
- package/dist/src/agent-run.d.ts +85 -0
- package/dist/src/agent-run.d.ts.map +1 -0
- package/dist/src/agent-run.js +213 -0
- package/dist/src/agent-run.js.map +1 -0
- package/dist/src/ai-sdk.d.ts +8 -0
- package/dist/src/ai-sdk.d.ts.map +1 -0
- package/dist/src/ai-sdk.js +8 -0
- package/dist/src/ai-sdk.js.map +1 -0
- package/dist/src/capture.d.ts +6 -0
- package/dist/src/capture.d.ts.map +1 -0
- package/dist/src/capture.js +9 -0
- package/dist/src/capture.js.map +1 -0
- package/dist/src/core/activation.d.ts +4 -0
- package/dist/src/core/activation.d.ts.map +1 -0
- package/dist/src/core/activation.js +31 -0
- package/dist/src/core/activation.js.map +1 -0
- package/dist/src/core/attributes.d.ts +15 -0
- package/dist/src/core/attributes.d.ts.map +1 -0
- package/dist/src/core/attributes.js +76 -0
- package/dist/src/core/attributes.js.map +1 -0
- package/dist/src/core/content-policy.d.ts +29 -0
- package/dist/src/core/content-policy.d.ts.map +1 -0
- package/dist/src/core/content-policy.js +94 -0
- package/dist/src/core/content-policy.js.map +1 -0
- package/dist/src/core/context.d.ts +4 -0
- package/dist/src/core/context.d.ts.map +1 -0
- package/dist/src/core/context.js +28 -0
- package/dist/src/core/context.js.map +1 -0
- package/dist/src/core/delegation.d.ts +14 -0
- package/dist/src/core/delegation.d.ts.map +1 -0
- package/dist/src/core/delegation.js +7 -0
- package/dist/src/core/delegation.js.map +1 -0
- package/dist/src/core/mcp.d.ts +25 -0
- package/dist/src/core/mcp.d.ts.map +1 -0
- package/dist/src/core/mcp.js +33 -0
- package/dist/src/core/mcp.js.map +1 -0
- package/dist/src/core/scopes.d.ts +60 -0
- package/dist/src/core/scopes.d.ts.map +1 -0
- package/dist/src/core/scopes.js +574 -0
- package/dist/src/core/scopes.js.map +1 -0
- package/dist/src/core/snapshot.d.ts +8 -0
- package/dist/src/core/snapshot.d.ts.map +1 -0
- package/dist/src/core/snapshot.js +207 -0
- package/dist/src/core/snapshot.js.map +1 -0
- package/dist/src/core/span-kinds.d.ts +13 -0
- package/dist/src/core/span-kinds.d.ts.map +1 -0
- package/dist/src/core/span-kinds.js +338 -0
- package/dist/src/core/span-kinds.js.map +1 -0
- package/dist/src/core/types.d.ts +298 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +2 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/core/writer.d.ts +16 -0
- package/dist/src/core/writer.d.ts.map +1 -0
- package/dist/src/core/writer.js +77 -0
- package/dist/src/core/writer.js.map +1 -0
- package/dist/src/delegation.d.ts +3 -0
- package/dist/src/delegation.d.ts.map +1 -0
- package/dist/src/delegation.js +3 -0
- package/dist/src/delegation.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/operations.d.ts +97 -0
- package/dist/src/operations.d.ts.map +1 -0
- package/dist/src/operations.js +185 -0
- package/dist/src/operations.js.map +1 -0
- package/dist/src/otel.d.ts +13 -0
- package/dist/src/otel.d.ts.map +1 -0
- package/dist/src/otel.js +13 -0
- package/dist/src/otel.js.map +1 -0
- package/package.json +75 -3
- package/src/adapters/agent-transport.ts +113 -0
- package/src/adapters/ai-sdk-payload.ts +44 -0
- package/src/adapters/ai-sdk-telemetry.ts +179 -0
- package/src/adapters/otel-error.ts +34 -0
- package/src/adapters/otel-ids.ts +82 -0
- package/src/adapters/otel.ts +232 -0
- package/src/adapters/serialization.ts +338 -0
- package/src/agent-run.ts +341 -0
- package/src/ai-sdk.ts +7 -0
- package/src/capture.ts +13 -0
- package/src/core/activation.ts +42 -0
- package/src/core/attributes.ts +85 -0
- package/src/core/content-policy.ts +116 -0
- package/src/core/context.ts +34 -0
- package/src/core/delegation.ts +20 -0
- package/src/core/mcp.ts +60 -0
- package/src/core/scopes.ts +761 -0
- package/src/core/snapshot.ts +245 -0
- package/src/core/span-kinds.ts +406 -0
- package/src/core/types.ts +304 -0
- package/src/core/writer.ts +135 -0
- package/src/delegation.ts +2 -0
- package/src/index.ts +44 -0
- package/src/operations.ts +342 -0
- package/src/otel.ts +18 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { capturedScopeData } from "./span-kinds.js";
|
|
2
|
+
const SERIALIZED_BYTES = 32768;
|
|
3
|
+
const SNAPSHOT_BYTES = 65536;
|
|
4
|
+
const UNFINISHED_CHILDREN = 10000;
|
|
5
|
+
import { withoutDeclinedContent } from "./content-policy.js";
|
|
6
|
+
export function boundedSerializer(serializer, onError) {
|
|
7
|
+
function invoke(method, args) {
|
|
8
|
+
return bounded(() => Reflect.apply(serializer[method], serializer, args));
|
|
9
|
+
}
|
|
10
|
+
function bounded(serialize) {
|
|
11
|
+
try {
|
|
12
|
+
const value = serialize();
|
|
13
|
+
return value === undefined || new TextEncoder().encode(value).length > SERIALIZED_BYTES
|
|
14
|
+
? undefined
|
|
15
|
+
: value;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
try {
|
|
19
|
+
onError?.(error, { phase: "serialize" });
|
|
20
|
+
}
|
|
21
|
+
catch { }
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
json: (value) => invoke("json", [value]),
|
|
27
|
+
text: (value) => invoke("text", [value]),
|
|
28
|
+
inputMessages: (value) => {
|
|
29
|
+
let omitted = 0;
|
|
30
|
+
const json = bounded(() => {
|
|
31
|
+
const content = serializer.inputMessages(value);
|
|
32
|
+
omitted = content?.omitted ?? 0;
|
|
33
|
+
return content?.json;
|
|
34
|
+
});
|
|
35
|
+
return json === undefined ? undefined : { json, omitted };
|
|
36
|
+
},
|
|
37
|
+
instructions: (value) => invoke("instructions", [value]),
|
|
38
|
+
toolDefinitions: (value) => invoke("toolDefinitions", [value]),
|
|
39
|
+
outputMessages: (value, reason) => invoke("outputMessages", [value, reason]),
|
|
40
|
+
toolResults: (value) => invoke("toolResults", [value]),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Each node is capped on its own; settled children leave the tree. */
|
|
44
|
+
function nodeBytes(record) {
|
|
45
|
+
return new TextEncoder().encode(JSON.stringify({ ...record, children: undefined })).length;
|
|
46
|
+
}
|
|
47
|
+
export function traceSnapshot(value) {
|
|
48
|
+
return JSON.parse(JSON.stringify(value));
|
|
49
|
+
}
|
|
50
|
+
export function validSnapshot(value, maxBytes = SNAPSHOT_BYTES, depth = 0) {
|
|
51
|
+
try {
|
|
52
|
+
if (depth > 16)
|
|
53
|
+
return false;
|
|
54
|
+
if (typeof value !== "object" || value === null)
|
|
55
|
+
return false;
|
|
56
|
+
const record = value;
|
|
57
|
+
if (record.children !== undefined &&
|
|
58
|
+
(!Array.isArray(record.children) ||
|
|
59
|
+
record.children.length > UNFINISHED_CHILDREN ||
|
|
60
|
+
!record.children.every((child) => validSnapshot(child, maxBytes, depth + 1))))
|
|
61
|
+
return false;
|
|
62
|
+
if (record.version !== 1)
|
|
63
|
+
return false;
|
|
64
|
+
if (record.finished !== undefined && typeof record.finished !== "boolean")
|
|
65
|
+
return false;
|
|
66
|
+
if (record.childSequence !== undefined &&
|
|
67
|
+
(!Number.isSafeInteger(record.childSequence) || record.childSequence < 0))
|
|
68
|
+
return false;
|
|
69
|
+
if (typeof record.key !== "string" ||
|
|
70
|
+
typeof record.startTimeMs !== "number" ||
|
|
71
|
+
!Number.isFinite(record.startTimeMs))
|
|
72
|
+
return false;
|
|
73
|
+
if (record.reference.traceFlags !== 0 && record.reference.traceFlags !== 1)
|
|
74
|
+
return false;
|
|
75
|
+
if (record.reference.tracestate !== undefined &&
|
|
76
|
+
(typeof record.reference.tracestate !== "string" || record.reference.tracestate.length > 512))
|
|
77
|
+
return false;
|
|
78
|
+
if (record.parent !== undefined &&
|
|
79
|
+
(!/^[a-f0-9]{32}$/u.test(record.parent.traceId) ||
|
|
80
|
+
!/^[a-f0-9]{16}$/u.test(record.parent.spanId)))
|
|
81
|
+
return false;
|
|
82
|
+
if (![record.identity.conversationId, record.identity.runId, record.identity.turnId].every((v) => typeof v === "string"))
|
|
83
|
+
return false;
|
|
84
|
+
const options = record.data.options;
|
|
85
|
+
const fields = {
|
|
86
|
+
activation: [],
|
|
87
|
+
step: [],
|
|
88
|
+
model: ["provider", "modelId"],
|
|
89
|
+
tool: ["callId", "name"],
|
|
90
|
+
approval: ["requestId", "callId", "toolName"],
|
|
91
|
+
memory: ["operation", "phase", "slot", "storeId"],
|
|
92
|
+
};
|
|
93
|
+
if (!fields[record.data.type].every((key) => typeof options[key] === "string"))
|
|
94
|
+
return false;
|
|
95
|
+
if (record.data.type === "activation" && !Number.isSafeInteger(options.sequence))
|
|
96
|
+
return false;
|
|
97
|
+
if (record.data.type === "step" && !Number.isSafeInteger(options.index))
|
|
98
|
+
return false;
|
|
99
|
+
if (record.data.type === "memory" &&
|
|
100
|
+
options.operation !== "search_memory" &&
|
|
101
|
+
options.operation !== "upsert_memory")
|
|
102
|
+
return false;
|
|
103
|
+
if (!/^[a-f0-9]{32}$/u.test(record.reference.traceId) ||
|
|
104
|
+
!/^[a-f0-9]{16}$/u.test(record.reference.spanId) ||
|
|
105
|
+
typeof record.reference.traceFlags !== "number")
|
|
106
|
+
return false;
|
|
107
|
+
if (![record.capture.emit, record.capture.recordInputs, record.capture.recordOutputs].every((v) => typeof v === "boolean"))
|
|
108
|
+
return false;
|
|
109
|
+
if (!["activation", "step", "model", "tool", "approval", "memory"].includes(record.data.type) ||
|
|
110
|
+
typeof record.data.options !== "object" ||
|
|
111
|
+
record.data.options === null)
|
|
112
|
+
return false;
|
|
113
|
+
if (nodeBytes(record) > maxBytes)
|
|
114
|
+
return false;
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export function snapshotRecord(record, serializer) {
|
|
122
|
+
const terminal = record.terminal;
|
|
123
|
+
record = {
|
|
124
|
+
...record,
|
|
125
|
+
children: record.children?.map((child) => snapshotRecord({
|
|
126
|
+
...child,
|
|
127
|
+
capture: {
|
|
128
|
+
emit: child.capture.emit && record.capture.emit,
|
|
129
|
+
recordInputs: child.capture.recordInputs && record.capture.recordInputs,
|
|
130
|
+
recordOutputs: child.capture.recordOutputs && record.capture.recordOutputs,
|
|
131
|
+
},
|
|
132
|
+
}, serializer)),
|
|
133
|
+
};
|
|
134
|
+
record = {
|
|
135
|
+
...record,
|
|
136
|
+
terminal: terminal === undefined || record.finished
|
|
137
|
+
? undefined
|
|
138
|
+
: {
|
|
139
|
+
...terminal,
|
|
140
|
+
errorCode: terminal.errorCode ??
|
|
141
|
+
(terminal.error instanceof Error ? terminal.error.name : undefined),
|
|
142
|
+
error: record.capture.recordOutputs
|
|
143
|
+
? terminal.error instanceof Error
|
|
144
|
+
? { name: terminal.error.name, message: serializer.text(terminal.error.message) }
|
|
145
|
+
: terminal.error
|
|
146
|
+
: undefined,
|
|
147
|
+
output: record.capture.recordOutputs ? terminal.output : undefined,
|
|
148
|
+
response: record.capture.recordOutputs ? terminal.response : undefined,
|
|
149
|
+
records: record.capture.recordInputs ? terminal.records : undefined,
|
|
150
|
+
model: terminal.model === undefined
|
|
151
|
+
? undefined
|
|
152
|
+
: {
|
|
153
|
+
...terminal.model,
|
|
154
|
+
content: record.capture.recordOutputs ? terminal.model.content : undefined,
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
record = {
|
|
159
|
+
...record,
|
|
160
|
+
attributes: (withoutDeclinedContent(record.attributes ?? {}, record.capture) ??
|
|
161
|
+
record.attributes),
|
|
162
|
+
};
|
|
163
|
+
const data = capturedScopeData(record.data, record.capture);
|
|
164
|
+
let json;
|
|
165
|
+
try {
|
|
166
|
+
json = serializer.json(data);
|
|
167
|
+
}
|
|
168
|
+
catch { }
|
|
169
|
+
const fallback = () => {
|
|
170
|
+
let structural = capturedScopeData(data, {
|
|
171
|
+
emit: record.capture.emit,
|
|
172
|
+
recordInputs: false,
|
|
173
|
+
recordOutputs: false,
|
|
174
|
+
});
|
|
175
|
+
if (structural.type === "step")
|
|
176
|
+
structural = { ...structural, options: { ...structural.options, runtimeContext: undefined } };
|
|
177
|
+
if (structural.type === "model")
|
|
178
|
+
structural = { ...structural, options: { ...structural.options, runtimeContext: undefined } };
|
|
179
|
+
return JSON.parse(JSON.stringify({
|
|
180
|
+
...record,
|
|
181
|
+
version: 1,
|
|
182
|
+
data: structural,
|
|
183
|
+
terminal: record.terminal === undefined
|
|
184
|
+
? undefined
|
|
185
|
+
: {
|
|
186
|
+
outcome: record.terminal.outcome,
|
|
187
|
+
failed: record.terminal.failed,
|
|
188
|
+
errorCode: record.terminal.errorCode,
|
|
189
|
+
usage: record.terminal.usage,
|
|
190
|
+
},
|
|
191
|
+
attributes: withoutDeclinedContent(record.attributes ?? {}, {
|
|
192
|
+
recordInputs: false,
|
|
193
|
+
recordOutputs: false,
|
|
194
|
+
}) ?? record.attributes,
|
|
195
|
+
}));
|
|
196
|
+
};
|
|
197
|
+
if (json === undefined || new TextEncoder().encode(json).length > SERIALIZED_BYTES)
|
|
198
|
+
return fallback();
|
|
199
|
+
try {
|
|
200
|
+
const snapshot = JSON.parse(JSON.stringify({ ...record, version: 1, data: JSON.parse(json) }));
|
|
201
|
+
return nodeBytes(snapshot) <= SNAPSHOT_BYTES ? snapshot : fallback();
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return fallback();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/core/snapshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,MAAM,UAAU,iBAAiB,CAC/B,UAA6B,EAC7B,OAAgD;IAEhD,SAAS,MAAM,CAAC,MAA+B,EAAE,IAAe;QAC9D,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAuB,CAAC,CAAC;IAClG,CAAC;IACD,SAAS,OAAO,CAAC,SAAmC;QAClD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;YAC1B,OAAO,KAAK,KAAK,SAAS,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,gBAAgB;gBACrF,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YACV,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;QACxC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;gBACxB,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAChD,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;gBAChC,OAAO,OAAO,EAAE,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC5D,CAAC;QACD,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;QACxD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9D,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC5E,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,SAAS,SAAS,CAAC,MAAmB;IACpC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAkB,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,KAAc,EACd,QAAQ,GAAW,cAAc,EACjC,KAAK,GAAG,CAAC;IAET,IAAI,CAAC;QACH,IAAI,KAAK,GAAG,EAAE;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,MAAM,GAAG,KAAoB,CAAC;QACpC,IACE,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,mBAAmB;gBAC5C,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAE/E,OAAO,KAAK,CAAC;QACf,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACxF,IACE,MAAM,CAAC,aAAa,KAAK,SAAS;YAClC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;YAEzE,OAAO,KAAK,CAAC;QACf,IACE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACtC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;YAEpC,OAAO,KAAK,CAAC;QACf,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACzF,IACE,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,SAAS;YACzC,CAAC,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;YAE7F,OAAO,KAAK,CAAC;QACf,IACE,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3B,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC7C,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEhD,OAAO,KAAK,CAAC;QACf,IACE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CACpF,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAC7B;YAED,OAAO,KAAK,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC;QAC/D,MAAM,MAAM,GAAG;YACb,UAAU,EAAE,EAAE;YACd,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC;YAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACxB,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;YAC7C,MAAM,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;SAClD,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7F,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/F,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtF,IACE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC7B,OAAO,CAAC,SAAS,KAAK,eAAe;YACrC,OAAO,CAAC,SAAS,KAAK,eAAe;YAErC,OAAO,KAAK,CAAC;QACf,IACE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;YACjD,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YAChD,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,KAAK,QAAQ;YAE/C,OAAO,KAAK,CAAC;QACf,IACE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CACrF,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAC9B;YAED,OAAO,KAAK,CAAC;QACf,IACE,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACzF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ;YACvC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI;YAE5B,OAAO,KAAK,CAAC;QACf,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAmB,EAAE,UAA6B;IAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,GAAG;QACP,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACvC,cAAc,CACZ;YACE,GAAG,KAAK;YACR,OAAO,EAAE;gBACP,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI;gBAC/C,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY;gBACvE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa;aAC3E;SACF,EACD,UAAU,CACX,CACF;KACF,CAAC;IACF,MAAM,GAAG;QACP,GAAG,MAAM;QACT,QAAQ,EACN,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,GAAG,QAAQ;gBACX,SAAS,EACP,QAAQ,CAAC,SAAS;oBAClB,CAAC,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa;oBACjC,CAAC,CAAC,QAAQ,CAAC,KAAK,YAAY,KAAK;wBAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;wBACjF,CAAC,CAAC,QAAQ,CAAC,KAAK;oBAClB,CAAC,CAAC,SAAS;gBACb,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAClE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACtE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACnE,KAAK,EACH,QAAQ,CAAC,KAAK,KAAK,SAAS;oBAC1B,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC;wBACE,GAAG,QAAQ,CAAC,KAAK;wBACjB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;qBAC3E;aACR;KACR,CAAC;IACF,MAAM,GAAG;QACP,GAAG,MAAM;QACT,UAAU,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;YAC1E,MAAM,CAAC,UAAU,CAA8B;KAClD,CAAC;IACF,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,IAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE;YACvC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;YACzB,YAAY,EAAE,KAAK;YACnB,aAAa,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM;YAC5B,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;QAChG,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;YAC7B,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC,KAAK,CACf,IAAI,CAAC,SAAS,CAAC;YACb,GAAG,MAAM;YACT,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EACN,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAC3B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAChC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;oBAC9B,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS;oBACpC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;iBAC7B;YACP,UAAU,EACR,sBAAsB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE;gBAC9C,YAAY,EAAE,KAAK;gBACnB,aAAa,EAAE,KAAK;aACrB,CAAC,IAAI,MAAM,CAAC,UAAU;SAC1B,CAAC,CACY,CAAC;IACnB,CAAC,CAAC;IACF,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,gBAAgB;QAChF,OAAO,QAAQ,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CACzB,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CACnD,CAAC;QACjB,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,EAAE,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const invocationName: (name?: string) => string;
|
|
2
|
+
export declare function applyAttributes(span: {
|
|
3
|
+
setAttribute(key: string, value: Exclude<Attributes[string], undefined>): unknown;
|
|
4
|
+
}, attributes: Attributes): void;
|
|
5
|
+
import type { ContentSerializer } from "./types.js";
|
|
6
|
+
import type { ScopeData, ScopeRecord, ScopeTerminal } from "./types.js";
|
|
7
|
+
import type { Attributes, CaptureDecision, PreparedSpan } from "./types.js";
|
|
8
|
+
import type { TraceOperation } from "./writer.js";
|
|
9
|
+
export declare function parentKinds(data: ScopeData): readonly ScopeData["type"][];
|
|
10
|
+
export declare function prepareScope(record: Omit<ScopeRecord, "reference">, serializer: ContentSerializer): PreparedSpan;
|
|
11
|
+
export declare function completeScope(span: TraceOperation, data: ScopeData, result: ScopeTerminal, capture: CaptureDecision, startTimeMs: number, serializer: ContentSerializer): void;
|
|
12
|
+
export declare function capturedScopeData(data: ScopeData, capture: CaptureDecision): ScopeData;
|
|
13
|
+
//# sourceMappingURL=span-kinds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"span-kinds.d.ts","sourceRoot":"","sources":["../../../src/core/span-kinds.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,cAAc,UAAW,MAAM,WACkB,CAAC;AAc/D,wBAAgB,eAAe,CAC7B,IAAI,EAAE;IAAE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,OAAO,CAAA;CAAE,EAC3F,UAAU,EAAE,UAAU,GACrB,IAAI,CAGN;AACD,OAAO,KAAK,EAAE,iBAAiB,EAAe,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAiB,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA6QlD,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,SAAS,CAAC,MAAM,CAAC,EAAE,CAEzE;AACD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EACtC,UAAU,EAAE,iBAAiB,GAC5B,YAAY,CAsBd;AACD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,iBAAiB,GAC5B,IAAI,CAeN;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAGtF"}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { identityAttributes, usageAttributes, frameworkAttributes, namingAttributes, runtimeContextAttributes, } from "./attributes.js";
|
|
2
|
+
export const invocationName = (name) => name === undefined ? "invoke_agent" : `invoke_agent ${name}`;
|
|
3
|
+
const modelName = (name) => `chat ${name}`;
|
|
4
|
+
const toolName = (name) => `execute_tool ${name}`;
|
|
5
|
+
const SPAN_NAMES = {
|
|
6
|
+
approval: "agent.approval",
|
|
7
|
+
step: "agent.step",
|
|
8
|
+
};
|
|
9
|
+
const CONTENT_FIELDS = {
|
|
10
|
+
toolArguments: "gen_ai.tool.call.arguments",
|
|
11
|
+
toolResult: "gen_ai.tool.call.result",
|
|
12
|
+
approvalRequest: "agent.approval.request",
|
|
13
|
+
approvalResponse: "agent.approval.response",
|
|
14
|
+
memoryRecords: "gen_ai.memory.records",
|
|
15
|
+
};
|
|
16
|
+
export function applyAttributes(span, attributes) {
|
|
17
|
+
for (const [key, value] of Object.entries(attributes))
|
|
18
|
+
if (value !== undefined)
|
|
19
|
+
span.setAttribute(key, value);
|
|
20
|
+
}
|
|
21
|
+
import { withoutDeclinedContent } from "./content-policy.js";
|
|
22
|
+
function attemptAttributes(context) {
|
|
23
|
+
return {
|
|
24
|
+
"agent.turn.id": context.attempt.turnId,
|
|
25
|
+
"agent.step.index": context.attempt.index,
|
|
26
|
+
"agent.step.attempt": context.attempt.attempt,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function permitted(attributes, capture) {
|
|
30
|
+
return (withoutDeclinedContent(attributes ?? {}, capture) ?? attributes);
|
|
31
|
+
}
|
|
32
|
+
function toolInput(arguments_, context) {
|
|
33
|
+
return {
|
|
34
|
+
[CONTENT_FIELDS.toolArguments]: context.capture.recordInputs
|
|
35
|
+
? context.serializer.json(arguments_)
|
|
36
|
+
: undefined,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function toolOutput(span, result, context) {
|
|
40
|
+
if (context.capture.recordOutputs)
|
|
41
|
+
applyAttributes(span, { [CONTENT_FIELDS.toolResult]: context.serializer.json(result.output) });
|
|
42
|
+
}
|
|
43
|
+
const kinds = {
|
|
44
|
+
activation: {
|
|
45
|
+
parents: [],
|
|
46
|
+
prepare({ options }, context) {
|
|
47
|
+
const { identity, capture } = context;
|
|
48
|
+
return {
|
|
49
|
+
name: invocationName(identity.agentName),
|
|
50
|
+
attributes: {
|
|
51
|
+
...context.attributes,
|
|
52
|
+
...frameworkAttributes(identity.framework),
|
|
53
|
+
...namingAttributes(invocationName(identity.agentName), "invoke_agent"),
|
|
54
|
+
"agent.channel.kind": options.channel?.kind,
|
|
55
|
+
"agent.session.origin": options.channel?.origin,
|
|
56
|
+
"agent.name": identity.agentName,
|
|
57
|
+
"gen_ai.agent.name": identity.agentName,
|
|
58
|
+
"gen_ai.operation.name": "invoke_agent",
|
|
59
|
+
"agent.turn.id": identity.turnId,
|
|
60
|
+
"agent.turn.sequence": options.sequence,
|
|
61
|
+
"agent.run.type": options.subagent ? "subagent" : "session",
|
|
62
|
+
"agent.parent_call.id": options.parentCallId,
|
|
63
|
+
"agent.parent_run.id": options.parentRunId,
|
|
64
|
+
"agent.subagent.name": options.subagentName,
|
|
65
|
+
"agent.trace.content.input": capture.recordInputs,
|
|
66
|
+
"agent.trace.content.output": capture.recordOutputs,
|
|
67
|
+
...permitted(options.attributes, capture),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
complete(span, _data, result, context) {
|
|
72
|
+
span.addEvent("turn.started", undefined, context.startTimeMs);
|
|
73
|
+
if (result.outcomeUnknown !== true || result.failed === true)
|
|
74
|
+
span.addEvent(`turn.${context.outcome}`, undefined, result.endTimeMs);
|
|
75
|
+
},
|
|
76
|
+
redact(data, capture) {
|
|
77
|
+
return {
|
|
78
|
+
...data,
|
|
79
|
+
options: { ...data.options, attributes: permitted(data.options.attributes, capture) },
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
step: {
|
|
84
|
+
parents: ["activation"],
|
|
85
|
+
prepare({ options }, context) {
|
|
86
|
+
return {
|
|
87
|
+
name: SPAN_NAMES.step,
|
|
88
|
+
attributes: {
|
|
89
|
+
...context.attributes,
|
|
90
|
+
...frameworkAttributes(context.identity.framework),
|
|
91
|
+
...attemptAttributes(context),
|
|
92
|
+
...namingAttributes(SPAN_NAMES.step, "workflow"),
|
|
93
|
+
"gen_ai.operation.name": "workflow",
|
|
94
|
+
"agent.name": context.identity.agentName,
|
|
95
|
+
"agent.channel.kind": options.channel?.kind === "unknown" ? undefined : options.channel?.kind,
|
|
96
|
+
"agent.session.origin": options.channel?.kind === "unknown" ? undefined : options.channel?.origin,
|
|
97
|
+
...runtimeContextAttributes(options.runtimeContext),
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
complete(span, _data, result) {
|
|
102
|
+
span.addEvent(result.failed ? "step.failed" : "step.completed", undefined, result.endTimeMs);
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
model: {
|
|
106
|
+
parents: ["step"],
|
|
107
|
+
prepare({ options }, context) {
|
|
108
|
+
const inputMessages = context.capture.recordInputs && options.messages !== undefined
|
|
109
|
+
? context.serializer.inputMessages(options.messages)
|
|
110
|
+
: undefined;
|
|
111
|
+
return {
|
|
112
|
+
name: modelName(options.modelId),
|
|
113
|
+
kind: "CLIENT",
|
|
114
|
+
attributes: {
|
|
115
|
+
...context.attributes,
|
|
116
|
+
...namingAttributes(modelName(options.modelId), "chat"),
|
|
117
|
+
"gen_ai.agent.name": context.identity.agentName,
|
|
118
|
+
"gen_ai.operation.name": "chat",
|
|
119
|
+
"gen_ai.provider.name": options.provider,
|
|
120
|
+
"gen_ai.request.model": options.modelId,
|
|
121
|
+
...runtimeContextAttributes(options.runtimeContext),
|
|
122
|
+
...(context.capture.recordInputs && options.messages !== undefined
|
|
123
|
+
? {
|
|
124
|
+
"gen_ai.input.messages": inputMessages?.json,
|
|
125
|
+
"agent.input.messages.omitted": inputMessages?.omitted || undefined,
|
|
126
|
+
"gen_ai.system_instructions": context.serializer.instructions(options.instructions),
|
|
127
|
+
}
|
|
128
|
+
: undefined),
|
|
129
|
+
"gen_ai.tool.definitions": context.capture.recordInputs
|
|
130
|
+
? context.serializer.toolDefinitions(options.tools)
|
|
131
|
+
: undefined,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
},
|
|
135
|
+
complete(span, _data, result, context) {
|
|
136
|
+
if (result.model !== undefined)
|
|
137
|
+
applyAttributes(span, modelResultAttributes(result.model, context.serializer, context.capture.recordOutputs));
|
|
138
|
+
},
|
|
139
|
+
redact(data, capture) {
|
|
140
|
+
return capture.recordInputs
|
|
141
|
+
? data
|
|
142
|
+
: {
|
|
143
|
+
...data,
|
|
144
|
+
options: {
|
|
145
|
+
...data.options,
|
|
146
|
+
messages: undefined,
|
|
147
|
+
instructions: undefined,
|
|
148
|
+
tools: undefined,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
tool: {
|
|
154
|
+
parents: ["step", "tool"],
|
|
155
|
+
prepare({ options }, context) {
|
|
156
|
+
const delegates = options.kind === "subagent-call" || options.kind === "remote-agent-call";
|
|
157
|
+
return {
|
|
158
|
+
name: toolName(options.name),
|
|
159
|
+
kind: options.kind === "remote-agent-call" ? "CLIENT" : "INTERNAL",
|
|
160
|
+
attributes: {
|
|
161
|
+
...context.attributes,
|
|
162
|
+
...frameworkAttributes(context.identity.framework),
|
|
163
|
+
...attemptAttributes(context),
|
|
164
|
+
...namingAttributes(toolName(options.name), "execute_tool"),
|
|
165
|
+
"gen_ai.agent.name": delegates ? options.name : context.identity.agentName,
|
|
166
|
+
"gen_ai.operation.name": "execute_tool",
|
|
167
|
+
"gen_ai.tool.call.id": options.callId,
|
|
168
|
+
"gen_ai.tool.name": options.name,
|
|
169
|
+
"gen_ai.tool.type": "function",
|
|
170
|
+
"agent.action.kind": options.kind,
|
|
171
|
+
"agent.action.name": options.kind === undefined ? undefined : options.name,
|
|
172
|
+
"agent.invocation.role": delegates ? "caller" : undefined,
|
|
173
|
+
...toolInput(options.arguments, context),
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
},
|
|
177
|
+
complete(span, _data, result, context) {
|
|
178
|
+
if (result.outcome !== undefined)
|
|
179
|
+
applyAttributes(span, { "agent.action.outcome": result.outcome });
|
|
180
|
+
toolOutput(span, result, context);
|
|
181
|
+
},
|
|
182
|
+
redact(data, capture) {
|
|
183
|
+
return capture.recordInputs
|
|
184
|
+
? data
|
|
185
|
+
: { ...data, options: { ...data.options, arguments: undefined } };
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
approval: {
|
|
189
|
+
parents: ["tool"],
|
|
190
|
+
prepare({ options }, context) {
|
|
191
|
+
return {
|
|
192
|
+
name: SPAN_NAMES.approval,
|
|
193
|
+
attributes: {
|
|
194
|
+
...context.attributes,
|
|
195
|
+
...frameworkAttributes(context.identity.framework),
|
|
196
|
+
...attemptAttributes(context),
|
|
197
|
+
...namingAttributes(SPAN_NAMES.approval, "workflow"),
|
|
198
|
+
"gen_ai.operation.name": "workflow",
|
|
199
|
+
"gen_ai.tool.call.id": options.callId,
|
|
200
|
+
"agent.action.name": options.toolName,
|
|
201
|
+
"agent.approval.kind": "tool-approval",
|
|
202
|
+
"agent.approval.request_id": options.requestId,
|
|
203
|
+
[CONTENT_FIELDS.approvalRequest]: context.capture.recordInputs
|
|
204
|
+
? context.serializer.json(options.request)
|
|
205
|
+
: undefined,
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
},
|
|
209
|
+
complete(span, _data, result, context) {
|
|
210
|
+
if (context.capture.recordOutputs)
|
|
211
|
+
applyAttributes(span, {
|
|
212
|
+
[CONTENT_FIELDS.approvalResponse]: context.serializer.json(result.response),
|
|
213
|
+
});
|
|
214
|
+
},
|
|
215
|
+
redact(data, capture) {
|
|
216
|
+
return capture.recordInputs
|
|
217
|
+
? data
|
|
218
|
+
: { ...data, options: { ...data.options, request: undefined } };
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
memory: {
|
|
222
|
+
parents: ["activation", "step", "tool"],
|
|
223
|
+
prepare({ options }, context) {
|
|
224
|
+
return {
|
|
225
|
+
name: options.operation,
|
|
226
|
+
kind: "CLIENT",
|
|
227
|
+
attributes: {
|
|
228
|
+
...context.attributes,
|
|
229
|
+
...namingAttributes(options.operation),
|
|
230
|
+
"gen_ai.operation.name": options.operation,
|
|
231
|
+
"gen_ai.memory.store.id": options.storeId,
|
|
232
|
+
"agent.memory.phase": options.phase,
|
|
233
|
+
"agent.memory.slot": options.slot,
|
|
234
|
+
"agent.turn.id": context.identity.turnId,
|
|
235
|
+
},
|
|
236
|
+
};
|
|
237
|
+
},
|
|
238
|
+
complete(span, _data, result, context) {
|
|
239
|
+
if (result.recordCount !== undefined)
|
|
240
|
+
applyAttributes(span, { "gen_ai.memory.record.count": result.recordCount });
|
|
241
|
+
if (context.capture.recordInputs)
|
|
242
|
+
applyAttributes(span, {
|
|
243
|
+
[CONTENT_FIELDS.memoryRecords]: context.serializer.json(result.records),
|
|
244
|
+
});
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
function kind(data) {
|
|
249
|
+
return kinds[data.type];
|
|
250
|
+
}
|
|
251
|
+
export function parentKinds(data) {
|
|
252
|
+
return kind(data).parents;
|
|
253
|
+
}
|
|
254
|
+
export function prepareScope(record, serializer) {
|
|
255
|
+
const context = {
|
|
256
|
+
identity: record.identity,
|
|
257
|
+
attributes: identityAttributes(record.identity),
|
|
258
|
+
attempt: {
|
|
259
|
+
turnId: record.identity.turnId,
|
|
260
|
+
index: record.attempt?.index ?? 0,
|
|
261
|
+
attempt: record.attempt?.attempt ?? 0,
|
|
262
|
+
},
|
|
263
|
+
capture: record.capture,
|
|
264
|
+
serializer,
|
|
265
|
+
};
|
|
266
|
+
return {
|
|
267
|
+
type: record.data.type,
|
|
268
|
+
operationId: record.key,
|
|
269
|
+
kind: "INTERNAL",
|
|
270
|
+
...kind(record.data).prepare(record.data, context),
|
|
271
|
+
parent: record.parent,
|
|
272
|
+
root: record.data.type === "activation" && record.parent === undefined,
|
|
273
|
+
startTimeMs: record.startTimeMs,
|
|
274
|
+
links: record.links,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
export function completeScope(span, data, result, capture, startTimeMs, serializer) {
|
|
278
|
+
const outcome = result.outcome ?? (result.failed ? "failed" : "completed");
|
|
279
|
+
// A failure is always recorded; otherwise an unknown outcome leaves the span without one.
|
|
280
|
+
const known = result.outcomeUnknown !== true || result.failed === true;
|
|
281
|
+
if ((data.type === "activation" || data.type === "approval") && known)
|
|
282
|
+
applyAttributes(span, {
|
|
283
|
+
[data.type === "activation" ? "agent.turn.outcome" : "agent.approval.outcome"]: outcome,
|
|
284
|
+
});
|
|
285
|
+
if (result.usage !== undefined)
|
|
286
|
+
applyAttributes(span, usageAttributes(result.usage, data.type === "activation" || data.type === "model"));
|
|
287
|
+
kind(data).complete?.(span, data, result, { capture, startTimeMs, serializer, outcome });
|
|
288
|
+
if (result.failed)
|
|
289
|
+
span.fail(result.error, result.errorCode);
|
|
290
|
+
}
|
|
291
|
+
export function capturedScopeData(data, capture) {
|
|
292
|
+
if (!capture.emit)
|
|
293
|
+
capture = { emit: false, recordInputs: false, recordOutputs: false };
|
|
294
|
+
return kind(data).redact?.(data, capture) ?? data;
|
|
295
|
+
}
|
|
296
|
+
function modelResultAttributes(input, serializer, recordOutputs) {
|
|
297
|
+
const attributes = {
|
|
298
|
+
...usageAttributes(input.usage, true),
|
|
299
|
+
"gen_ai.response.id": input.responseId,
|
|
300
|
+
"gen_ai.response.model": input.responseModelId,
|
|
301
|
+
"gen_ai.response.finish_reasons": [input.finishReason],
|
|
302
|
+
};
|
|
303
|
+
if (!recordOutputs)
|
|
304
|
+
return attributes;
|
|
305
|
+
attributes["ai.response.finish_reason"] = input.finishReason;
|
|
306
|
+
const content = input.content;
|
|
307
|
+
if (content === undefined)
|
|
308
|
+
return attributes;
|
|
309
|
+
attributes["gen_ai.output.messages"] = serializer.outputMessages(content, input.finishReason);
|
|
310
|
+
attributes["ai.response.reasoning"] = serializer.text(content
|
|
311
|
+
.filter((part) => part.type === "reasoning")
|
|
312
|
+
.map((part) => part.text)
|
|
313
|
+
.filter((text) => text.trim().length > 0)
|
|
314
|
+
.join("\n"));
|
|
315
|
+
attributes["ai.response.text"] = serializer.text(content
|
|
316
|
+
.filter((part) => part.type === "text")
|
|
317
|
+
.map((part) => part.text)
|
|
318
|
+
.join(""));
|
|
319
|
+
const calls = content
|
|
320
|
+
.filter((part) => part.type === "tool-call")
|
|
321
|
+
.map((part) => ({ callId: part.callId, input: part.input, toolName: part.toolName }));
|
|
322
|
+
if (calls.length > 0)
|
|
323
|
+
attributes["ai.response.tool_calls"] = serializer.json(calls);
|
|
324
|
+
const results = content
|
|
325
|
+
.filter((part) => part.type === "tool-result" || part.type === "tool-error")
|
|
326
|
+
.map((part) => part.type === "tool-result"
|
|
327
|
+
? { callId: part.callId, input: part.input, output: part.output, toolName: part.toolName }
|
|
328
|
+
: {
|
|
329
|
+
callId: part.callId,
|
|
330
|
+
input: part.input,
|
|
331
|
+
error: part.error instanceof Error ? part.error.message : part.error,
|
|
332
|
+
toolName: part.toolName,
|
|
333
|
+
});
|
|
334
|
+
if (results.length > 0)
|
|
335
|
+
attributes["ai.response.tool_results"] = serializer.toolResults(results);
|
|
336
|
+
return attributes;
|
|
337
|
+
}
|
|
338
|
+
//# sourceMappingURL=span-kinds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"span-kinds.js","sourceRoot":"","sources":["../../../src/core/span-kinds.ts"],"names":[],"mappings":"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"}
|