@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.
Files changed (93) hide show
  1. package/dist/anthropic/index.cjs +10 -10
  2. package/dist/anthropic/index.js +3 -3
  3. package/dist/anthropic-agent-sdk/index.cjs +32 -32
  4. package/dist/anthropic-agent-sdk/index.js +5 -5
  5. package/dist/browser/anthropic/index.cjs +10 -10
  6. package/dist/browser/anthropic/index.js +3 -3
  7. package/dist/browser/anthropic-agent-sdk/index.cjs +32 -32
  8. package/dist/browser/anthropic-agent-sdk/index.js +5 -5
  9. package/dist/{chunk-7EO7MQBA.cjs → browser/chunk-3BGG7GH3.cjs} +6 -6
  10. package/dist/browser/{chunk-KRBADE6R.cjs.map → chunk-3BGG7GH3.cjs.map} +1 -1
  11. package/dist/browser/{chunk-JBOYFQSB.js → chunk-AYNX24P5.js} +3 -3
  12. package/dist/browser/{chunk-JBOYFQSB.js.map → chunk-AYNX24P5.js.map} +1 -1
  13. package/dist/{chunk-ME5JALGT.js → browser/chunk-DOLWR7LD.js} +4 -4
  14. package/dist/browser/{chunk-7MSXWGAH.js.map → chunk-DOLWR7LD.js.map} +1 -1
  15. package/dist/browser/{chunk-O4HG3OSK.cjs → chunk-DXWHT3HK.cjs} +13 -4
  16. package/dist/browser/chunk-DXWHT3HK.cjs.map +1 -0
  17. package/dist/browser/{chunk-B7DEUDP6.cjs → chunk-EFUQVASI.cjs} +15 -15
  18. package/dist/browser/{chunk-B7DEUDP6.cjs.map → chunk-EFUQVASI.cjs.map} +1 -1
  19. package/dist/browser/{chunk-5J2QBK75.js → chunk-F3B4UR64.js} +13 -4
  20. package/dist/browser/chunk-F3B4UR64.js.map +1 -0
  21. package/dist/{chunk-HDAFUKQ3.js → browser/chunk-F7BGQ26H.js} +4 -4
  22. package/dist/browser/{chunk-TYDG747E.js.map → chunk-F7BGQ26H.js.map} +1 -1
  23. package/dist/browser/{chunk-YAOBFRKP.js → chunk-GWJYOQNC.js} +4 -4
  24. package/dist/browser/{chunk-YAOBFRKP.js.map → chunk-GWJYOQNC.js.map} +1 -1
  25. package/dist/browser/{chunk-TZRSDDFP.cjs → chunk-HGN7J3EU.cjs} +12 -12
  26. package/dist/browser/{chunk-TZRSDDFP.cjs.map → chunk-HGN7J3EU.cjs.map} +1 -1
  27. package/dist/browser/{chunk-Z22Q2ONC.cjs → chunk-M2GZJ3RS.cjs} +14 -14
  28. package/dist/browser/{chunk-Z22Q2ONC.cjs.map → chunk-M2GZJ3RS.cjs.map} +1 -1
  29. package/dist/browser/{chunk-NQG2IAQS.js → chunk-YHV5GL32.js} +3 -3
  30. package/dist/browser/{chunk-NQG2IAQS.js.map → chunk-YHV5GL32.js.map} +1 -1
  31. package/dist/{chunk-VXDBDPDR.cjs → browser/chunk-YNUZGKUA.cjs} +7 -7
  32. package/dist/browser/{chunk-MCJYZH6W.cjs.map → chunk-YNUZGKUA.cjs.map} +1 -1
  33. package/dist/browser/index.cjs +80 -80
  34. package/dist/browser/index.cjs.map +1 -1
  35. package/dist/browser/index.js +7 -7
  36. package/dist/browser/index.js.map +1 -1
  37. package/dist/browser/integrations/pino.cjs +4 -4
  38. package/dist/browser/integrations/pino.js +3 -3
  39. package/dist/browser/langchain/index.cjs +17 -17
  40. package/dist/browser/langchain/index.js +2 -2
  41. package/dist/browser/langgraph/index.cjs +21 -21
  42. package/dist/browser/langgraph/index.js +4 -4
  43. package/dist/browser/openai/index.cjs +5 -5
  44. package/dist/browser/openai/index.js +1 -1
  45. package/dist/browser/openai-agents/index.cjs +32 -32
  46. package/dist/browser/openai-agents/index.js +4 -4
  47. package/dist/browser/vercel-ai/index.cjs +14 -14
  48. package/dist/browser/vercel-ai/index.js +3 -3
  49. package/dist/{chunk-KZBCOZIQ.cjs → chunk-5D6SBSEI.cjs} +15 -15
  50. package/dist/{chunk-KZBCOZIQ.cjs.map → chunk-5D6SBSEI.cjs.map} +1 -1
  51. package/dist/{chunk-ZKUGOWER.js → chunk-AEFUXEKV.js} +3 -3
  52. package/dist/{chunk-ZKUGOWER.js.map → chunk-AEFUXEKV.js.map} +1 -1
  53. package/dist/{chunk-FJUNILZT.cjs → chunk-HNCWTENX.cjs} +13 -4
  54. package/dist/chunk-HNCWTENX.cjs.map +1 -0
  55. package/dist/{chunk-7YCENA54.cjs → chunk-LQI63FHF.cjs} +14 -14
  56. package/dist/{chunk-7YCENA54.cjs.map → chunk-LQI63FHF.cjs.map} +1 -1
  57. package/dist/{chunk-TQWI4UYO.js → chunk-LTKGLXAE.js} +13 -4
  58. package/dist/chunk-LTKGLXAE.js.map +1 -0
  59. package/dist/{chunk-RTL23YOQ.js → chunk-POCQNSVD.js} +3 -3
  60. package/dist/{chunk-RTL23YOQ.js.map → chunk-POCQNSVD.js.map} +1 -1
  61. package/dist/{chunk-PVHDEPRE.cjs → chunk-QXRJUPDP.cjs} +12 -12
  62. package/dist/{chunk-PVHDEPRE.cjs.map → chunk-QXRJUPDP.cjs.map} +1 -1
  63. package/dist/{browser/chunk-TYDG747E.js → chunk-SBGY5NS4.js} +4 -4
  64. package/dist/{chunk-HDAFUKQ3.js.map → chunk-SBGY5NS4.js.map} +1 -1
  65. package/dist/{chunk-CKFOGDUF.js → chunk-STK4KJQ6.js} +4 -4
  66. package/dist/{chunk-CKFOGDUF.js.map → chunk-STK4KJQ6.js.map} +1 -1
  67. package/dist/{browser/chunk-KRBADE6R.cjs → chunk-T2KW3P23.cjs} +6 -6
  68. package/dist/{chunk-7EO7MQBA.cjs.map → chunk-T2KW3P23.cjs.map} +1 -1
  69. package/dist/{browser/chunk-7MSXWGAH.js → chunk-V5J6J4ZR.js} +4 -4
  70. package/dist/{chunk-ME5JALGT.js.map → chunk-V5J6J4ZR.js.map} +1 -1
  71. package/dist/{browser/chunk-MCJYZH6W.cjs → chunk-Y7SVGUKY.cjs} +7 -7
  72. package/dist/{chunk-VXDBDPDR.cjs.map → chunk-Y7SVGUKY.cjs.map} +1 -1
  73. package/dist/index.cjs +87 -87
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.js +8 -8
  76. package/dist/index.js.map +1 -1
  77. package/dist/integrations/pino.cjs +4 -4
  78. package/dist/integrations/pino.js +3 -3
  79. package/dist/langchain/index.cjs +17 -17
  80. package/dist/langchain/index.js +2 -2
  81. package/dist/langgraph/index.cjs +21 -21
  82. package/dist/langgraph/index.js +4 -4
  83. package/dist/openai/index.cjs +5 -5
  84. package/dist/openai/index.js +1 -1
  85. package/dist/openai-agents/index.cjs +32 -32
  86. package/dist/openai-agents/index.js +4 -4
  87. package/dist/vercel-ai/index.cjs +14 -14
  88. package/dist/vercel-ai/index.js +3 -3
  89. package/package.json +1 -1
  90. package/dist/browser/chunk-5J2QBK75.js.map +0 -1
  91. package/dist/browser/chunk-O4HG3OSK.cjs.map +0 -1
  92. package/dist/chunk-FJUNILZT.cjs.map +0 -1
  93. 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-5J2QBK75.js';
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 chunkMCJYZH6W_cjs = require('../chunk-MCJYZH6W.cjs');
4
- var chunkB7DEUDP6_cjs = require('../chunk-B7DEUDP6.cjs');
5
- var chunkKRBADE6R_cjs = require('../chunk-KRBADE6R.cjs');
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 chunkO4HG3OSK_cjs = require('../chunk-O4HG3OSK.cjs');
8
+ var chunkDXWHT3HK_cjs = require('../chunk-DXWHT3HK.cjs');
9
9
 
10
10
  // src/openai-agents/runner-wrapper.ts
11
- chunkO4HG3OSK_cjs.init_tracing();
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 = chunkKRBADE6R_cjs.absorbErrorsAsync(
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 = chunkKRBADE6R_cjs.absorbErrorsSync(
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 = chunkB7DEUDP6_cjs.emitAgentSpan({
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 (chunkO4HG3OSK_cjs.getActiveTraceState() !== null) {
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 chunkO4HG3OSK_cjs.runAsync({ agentName }, async (runHandle) => {
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 = chunkKRBADE6R_cjs.absorbErrorsSync(
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 = chunkB7DEUDP6_cjs.emitLlmSpan({
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 = chunkKRBADE6R_cjs.absorbErrorsSync(
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 = chunkKRBADE6R_cjs.absorbErrorsSync(
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 = chunkMCJYZH6W_cjs.summarizeToolInput(
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 = chunkB7DEUDP6_cjs.emitToolSpan({
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 = chunkKRBADE6R_cjs.absorbErrorsSync(
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 = chunkMCJYZH6W_cjs.summarizeToolOutput(
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 = chunkB7DEUDP6_cjs.emitSubagentSpan({
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 = chunkKRBADE6R_cjs.absorbErrorsSync(_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 = chunkB7DEUDP6_cjs.emitToolSpan({
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 = chunkKRBADE6R_cjs.absorbErrorsSync(
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 chunkB7DEUDP6_cjs.emitAgentSpan({
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 chunkB7DEUDP6_cjs.emitLlmSpan({ adapter: ADAPTER2, model });
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 chunkB7DEUDP6_cjs.emitToolSpan({
514
+ return chunkEFUQVASI_cjs.emitToolSpan({
515
515
  adapter: ADAPTER2,
516
516
  toolName: name ?? "function",
517
- inputSummary: d.input !== void 0 ? chunkMCJYZH6W_cjs.summarizeToolInput(d.input, inputOpts) : 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 chunkB7DEUDP6_cjs.emitSubagentSpan({
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 = chunkB7DEUDP6_cjs.emitToolSpan({
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 chunkB7DEUDP6_cjs.emitToolSpan({
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 chunkB7DEUDP6_cjs.emitToolSpan({
551
+ return chunkEFUQVASI_cjs.emitToolSpan({
552
552
  adapter: ADAPTER2,
553
553
  toolName: `custom.${name ?? "anon"}`
554
554
  });
555
555
  default:
556
- return chunkB7DEUDP6_cjs.emitToolSpan({
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: chunkMCJYZH6W_cjs.summarizeToolOutput(d.output, outputOpts)
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-JBOYFQSB.js';
2
- import { emitSubagentSpan, emitToolSpan, emitAgentSpan, emitLlmSpan } from '../chunk-TYDG747E.js';
3
- import { absorbErrorsAsync, absorbErrorsSync } from '../chunk-NQG2IAQS.js';
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-5J2QBK75.js';
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 chunkB7DEUDP6_cjs = require('../chunk-B7DEUDP6.cjs');
4
- require('../chunk-KRBADE6R.cjs');
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 chunkO4HG3OSK_cjs = require('../chunk-O4HG3OSK.cjs');
7
+ var chunkDXWHT3HK_cjs = require('../chunk-DXWHT3HK.cjs');
8
8
 
9
9
  // src/vercel-ai/index.ts
10
- chunkO4HG3OSK_cjs.init_tracing();
11
- chunkO4HG3OSK_cjs.init_propagation();
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 = chunkO4HG3OSK_cjs.getActiveTraceState() !== null;
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 = chunkB7DEUDP6_cjs.emitLlmSpan({
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 chunkO4HG3OSK_cjs.runAsync({ agentName }, async (runHandle) => {
97
+ void chunkDXWHT3HK_cjs.runAsync({ agentName }, async (runHandle) => {
98
98
  runHandle.setOutcome(true);
99
- const handle = chunkB7DEUDP6_cjs.emitLlmSpan({
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 = chunkO4HG3OSK_cjs.getActiveTraceState() !== null;
180
+ const inTrace = chunkDXWHT3HK_cjs.getActiveTraceState() !== null;
181
181
  const work = async () => {
182
- const handle = chunkB7DEUDP6_cjs.emitLlmSpan({
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 chunkO4HG3OSK_cjs.runAsync({ agentName }, async (runHandle) => {
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 = chunkO4HG3OSK_cjs.getActiveTraceState();
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
- chunkO4HG3OSK_cjs.injectTraceparent(merged);
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-TYDG747E.js';
2
- import '../chunk-NQG2IAQS.js';
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-5J2QBK75.js';
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 chunk7EO7MQBA_cjs = require('./chunk-7EO7MQBA.cjs');
4
- var chunkFJUNILZT_cjs = require('./chunk-FJUNILZT.cjs');
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
- chunkFJUNILZT_cjs.init_tracing();
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 = chunkFJUNILZT_cjs.startSpan({
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 = chunk7EO7MQBA_cjs.absorbErrorsSync(
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 = chunkFJUNILZT_cjs.startSpan({
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 = chunk7EO7MQBA_cjs.absorbErrorsSync(
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 chunkFJUNILZT_cjs.startSpan({
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 = chunk7EO7MQBA_cjs.absorbErrorsSync(
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 chunkFJUNILZT_cjs.startSpan({
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 = chunk7EO7MQBA_cjs.absorbErrorsSync(_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 chunkFJUNILZT_cjs.startSpan({
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 = chunk7EO7MQBA_cjs.absorbErrorsSync(
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-KZBCOZIQ.cjs.map
177
- //# sourceMappingURL=chunk-KZBCOZIQ.cjs.map
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-RTL23YOQ.js';
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-ZKUGOWER.js.map
412
- //# sourceMappingURL=chunk-ZKUGOWER.js.map
411
+ //# sourceMappingURL=chunk-AEFUXEKV.js.map
412
+ //# sourceMappingURL=chunk-AEFUXEKV.js.map