@morsehq-dev/sdk 0.4.0 → 0.4.1-rc.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/dist/anthropic/index.cjs +10 -10
- package/dist/anthropic/index.js +3 -3
- package/dist/anthropic-agent-sdk/index.cjs +32 -32
- package/dist/anthropic-agent-sdk/index.js +5 -5
- package/dist/browser/anthropic/index.cjs +10 -10
- package/dist/browser/anthropic/index.js +3 -3
- package/dist/browser/anthropic-agent-sdk/index.cjs +32 -32
- package/dist/browser/anthropic-agent-sdk/index.js +5 -5
- package/dist/{chunk-7EO7MQBA.cjs → browser/chunk-3BGG7GH3.cjs} +6 -6
- package/dist/browser/{chunk-KRBADE6R.cjs.map → chunk-3BGG7GH3.cjs.map} +1 -1
- package/dist/browser/{chunk-JBOYFQSB.js → chunk-AYNX24P5.js} +3 -3
- package/dist/browser/{chunk-JBOYFQSB.js.map → chunk-AYNX24P5.js.map} +1 -1
- package/dist/{chunk-ME5JALGT.js → browser/chunk-DOLWR7LD.js} +4 -4
- package/dist/browser/{chunk-7MSXWGAH.js.map → chunk-DOLWR7LD.js.map} +1 -1
- package/dist/browser/{chunk-O4HG3OSK.cjs → chunk-DXWHT3HK.cjs} +13 -4
- package/dist/browser/chunk-DXWHT3HK.cjs.map +1 -0
- package/dist/browser/{chunk-B7DEUDP6.cjs → chunk-EFUQVASI.cjs} +15 -15
- package/dist/browser/{chunk-B7DEUDP6.cjs.map → chunk-EFUQVASI.cjs.map} +1 -1
- package/dist/browser/{chunk-5J2QBK75.js → chunk-F3B4UR64.js} +13 -4
- package/dist/browser/chunk-F3B4UR64.js.map +1 -0
- package/dist/{chunk-HDAFUKQ3.js → browser/chunk-F7BGQ26H.js} +4 -4
- package/dist/browser/{chunk-TYDG747E.js.map → chunk-F7BGQ26H.js.map} +1 -1
- package/dist/browser/{chunk-YAOBFRKP.js → chunk-GWJYOQNC.js} +4 -4
- package/dist/browser/{chunk-YAOBFRKP.js.map → chunk-GWJYOQNC.js.map} +1 -1
- package/dist/browser/{chunk-TZRSDDFP.cjs → chunk-HGN7J3EU.cjs} +12 -12
- package/dist/browser/{chunk-TZRSDDFP.cjs.map → chunk-HGN7J3EU.cjs.map} +1 -1
- package/dist/browser/{chunk-Z22Q2ONC.cjs → chunk-M2GZJ3RS.cjs} +14 -14
- package/dist/browser/{chunk-Z22Q2ONC.cjs.map → chunk-M2GZJ3RS.cjs.map} +1 -1
- package/dist/browser/{chunk-NQG2IAQS.js → chunk-YHV5GL32.js} +3 -3
- package/dist/browser/{chunk-NQG2IAQS.js.map → chunk-YHV5GL32.js.map} +1 -1
- package/dist/{chunk-VXDBDPDR.cjs → browser/chunk-YNUZGKUA.cjs} +7 -7
- package/dist/browser/{chunk-MCJYZH6W.cjs.map → chunk-YNUZGKUA.cjs.map} +1 -1
- package/dist/browser/index.cjs +80 -80
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +7 -7
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/integrations/pino.cjs +4 -4
- package/dist/browser/integrations/pino.js +3 -3
- package/dist/browser/langchain/index.cjs +17 -17
- package/dist/browser/langchain/index.js +2 -2
- package/dist/browser/langgraph/index.cjs +21 -21
- package/dist/browser/langgraph/index.js +4 -4
- package/dist/browser/openai/index.cjs +5 -5
- package/dist/browser/openai/index.js +1 -1
- package/dist/browser/openai-agents/index.cjs +32 -32
- package/dist/browser/openai-agents/index.js +4 -4
- package/dist/browser/vercel-ai/index.cjs +14 -14
- package/dist/browser/vercel-ai/index.js +3 -3
- package/dist/{chunk-KZBCOZIQ.cjs → chunk-5D6SBSEI.cjs} +15 -15
- package/dist/{chunk-KZBCOZIQ.cjs.map → chunk-5D6SBSEI.cjs.map} +1 -1
- package/dist/{chunk-ZKUGOWER.js → chunk-AEFUXEKV.js} +3 -3
- package/dist/{chunk-ZKUGOWER.js.map → chunk-AEFUXEKV.js.map} +1 -1
- package/dist/{chunk-FJUNILZT.cjs → chunk-HNCWTENX.cjs} +13 -4
- package/dist/chunk-HNCWTENX.cjs.map +1 -0
- package/dist/{chunk-7YCENA54.cjs → chunk-LQI63FHF.cjs} +14 -14
- package/dist/{chunk-7YCENA54.cjs.map → chunk-LQI63FHF.cjs.map} +1 -1
- package/dist/{chunk-TQWI4UYO.js → chunk-LTKGLXAE.js} +13 -4
- package/dist/chunk-LTKGLXAE.js.map +1 -0
- package/dist/{chunk-RTL23YOQ.js → chunk-POCQNSVD.js} +3 -3
- package/dist/{chunk-RTL23YOQ.js.map → chunk-POCQNSVD.js.map} +1 -1
- package/dist/{chunk-PVHDEPRE.cjs → chunk-QXRJUPDP.cjs} +12 -12
- package/dist/{chunk-PVHDEPRE.cjs.map → chunk-QXRJUPDP.cjs.map} +1 -1
- package/dist/{browser/chunk-TYDG747E.js → chunk-SBGY5NS4.js} +4 -4
- package/dist/{chunk-HDAFUKQ3.js.map → chunk-SBGY5NS4.js.map} +1 -1
- package/dist/{chunk-CKFOGDUF.js → chunk-STK4KJQ6.js} +4 -4
- package/dist/{chunk-CKFOGDUF.js.map → chunk-STK4KJQ6.js.map} +1 -1
- package/dist/{browser/chunk-KRBADE6R.cjs → chunk-T2KW3P23.cjs} +6 -6
- package/dist/{chunk-7EO7MQBA.cjs.map → chunk-T2KW3P23.cjs.map} +1 -1
- package/dist/{browser/chunk-7MSXWGAH.js → chunk-V5J6J4ZR.js} +4 -4
- package/dist/{chunk-ME5JALGT.js.map → chunk-V5J6J4ZR.js.map} +1 -1
- package/dist/{browser/chunk-MCJYZH6W.cjs → chunk-Y7SVGUKY.cjs} +7 -7
- package/dist/{chunk-VXDBDPDR.cjs.map → chunk-Y7SVGUKY.cjs.map} +1 -1
- package/dist/index.cjs +87 -87
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/integrations/pino.cjs +4 -4
- package/dist/integrations/pino.js +3 -3
- package/dist/langchain/index.cjs +17 -17
- package/dist/langchain/index.js +2 -2
- package/dist/langgraph/index.cjs +21 -21
- package/dist/langgraph/index.js +4 -4
- package/dist/openai/index.cjs +5 -5
- package/dist/openai/index.js +1 -1
- package/dist/openai-agents/index.cjs +32 -32
- package/dist/openai-agents/index.js +4 -4
- package/dist/vercel-ai/index.cjs +14 -14
- package/dist/vercel-ai/index.js +3 -3
- package/package.json +1 -1
- package/dist/browser/chunk-5J2QBK75.js.map +0 -1
- package/dist/browser/chunk-O4HG3OSK.cjs.map +0 -1
- package/dist/chunk-FJUNILZT.cjs.map +0 -1
- package/dist/chunk-TQWI4UYO.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { calculateCost } from '../chunk-4FALQMOZ.js';
|
|
2
2
|
import { decomposeOpenAiMessages } from '../chunk-QWRQJO57.js';
|
|
3
|
-
import { init_tracing, getActiveTraceState, runAsync, startSpan } from '../chunk-
|
|
3
|
+
import { init_tracing, getActiveTraceState, runAsync, startSpan } from '../chunk-F3B4UR64.js';
|
|
4
4
|
|
|
5
5
|
// src/openai/index.ts
|
|
6
6
|
init_tracing();
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
3
|
+
var chunkYNUZGKUA_cjs = require('../chunk-YNUZGKUA.cjs');
|
|
4
|
+
var chunkEFUQVASI_cjs = require('../chunk-EFUQVASI.cjs');
|
|
5
|
+
var chunk3BGG7GH3_cjs = require('../chunk-3BGG7GH3.cjs');
|
|
6
6
|
var chunkSWQOPFE4_cjs = require('../chunk-SWQOPFE4.cjs');
|
|
7
7
|
var chunk3643DC7K_cjs = require('../chunk-3643DC7K.cjs');
|
|
8
|
-
var
|
|
8
|
+
var chunkDXWHT3HK_cjs = require('../chunk-DXWHT3HK.cjs');
|
|
9
9
|
|
|
10
10
|
// src/openai-agents/runner-wrapper.ts
|
|
11
|
-
|
|
11
|
+
chunkDXWHT3HK_cjs.init_tracing();
|
|
12
12
|
var WRAPPED_RUNNER = /* @__PURE__ */ Symbol.for("morse.openai-agents.wrapped");
|
|
13
13
|
var INSTALL_SENTINEL = /* @__PURE__ */ Symbol.for("morse.openai-agents.installed");
|
|
14
14
|
var ORIGINALS_SENTINEL = /* @__PURE__ */ Symbol.for("morse.openai-agents.originals");
|
|
@@ -34,7 +34,7 @@ function wrapRunner(runner, options = {}) {
|
|
|
34
34
|
});
|
|
35
35
|
return wrapper;
|
|
36
36
|
}
|
|
37
|
-
var instrumentOpenAIAgents =
|
|
37
|
+
var instrumentOpenAIAgents = chunk3BGG7GH3_cjs.absorbErrorsAsync(
|
|
38
38
|
async (runnerOrOptions = void 0, maybeOptions = {}) => {
|
|
39
39
|
if (runnerOrOptions && isRunner(runnerOrOptions)) {
|
|
40
40
|
const opts2 = maybeOptions ?? {};
|
|
@@ -67,7 +67,7 @@ var instrumentOpenAIAgents = chunkKRBADE6R_cjs.absorbErrorsAsync(
|
|
|
67
67
|
},
|
|
68
68
|
{ fingerprint: "morse.adapters.openai-agents.install" }
|
|
69
69
|
);
|
|
70
|
-
var uninstallOpenAIAgents =
|
|
70
|
+
var uninstallOpenAIAgents = chunk3BGG7GH3_cjs.absorbErrorsSync(
|
|
71
71
|
(openaiAgentsModule) => {
|
|
72
72
|
if (!openaiAgentsModule || typeof openaiAgentsModule !== "object") return;
|
|
73
73
|
const mod = openaiAgentsModule;
|
|
@@ -120,7 +120,7 @@ function buildPatchedRun(original, options) {
|
|
|
120
120
|
const agentName = (agent && typeof agent === "object" && typeof agent.name === "string" && agent.name.length > 0 ? agent.name : void 0) ?? options.defaultAgentName ?? "openai-agent";
|
|
121
121
|
const model = stringifyModel(agent?.model);
|
|
122
122
|
const runWithSpan = async () => {
|
|
123
|
-
const handle =
|
|
123
|
+
const handle = chunkEFUQVASI_cjs.emitAgentSpan({
|
|
124
124
|
adapter: "openai-agents",
|
|
125
125
|
agentName,
|
|
126
126
|
model
|
|
@@ -138,13 +138,13 @@ function buildPatchedRun(original, options) {
|
|
|
138
138
|
throw err;
|
|
139
139
|
}
|
|
140
140
|
};
|
|
141
|
-
if (
|
|
141
|
+
if (chunkDXWHT3HK_cjs.getActiveTraceState() !== null) {
|
|
142
142
|
return runWithSpan();
|
|
143
143
|
}
|
|
144
144
|
return (async () => {
|
|
145
145
|
let captured;
|
|
146
146
|
let caughtErr;
|
|
147
|
-
const runResult = await
|
|
147
|
+
const runResult = await chunkDXWHT3HK_cjs.runAsync({ agentName }, async (runHandle) => {
|
|
148
148
|
try {
|
|
149
149
|
captured = await runWithSpan();
|
|
150
150
|
runHandle.setOutcome(true);
|
|
@@ -173,10 +173,10 @@ function installLlmAndToolInstrumentation(runner, options) {
|
|
|
173
173
|
const opts = options ?? {};
|
|
174
174
|
const llmStack = [];
|
|
175
175
|
const toolStack = [];
|
|
176
|
-
const onLlmStart =
|
|
176
|
+
const onLlmStart = chunk3BGG7GH3_cjs.absorbErrorsSync(
|
|
177
177
|
(event) => {
|
|
178
178
|
const contextSegments = chunk3643DC7K_cjs.decomposeOpenAiMessages(event.llm?.messages, event.llm?.tools);
|
|
179
|
-
const handle =
|
|
179
|
+
const handle = chunkEFUQVASI_cjs.emitLlmSpan({
|
|
180
180
|
adapter: ADAPTER,
|
|
181
181
|
model: typeof event.llm?.model === "string" && event.llm.model.length > 0 ? event.llm.model : "unknown",
|
|
182
182
|
provider: typeof event.llm?.provider === "string" ? event.llm.provider : void 0,
|
|
@@ -186,7 +186,7 @@ function installLlmAndToolInstrumentation(runner, options) {
|
|
|
186
186
|
},
|
|
187
187
|
{ fingerprint: "morse.openai-agents.llm_call_start" }
|
|
188
188
|
);
|
|
189
|
-
const onLlmEnd =
|
|
189
|
+
const onLlmEnd = chunk3BGG7GH3_cjs.absorbErrorsSync(
|
|
190
190
|
(event) => {
|
|
191
191
|
const handle = llmStack.shift();
|
|
192
192
|
if (handle === void 0) return;
|
|
@@ -218,14 +218,14 @@ function installLlmAndToolInstrumentation(runner, options) {
|
|
|
218
218
|
},
|
|
219
219
|
{ fingerprint: "morse.openai-agents.llm_call_end" }
|
|
220
220
|
);
|
|
221
|
-
const onToolStart =
|
|
221
|
+
const onToolStart = chunk3BGG7GH3_cjs.absorbErrorsSync(
|
|
222
222
|
(event) => {
|
|
223
223
|
const toolName = typeof event.tool?.name === "string" && event.tool.name.length > 0 ? event.tool.name : "unknown";
|
|
224
|
-
const inputSummary =
|
|
224
|
+
const inputSummary = chunkYNUZGKUA_cjs.summarizeToolInput(
|
|
225
225
|
event.tool?.input,
|
|
226
226
|
opts.toolInputMaxBytes !== void 0 ? { maxBytes: opts.toolInputMaxBytes } : void 0
|
|
227
227
|
);
|
|
228
|
-
const handle =
|
|
228
|
+
const handle = chunkEFUQVASI_cjs.emitToolSpan({
|
|
229
229
|
adapter: ADAPTER,
|
|
230
230
|
toolName,
|
|
231
231
|
inputSummary
|
|
@@ -234,11 +234,11 @@ function installLlmAndToolInstrumentation(runner, options) {
|
|
|
234
234
|
},
|
|
235
235
|
{ fingerprint: "morse.openai-agents.tool_call_start" }
|
|
236
236
|
);
|
|
237
|
-
const onToolEnd =
|
|
237
|
+
const onToolEnd = chunk3BGG7GH3_cjs.absorbErrorsSync(
|
|
238
238
|
(event) => {
|
|
239
239
|
const handle = toolStack.shift();
|
|
240
240
|
if (handle === void 0) return;
|
|
241
|
-
const outputSummary =
|
|
241
|
+
const outputSummary = chunkYNUZGKUA_cjs.summarizeToolOutput(
|
|
242
242
|
event.tool?.output,
|
|
243
243
|
opts.toolOutputMaxBytes !== void 0 ? { maxBytes: opts.toolOutputMaxBytes } : void 0
|
|
244
244
|
);
|
|
@@ -292,7 +292,7 @@ var _handleHandoffEvent = (event) => {
|
|
|
292
292
|
handoff_from: from
|
|
293
293
|
};
|
|
294
294
|
if (reason !== void 0) attributes.handoff_reason = reason;
|
|
295
|
-
const handle =
|
|
295
|
+
const handle = chunkEFUQVASI_cjs.emitSubagentSpan({
|
|
296
296
|
adapter: "openai-agents",
|
|
297
297
|
parentAgentName: from,
|
|
298
298
|
subagentName: to,
|
|
@@ -301,7 +301,7 @@ var _handleHandoffEvent = (event) => {
|
|
|
301
301
|
});
|
|
302
302
|
handle?.end();
|
|
303
303
|
};
|
|
304
|
-
var handleHandoffEvent =
|
|
304
|
+
var handleHandoffEvent = chunk3BGG7GH3_cjs.absorbErrorsSync(_handleHandoffEvent, {
|
|
305
305
|
fingerprint: "morse.adapters.openai-agents.handoff.listener"
|
|
306
306
|
});
|
|
307
307
|
function installHandoffInstrumentation(runner) {
|
|
@@ -338,7 +338,7 @@ var _handleGuardrailEvent = (payload) => {
|
|
|
338
338
|
const guardrailMeta = { passed };
|
|
339
339
|
if (name !== void 0) guardrailMeta.name = name;
|
|
340
340
|
if (reason !== void 0) guardrailMeta.reason = reason;
|
|
341
|
-
const handle =
|
|
341
|
+
const handle = chunkEFUQVASI_cjs.emitToolSpan({
|
|
342
342
|
adapter: "openai-agents",
|
|
343
343
|
toolName: `guardrail.${name ?? "anon"}`,
|
|
344
344
|
success: passed
|
|
@@ -355,7 +355,7 @@ var _handleGuardrailEvent = (payload) => {
|
|
|
355
355
|
handle.end(new Error(`guardrail failed: ${reason ?? "no reason"}`));
|
|
356
356
|
}
|
|
357
357
|
};
|
|
358
|
-
var handleGuardrailEvent =
|
|
358
|
+
var handleGuardrailEvent = chunk3BGG7GH3_cjs.absorbErrorsSync(
|
|
359
359
|
_handleGuardrailEvent,
|
|
360
360
|
{ fingerprint: "morse.openai-agents.guardrail.handle" }
|
|
361
361
|
);
|
|
@@ -500,32 +500,32 @@ var MorseTraceProcessor = class {
|
|
|
500
500
|
const name = typeof d.name === "string" && d.name.length > 0 ? d.name : void 0;
|
|
501
501
|
switch (type) {
|
|
502
502
|
case "agent":
|
|
503
|
-
return
|
|
503
|
+
return chunkEFUQVASI_cjs.emitAgentSpan({
|
|
504
504
|
adapter: ADAPTER2,
|
|
505
505
|
agentName: name ?? "openai-agent"
|
|
506
506
|
});
|
|
507
507
|
case "generation":
|
|
508
508
|
case "response": {
|
|
509
509
|
const model = typeof d.model === "string" && d.model.length > 0 ? d.model : "unknown";
|
|
510
|
-
return
|
|
510
|
+
return chunkEFUQVASI_cjs.emitLlmSpan({ adapter: ADAPTER2, model });
|
|
511
511
|
}
|
|
512
512
|
case "function": {
|
|
513
513
|
const inputOpts = this.options.toolInputMaxBytes ? { maxBytes: this.options.toolInputMaxBytes } : void 0;
|
|
514
|
-
return
|
|
514
|
+
return chunkEFUQVASI_cjs.emitToolSpan({
|
|
515
515
|
adapter: ADAPTER2,
|
|
516
516
|
toolName: name ?? "function",
|
|
517
|
-
inputSummary: d.input !== void 0 ?
|
|
517
|
+
inputSummary: d.input !== void 0 ? chunkYNUZGKUA_cjs.summarizeToolInput(d.input, inputOpts) : void 0
|
|
518
518
|
});
|
|
519
519
|
}
|
|
520
520
|
case "handoff":
|
|
521
|
-
return
|
|
521
|
+
return chunkEFUQVASI_cjs.emitSubagentSpan({
|
|
522
522
|
adapter: ADAPTER2,
|
|
523
523
|
parentAgentName: typeof d.from_agent === "string" ? d.from_agent : "unknown",
|
|
524
524
|
subagentName: typeof d.to_agent === "string" ? d.to_agent : name ?? "unknown",
|
|
525
525
|
taskDescription: typeof d.reason === "string" ? d.reason : void 0
|
|
526
526
|
});
|
|
527
527
|
case "guardrail": {
|
|
528
|
-
const handle =
|
|
528
|
+
const handle = chunkEFUQVASI_cjs.emitToolSpan({
|
|
529
529
|
adapter: ADAPTER2,
|
|
530
530
|
toolName: `guardrail.${name ?? "anon"}`
|
|
531
531
|
});
|
|
@@ -543,17 +543,17 @@ var MorseTraceProcessor = class {
|
|
|
543
543
|
return handle;
|
|
544
544
|
}
|
|
545
545
|
case "mcp_list_tools":
|
|
546
|
-
return
|
|
546
|
+
return chunkEFUQVASI_cjs.emitToolSpan({
|
|
547
547
|
adapter: ADAPTER2,
|
|
548
548
|
toolName: `mcp.list_tools.${name ?? "anon"}`
|
|
549
549
|
});
|
|
550
550
|
case "custom":
|
|
551
|
-
return
|
|
551
|
+
return chunkEFUQVASI_cjs.emitToolSpan({
|
|
552
552
|
adapter: ADAPTER2,
|
|
553
553
|
toolName: `custom.${name ?? "anon"}`
|
|
554
554
|
});
|
|
555
555
|
default:
|
|
556
|
-
return
|
|
556
|
+
return chunkEFUQVASI_cjs.emitToolSpan({
|
|
557
557
|
adapter: ADAPTER2,
|
|
558
558
|
toolName: `${type || "unknown"}.${name ?? "anon"}`
|
|
559
559
|
});
|
|
@@ -582,7 +582,7 @@ var MorseTraceProcessor = class {
|
|
|
582
582
|
const outputOpts = this.options.toolOutputMaxBytes ? { maxBytes: this.options.toolOutputMaxBytes } : void 0;
|
|
583
583
|
handle.span.metadata = {
|
|
584
584
|
...handle.span.metadata ?? {},
|
|
585
|
-
tool_output_summary:
|
|
585
|
+
tool_output_summary: chunkYNUZGKUA_cjs.summarizeToolOutput(d.output, outputOpts)
|
|
586
586
|
};
|
|
587
587
|
}
|
|
588
588
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { summarizeToolInput, summarizeToolOutput } from '../chunk-
|
|
2
|
-
import { emitSubagentSpan, emitToolSpan, emitAgentSpan, emitLlmSpan } from '../chunk-
|
|
3
|
-
import { absorbErrorsAsync, absorbErrorsSync } from '../chunk-
|
|
1
|
+
import { summarizeToolInput, summarizeToolOutput } from '../chunk-AYNX24P5.js';
|
|
2
|
+
import { emitSubagentSpan, emitToolSpan, emitAgentSpan, emitLlmSpan } from '../chunk-F7BGQ26H.js';
|
|
3
|
+
import { absorbErrorsAsync, absorbErrorsSync } from '../chunk-YHV5GL32.js';
|
|
4
4
|
import { calculateCost } from '../chunk-4FALQMOZ.js';
|
|
5
5
|
import { decomposeOpenAiMessages } from '../chunk-QWRQJO57.js';
|
|
6
|
-
import { init_tracing, getActiveTraceState, runAsync } from '../chunk-
|
|
6
|
+
import { init_tracing, getActiveTraceState, runAsync } from '../chunk-F3B4UR64.js';
|
|
7
7
|
|
|
8
8
|
// src/openai-agents/runner-wrapper.ts
|
|
9
9
|
init_tracing();
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkEFUQVASI_cjs = require('../chunk-EFUQVASI.cjs');
|
|
4
|
+
require('../chunk-3BGG7GH3.cjs');
|
|
5
5
|
var chunkSWQOPFE4_cjs = require('../chunk-SWQOPFE4.cjs');
|
|
6
6
|
var chunk3643DC7K_cjs = require('../chunk-3643DC7K.cjs');
|
|
7
|
-
var
|
|
7
|
+
var chunkDXWHT3HK_cjs = require('../chunk-DXWHT3HK.cjs');
|
|
8
8
|
|
|
9
9
|
// src/vercel-ai/index.ts
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
chunkDXWHT3HK_cjs.init_tracing();
|
|
11
|
+
chunkDXWHT3HK_cjs.init_propagation();
|
|
12
12
|
var ADAPTER = "vercel-ai";
|
|
13
13
|
async function createTracedVercelAI(options = {}) {
|
|
14
14
|
const aiModule = await loadAiModule(options.aiModule);
|
|
@@ -71,11 +71,11 @@ function contextSegmentsFor(args) {
|
|
|
71
71
|
function wrapStreamText(original, options) {
|
|
72
72
|
const agentName = options.defaultAgentName ?? "vercel-ai.streamText";
|
|
73
73
|
return function patchedStreamText(...args) {
|
|
74
|
-
const inTrace =
|
|
74
|
+
const inTrace = chunkDXWHT3HK_cjs.getActiveTraceState() !== null;
|
|
75
75
|
const callArgs = args[0] ?? {};
|
|
76
76
|
const model = modelLabel(callArgs);
|
|
77
77
|
if (inTrace) {
|
|
78
|
-
const handle =
|
|
78
|
+
const handle = chunkEFUQVASI_cjs.emitLlmSpan({
|
|
79
79
|
adapter: ADAPTER,
|
|
80
80
|
model: model ?? "unknown",
|
|
81
81
|
attributes: { max_steps: callArgs.maxSteps ?? 1 }
|
|
@@ -94,9 +94,9 @@ function wrapStreamText(original, options) {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
let result;
|
|
97
|
-
void
|
|
97
|
+
void chunkDXWHT3HK_cjs.runAsync({ agentName }, async (runHandle) => {
|
|
98
98
|
runHandle.setOutcome(true);
|
|
99
|
-
const handle =
|
|
99
|
+
const handle = chunkEFUQVASI_cjs.emitLlmSpan({
|
|
100
100
|
adapter: ADAPTER,
|
|
101
101
|
model: model ?? "unknown",
|
|
102
102
|
attributes: { max_steps: callArgs.maxSteps ?? 1 }
|
|
@@ -177,9 +177,9 @@ function wrapGenerate(original, spanName, options) {
|
|
|
177
177
|
return function patched(...args) {
|
|
178
178
|
const callArgs = args[0] ?? {};
|
|
179
179
|
const model = modelLabel(callArgs);
|
|
180
|
-
const inTrace =
|
|
180
|
+
const inTrace = chunkDXWHT3HK_cjs.getActiveTraceState() !== null;
|
|
181
181
|
const work = async () => {
|
|
182
|
-
const handle =
|
|
182
|
+
const handle = chunkEFUQVASI_cjs.emitLlmSpan({
|
|
183
183
|
adapter: ADAPTER,
|
|
184
184
|
model: model ?? "unknown",
|
|
185
185
|
attributes: { max_steps: callArgs.maxSteps ?? 1 }
|
|
@@ -204,7 +204,7 @@ function wrapGenerate(original, spanName, options) {
|
|
|
204
204
|
if (inTrace) {
|
|
205
205
|
return work();
|
|
206
206
|
}
|
|
207
|
-
return
|
|
207
|
+
return chunkDXWHT3HK_cjs.runAsync({ agentName }, async (runHandle) => {
|
|
208
208
|
runHandle.setOutcome(true);
|
|
209
209
|
return work();
|
|
210
210
|
});
|
|
@@ -212,13 +212,13 @@ function wrapGenerate(original, spanName, options) {
|
|
|
212
212
|
}
|
|
213
213
|
function wrapFetch(original) {
|
|
214
214
|
const patched = function patched2(input, init) {
|
|
215
|
-
const state =
|
|
215
|
+
const state = chunkDXWHT3HK_cjs.getActiveTraceState();
|
|
216
216
|
if (state === null) {
|
|
217
217
|
return original(input, init);
|
|
218
218
|
}
|
|
219
219
|
try {
|
|
220
220
|
const merged = new Headers(init?.headers ?? {});
|
|
221
|
-
|
|
221
|
+
chunkDXWHT3HK_cjs.injectTraceparent(merged);
|
|
222
222
|
const next = { ...init ?? {}, headers: merged };
|
|
223
223
|
return original(input, next);
|
|
224
224
|
} catch {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { emitLlmSpan } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
import { emitLlmSpan } from '../chunk-F7BGQ26H.js';
|
|
2
|
+
import '../chunk-YHV5GL32.js';
|
|
3
3
|
import { calculateCost } from '../chunk-4FALQMOZ.js';
|
|
4
4
|
import { decomposeOpenAiMessages } from '../chunk-QWRQJO57.js';
|
|
5
|
-
import { init_tracing, init_propagation, getActiveTraceState, runAsync, injectTraceparent } from '../chunk-
|
|
5
|
+
import { init_tracing, init_propagation, getActiveTraceState, runAsync, injectTraceparent } from '../chunk-F3B4UR64.js';
|
|
6
6
|
|
|
7
7
|
// src/vercel-ai/index.ts
|
|
8
8
|
init_tracing();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkT2KW3P23_cjs = require('./chunk-T2KW3P23.cjs');
|
|
4
|
+
var chunkHNCWTENX_cjs = require('./chunk-HNCWTENX.cjs');
|
|
5
5
|
|
|
6
6
|
// src/_agent-sdk-common/span-emitter.ts
|
|
7
|
-
|
|
7
|
+
chunkHNCWTENX_cjs.init_tracing();
|
|
8
8
|
var MAX_NAME_BYTES = 256;
|
|
9
9
|
var MAX_DESCRIPTION_BYTES = 2048;
|
|
10
10
|
function truncate(value, maxBytes) {
|
|
@@ -25,7 +25,7 @@ var _emitAgentSpan = (opts) => {
|
|
|
25
25
|
adapter,
|
|
26
26
|
agent_name: agentName
|
|
27
27
|
};
|
|
28
|
-
const handle =
|
|
28
|
+
const handle = chunkHNCWTENX_cjs.startSpan({
|
|
29
29
|
name: `${adapter}.agent`,
|
|
30
30
|
type: "agent",
|
|
31
31
|
metadata
|
|
@@ -37,7 +37,7 @@ var _emitAgentSpan = (opts) => {
|
|
|
37
37
|
}
|
|
38
38
|
return handle;
|
|
39
39
|
};
|
|
40
|
-
var emitAgentSpan =
|
|
40
|
+
var emitAgentSpan = chunkT2KW3P23_cjs.absorbErrorsSync(
|
|
41
41
|
_emitAgentSpan,
|
|
42
42
|
{
|
|
43
43
|
fingerprint: "morse.adapters.shared.emitAgentSpan"
|
|
@@ -54,7 +54,7 @@ var _emitLlmSpan = (opts) => {
|
|
|
54
54
|
if (typeof opts.provider === "string" && opts.provider.length > 0) {
|
|
55
55
|
metadata.provider = opts.provider;
|
|
56
56
|
}
|
|
57
|
-
const handle =
|
|
57
|
+
const handle = chunkHNCWTENX_cjs.startSpan({
|
|
58
58
|
name: `${adapter}.llm`,
|
|
59
59
|
type: "llm",
|
|
60
60
|
metadata
|
|
@@ -78,7 +78,7 @@ var _emitLlmSpan = (opts) => {
|
|
|
78
78
|
}
|
|
79
79
|
return handle;
|
|
80
80
|
};
|
|
81
|
-
var emitLlmSpan =
|
|
81
|
+
var emitLlmSpan = chunkT2KW3P23_cjs.absorbErrorsSync(
|
|
82
82
|
_emitLlmSpan,
|
|
83
83
|
{
|
|
84
84
|
fingerprint: "morse.adapters.shared.emitLlmSpan"
|
|
@@ -99,13 +99,13 @@ var _emitToolSpan = (opts) => {
|
|
|
99
99
|
adapter,
|
|
100
100
|
tool
|
|
101
101
|
};
|
|
102
|
-
return
|
|
102
|
+
return chunkHNCWTENX_cjs.startSpan({
|
|
103
103
|
name: `${adapter}.tool.${toolName}`,
|
|
104
104
|
type: "tool",
|
|
105
105
|
metadata
|
|
106
106
|
});
|
|
107
107
|
};
|
|
108
|
-
var emitToolSpan =
|
|
108
|
+
var emitToolSpan = chunkT2KW3P23_cjs.absorbErrorsSync(
|
|
109
109
|
_emitToolSpan,
|
|
110
110
|
{
|
|
111
111
|
fingerprint: "morse.adapters.shared.emitToolSpan"
|
|
@@ -125,13 +125,13 @@ var _emitSubagentSpan = (opts) => {
|
|
|
125
125
|
if (typeof opts.taskDescription === "string" && opts.taskDescription.length > 0) {
|
|
126
126
|
metadata.task_description = truncate(opts.taskDescription, MAX_DESCRIPTION_BYTES);
|
|
127
127
|
}
|
|
128
|
-
return
|
|
128
|
+
return chunkHNCWTENX_cjs.startSpan({
|
|
129
129
|
name: `${adapter}.subagent.${subagentName}`,
|
|
130
130
|
type: "agent",
|
|
131
131
|
metadata
|
|
132
132
|
});
|
|
133
133
|
};
|
|
134
|
-
var emitSubagentSpan =
|
|
134
|
+
var emitSubagentSpan = chunkT2KW3P23_cjs.absorbErrorsSync(_emitSubagentSpan, {
|
|
135
135
|
fingerprint: "morse.adapters.shared.emitSubagentSpan"
|
|
136
136
|
});
|
|
137
137
|
var _emitHookSpan = (opts) => {
|
|
@@ -155,13 +155,13 @@ var _emitHookSpan = (opts) => {
|
|
|
155
155
|
tool_kind: "hook",
|
|
156
156
|
hook
|
|
157
157
|
};
|
|
158
|
-
return
|
|
158
|
+
return chunkHNCWTENX_cjs.startSpan({
|
|
159
159
|
name: `${adapter}.hook.${hookKind}.${hookName}`,
|
|
160
160
|
type: "tool",
|
|
161
161
|
metadata
|
|
162
162
|
});
|
|
163
163
|
};
|
|
164
|
-
var emitHookSpan =
|
|
164
|
+
var emitHookSpan = chunkT2KW3P23_cjs.absorbErrorsSync(
|
|
165
165
|
_emitHookSpan,
|
|
166
166
|
{
|
|
167
167
|
fingerprint: "morse.adapters.shared.emitHookSpan"
|
|
@@ -173,5 +173,5 @@ exports.emitHookSpan = emitHookSpan;
|
|
|
173
173
|
exports.emitLlmSpan = emitLlmSpan;
|
|
174
174
|
exports.emitSubagentSpan = emitSubagentSpan;
|
|
175
175
|
exports.emitToolSpan = emitToolSpan;
|
|
176
|
-
//# sourceMappingURL=chunk-
|
|
177
|
-
//# sourceMappingURL=chunk-
|
|
176
|
+
//# sourceMappingURL=chunk-5D6SBSEI.cjs.map
|
|
177
|
+
//# sourceMappingURL=chunk-5D6SBSEI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/_agent-sdk-common/span-emitter.ts"],"names":["init_tracing","startSpan","absorbErrorsSync"],"mappings":"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","file":"chunk-KZBCOZIQ.cjs","sourcesContent":["/**\n * `_agent-sdk-common/span-emitter.ts` — shared span-emission helpers used by\n * all three agent-SDK adapters (`anthropic-agent-sdk`, `openai-agents`,\n * `langgraph-js`).\n *\n * Each helper:\n *\n * 1. Validates the required metadata for its logical span type.\n * 2. Calls `startSpan(...)` from `_internal/tracing.ts` to allocate the\n * wire-format span and push it onto the active trace's span stack.\n * 3. Tags `metadata.adapter` on every span so the UI can attribute spans\n * back to their adapter origin.\n * 4. Hydrates type-specific top-level fields (`model`, `input_tokens`,\n * `output_tokens`, `total_tokens`, `context_segments`) onto `SpanData`.\n * 5. Returns the `SpanHandle` so callers can later call `.end(err?)`.\n *\n * All helpers are wrapped in `absorbErrorsSync` — telemetry MUST NOT throw\n * at the caller. If `startSpan` returns `null` (no active trace), the\n * helper also returns `null`; callers must tolerate this case.\n *\n * Logical → wire `type` mapping (per `design.md` §Span schema):\n *\n * agent → \"agent\"\n * llm → \"llm\"\n * tool → \"tool\"\n * subagent → \"agent\" + metadata.spawn_kind = \"subagent\"\n * hook → \"tool\" + metadata.tool_kind = \"hook\"\n *\n * Adapter-flavoured redaction (tool-arg truncation, base64/image\n * stripping) lives in a sibling `redaction.ts` (W1.2). This file is\n * intentionally agnostic: the only redaction it applies is a minimal\n * string-length guard on free-form fields that would otherwise blow up\n * the wire payload (task descriptions, hook names, tool names).\n */\n\nimport { absorbErrorsSync } from \"../_internal/errors\";\nimport type { ContextSegment, SpanData } from \"../_internal/spans\";\nimport { startSpan, type SpanHandle } from \"../_internal/tracing\";\n\n/* ------------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------------ */\n\nexport type AdapterName = \"anthropic-agent-sdk\" | \"openai-agents\" | \"langgraph-js\" | \"vercel-ai\";\n\n/** Soft cap for free-form identifier-ish strings (tool names, hook names, etc.). */\nconst MAX_NAME_BYTES = 256;\n\n/** Soft cap for free-form description strings (task descriptions). */\nconst MAX_DESCRIPTION_BYTES = 2048;\n\n/** Trim a string to `maxBytes` bytes (UTF-8 codepoint-safe at the JS-string level). */\nfunction truncate(value: string, maxBytes: number): string {\n if (value.length <= maxBytes) return value;\n return `${value.slice(0, maxBytes)}…[truncated]`;\n}\n\nfunction requireNonEmpty(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`morse span-emitter: ${field} must be a non-empty string`);\n }\n return value;\n}\n\n/* ------------------------------------------------------------------------ */\n/* emitAgentSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitAgentSpanOptions {\n adapter: AdapterName;\n agentName: string;\n model?: string;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitAgentSpan = (opts: EmitAgentSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const agentName = requireNonEmpty(opts.agentName, \"agentName\");\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n agent_name: agentName,\n };\n const handle = startSpan({\n name: `${adapter}.agent`,\n type: \"agent\",\n metadata,\n });\n if (handle === null) return null;\n if (typeof opts.model === \"string\" && opts.model.length > 0) {\n handle.span.model = opts.model;\n metadata.model = opts.model;\n }\n return handle;\n};\n\n/**\n * Emit a wire `type=agent` span. Returns `null` when no active trace exists\n * (callers MUST tolerate this); never throws.\n */\nexport const emitAgentSpan: (opts: EmitAgentSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitAgentSpan,\n {\n fingerprint: \"morse.adapters.shared.emitAgentSpan\",\n },\n) as (opts: EmitAgentSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitLlmSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitLlmSpanOptions {\n adapter: AdapterName;\n model: string;\n provider?: string;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n contextSegments?: ContextSegment[];\n attributes?: Record<string, unknown>;\n}\n\nconst _emitLlmSpan = (opts: EmitLlmSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const model = requireNonEmpty(opts.model, \"model\");\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n model,\n };\n if (typeof opts.provider === \"string\" && opts.provider.length > 0) {\n metadata.provider = opts.provider;\n }\n const handle = startSpan({\n name: `${adapter}.llm`,\n type: \"llm\",\n metadata,\n });\n if (handle === null) return null;\n const span: SpanData = handle.span;\n span.model = model;\n if (typeof opts.inputTokens === \"number\" && Number.isFinite(opts.inputTokens)) {\n span.input_tokens = opts.inputTokens;\n }\n if (typeof opts.outputTokens === \"number\" && Number.isFinite(opts.outputTokens)) {\n span.output_tokens = opts.outputTokens;\n }\n if (typeof opts.totalTokens === \"number\" && Number.isFinite(opts.totalTokens)) {\n span.total_tokens = opts.totalTokens;\n } else if (span.input_tokens !== undefined && span.output_tokens !== undefined) {\n span.total_tokens = span.input_tokens + span.output_tokens;\n }\n if (Array.isArray(opts.contextSegments)) {\n span.context_segments = opts.contextSegments;\n }\n return handle;\n};\n\n/**\n * Emit a wire `type=llm` span. Returns `null` when no active trace exists;\n * never throws. Hydrates `model`, `input_tokens`, `output_tokens`,\n * `total_tokens` (derived if absent), and `context_segments` onto the\n * underlying `SpanData` so downstream consumers see them at the top level\n * — not buried in `metadata`.\n */\nexport const emitLlmSpan: (opts: EmitLlmSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitLlmSpan,\n {\n fingerprint: \"morse.adapters.shared.emitLlmSpan\",\n },\n) as (opts: EmitLlmSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitToolSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitToolSpanOptions {\n adapter: AdapterName;\n toolName: string;\n inputSummary?: unknown;\n outputSummary?: unknown;\n durationMs?: number;\n success?: boolean;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitToolSpan = (opts: EmitToolSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const toolName = truncate(requireNonEmpty(opts.toolName, \"toolName\"), MAX_NAME_BYTES);\n const tool: Record<string, unknown> = { name: toolName };\n if (opts.inputSummary !== undefined) tool.input_summary = opts.inputSummary;\n if (opts.outputSummary !== undefined) tool.output_summary = opts.outputSummary;\n if (typeof opts.durationMs === \"number\" && Number.isFinite(opts.durationMs)) {\n tool.duration_ms = opts.durationMs;\n }\n if (typeof opts.success === \"boolean\") tool.success = opts.success;\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n tool,\n };\n return startSpan({\n name: `${adapter}.tool.${toolName}`,\n type: \"tool\",\n metadata,\n });\n};\n\n/**\n * Emit a wire `type=tool` span. Returns `null` when no active trace exists;\n * never throws.\n */\nexport const emitToolSpan: (opts: EmitToolSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitToolSpan,\n {\n fingerprint: \"morse.adapters.shared.emitToolSpan\",\n },\n) as (opts: EmitToolSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitSubagentSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitSubagentSpanOptions {\n adapter: AdapterName;\n parentAgentName: string;\n subagentName: string;\n taskDescription?: string;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitSubagentSpan = (opts: EmitSubagentSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const parentAgentName = requireNonEmpty(opts.parentAgentName, \"parentAgentName\");\n const subagentName = requireNonEmpty(opts.subagentName, \"subagentName\");\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n spawn_kind: \"subagent\",\n parent_agent_name: parentAgentName,\n subagent_name: subagentName,\n };\n if (typeof opts.taskDescription === \"string\" && opts.taskDescription.length > 0) {\n metadata.task_description = truncate(opts.taskDescription, MAX_DESCRIPTION_BYTES);\n }\n return startSpan({\n name: `${adapter}.subagent.${subagentName}`,\n type: \"agent\",\n metadata,\n });\n};\n\n/**\n * Emit a wire `type=agent` span with `metadata.spawn_kind=\"subagent\"` — the\n * UI inspects this metadata key to render subagent-spawn relationships\n * until the backend gains a native `subagent` enum value. Returns `null`\n * when no active trace exists; never throws.\n */\nexport const emitSubagentSpan: (opts: EmitSubagentSpanOptions) => SpanHandle | null =\n absorbErrorsSync(_emitSubagentSpan, {\n fingerprint: \"morse.adapters.shared.emitSubagentSpan\",\n }) as (opts: EmitSubagentSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitHookSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitHookSpanOptions {\n adapter: AdapterName;\n hookName: string;\n hookKind: \"pre_tool\" | \"post_tool\" | \"on_error\";\n durationMs?: number;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitHookSpan = (opts: EmitHookSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const hookName = truncate(requireNonEmpty(opts.hookName, \"hookName\"), MAX_NAME_BYTES);\n const hookKind = opts.hookKind;\n if (hookKind !== \"pre_tool\" && hookKind !== \"post_tool\" && hookKind !== \"on_error\") {\n throw new Error(\n `morse span-emitter: hookKind must be one of pre_tool|post_tool|on_error (got ${String(\n hookKind,\n )})`,\n );\n }\n const hook: Record<string, unknown> = { name: hookName, kind: hookKind };\n if (typeof opts.durationMs === \"number\" && Number.isFinite(opts.durationMs)) {\n hook.duration_ms = opts.durationMs;\n }\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n tool_kind: \"hook\",\n hook,\n };\n return startSpan({\n name: `${adapter}.hook.${hookKind}.${hookName}`,\n type: \"tool\",\n metadata,\n });\n};\n\n/**\n * Emit a wire `type=tool` span with `metadata.tool_kind=\"hook\"` — the UI\n * inspects this metadata key to render hook spans separately from regular\n * tool spans. Returns `null` when no active trace exists; never throws.\n */\nexport const emitHookSpan: (opts: EmitHookSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitHookSpan,\n {\n fingerprint: \"morse.adapters.shared.emitHookSpan\",\n },\n) as (opts: EmitHookSpanOptions) => SpanHandle | null;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/_agent-sdk-common/span-emitter.ts"],"names":["init_tracing","startSpan","absorbErrorsSync"],"mappings":"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","file":"chunk-5D6SBSEI.cjs","sourcesContent":["/**\n * `_agent-sdk-common/span-emitter.ts` — shared span-emission helpers used by\n * all three agent-SDK adapters (`anthropic-agent-sdk`, `openai-agents`,\n * `langgraph-js`).\n *\n * Each helper:\n *\n * 1. Validates the required metadata for its logical span type.\n * 2. Calls `startSpan(...)` from `_internal/tracing.ts` to allocate the\n * wire-format span and push it onto the active trace's span stack.\n * 3. Tags `metadata.adapter` on every span so the UI can attribute spans\n * back to their adapter origin.\n * 4. Hydrates type-specific top-level fields (`model`, `input_tokens`,\n * `output_tokens`, `total_tokens`, `context_segments`) onto `SpanData`.\n * 5. Returns the `SpanHandle` so callers can later call `.end(err?)`.\n *\n * All helpers are wrapped in `absorbErrorsSync` — telemetry MUST NOT throw\n * at the caller. If `startSpan` returns `null` (no active trace), the\n * helper also returns `null`; callers must tolerate this case.\n *\n * Logical → wire `type` mapping (per `design.md` §Span schema):\n *\n * agent → \"agent\"\n * llm → \"llm\"\n * tool → \"tool\"\n * subagent → \"agent\" + metadata.spawn_kind = \"subagent\"\n * hook → \"tool\" + metadata.tool_kind = \"hook\"\n *\n * Adapter-flavoured redaction (tool-arg truncation, base64/image\n * stripping) lives in a sibling `redaction.ts` (W1.2). This file is\n * intentionally agnostic: the only redaction it applies is a minimal\n * string-length guard on free-form fields that would otherwise blow up\n * the wire payload (task descriptions, hook names, tool names).\n */\n\nimport { absorbErrorsSync } from \"../_internal/errors\";\nimport type { ContextSegment, SpanData } from \"../_internal/spans\";\nimport { startSpan, type SpanHandle } from \"../_internal/tracing\";\n\n/* ------------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------------ */\n\nexport type AdapterName = \"anthropic-agent-sdk\" | \"openai-agents\" | \"langgraph-js\" | \"vercel-ai\";\n\n/** Soft cap for free-form identifier-ish strings (tool names, hook names, etc.). */\nconst MAX_NAME_BYTES = 256;\n\n/** Soft cap for free-form description strings (task descriptions). */\nconst MAX_DESCRIPTION_BYTES = 2048;\n\n/** Trim a string to `maxBytes` bytes (UTF-8 codepoint-safe at the JS-string level). */\nfunction truncate(value: string, maxBytes: number): string {\n if (value.length <= maxBytes) return value;\n return `${value.slice(0, maxBytes)}…[truncated]`;\n}\n\nfunction requireNonEmpty(value: unknown, field: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`morse span-emitter: ${field} must be a non-empty string`);\n }\n return value;\n}\n\n/* ------------------------------------------------------------------------ */\n/* emitAgentSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitAgentSpanOptions {\n adapter: AdapterName;\n agentName: string;\n model?: string;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitAgentSpan = (opts: EmitAgentSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const agentName = requireNonEmpty(opts.agentName, \"agentName\");\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n agent_name: agentName,\n };\n const handle = startSpan({\n name: `${adapter}.agent`,\n type: \"agent\",\n metadata,\n });\n if (handle === null) return null;\n if (typeof opts.model === \"string\" && opts.model.length > 0) {\n handle.span.model = opts.model;\n metadata.model = opts.model;\n }\n return handle;\n};\n\n/**\n * Emit a wire `type=agent` span. Returns `null` when no active trace exists\n * (callers MUST tolerate this); never throws.\n */\nexport const emitAgentSpan: (opts: EmitAgentSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitAgentSpan,\n {\n fingerprint: \"morse.adapters.shared.emitAgentSpan\",\n },\n) as (opts: EmitAgentSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitLlmSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitLlmSpanOptions {\n adapter: AdapterName;\n model: string;\n provider?: string;\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n contextSegments?: ContextSegment[];\n attributes?: Record<string, unknown>;\n}\n\nconst _emitLlmSpan = (opts: EmitLlmSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const model = requireNonEmpty(opts.model, \"model\");\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n model,\n };\n if (typeof opts.provider === \"string\" && opts.provider.length > 0) {\n metadata.provider = opts.provider;\n }\n const handle = startSpan({\n name: `${adapter}.llm`,\n type: \"llm\",\n metadata,\n });\n if (handle === null) return null;\n const span: SpanData = handle.span;\n span.model = model;\n if (typeof opts.inputTokens === \"number\" && Number.isFinite(opts.inputTokens)) {\n span.input_tokens = opts.inputTokens;\n }\n if (typeof opts.outputTokens === \"number\" && Number.isFinite(opts.outputTokens)) {\n span.output_tokens = opts.outputTokens;\n }\n if (typeof opts.totalTokens === \"number\" && Number.isFinite(opts.totalTokens)) {\n span.total_tokens = opts.totalTokens;\n } else if (span.input_tokens !== undefined && span.output_tokens !== undefined) {\n span.total_tokens = span.input_tokens + span.output_tokens;\n }\n if (Array.isArray(opts.contextSegments)) {\n span.context_segments = opts.contextSegments;\n }\n return handle;\n};\n\n/**\n * Emit a wire `type=llm` span. Returns `null` when no active trace exists;\n * never throws. Hydrates `model`, `input_tokens`, `output_tokens`,\n * `total_tokens` (derived if absent), and `context_segments` onto the\n * underlying `SpanData` so downstream consumers see them at the top level\n * — not buried in `metadata`.\n */\nexport const emitLlmSpan: (opts: EmitLlmSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitLlmSpan,\n {\n fingerprint: \"morse.adapters.shared.emitLlmSpan\",\n },\n) as (opts: EmitLlmSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitToolSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitToolSpanOptions {\n adapter: AdapterName;\n toolName: string;\n inputSummary?: unknown;\n outputSummary?: unknown;\n durationMs?: number;\n success?: boolean;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitToolSpan = (opts: EmitToolSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const toolName = truncate(requireNonEmpty(opts.toolName, \"toolName\"), MAX_NAME_BYTES);\n const tool: Record<string, unknown> = { name: toolName };\n if (opts.inputSummary !== undefined) tool.input_summary = opts.inputSummary;\n if (opts.outputSummary !== undefined) tool.output_summary = opts.outputSummary;\n if (typeof opts.durationMs === \"number\" && Number.isFinite(opts.durationMs)) {\n tool.duration_ms = opts.durationMs;\n }\n if (typeof opts.success === \"boolean\") tool.success = opts.success;\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n tool,\n };\n return startSpan({\n name: `${adapter}.tool.${toolName}`,\n type: \"tool\",\n metadata,\n });\n};\n\n/**\n * Emit a wire `type=tool` span. Returns `null` when no active trace exists;\n * never throws.\n */\nexport const emitToolSpan: (opts: EmitToolSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitToolSpan,\n {\n fingerprint: \"morse.adapters.shared.emitToolSpan\",\n },\n) as (opts: EmitToolSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitSubagentSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitSubagentSpanOptions {\n adapter: AdapterName;\n parentAgentName: string;\n subagentName: string;\n taskDescription?: string;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitSubagentSpan = (opts: EmitSubagentSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const parentAgentName = requireNonEmpty(opts.parentAgentName, \"parentAgentName\");\n const subagentName = requireNonEmpty(opts.subagentName, \"subagentName\");\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n spawn_kind: \"subagent\",\n parent_agent_name: parentAgentName,\n subagent_name: subagentName,\n };\n if (typeof opts.taskDescription === \"string\" && opts.taskDescription.length > 0) {\n metadata.task_description = truncate(opts.taskDescription, MAX_DESCRIPTION_BYTES);\n }\n return startSpan({\n name: `${adapter}.subagent.${subagentName}`,\n type: \"agent\",\n metadata,\n });\n};\n\n/**\n * Emit a wire `type=agent` span with `metadata.spawn_kind=\"subagent\"` — the\n * UI inspects this metadata key to render subagent-spawn relationships\n * until the backend gains a native `subagent` enum value. Returns `null`\n * when no active trace exists; never throws.\n */\nexport const emitSubagentSpan: (opts: EmitSubagentSpanOptions) => SpanHandle | null =\n absorbErrorsSync(_emitSubagentSpan, {\n fingerprint: \"morse.adapters.shared.emitSubagentSpan\",\n }) as (opts: EmitSubagentSpanOptions) => SpanHandle | null;\n\n/* ------------------------------------------------------------------------ */\n/* emitHookSpan */\n/* ------------------------------------------------------------------------ */\n\nexport interface EmitHookSpanOptions {\n adapter: AdapterName;\n hookName: string;\n hookKind: \"pre_tool\" | \"post_tool\" | \"on_error\";\n durationMs?: number;\n attributes?: Record<string, unknown>;\n}\n\nconst _emitHookSpan = (opts: EmitHookSpanOptions): SpanHandle | null => {\n const adapter = requireNonEmpty(opts.adapter, \"adapter\");\n const hookName = truncate(requireNonEmpty(opts.hookName, \"hookName\"), MAX_NAME_BYTES);\n const hookKind = opts.hookKind;\n if (hookKind !== \"pre_tool\" && hookKind !== \"post_tool\" && hookKind !== \"on_error\") {\n throw new Error(\n `morse span-emitter: hookKind must be one of pre_tool|post_tool|on_error (got ${String(\n hookKind,\n )})`,\n );\n }\n const hook: Record<string, unknown> = { name: hookName, kind: hookKind };\n if (typeof opts.durationMs === \"number\" && Number.isFinite(opts.durationMs)) {\n hook.duration_ms = opts.durationMs;\n }\n const metadata: Record<string, unknown> = {\n ...(opts.attributes ?? {}),\n adapter,\n tool_kind: \"hook\",\n hook,\n };\n return startSpan({\n name: `${adapter}.hook.${hookKind}.${hookName}`,\n type: \"tool\",\n metadata,\n });\n};\n\n/**\n * Emit a wire `type=tool` span with `metadata.tool_kind=\"hook\"` — the UI\n * inspects this metadata key to render hook spans separately from regular\n * tool spans. Returns `null` when no active trace exists; never throws.\n */\nexport const emitHookSpan: (opts: EmitHookSpanOptions) => SpanHandle | null = absorbErrorsSync(\n _emitHookSpan,\n {\n fingerprint: \"morse.adapters.shared.emitHookSpan\",\n },\n) as (opts: EmitHookSpanOptions) => SpanHandle | null;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { absorbErrorsSync } from './chunk-
|
|
1
|
+
import { absorbErrorsSync } from './chunk-POCQNSVD.js';
|
|
2
2
|
|
|
3
3
|
// src/_agent-sdk-common/redaction.ts
|
|
4
4
|
var DEFAULT_TOOL_ARG_MAX_BYTES = 2048;
|
|
@@ -408,5 +408,5 @@ function rotr(x, n) {
|
|
|
408
408
|
}
|
|
409
409
|
|
|
410
410
|
export { summarizeToolInput, summarizeToolOutput };
|
|
411
|
-
//# sourceMappingURL=chunk-
|
|
412
|
-
//# sourceMappingURL=chunk-
|
|
411
|
+
//# sourceMappingURL=chunk-AEFUXEKV.js.map
|
|
412
|
+
//# sourceMappingURL=chunk-AEFUXEKV.js.map
|