@morsehq-dev/sdk 0.5.0-rc.4 → 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.
- package/README.md +17 -12
- package/dist/anthropic/index.cjs +11 -11
- package/dist/anthropic/index.js +4 -4
- package/dist/anthropic-agent-sdk/index.cjs +157 -102
- package/dist/anthropic-agent-sdk/index.cjs.map +1 -1
- package/dist/anthropic-agent-sdk/index.d.cts +57 -34
- package/dist/anthropic-agent-sdk/index.d.ts +57 -34
- package/dist/anthropic-agent-sdk/index.js +126 -72
- package/dist/anthropic-agent-sdk/index.js.map +1 -1
- package/dist/browser/anthropic/index.cjs +11 -11
- package/dist/browser/anthropic/index.js +4 -4
- package/dist/browser/anthropic-agent-sdk/index.cjs +157 -102
- package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -1
- package/dist/browser/anthropic-agent-sdk/index.js +126 -72
- package/dist/browser/anthropic-agent-sdk/index.js.map +1 -1
- package/dist/browser/{chunk-VOZBYSWK.cjs → chunk-26Q2QD5J.cjs} +5 -5
- package/dist/browser/{chunk-VOZBYSWK.cjs.map → chunk-26Q2QD5J.cjs.map} +1 -1
- package/dist/browser/{chunk-36QTJJT7.cjs → chunk-47GVOQB4.cjs} +12 -12
- package/dist/browser/{chunk-36QTJJT7.cjs.map → chunk-47GVOQB4.cjs.map} +1 -1
- package/dist/browser/{chunk-E2OVLWAF.js → chunk-64YI3IZS.js} +3 -3
- package/dist/browser/{chunk-E2OVLWAF.js.map → chunk-64YI3IZS.js.map} +1 -1
- package/dist/browser/{chunk-JR6JN7IZ.js → chunk-CI7M2GHD.js} +4 -4
- package/dist/browser/{chunk-JR6JN7IZ.js.map → chunk-CI7M2GHD.js.map} +1 -1
- package/dist/browser/{chunk-WIWUEI5Z.js → chunk-EH326H6U.js} +3 -3
- package/dist/browser/{chunk-WIWUEI5Z.js.map → chunk-EH326H6U.js.map} +1 -1
- package/dist/browser/{chunk-KXVSMY6L.js → chunk-GLL57K7P.js} +3 -3
- package/dist/browser/{chunk-KXVSMY6L.js.map → chunk-GLL57K7P.js.map} +1 -1
- package/dist/browser/{chunk-3H2OJLC2.cjs → chunk-IHIS62VS.cjs} +4 -4
- package/dist/browser/chunk-IHIS62VS.cjs.map +1 -0
- package/dist/browser/{chunk-PIWO5L5N.js → chunk-MIB3EOC4.js} +5 -5
- package/dist/browser/{chunk-PIWO5L5N.js.map → chunk-MIB3EOC4.js.map} +1 -1
- package/dist/browser/{chunk-3STFITZF.cjs → chunk-QAFFDJFK.cjs} +6 -6
- package/dist/browser/{chunk-3STFITZF.cjs.map → chunk-QAFFDJFK.cjs.map} +1 -1
- package/dist/{chunk-BNMTY7PE.js → browser/chunk-UL5TNXQL.js} +4 -4
- package/dist/browser/{chunk-VZA2EPY3.js.map → chunk-UL5TNXQL.js.map} +1 -1
- package/dist/browser/{chunk-XD4VWCAC.js → chunk-V7AUPQIJ.js} +4 -4
- package/dist/browser/chunk-V7AUPQIJ.js.map +1 -0
- package/dist/browser/{chunk-YD7TO4PD.cjs → chunk-WGWPCVYB.cjs} +18 -18
- package/dist/browser/{chunk-YD7TO4PD.cjs.map → chunk-WGWPCVYB.cjs.map} +1 -1
- package/dist/browser/{chunk-6J6F5LJI.cjs → chunk-WR2SQLKP.cjs} +7 -7
- package/dist/browser/{chunk-6J6F5LJI.cjs.map → chunk-WR2SQLKP.cjs.map} +1 -1
- package/dist/browser/{chunk-255AHH2W.cjs → chunk-ZVVUZRG7.cjs} +15 -15
- package/dist/browser/{chunk-255AHH2W.cjs.map → chunk-ZVVUZRG7.cjs.map} +1 -1
- package/dist/browser/index.cjs +91 -91
- package/dist/browser/index.js +8 -8
- package/dist/browser/integrations/pino.cjs +4 -4
- package/dist/browser/integrations/pino.js +3 -3
- package/dist/browser/langchain/index.cjs +17 -17
- package/dist/browser/langchain/index.js +2 -2
- package/dist/browser/langgraph/index.cjs +27 -27
- package/dist/browser/langgraph/index.js +5 -5
- package/dist/browser/openai/index.cjs +11 -11
- package/dist/browser/openai/index.js +2 -2
- package/dist/browser/openai-agents/index.cjs +34 -34
- package/dist/browser/openai-agents/index.js +4 -4
- package/dist/browser/vercel-ai/index.cjs +14 -14
- package/dist/browser/vercel-ai/index.js +3 -3
- package/dist/{chunk-MBOISGKD.js → chunk-7I4ILCLY.js} +4 -4
- package/dist/{chunk-MBOISGKD.js.map → chunk-7I4ILCLY.js.map} +1 -1
- package/dist/{chunk-7ZNGY236.cjs → chunk-DGBQ3UI6.cjs} +7 -7
- package/dist/{chunk-7ZNGY236.cjs.map → chunk-DGBQ3UI6.cjs.map} +1 -1
- package/dist/{chunk-VM3QM22Z.cjs → chunk-DPW4W7H7.cjs} +18 -18
- package/dist/{chunk-VM3QM22Z.cjs.map → chunk-DPW4W7H7.cjs.map} +1 -1
- package/dist/{chunk-HA5RY4N5.cjs → chunk-DQ4T2MJE.cjs} +4 -4
- package/dist/chunk-DQ4T2MJE.cjs.map +1 -0
- package/dist/{chunk-ELBY4SJ7.js → chunk-ELVBOJWY.js} +4 -4
- package/dist/chunk-ELVBOJWY.js.map +1 -0
- package/dist/{chunk-JFFZBCTP.js → chunk-HONYN2OI.js} +3 -3
- package/dist/{chunk-JFFZBCTP.js.map → chunk-HONYN2OI.js.map} +1 -1
- package/dist/{chunk-ULWGK6F5.cjs → chunk-I3P5CHBV.cjs} +12 -12
- package/dist/{chunk-ULWGK6F5.cjs.map → chunk-I3P5CHBV.cjs.map} +1 -1
- package/dist/{browser/chunk-VZA2EPY3.js → chunk-MNV4HASC.js} +4 -4
- package/dist/{chunk-BNMTY7PE.js.map → chunk-MNV4HASC.js.map} +1 -1
- package/dist/{chunk-2O2FFJLK.js → chunk-NR36TJMT.js} +5 -5
- package/dist/{chunk-2O2FFJLK.js.map → chunk-NR36TJMT.js.map} +1 -1
- package/dist/{chunk-YPP5DDPO.js → chunk-QZDUGEIR.js} +3 -3
- package/dist/{chunk-YPP5DDPO.js.map → chunk-QZDUGEIR.js.map} +1 -1
- package/dist/{chunk-RDFDPK2X.cjs → chunk-RRE2LX2A.cjs} +6 -6
- package/dist/{chunk-RDFDPK2X.cjs.map → chunk-RRE2LX2A.cjs.map} +1 -1
- package/dist/{chunk-WLNADB4J.cjs → chunk-SJ625SQS.cjs} +15 -15
- package/dist/{chunk-WLNADB4J.cjs.map → chunk-SJ625SQS.cjs.map} +1 -1
- package/dist/{chunk-Q6NQQ2LO.js → chunk-YKPZQPEW.js} +3 -3
- package/dist/{chunk-Q6NQQ2LO.js.map → chunk-YKPZQPEW.js.map} +1 -1
- package/dist/{chunk-HZKXILBF.cjs → chunk-Z5MFR7UE.cjs} +5 -5
- package/dist/{chunk-HZKXILBF.cjs.map → chunk-Z5MFR7UE.cjs.map} +1 -1
- package/dist/index.cjs +104 -99
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -10
- package/dist/index.js.map +1 -1
- package/dist/integrations/pino.cjs +4 -4
- package/dist/integrations/pino.js +3 -3
- package/dist/langchain/index.cjs +17 -17
- package/dist/langchain/index.js +2 -2
- package/dist/langgraph/index.cjs +27 -27
- package/dist/langgraph/index.js +5 -5
- package/dist/openai/index.cjs +11 -11
- package/dist/openai/index.js +2 -2
- package/dist/openai-agents/index.cjs +34 -34
- package/dist/openai-agents/index.js +4 -4
- package/dist/vercel-ai/index.cjs +14 -14
- package/dist/vercel-ai/index.js +3 -3
- package/package.json +1 -1
- package/dist/browser/chunk-3H2OJLC2.cjs.map +0 -1
- package/dist/browser/chunk-XD4VWCAC.js.map +0 -1
- package/dist/chunk-ELBY4SJ7.js.map +0 -1
- package/dist/chunk-HA5RY4N5.cjs.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkQAFFDJFK_cjs = require('./chunk-QAFFDJFK.cjs');
|
|
4
|
+
var chunkIHIS62VS_cjs = require('./chunk-IHIS62VS.cjs');
|
|
5
5
|
|
|
6
6
|
// src/_agent-sdk-common/span-emitter.ts
|
|
7
|
-
|
|
7
|
+
chunkIHIS62VS_cjs.init_tracing();
|
|
8
8
|
var MAX_NAME_BYTES = 256;
|
|
9
9
|
var MAX_DESCRIPTION_BYTES = 2048;
|
|
10
10
|
function truncate(value, maxBytes) {
|
|
@@ -25,7 +25,7 @@ var _emitAgentSpan = (opts) => {
|
|
|
25
25
|
adapter,
|
|
26
26
|
agent_name: agentName
|
|
27
27
|
};
|
|
28
|
-
const handle =
|
|
28
|
+
const handle = chunkIHIS62VS_cjs.startSpan({
|
|
29
29
|
name: `${adapter}.agent`,
|
|
30
30
|
type: "agent",
|
|
31
31
|
metadata
|
|
@@ -37,7 +37,7 @@ var _emitAgentSpan = (opts) => {
|
|
|
37
37
|
}
|
|
38
38
|
return handle;
|
|
39
39
|
};
|
|
40
|
-
var emitAgentSpan =
|
|
40
|
+
var emitAgentSpan = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
41
41
|
_emitAgentSpan,
|
|
42
42
|
{
|
|
43
43
|
fingerprint: "morse.adapters.shared.emitAgentSpan"
|
|
@@ -54,7 +54,7 @@ var _emitLlmSpan = (opts) => {
|
|
|
54
54
|
if (typeof opts.provider === "string" && opts.provider.length > 0) {
|
|
55
55
|
metadata.provider = opts.provider;
|
|
56
56
|
}
|
|
57
|
-
const handle =
|
|
57
|
+
const handle = chunkIHIS62VS_cjs.startSpan({
|
|
58
58
|
name: `${adapter}.llm`,
|
|
59
59
|
type: "llm",
|
|
60
60
|
metadata
|
|
@@ -80,7 +80,7 @@ var _emitLlmSpan = (opts) => {
|
|
|
80
80
|
if (opts.outputData !== void 0) span.output_data = opts.outputData;
|
|
81
81
|
return handle;
|
|
82
82
|
};
|
|
83
|
-
var emitLlmSpan =
|
|
83
|
+
var emitLlmSpan = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
84
84
|
_emitLlmSpan,
|
|
85
85
|
{
|
|
86
86
|
fingerprint: "morse.adapters.shared.emitLlmSpan"
|
|
@@ -101,13 +101,13 @@ var _emitToolSpan = (opts) => {
|
|
|
101
101
|
adapter,
|
|
102
102
|
tool
|
|
103
103
|
};
|
|
104
|
-
return
|
|
104
|
+
return chunkIHIS62VS_cjs.startSpan({
|
|
105
105
|
name: `${adapter}.tool.${toolName}`,
|
|
106
106
|
type: "tool",
|
|
107
107
|
metadata
|
|
108
108
|
});
|
|
109
109
|
};
|
|
110
|
-
var emitToolSpan =
|
|
110
|
+
var emitToolSpan = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
111
111
|
_emitToolSpan,
|
|
112
112
|
{
|
|
113
113
|
fingerprint: "morse.adapters.shared.emitToolSpan"
|
|
@@ -127,13 +127,13 @@ var _emitSubagentSpan = (opts) => {
|
|
|
127
127
|
if (typeof opts.taskDescription === "string" && opts.taskDescription.length > 0) {
|
|
128
128
|
metadata.task_description = truncate(opts.taskDescription, MAX_DESCRIPTION_BYTES);
|
|
129
129
|
}
|
|
130
|
-
return
|
|
130
|
+
return chunkIHIS62VS_cjs.startSpan({
|
|
131
131
|
name: `${adapter}.subagent.${subagentName}`,
|
|
132
132
|
type: "agent",
|
|
133
133
|
metadata
|
|
134
134
|
});
|
|
135
135
|
};
|
|
136
|
-
var emitSubagentSpan =
|
|
136
|
+
var emitSubagentSpan = chunkQAFFDJFK_cjs.absorbErrorsSync(_emitSubagentSpan, {
|
|
137
137
|
fingerprint: "morse.adapters.shared.emitSubagentSpan"
|
|
138
138
|
});
|
|
139
139
|
var _emitHookSpan = (opts) => {
|
|
@@ -157,13 +157,13 @@ var _emitHookSpan = (opts) => {
|
|
|
157
157
|
tool_kind: "hook",
|
|
158
158
|
hook
|
|
159
159
|
};
|
|
160
|
-
return
|
|
160
|
+
return chunkIHIS62VS_cjs.startSpan({
|
|
161
161
|
name: `${adapter}.hook.${hookKind}.${hookName}`,
|
|
162
162
|
type: "tool",
|
|
163
163
|
metadata
|
|
164
164
|
});
|
|
165
165
|
};
|
|
166
|
-
var emitHookSpan =
|
|
166
|
+
var emitHookSpan = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
167
167
|
_emitHookSpan,
|
|
168
168
|
{
|
|
169
169
|
fingerprint: "morse.adapters.shared.emitHookSpan"
|
|
@@ -175,5 +175,5 @@ exports.emitHookSpan = emitHookSpan;
|
|
|
175
175
|
exports.emitLlmSpan = emitLlmSpan;
|
|
176
176
|
exports.emitSubagentSpan = emitSubagentSpan;
|
|
177
177
|
exports.emitToolSpan = emitToolSpan;
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
179
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-ZVVUZRG7.cjs.map
|
|
179
|
+
//# sourceMappingURL=chunk-ZVVUZRG7.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-255AHH2W.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 // MHQ-858: prompt/response capture. Adapters pass already-truncated\n // values (see `_internal/llm-io.ts`); this emitter does not truncate.\n inputData?: unknown;\n outputData?: 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 if (opts.inputData !== undefined) span.input_data = opts.inputData;\n if (opts.outputData !== undefined) span.output_data = opts.outputData;\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-ZVVUZRG7.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 // MHQ-858: prompt/response capture. Adapters pass already-truncated\n // values (see `_internal/llm-io.ts`); this emitter does not truncate.\n inputData?: unknown;\n outputData?: 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 if (opts.inputData !== undefined) span.input_data = opts.inputData;\n if (opts.outputData !== undefined) span.output_data = opts.outputData;\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"]}
|
package/dist/browser/index.cjs
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
var
|
|
3
|
+
var chunkWGWPCVYB_cjs = require('./chunk-WGWPCVYB.cjs');
|
|
4
|
+
var chunk47GVOQB4_cjs = require('./chunk-47GVOQB4.cjs');
|
|
5
|
+
require('./chunk-26Q2QD5J.cjs');
|
|
6
|
+
var chunkQAFFDJFK_cjs = require('./chunk-QAFFDJFK.cjs');
|
|
7
7
|
require('./chunk-SWQOPFE4.cjs');
|
|
8
8
|
require('./chunk-RBNCTHK3.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunkIHIS62VS_cjs = require('./chunk-IHIS62VS.cjs');
|
|
10
10
|
|
|
11
11
|
// src/_internal/auto-detect.browser.ts
|
|
12
12
|
async function installAdapters() {
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// src/index.ts
|
|
16
|
-
|
|
16
|
+
chunkIHIS62VS_cjs.init_env();
|
|
17
17
|
|
|
18
18
|
// src/_internal/db-capture.browser.ts
|
|
19
19
|
function maybeEnableDbCaptureFromEnv() {
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// src/index.ts
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
chunkIHIS62VS_cjs.init_otel_provider_browser();
|
|
24
|
+
chunkIHIS62VS_cjs.init_redaction();
|
|
25
25
|
|
|
26
26
|
// src/_internal/transport.ts
|
|
27
|
-
|
|
28
|
-
var SDK_VERSION = "0.5.0-rc.
|
|
27
|
+
chunkIHIS62VS_cjs.init_diagnostics();
|
|
28
|
+
var SDK_VERSION = "0.5.0-rc.5" ;
|
|
29
29
|
var RETRY_AFTER_CAP_SECONDS = 30;
|
|
30
30
|
function parseRetryAfter(value) {
|
|
31
31
|
if (!value) return null;
|
|
@@ -130,11 +130,11 @@ var BatchTransport = class {
|
|
|
130
130
|
/** Enqueue an event. Non-blocking. Returns false if the queue is full. */
|
|
131
131
|
track(event) {
|
|
132
132
|
if (this.closed) {
|
|
133
|
-
|
|
133
|
+
chunkIHIS62VS_cjs.recordDrop(chunkIHIS62VS_cjs.REASON_SHUTDOWN_DROP, "trace");
|
|
134
134
|
return false;
|
|
135
135
|
}
|
|
136
136
|
if (this.queue.length >= this.maxQueueSize) {
|
|
137
|
-
|
|
137
|
+
chunkIHIS62VS_cjs.recordDrop(chunkIHIS62VS_cjs.REASON_QUEUE_FULL, "trace");
|
|
138
138
|
return false;
|
|
139
139
|
}
|
|
140
140
|
this.queue.push(event);
|
|
@@ -221,12 +221,12 @@ var BatchTransport = class {
|
|
|
221
221
|
body: JSON.stringify(payload),
|
|
222
222
|
signal: controller.signal
|
|
223
223
|
});
|
|
224
|
-
|
|
224
|
+
chunkIHIS62VS_cjs.setLevel(resp.headers.get("X-Morse-Diagnostics"));
|
|
225
225
|
const droppedCount = countPayloadEntries(payload);
|
|
226
226
|
const droppedCategory = categoryOf(payload);
|
|
227
227
|
if (resp.status === 429) {
|
|
228
228
|
await recordQuotaState(resp);
|
|
229
|
-
|
|
229
|
+
chunkIHIS62VS_cjs.recordDrop(chunkIHIS62VS_cjs.REASON_QUOTA_REJECTED, droppedCategory, droppedCount);
|
|
230
230
|
}
|
|
231
231
|
if (!resp.ok) {
|
|
232
232
|
let bodySnippet = "";
|
|
@@ -236,9 +236,9 @@ var BatchTransport = class {
|
|
|
236
236
|
} catch {
|
|
237
237
|
}
|
|
238
238
|
if (resp.status !== 429) {
|
|
239
|
-
|
|
239
|
+
chunkIHIS62VS_cjs.recordDrop(chunkIHIS62VS_cjs.REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
|
|
240
240
|
}
|
|
241
|
-
|
|
241
|
+
chunkIHIS62VS_cjs.report(new Error(`morse: batch POST returned ${resp.status} ${bodySnippet}`), {
|
|
242
242
|
fingerprint: "morse.transport.post.non_2xx",
|
|
243
243
|
extra: {
|
|
244
244
|
endpoint_host: hostnameOf(url),
|
|
@@ -247,8 +247,8 @@ var BatchTransport = class {
|
|
|
247
247
|
});
|
|
248
248
|
}
|
|
249
249
|
} catch (err) {
|
|
250
|
-
|
|
251
|
-
|
|
250
|
+
chunkIHIS62VS_cjs.recordDrop(chunkIHIS62VS_cjs.REASON_RETRY_EXHAUSTED, categoryOf(payload), countPayloadEntries(payload));
|
|
251
|
+
chunkIHIS62VS_cjs.report(err, {
|
|
252
252
|
fingerprint: "morse.transport.post.network",
|
|
253
253
|
extra: {
|
|
254
254
|
endpoint_host: hostnameOf(url),
|
|
@@ -292,10 +292,10 @@ function categoryOf(payload) {
|
|
|
292
292
|
}
|
|
293
293
|
|
|
294
294
|
// src/index.ts
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
295
|
+
chunkIHIS62VS_cjs.init_tracing();
|
|
296
|
+
chunkIHIS62VS_cjs.init_diagnostics();
|
|
297
|
+
chunkIHIS62VS_cjs.init_spans();
|
|
298
|
+
chunkIHIS62VS_cjs.init_propagation();
|
|
299
299
|
var version = SDK_VERSION;
|
|
300
300
|
var singleton = null;
|
|
301
301
|
var transportFactory = (opts) => new BatchTransport(opts);
|
|
@@ -315,9 +315,9 @@ function logDestinationOnce(endpoint) {
|
|
|
315
315
|
}
|
|
316
316
|
function resolveEndpoint(explicit) {
|
|
317
317
|
if (explicit && explicit.length > 0) return explicit;
|
|
318
|
-
const fromEnv =
|
|
318
|
+
const fromEnv = chunkIHIS62VS_cjs.getEndpoint();
|
|
319
319
|
if (fromEnv) return fromEnv;
|
|
320
|
-
return
|
|
320
|
+
return chunkIHIS62VS_cjs.DEFAULT_ENDPOINT;
|
|
321
321
|
}
|
|
322
322
|
var OTLP_TRACES_PATH = "/api/v1/otlp/v1/traces";
|
|
323
323
|
function deriveOtlpEndpoint(tracesEndpoint) {
|
|
@@ -332,10 +332,10 @@ function deriveOtlpEndpoint(tracesEndpoint) {
|
|
|
332
332
|
}
|
|
333
333
|
}
|
|
334
334
|
function buildSingleton(opts, redaction) {
|
|
335
|
-
if (
|
|
335
|
+
if (chunkIHIS62VS_cjs.isDisabled()) {
|
|
336
336
|
return null;
|
|
337
337
|
}
|
|
338
|
-
const apiKey = opts.apiKey ??
|
|
338
|
+
const apiKey = opts.apiKey ?? chunkIHIS62VS_cjs.getApiKey();
|
|
339
339
|
if (!apiKey) {
|
|
340
340
|
if (!noApiKeyWarningEmitted) {
|
|
341
341
|
logger(
|
|
@@ -347,24 +347,24 @@ function buildSingleton(opts, redaction) {
|
|
|
347
347
|
return null;
|
|
348
348
|
}
|
|
349
349
|
const endpoint = resolveEndpoint(opts.endpoint);
|
|
350
|
-
const flushIntervalSeconds = opts.flushIntervalSeconds ??
|
|
350
|
+
const flushIntervalSeconds = opts.flushIntervalSeconds ?? chunkIHIS62VS_cjs.getFlushIntervalSeconds();
|
|
351
351
|
const transport = transportFactory({ apiKey, endpoint, flushIntervalSeconds });
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
const explicitSource =
|
|
356
|
-
const resolvedSource = explicitSource ??
|
|
357
|
-
|
|
352
|
+
chunkIHIS62VS_cjs.setTransport(transport);
|
|
353
|
+
chunkIHIS62VS_cjs.setRedactionConfig(redaction);
|
|
354
|
+
chunkIHIS62VS_cjs.setDiagnosticsClientConfig({ apiKey, endpoint });
|
|
355
|
+
const explicitSource = chunkIHIS62VS_cjs.isValidInternalSource(opts.source) ? opts.source : void 0;
|
|
356
|
+
const resolvedSource = explicitSource ?? chunkIHIS62VS_cjs.getInternalSource() ?? null;
|
|
357
|
+
chunkIHIS62VS_cjs.setSource(resolvedSource);
|
|
358
358
|
logDestinationOnce(endpoint);
|
|
359
359
|
try {
|
|
360
|
-
|
|
360
|
+
chunkIHIS62VS_cjs.getEngine().configure({
|
|
361
361
|
endpoint: deriveOtlpEndpoint(endpoint),
|
|
362
362
|
apiKey,
|
|
363
|
-
sampleRate:
|
|
363
|
+
sampleRate: chunkIHIS62VS_cjs.getSampleRate(),
|
|
364
364
|
scheduleDelayMillis: flushIntervalSeconds * 1e3,
|
|
365
|
-
maxQueueSize:
|
|
366
|
-
maxExportBatchSize:
|
|
367
|
-
maxFieldBytes:
|
|
365
|
+
maxQueueSize: chunkIHIS62VS_cjs.getMaxQueueSize(),
|
|
366
|
+
maxExportBatchSize: chunkIHIS62VS_cjs.getMaxBatchSize(),
|
|
367
|
+
maxFieldBytes: chunkIHIS62VS_cjs.getMaxFieldBytes(),
|
|
368
368
|
// 10s (not the exporter's un-overridden 30s ceiling): a genuine
|
|
369
369
|
// network blip still gets several retries with backoff; a fully dead
|
|
370
370
|
// endpoint fails within a bounded, shutdown-friendly window instead
|
|
@@ -373,32 +373,32 @@ function buildSingleton(opts, redaction) {
|
|
|
373
373
|
redactionConfig: redaction
|
|
374
374
|
});
|
|
375
375
|
} catch (err) {
|
|
376
|
-
|
|
376
|
+
chunkIHIS62VS_cjs.report(err, { fingerprint: "morse.otel_provider.configure" });
|
|
377
377
|
}
|
|
378
378
|
void installAdapters().catch(() => {
|
|
379
379
|
});
|
|
380
380
|
try {
|
|
381
381
|
maybeEnableDbCaptureFromEnv();
|
|
382
382
|
} catch (err) {
|
|
383
|
-
|
|
383
|
+
chunkIHIS62VS_cjs.report(err, { fingerprint: "morse.db_capture.register" });
|
|
384
384
|
}
|
|
385
385
|
return { apiKey, endpoint, transport, redaction };
|
|
386
386
|
}
|
|
387
387
|
function ensureInitialized() {
|
|
388
|
-
if (
|
|
388
|
+
if (chunkIHIS62VS_cjs.isDisabled()) return null;
|
|
389
389
|
if (singleton !== null) return singleton;
|
|
390
|
-
singleton = buildSingleton({},
|
|
390
|
+
singleton = buildSingleton({}, chunkIHIS62VS_cjs.buildRedactionConfig());
|
|
391
391
|
return singleton;
|
|
392
392
|
}
|
|
393
|
-
|
|
393
|
+
chunk47GVOQB4_cjs._setEnsureInitialized(() => {
|
|
394
394
|
ensureInitialized();
|
|
395
395
|
});
|
|
396
396
|
function init(options = {}) {
|
|
397
|
-
if (
|
|
397
|
+
if (chunkIHIS62VS_cjs.isDisabled()) {
|
|
398
398
|
logger("info", "morse: MORSE_DISABLED=1 \u2014 SDK is a no-op");
|
|
399
399
|
return;
|
|
400
400
|
}
|
|
401
|
-
const redaction =
|
|
401
|
+
const redaction = chunkIHIS62VS_cjs.buildRedactionConfig(options.redaction);
|
|
402
402
|
try {
|
|
403
403
|
if (singleton !== null) {
|
|
404
404
|
void singleton.transport.shutdown();
|
|
@@ -406,10 +406,10 @@ function init(options = {}) {
|
|
|
406
406
|
}
|
|
407
407
|
singleton = buildSingleton(options, redaction);
|
|
408
408
|
} catch (err) {
|
|
409
|
-
|
|
409
|
+
chunkIHIS62VS_cjs.report(err, { fingerprint: "morse.init" });
|
|
410
410
|
}
|
|
411
411
|
}
|
|
412
|
-
var track =
|
|
412
|
+
var track = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
413
413
|
(options) => {
|
|
414
414
|
const state = ensureInitialized();
|
|
415
415
|
if (!state) return;
|
|
@@ -417,33 +417,33 @@ var track = chunk3STFITZF_cjs.absorbErrorsSync(
|
|
|
417
417
|
agent_id: options.agentId,
|
|
418
418
|
...options.runData
|
|
419
419
|
};
|
|
420
|
-
const redacted =
|
|
420
|
+
const redacted = chunkIHIS62VS_cjs.redactValue(payload, state.redaction);
|
|
421
421
|
state.transport.track(redacted);
|
|
422
422
|
},
|
|
423
423
|
{ fingerprint: "morse.track" }
|
|
424
424
|
);
|
|
425
|
-
var batchTrack =
|
|
425
|
+
var batchTrack = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
426
426
|
(runs) => {
|
|
427
427
|
const state = ensureInitialized();
|
|
428
428
|
if (!state) return;
|
|
429
429
|
for (const run2 of runs) {
|
|
430
|
-
const redacted =
|
|
430
|
+
const redacted = chunkIHIS62VS_cjs.redactValue(run2, state.redaction);
|
|
431
431
|
state.transport.track(redacted);
|
|
432
432
|
}
|
|
433
433
|
},
|
|
434
434
|
{ fingerprint: "morse.batch_track" }
|
|
435
435
|
);
|
|
436
|
-
var record =
|
|
436
|
+
var record = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
437
437
|
(rec) => {
|
|
438
438
|
const state = ensureInitialized();
|
|
439
439
|
if (!state) return;
|
|
440
|
-
const traceId =
|
|
441
|
-
const now =
|
|
440
|
+
const traceId = chunkIHIS62VS_cjs.generateTraceId();
|
|
441
|
+
const now = chunkIHIS62VS_cjs.nowIso();
|
|
442
442
|
const resolvedStatus = rec.errorMessage ? "failed" : rec.status ?? "completed";
|
|
443
443
|
const span2 = {
|
|
444
444
|
trace_id: traceId,
|
|
445
|
-
span_id:
|
|
446
|
-
type:
|
|
445
|
+
span_id: chunkIHIS62VS_cjs.generateSpanId(),
|
|
446
|
+
type: chunkIHIS62VS_cjs.SpanType.AGENT,
|
|
447
447
|
name: rec.agent,
|
|
448
448
|
started_at: now,
|
|
449
449
|
ended_at: now,
|
|
@@ -468,58 +468,58 @@ var record = chunk3STFITZF_cjs.absorbErrorsSync(
|
|
|
468
468
|
success: rec.success,
|
|
469
469
|
outcome: rec.outcome
|
|
470
470
|
};
|
|
471
|
-
const entry =
|
|
472
|
-
const redacted =
|
|
473
|
-
|
|
471
|
+
const entry = chunkIHIS62VS_cjs.buildTraceEntry(traceFields, [span2]);
|
|
472
|
+
const redacted = chunkIHIS62VS_cjs.redactValue(entry, state.redaction);
|
|
473
|
+
chunkIHIS62VS_cjs.sendTrace(redacted);
|
|
474
474
|
},
|
|
475
475
|
{ fingerprint: "morse.record" }
|
|
476
476
|
);
|
|
477
477
|
function run(nameOrOpts, fn) {
|
|
478
478
|
const opts = typeof nameOrOpts === "string" ? { agentName: nameOrOpts } : nameOrOpts;
|
|
479
479
|
ensureInitialized();
|
|
480
|
-
return
|
|
480
|
+
return chunkIHIS62VS_cjs.runSync(opts, fn);
|
|
481
481
|
}
|
|
482
482
|
function runTraced(options, fn) {
|
|
483
483
|
ensureInitialized();
|
|
484
|
-
return
|
|
484
|
+
return chunkIHIS62VS_cjs.runAsync(options, fn);
|
|
485
485
|
}
|
|
486
486
|
function setContext2(dims) {
|
|
487
|
-
|
|
487
|
+
chunkIHIS62VS_cjs.setContext(dims);
|
|
488
488
|
}
|
|
489
489
|
function startSpan2(options) {
|
|
490
|
-
return
|
|
490
|
+
return chunkIHIS62VS_cjs.startSpan(options);
|
|
491
491
|
}
|
|
492
492
|
function span(options, fn) {
|
|
493
|
-
return
|
|
493
|
+
return chunkIHIS62VS_cjs.spanSync(options, fn);
|
|
494
494
|
}
|
|
495
495
|
function spanAsync2(options, fn) {
|
|
496
|
-
return
|
|
496
|
+
return chunkIHIS62VS_cjs.spanAsync(options, fn);
|
|
497
497
|
}
|
|
498
|
-
var flush =
|
|
498
|
+
var flush = chunkQAFFDJFK_cjs.absorbErrorsAsync(
|
|
499
499
|
async () => {
|
|
500
500
|
if (singleton !== null) {
|
|
501
501
|
await singleton.transport.flush();
|
|
502
|
-
await
|
|
502
|
+
await chunkIHIS62VS_cjs.getEngine().flush();
|
|
503
503
|
}
|
|
504
504
|
},
|
|
505
505
|
{ fingerprint: "morse.flush" }
|
|
506
506
|
);
|
|
507
|
-
var quotaState2 =
|
|
507
|
+
var quotaState2 = chunkQAFFDJFK_cjs.absorbErrorsSync(
|
|
508
508
|
() => {
|
|
509
509
|
if (singleton === null) return null;
|
|
510
510
|
return getQuotaState();
|
|
511
511
|
},
|
|
512
512
|
{ fingerprint: "morse.quota_state" }
|
|
513
513
|
);
|
|
514
|
-
var shutdown =
|
|
514
|
+
var shutdown = chunkQAFFDJFK_cjs.absorbErrorsAsync(
|
|
515
515
|
async () => {
|
|
516
516
|
if (singleton !== null) {
|
|
517
517
|
await singleton.transport.shutdown();
|
|
518
|
-
await
|
|
519
|
-
|
|
520
|
-
await
|
|
518
|
+
await chunkIHIS62VS_cjs.getEngine().flush();
|
|
519
|
+
chunkIHIS62VS_cjs.getEngine().shutdown();
|
|
520
|
+
await chunkIHIS62VS_cjs.flushOnce();
|
|
521
521
|
singleton = null;
|
|
522
|
-
|
|
522
|
+
chunkIHIS62VS_cjs.setTransport(null);
|
|
523
523
|
}
|
|
524
524
|
},
|
|
525
525
|
{ fingerprint: "morse.shutdown" }
|
|
@@ -528,14 +528,14 @@ function _resetForTesting4() {
|
|
|
528
528
|
if (singleton !== null) {
|
|
529
529
|
void singleton.transport.shutdown();
|
|
530
530
|
singleton = null;
|
|
531
|
-
|
|
531
|
+
chunkIHIS62VS_cjs.setTransport(null);
|
|
532
532
|
}
|
|
533
|
-
|
|
533
|
+
chunkIHIS62VS_cjs.getEngine().resetForTesting();
|
|
534
534
|
noApiKeyWarningEmitted = false;
|
|
535
535
|
lastLoggedEndpoint = null;
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
536
|
+
chunkIHIS62VS_cjs.setSource(null);
|
|
537
|
+
chunkIHIS62VS_cjs._resetForTesting2();
|
|
538
|
+
chunkIHIS62VS_cjs._resetForTesting();
|
|
539
539
|
_resetQuotaStateForTesting();
|
|
540
540
|
transportFactory = (opts) => new BatchTransport(opts);
|
|
541
541
|
}
|
|
@@ -543,59 +543,59 @@ function _setTransportFactoryForTesting(factory) {
|
|
|
543
543
|
transportFactory = factory;
|
|
544
544
|
}
|
|
545
545
|
function _getLastTraceForTesting() {
|
|
546
|
-
return
|
|
546
|
+
return chunkIHIS62VS_cjs.getLastTrace();
|
|
547
547
|
}
|
|
548
548
|
function _getActiveTraceStateForTesting() {
|
|
549
|
-
return
|
|
549
|
+
return chunkIHIS62VS_cjs.getActiveTraceState();
|
|
550
550
|
}
|
|
551
551
|
|
|
552
552
|
Object.defineProperty(exports, "MAX_SEGMENT_CONTENT_BYTES", {
|
|
553
553
|
enumerable: true,
|
|
554
|
-
get: function () { return
|
|
554
|
+
get: function () { return chunkWGWPCVYB_cjs.MAX_SEGMENT_CONTENT_BYTES; }
|
|
555
555
|
});
|
|
556
556
|
Object.defineProperty(exports, "extractAnthropicSegments", {
|
|
557
557
|
enumerable: true,
|
|
558
|
-
get: function () { return
|
|
558
|
+
get: function () { return chunkWGWPCVYB_cjs.extractAnthropicSegments; }
|
|
559
559
|
});
|
|
560
560
|
Object.defineProperty(exports, "instrumentAnthropic", {
|
|
561
561
|
enumerable: true,
|
|
562
|
-
get: function () { return
|
|
562
|
+
get: function () { return chunkWGWPCVYB_cjs.instrumentAnthropic; }
|
|
563
563
|
});
|
|
564
564
|
Object.defineProperty(exports, "isAnthropicWrapped", {
|
|
565
565
|
enumerable: true,
|
|
566
|
-
get: function () { return
|
|
566
|
+
get: function () { return chunkWGWPCVYB_cjs.isAnthropicWrapped; }
|
|
567
567
|
});
|
|
568
568
|
Object.defineProperty(exports, "uninstallAnthropic", {
|
|
569
569
|
enumerable: true,
|
|
570
|
-
get: function () { return
|
|
570
|
+
get: function () { return chunkWGWPCVYB_cjs.uninstallAnthropic; }
|
|
571
571
|
});
|
|
572
572
|
Object.defineProperty(exports, "wrapAnthropic", {
|
|
573
573
|
enumerable: true,
|
|
574
|
-
get: function () { return
|
|
574
|
+
get: function () { return chunkWGWPCVYB_cjs.wrapAnthropic; }
|
|
575
575
|
});
|
|
576
576
|
Object.defineProperty(exports, "log", {
|
|
577
577
|
enumerable: true,
|
|
578
|
-
get: function () { return
|
|
578
|
+
get: function () { return chunk47GVOQB4_cjs.log; }
|
|
579
579
|
});
|
|
580
580
|
Object.defineProperty(exports, "W3C_TRACEPARENT_HEADER", {
|
|
581
581
|
enumerable: true,
|
|
582
|
-
get: function () { return
|
|
582
|
+
get: function () { return chunkIHIS62VS_cjs.W3C_TRACEPARENT_HEADER; }
|
|
583
583
|
});
|
|
584
584
|
Object.defineProperty(exports, "extractTraceparent", {
|
|
585
585
|
enumerable: true,
|
|
586
|
-
get: function () { return
|
|
586
|
+
get: function () { return chunkIHIS62VS_cjs.extractTraceparent; }
|
|
587
587
|
});
|
|
588
588
|
Object.defineProperty(exports, "formatTraceparent", {
|
|
589
589
|
enumerable: true,
|
|
590
|
-
get: function () { return
|
|
590
|
+
get: function () { return chunkIHIS62VS_cjs.formatTraceparent; }
|
|
591
591
|
});
|
|
592
592
|
Object.defineProperty(exports, "injectIntoRequestInit", {
|
|
593
593
|
enumerable: true,
|
|
594
|
-
get: function () { return
|
|
594
|
+
get: function () { return chunkIHIS62VS_cjs.injectIntoRequestInit; }
|
|
595
595
|
});
|
|
596
596
|
Object.defineProperty(exports, "injectTraceparent", {
|
|
597
597
|
enumerable: true,
|
|
598
|
-
get: function () { return
|
|
598
|
+
get: function () { return chunkIHIS62VS_cjs.injectTraceparent; }
|
|
599
599
|
});
|
|
600
600
|
exports._getActiveTraceStateForTesting = _getActiveTraceStateForTesting;
|
|
601
601
|
exports._getLastTraceForTesting = _getLastTraceForTesting;
|
package/dist/browser/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export { MAX_SEGMENT_CONTENT_BYTES, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic } from './chunk-
|
|
2
|
-
import { _setEnsureInitialized } from './chunk-
|
|
3
|
-
export { log } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import { absorbErrorsSync, absorbErrorsAsync } from './chunk-
|
|
1
|
+
export { MAX_SEGMENT_CONTENT_BYTES, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic } from './chunk-MIB3EOC4.js';
|
|
2
|
+
import { _setEnsureInitialized } from './chunk-CI7M2GHD.js';
|
|
3
|
+
export { log } from './chunk-CI7M2GHD.js';
|
|
4
|
+
import './chunk-GLL57K7P.js';
|
|
5
|
+
import { absorbErrorsSync, absorbErrorsAsync } from './chunk-EH326H6U.js';
|
|
6
6
|
import './chunk-4FALQMOZ.js';
|
|
7
7
|
import './chunk-MLDVXMQD.js';
|
|
8
|
-
import { init_env, init_otel_provider_browser, init_redaction, init_diagnostics, init_tracing, init_spans, init_propagation, redactValue, generateTraceId, nowIso, SpanType, generateSpanId, buildTraceEntry, sendTrace, isDisabled, buildRedactionConfig, getApiKey, getFlushIntervalSeconds, setTransport, setRedactionConfig, setDiagnosticsClientConfig, isValidInternalSource, getInternalSource, setSource, getEngine, getMaxFieldBytes, getMaxBatchSize, getMaxQueueSize, getSampleRate, report, getEndpoint, DEFAULT_ENDPOINT, recordDrop, REASON_SHUTDOWN_DROP, REASON_QUEUE_FULL, setLevel, REASON_QUOTA_REJECTED, REASON_RETRY_EXHAUSTED, runSync, runAsync, setContext, startSpan, spanSync, spanAsync, flushOnce, _resetForTesting2, _resetForTesting, getLastTrace, getActiveTraceState } from './chunk-
|
|
9
|
-
export { W3C_TRACEPARENT_HEADER, extractTraceparent, formatTraceparent, injectIntoRequestInit, injectTraceparent } from './chunk-
|
|
8
|
+
import { init_env, init_otel_provider_browser, init_redaction, init_diagnostics, init_tracing, init_spans, init_propagation, redactValue, generateTraceId, nowIso, SpanType, generateSpanId, buildTraceEntry, sendTrace, isDisabled, buildRedactionConfig, getApiKey, getFlushIntervalSeconds, setTransport, setRedactionConfig, setDiagnosticsClientConfig, isValidInternalSource, getInternalSource, setSource, getEngine, getMaxFieldBytes, getMaxBatchSize, getMaxQueueSize, getSampleRate, report, getEndpoint, DEFAULT_ENDPOINT, recordDrop, REASON_SHUTDOWN_DROP, REASON_QUEUE_FULL, setLevel, REASON_QUOTA_REJECTED, REASON_RETRY_EXHAUSTED, runSync, runAsync, setContext, startSpan, spanSync, spanAsync, flushOnce, _resetForTesting2, _resetForTesting, getLastTrace, getActiveTraceState } from './chunk-V7AUPQIJ.js';
|
|
9
|
+
export { W3C_TRACEPARENT_HEADER, extractTraceparent, formatTraceparent, injectIntoRequestInit, injectTraceparent } from './chunk-V7AUPQIJ.js';
|
|
10
10
|
|
|
11
11
|
// src/_internal/auto-detect.browser.ts
|
|
12
12
|
async function installAdapters() {
|
|
@@ -25,7 +25,7 @@ init_redaction();
|
|
|
25
25
|
|
|
26
26
|
// src/_internal/transport.ts
|
|
27
27
|
init_diagnostics();
|
|
28
|
-
var SDK_VERSION = "0.5.0-rc.
|
|
28
|
+
var SDK_VERSION = "0.5.0-rc.5" ;
|
|
29
29
|
var RETRY_AFTER_CAP_SECONDS = 30;
|
|
30
30
|
function parseRetryAfter(value) {
|
|
31
31
|
if (!value) return null;
|