@morsehq-dev/sdk 0.5.0-rc.3 → 0.5.0-rc.5

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 (108) hide show
  1. package/README.md +51 -12
  2. package/dist/anthropic/index.cjs +11 -11
  3. package/dist/anthropic/index.js +4 -4
  4. package/dist/anthropic-agent-sdk/index.cjs +157 -102
  5. package/dist/anthropic-agent-sdk/index.cjs.map +1 -1
  6. package/dist/anthropic-agent-sdk/index.d.cts +57 -34
  7. package/dist/anthropic-agent-sdk/index.d.ts +57 -34
  8. package/dist/anthropic-agent-sdk/index.js +126 -72
  9. package/dist/anthropic-agent-sdk/index.js.map +1 -1
  10. package/dist/browser/anthropic/index.cjs +11 -11
  11. package/dist/browser/anthropic/index.js +4 -4
  12. package/dist/browser/anthropic-agent-sdk/index.cjs +157 -102
  13. package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -1
  14. package/dist/browser/anthropic-agent-sdk/index.js +126 -72
  15. package/dist/browser/anthropic-agent-sdk/index.js.map +1 -1
  16. package/dist/browser/{chunk-KFWCOUL3.cjs → chunk-26Q2QD5J.cjs} +5 -5
  17. package/dist/browser/{chunk-KFWCOUL3.cjs.map → chunk-26Q2QD5J.cjs.map} +1 -1
  18. package/dist/browser/{chunk-QCI2ZDQS.cjs → chunk-47GVOQB4.cjs} +12 -12
  19. package/dist/browser/{chunk-QCI2ZDQS.cjs.map → chunk-47GVOQB4.cjs.map} +1 -1
  20. package/dist/browser/{chunk-LGG5PL5U.js → chunk-64YI3IZS.js} +3 -3
  21. package/dist/browser/{chunk-LGG5PL5U.js.map → chunk-64YI3IZS.js.map} +1 -1
  22. package/dist/{chunk-HCEKAVDR.js → browser/chunk-CI7M2GHD.js} +4 -4
  23. package/dist/browser/{chunk-KGSLJLWW.js.map → chunk-CI7M2GHD.js.map} +1 -1
  24. package/dist/browser/{chunk-MI4OUWUZ.js → chunk-EH326H6U.js} +3 -3
  25. package/dist/browser/{chunk-MI4OUWUZ.js.map → chunk-EH326H6U.js.map} +1 -1
  26. package/dist/browser/{chunk-WUQXNRD3.js → chunk-GLL57K7P.js} +3 -3
  27. package/dist/browser/{chunk-WUQXNRD3.js.map → chunk-GLL57K7P.js.map} +1 -1
  28. package/dist/browser/{chunk-PM5D6VXF.cjs → chunk-IHIS62VS.cjs} +5 -4
  29. package/dist/browser/chunk-IHIS62VS.cjs.map +1 -0
  30. package/dist/browser/{chunk-N4Q2WMOE.js → chunk-MIB3EOC4.js} +5 -5
  31. package/dist/browser/{chunk-N4Q2WMOE.js.map → chunk-MIB3EOC4.js.map} +1 -1
  32. package/dist/browser/{chunk-P7XWSMFX.cjs → chunk-QAFFDJFK.cjs} +6 -6
  33. package/dist/browser/{chunk-P7XWSMFX.cjs.map → chunk-QAFFDJFK.cjs.map} +1 -1
  34. package/dist/{chunk-7PGR4NJG.js → browser/chunk-UL5TNXQL.js} +4 -4
  35. package/dist/browser/{chunk-MOBYR3AP.js.map → chunk-UL5TNXQL.js.map} +1 -1
  36. package/dist/browser/{chunk-Y3BOPSM3.js → chunk-V7AUPQIJ.js} +5 -5
  37. package/dist/browser/chunk-V7AUPQIJ.js.map +1 -0
  38. package/dist/browser/{chunk-VSG4EWNL.cjs → chunk-WGWPCVYB.cjs} +18 -18
  39. package/dist/browser/{chunk-VSG4EWNL.cjs.map → chunk-WGWPCVYB.cjs.map} +1 -1
  40. package/dist/browser/{chunk-YSJVJ3Z3.cjs → chunk-WR2SQLKP.cjs} +7 -7
  41. package/dist/browser/{chunk-YSJVJ3Z3.cjs.map → chunk-WR2SQLKP.cjs.map} +1 -1
  42. package/dist/browser/{chunk-XLQSSJUZ.cjs → chunk-ZVVUZRG7.cjs} +15 -15
  43. package/dist/browser/{chunk-XLQSSJUZ.cjs.map → chunk-ZVVUZRG7.cjs.map} +1 -1
  44. package/dist/browser/index.cjs +91 -90
  45. package/dist/browser/index.cjs.map +1 -1
  46. package/dist/browser/index.js +9 -8
  47. package/dist/browser/index.js.map +1 -1
  48. package/dist/browser/integrations/pino.cjs +4 -4
  49. package/dist/browser/integrations/pino.js +3 -3
  50. package/dist/browser/langchain/index.cjs +17 -17
  51. package/dist/browser/langchain/index.js +2 -2
  52. package/dist/browser/langgraph/index.cjs +27 -27
  53. package/dist/browser/langgraph/index.js +5 -5
  54. package/dist/browser/openai/index.cjs +11 -11
  55. package/dist/browser/openai/index.js +2 -2
  56. package/dist/browser/openai-agents/index.cjs +34 -34
  57. package/dist/browser/openai-agents/index.js +4 -4
  58. package/dist/browser/vercel-ai/index.cjs +14 -14
  59. package/dist/browser/vercel-ai/index.js +3 -3
  60. package/dist/{browser/chunk-KGSLJLWW.js → chunk-7I4ILCLY.js} +4 -4
  61. package/dist/{chunk-HCEKAVDR.js.map → chunk-7I4ILCLY.js.map} +1 -1
  62. package/dist/{chunk-3XQOZXJM.cjs → chunk-DGBQ3UI6.cjs} +7 -7
  63. package/dist/{chunk-3XQOZXJM.cjs.map → chunk-DGBQ3UI6.cjs.map} +1 -1
  64. package/dist/{chunk-YQ6ZA7OE.cjs → chunk-DPW4W7H7.cjs} +18 -18
  65. package/dist/{chunk-YQ6ZA7OE.cjs.map → chunk-DPW4W7H7.cjs.map} +1 -1
  66. package/dist/{chunk-E3G3IE6Y.cjs → chunk-DQ4T2MJE.cjs} +5 -4
  67. package/dist/chunk-DQ4T2MJE.cjs.map +1 -0
  68. package/dist/{chunk-XZRJXJFA.js → chunk-ELVBOJWY.js} +5 -5
  69. package/dist/chunk-ELVBOJWY.js.map +1 -0
  70. package/dist/{chunk-ZFE75G7S.js → chunk-HONYN2OI.js} +3 -3
  71. package/dist/{chunk-ZFE75G7S.js.map → chunk-HONYN2OI.js.map} +1 -1
  72. package/dist/{chunk-RK3JPX27.cjs → chunk-I3P5CHBV.cjs} +12 -12
  73. package/dist/{chunk-RK3JPX27.cjs.map → chunk-I3P5CHBV.cjs.map} +1 -1
  74. package/dist/{browser/chunk-MOBYR3AP.js → chunk-MNV4HASC.js} +4 -4
  75. package/dist/{chunk-7PGR4NJG.js.map → chunk-MNV4HASC.js.map} +1 -1
  76. package/dist/{chunk-XHOLQGN6.js → chunk-NR36TJMT.js} +5 -5
  77. package/dist/{chunk-XHOLQGN6.js.map → chunk-NR36TJMT.js.map} +1 -1
  78. package/dist/{chunk-T2NESDMT.js → chunk-QZDUGEIR.js} +3 -3
  79. package/dist/{chunk-T2NESDMT.js.map → chunk-QZDUGEIR.js.map} +1 -1
  80. package/dist/{chunk-TGHDV5MC.cjs → chunk-RRE2LX2A.cjs} +6 -6
  81. package/dist/{chunk-TGHDV5MC.cjs.map → chunk-RRE2LX2A.cjs.map} +1 -1
  82. package/dist/{chunk-DPGUBZVO.cjs → chunk-SJ625SQS.cjs} +15 -15
  83. package/dist/{chunk-DPGUBZVO.cjs.map → chunk-SJ625SQS.cjs.map} +1 -1
  84. package/dist/{chunk-UAJO6JM7.js → chunk-YKPZQPEW.js} +3 -3
  85. package/dist/{chunk-UAJO6JM7.js.map → chunk-YKPZQPEW.js.map} +1 -1
  86. package/dist/{chunk-NGBJJGOC.cjs → chunk-Z5MFR7UE.cjs} +5 -5
  87. package/dist/{chunk-NGBJJGOC.cjs.map → chunk-Z5MFR7UE.cjs.map} +1 -1
  88. package/dist/index.cjs +104 -98
  89. package/dist/index.cjs.map +1 -1
  90. package/dist/index.js +16 -10
  91. package/dist/index.js.map +1 -1
  92. package/dist/integrations/pino.cjs +4 -4
  93. package/dist/integrations/pino.js +3 -3
  94. package/dist/langchain/index.cjs +17 -17
  95. package/dist/langchain/index.js +2 -2
  96. package/dist/langgraph/index.cjs +27 -27
  97. package/dist/langgraph/index.js +5 -5
  98. package/dist/openai/index.cjs +11 -11
  99. package/dist/openai/index.js +2 -2
  100. package/dist/openai-agents/index.cjs +34 -34
  101. package/dist/openai-agents/index.js +4 -4
  102. package/dist/vercel-ai/index.cjs +14 -14
  103. package/dist/vercel-ai/index.js +3 -3
  104. package/package.json +14 -13
  105. package/dist/browser/chunk-PM5D6VXF.cjs.map +0 -1
  106. package/dist/browser/chunk-Y3BOPSM3.js.map +0 -1
  107. package/dist/chunk-E3G3IE6Y.cjs.map +0 -1
  108. package/dist/chunk-XZRJXJFA.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { setActiveFramework, capturePrompts, captureLangChainMessages, extractLangChainOutputText } from '../chunk-WUQXNRD3.js';
2
- import { summarizeToolInput, summarizeToolOutput } from '../chunk-LGG5PL5U.js';
3
- import { emitAgentSpan, emitLlmSpan, emitToolSpan } from '../chunk-MOBYR3AP.js';
4
- import { absorbErrorsSync } from '../chunk-MI4OUWUZ.js';
1
+ import { setActiveFramework, capturePrompts, captureLangChainMessages, extractLangChainOutputText } from '../chunk-GLL57K7P.js';
2
+ import { summarizeToolInput, summarizeToolOutput } from '../chunk-64YI3IZS.js';
3
+ import { emitAgentSpan, emitLlmSpan, emitToolSpan } from '../chunk-UL5TNXQL.js';
4
+ import { absorbErrorsSync } from '../chunk-EH326H6U.js';
5
5
  import { calculateCost } from '../chunk-4FALQMOZ.js';
6
6
  import { decomposeOpenAiMessages } from '../chunk-MLDVXMQD.js';
7
- import '../chunk-Y3BOPSM3.js';
7
+ import '../chunk-V7AUPQIJ.js';
8
8
 
9
9
  // src/langgraph/callback-handler.ts
10
10
  var ADAPTER = "langgraph-js";
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkKFWCOUL3_cjs = require('../chunk-KFWCOUL3.cjs');
3
+ var chunk26Q2QD5J_cjs = require('../chunk-26Q2QD5J.cjs');
4
4
  var chunkSWQOPFE4_cjs = require('../chunk-SWQOPFE4.cjs');
5
5
  var chunkRBNCTHK3_cjs = require('../chunk-RBNCTHK3.cjs');
6
- var chunkPM5D6VXF_cjs = require('../chunk-PM5D6VXF.cjs');
6
+ var chunkIHIS62VS_cjs = require('../chunk-IHIS62VS.cjs');
7
7
 
8
8
  // src/openai/index.ts
9
- chunkPM5D6VXF_cjs.init_tracing();
10
- chunkPM5D6VXF_cjs.init_diagnostics();
9
+ chunkIHIS62VS_cjs.init_tracing();
10
+ chunkIHIS62VS_cjs.init_diagnostics();
11
11
  var WRAPPED_CLIENT = /* @__PURE__ */ Symbol.for("morse.openai.wrapped");
12
12
  function wrapOpenAI(client, options = {}) {
13
13
  if (!client || typeof client !== "object") return client;
@@ -49,10 +49,10 @@ function isOpenAiWrapped(client) {
49
49
  function buildPatchedCreate(original, options) {
50
50
  const agentName = options.defaultAgentName ?? "openai.chat.completions.create";
51
51
  return async function patchedCreate(params, callOptions) {
52
- const inTrace = chunkPM5D6VXF_cjs.getActiveTraceState() !== null;
52
+ const inTrace = chunkIHIS62VS_cjs.getActiveTraceState() !== null;
53
53
  const work = async () => {
54
- chunkKFWCOUL3_cjs.setActiveFramework("openai");
55
- const handle = chunkPM5D6VXF_cjs.startSpan({
54
+ chunk26Q2QD5J_cjs.setActiveFramework("openai");
55
+ const handle = chunkIHIS62VS_cjs.startSpan({
56
56
  name: "openai.chat.completions.create",
57
57
  type: "llm",
58
58
  metadata: { model: params?.model }
@@ -88,9 +88,9 @@ function buildPatchedCreate(original, options) {
88
88
  if (cost !== void 0) handle.span.cost_usd = cost;
89
89
  }
90
90
  handle.span.context_segments = segments;
91
- const inputData = chunkKFWCOUL3_cjs.captureInputMessages(params?.messages);
91
+ const inputData = chunk26Q2QD5J_cjs.captureInputMessages(params?.messages);
92
92
  if (inputData !== void 0) handle.span.input_data = inputData;
93
- const outputText = chunkKFWCOUL3_cjs.extractOpenAiOutputText(response?.choices);
93
+ const outputText = chunk26Q2QD5J_cjs.extractOpenAiOutputText(response?.choices);
94
94
  if (outputText !== void 0) handle.span.output_data = { content: outputText };
95
95
  }
96
96
  } catch (err) {
@@ -104,7 +104,7 @@ function buildPatchedCreate(original, options) {
104
104
  }
105
105
  let result;
106
106
  let thrown;
107
- await chunkPM5D6VXF_cjs.runAsync({ agentName }, async (runHandle) => {
107
+ await chunkIHIS62VS_cjs.runAsync({ agentName }, async (runHandle) => {
108
108
  runHandle.setOutcome(true);
109
109
  try {
110
110
  result = await work();
@@ -128,7 +128,7 @@ function safeExtractSegments(params) {
128
128
  }
129
129
  function reportSwallowed(err, fingerprint) {
130
130
  try {
131
- chunkPM5D6VXF_cjs.report(err, { fingerprint });
131
+ chunkIHIS62VS_cjs.report(err, { fingerprint });
132
132
  } catch {
133
133
  }
134
134
  }
@@ -1,7 +1,7 @@
1
- import { setActiveFramework, captureInputMessages, extractOpenAiOutputText } from '../chunk-WUQXNRD3.js';
1
+ import { setActiveFramework, captureInputMessages, extractOpenAiOutputText } from '../chunk-GLL57K7P.js';
2
2
  import { calculateCost } from '../chunk-4FALQMOZ.js';
3
3
  import { decomposeOpenAiMessages } from '../chunk-MLDVXMQD.js';
4
- import { init_tracing, init_diagnostics, getActiveTraceState, runAsync, startSpan, report } from '../chunk-Y3BOPSM3.js';
4
+ import { init_tracing, init_diagnostics, getActiveTraceState, runAsync, startSpan, report } from '../chunk-V7AUPQIJ.js';
5
5
 
6
6
  // src/openai/index.ts
7
7
  init_tracing();
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkYSJVJ3Z3_cjs = require('../chunk-YSJVJ3Z3.cjs');
4
- var chunkXLQSSJUZ_cjs = require('../chunk-XLQSSJUZ.cjs');
5
- var chunkP7XWSMFX_cjs = require('../chunk-P7XWSMFX.cjs');
3
+ var chunkWR2SQLKP_cjs = require('../chunk-WR2SQLKP.cjs');
4
+ var chunkZVVUZRG7_cjs = require('../chunk-ZVVUZRG7.cjs');
5
+ var chunkQAFFDJFK_cjs = require('../chunk-QAFFDJFK.cjs');
6
6
  var chunkSWQOPFE4_cjs = require('../chunk-SWQOPFE4.cjs');
7
7
  var chunkRBNCTHK3_cjs = require('../chunk-RBNCTHK3.cjs');
8
- var chunkPM5D6VXF_cjs = require('../chunk-PM5D6VXF.cjs');
8
+ var chunkIHIS62VS_cjs = require('../chunk-IHIS62VS.cjs');
9
9
 
10
10
  // src/openai-agents/runner-wrapper.ts
11
- chunkPM5D6VXF_cjs.init_tracing();
11
+ chunkIHIS62VS_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 = chunkP7XWSMFX_cjs.absorbErrorsAsync(
37
+ var instrumentOpenAIAgents = chunkQAFFDJFK_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 = chunkP7XWSMFX_cjs.absorbErrorsAsync(
67
67
  },
68
68
  { fingerprint: "morse.adapters.openai-agents.install" }
69
69
  );
70
- var uninstallOpenAIAgents = chunkP7XWSMFX_cjs.absorbErrorsSync(
70
+ var uninstallOpenAIAgents = chunkQAFFDJFK_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 = chunkXLQSSJUZ_cjs.emitAgentSpan({
123
+ const handle = chunkZVVUZRG7_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 (chunkPM5D6VXF_cjs.getActiveTraceState() !== null) {
141
+ if (chunkIHIS62VS_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 chunkPM5D6VXF_cjs.runAsync({ agentName }, async (runHandle) => {
147
+ const runResult = await chunkIHIS62VS_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 = chunkP7XWSMFX_cjs.absorbErrorsSync(
176
+ const onLlmStart = chunkQAFFDJFK_cjs.absorbErrorsSync(
177
177
  (event) => {
178
178
  const contextSegments = chunkRBNCTHK3_cjs.decomposeOpenAiMessages(event.llm?.messages, event.llm?.tools);
179
- const handle = chunkXLQSSJUZ_cjs.emitLlmSpan({
179
+ const handle = chunkZVVUZRG7_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 = chunkP7XWSMFX_cjs.absorbErrorsSync(
189
+ const onLlmEnd = chunkQAFFDJFK_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 = chunkP7XWSMFX_cjs.absorbErrorsSync(
221
+ const onToolStart = chunkQAFFDJFK_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 = chunkYSJVJ3Z3_cjs.summarizeToolInput(
224
+ const inputSummary = chunkWR2SQLKP_cjs.summarizeToolInput(
225
225
  event.tool?.input,
226
226
  opts.toolInputMaxBytes !== void 0 ? { maxBytes: opts.toolInputMaxBytes } : void 0
227
227
  );
228
- const handle = chunkXLQSSJUZ_cjs.emitToolSpan({
228
+ const handle = chunkZVVUZRG7_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 = chunkP7XWSMFX_cjs.absorbErrorsSync(
237
+ const onToolEnd = chunkQAFFDJFK_cjs.absorbErrorsSync(
238
238
  (event) => {
239
239
  const handle = toolStack.shift();
240
240
  if (handle === void 0) return;
241
- const outputSummary = chunkYSJVJ3Z3_cjs.summarizeToolOutput(
241
+ const outputSummary = chunkWR2SQLKP_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 = chunkXLQSSJUZ_cjs.emitSubagentSpan({
295
+ const handle = chunkZVVUZRG7_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 = chunkP7XWSMFX_cjs.absorbErrorsSync(_handleHandoffEvent, {
304
+ var handleHandoffEvent = chunkQAFFDJFK_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 = chunkXLQSSJUZ_cjs.emitToolSpan({
341
+ const handle = chunkZVVUZRG7_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 = chunkP7XWSMFX_cjs.absorbErrorsSync(
358
+ var handleGuardrailEvent = chunkQAFFDJFK_cjs.absorbErrorsSync(
359
359
  _handleGuardrailEvent,
360
360
  { fingerprint: "morse.openai-agents.guardrail.handle" }
361
361
  );
@@ -384,7 +384,7 @@ function installGuardrailInstrumentation(runner) {
384
384
  }
385
385
 
386
386
  // src/openai-agents/trace-processor.ts
387
- chunkPM5D6VXF_cjs.init_diagnostics();
387
+ chunkIHIS62VS_cjs.init_diagnostics();
388
388
  var ADAPTER2 = "openai-agents";
389
389
  function safe(fn) {
390
390
  try {
@@ -503,32 +503,32 @@ var MorseTraceProcessor = class {
503
503
  const name = typeof d.name === "string" && d.name.length > 0 ? d.name : void 0;
504
504
  switch (type) {
505
505
  case "agent":
506
- return chunkXLQSSJUZ_cjs.emitAgentSpan({
506
+ return chunkZVVUZRG7_cjs.emitAgentSpan({
507
507
  adapter: ADAPTER2,
508
508
  agentName: name ?? "openai-agent"
509
509
  });
510
510
  case "generation":
511
511
  case "response": {
512
512
  const model = typeof d.model === "string" && d.model.length > 0 ? d.model : "unknown";
513
- return chunkXLQSSJUZ_cjs.emitLlmSpan({ adapter: ADAPTER2, model });
513
+ return chunkZVVUZRG7_cjs.emitLlmSpan({ adapter: ADAPTER2, model });
514
514
  }
515
515
  case "function": {
516
516
  const inputOpts = this.options.toolInputMaxBytes ? { maxBytes: this.options.toolInputMaxBytes } : void 0;
517
- return chunkXLQSSJUZ_cjs.emitToolSpan({
517
+ return chunkZVVUZRG7_cjs.emitToolSpan({
518
518
  adapter: ADAPTER2,
519
519
  toolName: name ?? "function",
520
- inputSummary: d.input !== void 0 ? chunkYSJVJ3Z3_cjs.summarizeToolInput(d.input, inputOpts) : void 0
520
+ inputSummary: d.input !== void 0 ? chunkWR2SQLKP_cjs.summarizeToolInput(d.input, inputOpts) : void 0
521
521
  });
522
522
  }
523
523
  case "handoff":
524
- return chunkXLQSSJUZ_cjs.emitSubagentSpan({
524
+ return chunkZVVUZRG7_cjs.emitSubagentSpan({
525
525
  adapter: ADAPTER2,
526
526
  parentAgentName: typeof d.from_agent === "string" ? d.from_agent : "unknown",
527
527
  subagentName: typeof d.to_agent === "string" ? d.to_agent : name ?? "unknown",
528
528
  taskDescription: typeof d.reason === "string" ? d.reason : void 0
529
529
  });
530
530
  case "guardrail": {
531
- const handle = chunkXLQSSJUZ_cjs.emitToolSpan({
531
+ const handle = chunkZVVUZRG7_cjs.emitToolSpan({
532
532
  adapter: ADAPTER2,
533
533
  toolName: `guardrail.${name ?? "anon"}`
534
534
  });
@@ -546,17 +546,17 @@ var MorseTraceProcessor = class {
546
546
  return handle;
547
547
  }
548
548
  case "mcp_list_tools":
549
- return chunkXLQSSJUZ_cjs.emitToolSpan({
549
+ return chunkZVVUZRG7_cjs.emitToolSpan({
550
550
  adapter: ADAPTER2,
551
551
  toolName: `mcp.list_tools.${name ?? "anon"}`
552
552
  });
553
553
  case "custom":
554
- return chunkXLQSSJUZ_cjs.emitToolSpan({
554
+ return chunkZVVUZRG7_cjs.emitToolSpan({
555
555
  adapter: ADAPTER2,
556
556
  toolName: `custom.${name ?? "anon"}`
557
557
  });
558
558
  default:
559
- return chunkXLQSSJUZ_cjs.emitToolSpan({
559
+ return chunkZVVUZRG7_cjs.emitToolSpan({
560
560
  adapter: ADAPTER2,
561
561
  toolName: `${type || "unknown"}.${name ?? "anon"}`
562
562
  });
@@ -585,7 +585,7 @@ var MorseTraceProcessor = class {
585
585
  const outputOpts = this.options.toolOutputMaxBytes ? { maxBytes: this.options.toolOutputMaxBytes } : void 0;
586
586
  handle.span.metadata = {
587
587
  ...handle.span.metadata ?? {},
588
- tool_output_summary: chunkYSJVJ3Z3_cjs.summarizeToolOutput(d.output, outputOpts)
588
+ tool_output_summary: chunkWR2SQLKP_cjs.summarizeToolOutput(d.output, outputOpts)
589
589
  };
590
590
  }
591
591
  }
@@ -621,7 +621,7 @@ function safeEnd(handle, err) {
621
621
  }
622
622
  function reportSwallowed(err, fingerprint) {
623
623
  try {
624
- chunkPM5D6VXF_cjs.report(err, { fingerprint });
624
+ chunkIHIS62VS_cjs.report(err, { fingerprint });
625
625
  } catch {
626
626
  }
627
627
  }
@@ -1,9 +1,9 @@
1
- import { summarizeToolInput, summarizeToolOutput } from '../chunk-LGG5PL5U.js';
2
- import { emitSubagentSpan, emitToolSpan, emitAgentSpan, emitLlmSpan } from '../chunk-MOBYR3AP.js';
3
- import { absorbErrorsAsync, absorbErrorsSync } from '../chunk-MI4OUWUZ.js';
1
+ import { summarizeToolInput, summarizeToolOutput } from '../chunk-64YI3IZS.js';
2
+ import { emitSubagentSpan, emitToolSpan, emitAgentSpan, emitLlmSpan } from '../chunk-UL5TNXQL.js';
3
+ import { absorbErrorsAsync, absorbErrorsSync } from '../chunk-EH326H6U.js';
4
4
  import { calculateCost } from '../chunk-4FALQMOZ.js';
5
5
  import { decomposeOpenAiMessages } from '../chunk-MLDVXMQD.js';
6
- import { init_tracing, init_diagnostics, getActiveTraceState, runAsync, report } from '../chunk-Y3BOPSM3.js';
6
+ import { init_tracing, init_diagnostics, getActiveTraceState, runAsync, report } from '../chunk-V7AUPQIJ.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 chunkXLQSSJUZ_cjs = require('../chunk-XLQSSJUZ.cjs');
4
- require('../chunk-P7XWSMFX.cjs');
3
+ var chunkZVVUZRG7_cjs = require('../chunk-ZVVUZRG7.cjs');
4
+ require('../chunk-QAFFDJFK.cjs');
5
5
  var chunkSWQOPFE4_cjs = require('../chunk-SWQOPFE4.cjs');
6
6
  var chunkRBNCTHK3_cjs = require('../chunk-RBNCTHK3.cjs');
7
- var chunkPM5D6VXF_cjs = require('../chunk-PM5D6VXF.cjs');
7
+ var chunkIHIS62VS_cjs = require('../chunk-IHIS62VS.cjs');
8
8
 
9
9
  // src/vercel-ai/index.ts
10
- chunkPM5D6VXF_cjs.init_tracing();
11
- chunkPM5D6VXF_cjs.init_propagation();
10
+ chunkIHIS62VS_cjs.init_tracing();
11
+ chunkIHIS62VS_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 = chunkPM5D6VXF_cjs.getActiveTraceState() !== null;
74
+ const inTrace = chunkIHIS62VS_cjs.getActiveTraceState() !== null;
75
75
  const callArgs = args[0] ?? {};
76
76
  const model = modelLabel(callArgs);
77
77
  if (inTrace) {
78
- const handle = chunkXLQSSJUZ_cjs.emitLlmSpan({
78
+ const handle = chunkZVVUZRG7_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 chunkPM5D6VXF_cjs.runAsync({ agentName }, async (runHandle) => {
97
+ void chunkIHIS62VS_cjs.runAsync({ agentName }, async (runHandle) => {
98
98
  runHandle.setOutcome(true);
99
- const handle = chunkXLQSSJUZ_cjs.emitLlmSpan({
99
+ const handle = chunkZVVUZRG7_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 = chunkPM5D6VXF_cjs.getActiveTraceState() !== null;
180
+ const inTrace = chunkIHIS62VS_cjs.getActiveTraceState() !== null;
181
181
  const work = async () => {
182
- const handle = chunkXLQSSJUZ_cjs.emitLlmSpan({
182
+ const handle = chunkZVVUZRG7_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 chunkPM5D6VXF_cjs.runAsync({ agentName }, async (runHandle) => {
207
+ return chunkIHIS62VS_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 = chunkPM5D6VXF_cjs.getActiveTraceState();
215
+ const state = chunkIHIS62VS_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
- chunkPM5D6VXF_cjs.injectTraceparent(merged);
221
+ chunkIHIS62VS_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-MOBYR3AP.js';
2
- import '../chunk-MI4OUWUZ.js';
1
+ import { emitLlmSpan } from '../chunk-UL5TNXQL.js';
2
+ import '../chunk-EH326H6U.js';
3
3
  import { calculateCost } from '../chunk-4FALQMOZ.js';
4
4
  import { decomposeOpenAiMessages } from '../chunk-MLDVXMQD.js';
5
- import { init_tracing, init_propagation, getActiveTraceState, runAsync, injectTraceparent } from '../chunk-Y3BOPSM3.js';
5
+ import { init_tracing, init_propagation, getActiveTraceState, runAsync, injectTraceparent } from '../chunk-V7AUPQIJ.js';
6
6
 
7
7
  // src/vercel-ai/index.ts
8
8
  init_tracing();
@@ -1,5 +1,5 @@
1
- import { absorbErrorsSync } from './chunk-MI4OUWUZ.js';
2
- import { init_redaction, init_tracing, getTransport, getActiveTraceState, getRedactionConfig, redactValue } from './chunk-Y3BOPSM3.js';
1
+ import { absorbErrorsSync } from './chunk-YKPZQPEW.js';
2
+ import { init_redaction, init_tracing, getTransport, getActiveTraceState, getRedactionConfig, redactValue } from './chunk-ELVBOJWY.js';
3
3
 
4
4
  // src/log.ts
5
5
  init_redaction();
@@ -49,5 +49,5 @@ var log = absorbErrorsSync(logImpl, {
49
49
  });
50
50
 
51
51
  export { _setEnsureInitialized, log };
52
- //# sourceMappingURL=chunk-KGSLJLWW.js.map
53
- //# sourceMappingURL=chunk-KGSLJLWW.js.map
52
+ //# sourceMappingURL=chunk-7I4ILCLY.js.map
53
+ //# sourceMappingURL=chunk-7I4ILCLY.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/log.ts"],"names":[],"mappings":";;;;AA8BA,cAAA,EAAA;AACA,YAAA,EAAA;AA2BA,IAAM,oBAAA,GAAuB,cAAA;AAS7B,IAAI,oBAAgC,MAAM;AAE1C,CAAA;AAGO,SAAS,sBAAsB,EAAA,EAAsB;AAC1D,EAAA,iBAAA,GAAoB,EAAA;AACtB;AAEA,SAAS,OAAA,CAAQ,OAAA,EAAiB,OAAA,GAAsB,EAAC,EAAS;AAGhE,EAAA,iBAAA,EAAkB;AAClB,EAAA,MAAM,YAAkC,YAAA,EAAa;AACrD,EAAA,IAAI,cAAc,IAAA,EAAM;AAGtB,IAAA;AAAA,EACF;AAMA,EAAA,IAAI,OAAA,GAAyB,QAAQ,OAAA,IAAW,IAAA;AAChD,EAAA,IAAI,MAAA,GAAwB,QAAQ,MAAA,IAAU,IAAA;AAC9C,EAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,MAAA,KAAW,IAAA,EAAM;AACvC,IAAA,MAAM,QAAQ,mBAAA,EAAoB;AAClC,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,IAAI,OAAA,KAAY,IAAA,EAAM,OAAA,GAAU,KAAA,CAAM,OAAA;AACtC,MAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,KAAA,CAAM,SAAA,CAAU,SAAS,CAAA,EAAG;AACjD,QAAA,MAAA,GAAS,MAAM,SAAA,CAAU,KAAA,CAAM,SAAA,CAAU,MAAA,GAAS,CAAC,CAAA,CAAG,OAAA;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAA,CAAY,OAAA,CAAQ,QAAA,IAAY,MAAA,EAAQ,WAAA,EAAY;AAC1D,EAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,oBAAA;AAK3C,EAAA,MAAM,SAAS,kBAAA,EAAmB;AAClC,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,UAAA,IAAc,EAAC;AAC7C,EAAA,MAAM,qBAAqB,MAAA,CAAO,OAAA,GAC7B,WAAA,CAAY,aAAA,EAAe,MAAM,CAAA,GAClC,aAAA;AACJ,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,GACvB,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAG,MAAM,CAAA,GACpC,MAAA,CAAO,OAAO,CAAA;AAElB,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IAClC,QAAA;AAAA,IACA,YAAA,EAAc,WAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,UAAA,EAAY,kBAAA;AAAA,IACZ,QAAA,EAAU,OAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,SAAA,CAAU,MAAM,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,CAAA;AACpC;AAmCO,IAAM,GAAA,GAAM,iBAAiB,OAAA,EAAS;AAAA,EAC3C,WAAA,EAAa;AACf,CAAC","file":"chunk-HCEKAVDR.js","sourcesContent":["/**\n * Phase 12.5 Tier 1.2 — TypeScript SDK `log()` export.\n *\n * Closes the TS side of Feature #4 \"Gap A\": before this module, customers\n * using the TS SDK had no way to populate the Logs tab of a trace's\n * Correlation panel without standing up their own OTel collector. The\n * Python SDK already had `morse.log(...)` (AGE-240); this is the\n * cross-language peer.\n *\n * Semantics mirror Python's `morse.log()`\n * (`apps/sdk/python/src/morse/__init__.py:360-411`):\n *\n * - Default severity: \"info\" (case-normalised to upper on the wire).\n * - Default service_name: \"morse-sdk-ts\" (overridable).\n * - Auto-reads the active trace_id + span_id from the SDK's existing\n * `node:async_hooks.AsyncLocalStorage` context (re-uses\n * `getActiveTraceState()` — the same primitive `run()`/`span()` use).\n * - Batched: the record is enqueued on the existing `BatchTransport`,\n * which flushes it to `/api/v1/logs/ingest` (derived from the traces\n * batch endpoint) on the next tick. NO synchronous fetch per call.\n * - Internal errors are absorbed via `absorbErrorsSync` so they never\n * propagate into the customer's logging call. Mirrors the Python\n * `@absorb_errors` decorator pattern.\n *\n * Wire shape: `{ logs: [{ timestamp, severity, service_name, body,\n * attributes, trace_id, span_id }] }`. See `apps/api/apps/logs/\n * controllers.py:66-134` for the API contract.\n */\n\nimport { absorbErrorsSync } from \"./_internal/errors\";\nimport { redactValue } from \"./_internal/redaction\";\nimport {\n getActiveTraceState,\n getRedactionConfig,\n getTransport,\n type TransportLike,\n} from \"./_internal/tracing\";\n\n/** Log severity — case-insensitive on input, upper-cased on the wire. */\nexport type LogSeverity = \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n\n/** Options accepted by `log()`. */\nexport interface LogOptions {\n /** Default: `\"info\"`. Upper-cased server-side. */\n severity?: LogSeverity;\n /** Free-form structured fields persisted on the record. */\n attributes?: Record<string, unknown>;\n /**\n * Override the auto-detected trace_id. Use only when emitting on\n * behalf of a known external trace (rare).\n */\n traceId?: string;\n /** Override the auto-detected span_id. Same caveat as `traceId`. */\n spanId?: string;\n /** Logical service tag. Default: `\"morse-sdk-ts\"`. */\n serviceName?: string;\n}\n\nconst DEFAULT_SERVICE_NAME = \"morse-sdk-ts\";\n\n/**\n * Lazy-init hook injected by `index.ts`. Allows `log()` to participate\n * in env-driven auto-init (matching the behaviour of `track()` /\n * `record()`) without `log.ts` reaching into the singleton state.\n *\n * @internal\n */\nlet ensureInitialized: () => void = () => {\n /* default no-op; replaced from index.ts */\n};\n\n/** @internal */\nexport function _setEnsureInitialized(fn: () => void): void {\n ensureInitialized = fn;\n}\n\nfunction logImpl(message: string, options: LogOptions = {}): void {\n // Match Python semantics: env-driven auto-init kicks in if the SDK\n // hasn't been explicitly init()'d yet but MORSE_API_KEY is set.\n ensureInitialized();\n const transport: TransportLike | null = getTransport();\n if (transport === null) {\n // SDK not initialised — silent no-op. Matches Python behaviour\n // (`_ensure_initialized()` short-circuit).\n return;\n }\n\n // Auto-pull trace + span IDs from the active context. Re-uses the\n // exact same context primitive that `track()` / `run()` / `span()`\n // use, so a `log()` call inside an `await run(...)` callback will\n // see the active trace's IDs.\n let traceId: string | null = options.traceId ?? null;\n let spanId: string | null = options.spanId ?? null;\n if (traceId === null || spanId === null) {\n const state = getActiveTraceState();\n if (state !== null) {\n if (traceId === null) traceId = state.traceId;\n if (spanId === null && state.spanStack.length > 0) {\n spanId = state.spanStack[state.spanStack.length - 1]!.span_id;\n }\n }\n }\n\n const severity = (options.severity ?? \"info\").toUpperCase();\n const serviceName = options.serviceName ?? DEFAULT_SERVICE_NAME;\n\n // PII redaction reuses the trace path's allow-list config. Mirrors\n // the Python client's `self._redaction_config.redact_value(payload)`\n // call.\n const config = getRedactionConfig();\n const rawAttributes = options.attributes ?? {};\n const redactedAttributes = config.enabled\n ? (redactValue(rawAttributes, config) as Record<string, unknown>)\n : rawAttributes;\n const redactedBody = config.enabled\n ? (redactValue(String(message), config) as string)\n : String(message);\n\n const record = {\n timestamp: new Date().toISOString(),\n severity,\n service_name: serviceName,\n body: redactedBody,\n attributes: redactedAttributes,\n trace_id: traceId,\n span_id: spanId,\n };\n\n transport.track({ logs: [record] });\n}\n\n/**\n * Emit a log record correlated to the current trace context.\n *\n * Auto-correlates to the surrounding `morse.run()` /\n * `morse.span()` if one is active. Inside a trace, the record's\n * `trace_id` + `span_id` are filled in from `AsyncLocalStorage`;\n * outside a trace, both fields are `null` and the record is still\n * accepted by the backend (it surfaces in the service-wide Logs view\n * but not on any individual trace's Correlation panel).\n *\n * Non-blocking. Batched alongside trace events on the existing\n * transport — flushes at the SDK's configured interval (default 2s).\n * Internal errors are absorbed; this call never throws.\n *\n * Silent no-op when the SDK isn't initialised (no `MORSE_API_KEY`\n * and no explicit `init()` call).\n *\n * @example\n * ```ts\n * import { init, runTraced, log } from \"@morsehq-dev/sdk\";\n *\n * init({ apiKey: process.env.MORSE_API_KEY });\n *\n * await runTraced({ agentName: \"lead-qualifier\" }, async () => {\n * log(\"starting search\", { attributes: { query: \"morse\" } });\n * const results = await search();\n * log(\"search complete\", {\n * severity: \"info\",\n * attributes: { result_count: results.length },\n * });\n * });\n * ```\n */\nexport const log = absorbErrorsSync(logImpl, {\n fingerprint: \"morse.log\",\n});\n"]}
1
+ {"version":3,"sources":["../src/log.ts"],"names":[],"mappings":";;;;AA8BA,cAAA,EAAA;AACA,YAAA,EAAA;AA2BA,IAAM,oBAAA,GAAuB,cAAA;AAS7B,IAAI,oBAAgC,MAAM;AAE1C,CAAA;AAGO,SAAS,sBAAsB,EAAA,EAAsB;AAC1D,EAAA,iBAAA,GAAoB,EAAA;AACtB;AAEA,SAAS,OAAA,CAAQ,OAAA,EAAiB,OAAA,GAAsB,EAAC,EAAS;AAGhE,EAAA,iBAAA,EAAkB;AAClB,EAAA,MAAM,YAAkC,YAAA,EAAa;AACrD,EAAA,IAAI,cAAc,IAAA,EAAM;AAGtB,IAAA;AAAA,EACF;AAMA,EAAA,IAAI,OAAA,GAAyB,QAAQ,OAAA,IAAW,IAAA;AAChD,EAAA,IAAI,MAAA,GAAwB,QAAQ,MAAA,IAAU,IAAA;AAC9C,EAAA,IAAI,OAAA,KAAY,IAAA,IAAQ,MAAA,KAAW,IAAA,EAAM;AACvC,IAAA,MAAM,QAAQ,mBAAA,EAAoB;AAClC,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,IAAI,OAAA,KAAY,IAAA,EAAM,OAAA,GAAU,KAAA,CAAM,OAAA;AACtC,MAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,KAAA,CAAM,SAAA,CAAU,SAAS,CAAA,EAAG;AACjD,QAAA,MAAA,GAAS,MAAM,SAAA,CAAU,KAAA,CAAM,SAAA,CAAU,MAAA,GAAS,CAAC,CAAA,CAAG,OAAA;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAA,CAAY,OAAA,CAAQ,QAAA,IAAY,MAAA,EAAQ,WAAA,EAAY;AAC1D,EAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,oBAAA;AAK3C,EAAA,MAAM,SAAS,kBAAA,EAAmB;AAClC,EAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,UAAA,IAAc,EAAC;AAC7C,EAAA,MAAM,qBAAqB,MAAA,CAAO,OAAA,GAC7B,WAAA,CAAY,aAAA,EAAe,MAAM,CAAA,GAClC,aAAA;AACJ,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,GACvB,WAAA,CAAY,MAAA,CAAO,OAAO,CAAA,EAAG,MAAM,CAAA,GACpC,MAAA,CAAO,OAAO,CAAA;AAElB,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,IAClC,QAAA;AAAA,IACA,YAAA,EAAc,WAAA;AAAA,IACd,IAAA,EAAM,YAAA;AAAA,IACN,UAAA,EAAY,kBAAA;AAAA,IACZ,QAAA,EAAU,OAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,SAAA,CAAU,MAAM,EAAE,IAAA,EAAM,CAAC,MAAM,GAAG,CAAA;AACpC;AAmCO,IAAM,GAAA,GAAM,iBAAiB,OAAA,EAAS;AAAA,EAC3C,WAAA,EAAa;AACf,CAAC","file":"chunk-7I4ILCLY.js","sourcesContent":["/**\n * Phase 12.5 Tier 1.2 — TypeScript SDK `log()` export.\n *\n * Closes the TS side of Feature #4 \"Gap A\": before this module, customers\n * using the TS SDK had no way to populate the Logs tab of a trace's\n * Correlation panel without standing up their own OTel collector. The\n * Python SDK already had `morse.log(...)` (AGE-240); this is the\n * cross-language peer.\n *\n * Semantics mirror Python's `morse.log()`\n * (`apps/sdk/python/src/morse/__init__.py:360-411`):\n *\n * - Default severity: \"info\" (case-normalised to upper on the wire).\n * - Default service_name: \"morse-sdk-ts\" (overridable).\n * - Auto-reads the active trace_id + span_id from the SDK's existing\n * `node:async_hooks.AsyncLocalStorage` context (re-uses\n * `getActiveTraceState()` — the same primitive `run()`/`span()` use).\n * - Batched: the record is enqueued on the existing `BatchTransport`,\n * which flushes it to `/api/v1/logs/ingest` (derived from the traces\n * batch endpoint) on the next tick. NO synchronous fetch per call.\n * - Internal errors are absorbed via `absorbErrorsSync` so they never\n * propagate into the customer's logging call. Mirrors the Python\n * `@absorb_errors` decorator pattern.\n *\n * Wire shape: `{ logs: [{ timestamp, severity, service_name, body,\n * attributes, trace_id, span_id }] }`. See `apps/api/apps/logs/\n * controllers.py:66-134` for the API contract.\n */\n\nimport { absorbErrorsSync } from \"./_internal/errors\";\nimport { redactValue } from \"./_internal/redaction\";\nimport {\n getActiveTraceState,\n getRedactionConfig,\n getTransport,\n type TransportLike,\n} from \"./_internal/tracing\";\n\n/** Log severity — case-insensitive on input, upper-cased on the wire. */\nexport type LogSeverity = \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n\n/** Options accepted by `log()`. */\nexport interface LogOptions {\n /** Default: `\"info\"`. Upper-cased server-side. */\n severity?: LogSeverity;\n /** Free-form structured fields persisted on the record. */\n attributes?: Record<string, unknown>;\n /**\n * Override the auto-detected trace_id. Use only when emitting on\n * behalf of a known external trace (rare).\n */\n traceId?: string;\n /** Override the auto-detected span_id. Same caveat as `traceId`. */\n spanId?: string;\n /** Logical service tag. Default: `\"morse-sdk-ts\"`. */\n serviceName?: string;\n}\n\nconst DEFAULT_SERVICE_NAME = \"morse-sdk-ts\";\n\n/**\n * Lazy-init hook injected by `index.ts`. Allows `log()` to participate\n * in env-driven auto-init (matching the behaviour of `track()` /\n * `record()`) without `log.ts` reaching into the singleton state.\n *\n * @internal\n */\nlet ensureInitialized: () => void = () => {\n /* default no-op; replaced from index.ts */\n};\n\n/** @internal */\nexport function _setEnsureInitialized(fn: () => void): void {\n ensureInitialized = fn;\n}\n\nfunction logImpl(message: string, options: LogOptions = {}): void {\n // Match Python semantics: env-driven auto-init kicks in if the SDK\n // hasn't been explicitly init()'d yet but MORSE_API_KEY is set.\n ensureInitialized();\n const transport: TransportLike | null = getTransport();\n if (transport === null) {\n // SDK not initialised — silent no-op. Matches Python behaviour\n // (`_ensure_initialized()` short-circuit).\n return;\n }\n\n // Auto-pull trace + span IDs from the active context. Re-uses the\n // exact same context primitive that `track()` / `run()` / `span()`\n // use, so a `log()` call inside an `await run(...)` callback will\n // see the active trace's IDs.\n let traceId: string | null = options.traceId ?? null;\n let spanId: string | null = options.spanId ?? null;\n if (traceId === null || spanId === null) {\n const state = getActiveTraceState();\n if (state !== null) {\n if (traceId === null) traceId = state.traceId;\n if (spanId === null && state.spanStack.length > 0) {\n spanId = state.spanStack[state.spanStack.length - 1]!.span_id;\n }\n }\n }\n\n const severity = (options.severity ?? \"info\").toUpperCase();\n const serviceName = options.serviceName ?? DEFAULT_SERVICE_NAME;\n\n // PII redaction reuses the trace path's allow-list config. Mirrors\n // the Python client's `self._redaction_config.redact_value(payload)`\n // call.\n const config = getRedactionConfig();\n const rawAttributes = options.attributes ?? {};\n const redactedAttributes = config.enabled\n ? (redactValue(rawAttributes, config) as Record<string, unknown>)\n : rawAttributes;\n const redactedBody = config.enabled\n ? (redactValue(String(message), config) as string)\n : String(message);\n\n const record = {\n timestamp: new Date().toISOString(),\n severity,\n service_name: serviceName,\n body: redactedBody,\n attributes: redactedAttributes,\n trace_id: traceId,\n span_id: spanId,\n };\n\n transport.track({ logs: [record] });\n}\n\n/**\n * Emit a log record correlated to the current trace context.\n *\n * Auto-correlates to the surrounding `morse.run()` /\n * `morse.span()` if one is active. Inside a trace, the record's\n * `trace_id` + `span_id` are filled in from `AsyncLocalStorage`;\n * outside a trace, both fields are `null` and the record is still\n * accepted by the backend (it surfaces in the service-wide Logs view\n * but not on any individual trace's Correlation panel).\n *\n * Non-blocking. Batched alongside trace events on the existing\n * transport — flushes at the SDK's configured interval (default 2s).\n * Internal errors are absorbed; this call never throws.\n *\n * Silent no-op when the SDK isn't initialised (no `MORSE_API_KEY`\n * and no explicit `init()` call).\n *\n * @example\n * ```ts\n * import { init, runTraced, log } from \"@morsehq-dev/sdk\";\n *\n * init({ apiKey: process.env.MORSE_API_KEY });\n *\n * await runTraced({ agentName: \"lead-qualifier\" }, async () => {\n * log(\"starting search\", { attributes: { query: \"morse\" } });\n * const results = await search();\n * log(\"search complete\", {\n * severity: \"info\",\n * attributes: { result_count: results.length },\n * });\n * });\n * ```\n */\nexport const log = absorbErrorsSync(logImpl, {\n fingerprint: \"morse.log\",\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkTGHDV5MC_cjs = require('./chunk-TGHDV5MC.cjs');
3
+ var chunkRRE2LX2A_cjs = require('./chunk-RRE2LX2A.cjs');
4
4
 
5
5
  // src/_agent-sdk-common/redaction.ts
6
6
  var DEFAULT_TOOL_ARG_MAX_BYTES = 2048;
@@ -25,10 +25,10 @@ function summarizeImpl(value, opts, defaultMax) {
25
25
  }
26
26
  var summarizeToolInputInner = (value, opts) => summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_ARG_MAX_BYTES);
27
27
  var summarizeToolOutputInner = (value, opts) => summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_OUTPUT_MAX_BYTES);
28
- var safeSummarizeToolInput = chunkTGHDV5MC_cjs.absorbErrorsSync(summarizeToolInputInner, {
28
+ var safeSummarizeToolInput = chunkRRE2LX2A_cjs.absorbErrorsSync(summarizeToolInputInner, {
29
29
  fingerprint: "agent-sdk.redaction.summarizeToolInput"
30
30
  });
31
- var safeSummarizeToolOutput = chunkTGHDV5MC_cjs.absorbErrorsSync(summarizeToolOutputInner, {
31
+ var safeSummarizeToolOutput = chunkRRE2LX2A_cjs.absorbErrorsSync(summarizeToolOutputInner, {
32
32
  fingerprint: "agent-sdk.redaction.summarizeToolOutput"
33
33
  });
34
34
  function summarizeToolInput(value, opts) {
@@ -89,7 +89,7 @@ function summarizeBinaryBlockInner(block) {
89
89
  if (mime !== void 0) out.mime = mime;
90
90
  return out;
91
91
  }
92
- chunkTGHDV5MC_cjs.absorbErrorsSync(summarizeBinaryBlockInner, {
92
+ chunkRRE2LX2A_cjs.absorbErrorsSync(summarizeBinaryBlockInner, {
93
93
  fingerprint: "agent-sdk.redaction.summarizeBinaryBlock"
94
94
  });
95
95
  function redactContentBlocksInner(blocks) {
@@ -98,7 +98,7 @@ function redactContentBlocksInner(blocks) {
98
98
  return summary === null ? block : summary;
99
99
  });
100
100
  }
101
- chunkTGHDV5MC_cjs.absorbErrorsSync(redactContentBlocksInner, {
101
+ chunkRRE2LX2A_cjs.absorbErrorsSync(redactContentBlocksInner, {
102
102
  fingerprint: "agent-sdk.redaction.redactContentBlocks"
103
103
  });
104
104
  var DATA_URL_RE = /data:[A-Za-z0-9.+/-]*(?:;[A-Za-z0-9.=+/-]+)*?;base64,[A-Za-z0-9+/=]+/g;
@@ -411,5 +411,5 @@ function rotr(x, n) {
411
411
 
412
412
  exports.summarizeToolInput = summarizeToolInput;
413
413
  exports.summarizeToolOutput = summarizeToolOutput;
414
- //# sourceMappingURL=chunk-3XQOZXJM.cjs.map
415
- //# sourceMappingURL=chunk-3XQOZXJM.cjs.map
414
+ //# sourceMappingURL=chunk-DGBQ3UI6.cjs.map
415
+ //# sourceMappingURL=chunk-DGBQ3UI6.cjs.map