@morsehq-dev/sdk 0.5.0 → 0.6.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -10
- package/dist/anthropic/index.cjs +11 -11
- package/dist/anthropic/index.d.cts +1 -1
- package/dist/anthropic/index.d.ts +1 -1
- package/dist/anthropic/index.js +4 -4
- package/dist/anthropic-agent-sdk/index.cjs +44 -40
- package/dist/anthropic-agent-sdk/index.cjs.map +1 -1
- package/dist/anthropic-agent-sdk/index.d.cts +1 -1
- package/dist/anthropic-agent-sdk/index.d.ts +1 -1
- package/dist/anthropic-agent-sdk/index.js +10 -6
- 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 +44 -40
- package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -1
- package/dist/browser/anthropic-agent-sdk/index.js +10 -6
- package/dist/browser/anthropic-agent-sdk/index.js.map +1 -1
- package/dist/browser/{chunk-ELQ4LGAS.cjs → chunk-33WDUUKZ.cjs} +18 -18
- package/dist/browser/{chunk-ELQ4LGAS.cjs.map → chunk-33WDUUKZ.cjs.map} +1 -1
- package/dist/browser/{chunk-TV7TRP5O.cjs → chunk-3I7IGP3P.cjs} +5 -5
- package/dist/browser/chunk-3I7IGP3P.cjs.map +1 -0
- package/dist/browser/{chunk-YYUDZTHI.js → chunk-3OYHDDOJ.js} +27 -5
- package/dist/browser/chunk-3OYHDDOJ.js.map +1 -0
- package/dist/browser/{chunk-6BNMYEMW.cjs → chunk-4IUHXUCJ.cjs} +49 -9
- package/dist/browser/chunk-4IUHXUCJ.cjs.map +1 -0
- package/dist/browser/{chunk-BUCIE3DR.js → chunk-5TYTCLKA.js} +4 -4
- package/dist/browser/{chunk-BUCIE3DR.js.map → chunk-5TYTCLKA.js.map} +1 -1
- package/dist/browser/{chunk-VIOT3AOP.js → chunk-6JHMFFPE.js} +3 -3
- package/dist/browser/chunk-6JHMFFPE.js.map +1 -0
- package/dist/browser/{chunk-BIP66M44.cjs → chunk-FKYI3N5N.cjs} +7 -7
- package/dist/browser/{chunk-BIP66M44.cjs.map → chunk-FKYI3N5N.cjs.map} +1 -1
- package/dist/browser/{chunk-NU74H55W.js → chunk-FPTUHYDJ.js} +3 -3
- package/dist/browser/{chunk-NU74H55W.js.map → chunk-FPTUHYDJ.js.map} +1 -1
- package/dist/browser/{chunk-52JTU4LH.cjs → chunk-IDKQZ4X5.cjs} +38 -15
- package/dist/browser/chunk-IDKQZ4X5.cjs.map +1 -0
- package/dist/browser/{chunk-2X64OY2L.cjs → chunk-LIP3XCTK.cjs} +12 -12
- package/dist/browser/{chunk-2X64OY2L.cjs.map → chunk-LIP3XCTK.cjs.map} +1 -1
- package/dist/browser/{chunk-T6Z6UIBN.js → chunk-OUQAH27A.js} +3 -3
- package/dist/browser/{chunk-T6Z6UIBN.js.map → chunk-OUQAH27A.js.map} +1 -1
- package/dist/browser/{chunk-4CMVMTFB.cjs → chunk-PSNZZBQJ.cjs} +6 -6
- package/dist/browser/{chunk-4CMVMTFB.cjs.map → chunk-PSNZZBQJ.cjs.map} +1 -1
- package/dist/browser/{chunk-6T6ZPOKZ.js → chunk-PXHTLCEU.js} +49 -10
- package/dist/browser/chunk-PXHTLCEU.js.map +1 -0
- package/dist/browser/{chunk-KZFG23MO.js → chunk-TRVACYUN.js} +5 -5
- package/dist/browser/{chunk-KZFG23MO.js.map → chunk-TRVACYUN.js.map} +1 -1
- package/dist/browser/index.cjs +189 -124
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +111 -46
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/integrations/pino.cjs +4 -4
- package/dist/browser/integrations/pino.js +3 -3
- package/dist/browser/langchain/index.cjs +28 -26
- package/dist/browser/langchain/index.cjs.map +1 -1
- package/dist/browser/langchain/index.js +13 -11
- package/dist/browser/langchain/index.js.map +1 -1
- package/dist/browser/langgraph/index.cjs +32 -30
- package/dist/browser/langgraph/index.cjs.map +1 -1
- package/dist/browser/langgraph/index.js +10 -8
- package/dist/browser/langgraph/index.js.map +1 -1
- package/dist/browser/openai/index.cjs +11 -11
- package/dist/browser/openai/index.js +2 -2
- package/dist/browser/openai-agents/index.cjs +63 -35
- package/dist/browser/openai-agents/index.cjs.map +1 -1
- package/dist/browser/openai-agents/index.js +33 -5
- package/dist/browser/openai-agents/index.js.map +1 -1
- package/dist/browser/vercel-ai/index.cjs +14 -14
- package/dist/browser/vercel-ai/index.js +3 -3
- package/dist/{chunk-KMBKZLXH.cjs → chunk-7DALGJL2.cjs} +100 -25
- package/dist/chunk-7DALGJL2.cjs.map +1 -0
- package/dist/{chunk-D5NTF54A.cjs → chunk-B7TGG62X.cjs} +12 -12
- package/dist/{chunk-D5NTF54A.cjs.map → chunk-B7TGG62X.cjs.map} +1 -1
- package/dist/{chunk-LPLL2OXI.cjs → chunk-COZFARLL.cjs} +5 -5
- package/dist/chunk-COZFARLL.cjs.map +1 -0
- package/dist/{chunk-GTPKPUAV.cjs → chunk-DXTNU2KT.cjs} +38 -15
- package/dist/chunk-DXTNU2KT.cjs.map +1 -0
- package/dist/{chunk-6FLGLD72.js → chunk-ERH3TNXZ.js} +3 -3
- package/dist/{chunk-6FLGLD72.js.map → chunk-ERH3TNXZ.js.map} +1 -1
- package/dist/{chunk-7HYFOHM3.cjs → chunk-ESJJXXB6.cjs} +6 -6
- package/dist/{chunk-7HYFOHM3.cjs.map → chunk-ESJJXXB6.cjs.map} +1 -1
- package/dist/{chunk-SUEBUMHL.cjs → chunk-ETRNCI5Z.cjs} +18 -18
- package/dist/{chunk-SUEBUMHL.cjs.map → chunk-ETRNCI5Z.cjs.map} +1 -1
- package/dist/{chunk-KWOSUW7B.js → chunk-GULJAURY.js} +27 -5
- package/dist/chunk-GULJAURY.js.map +1 -0
- package/dist/{chunk-ZIMGB7IT.js → chunk-HJV35HWL.js} +100 -26
- package/dist/chunk-HJV35HWL.js.map +1 -0
- package/dist/{chunk-3ONFIKKC.js → chunk-L7AD4KUD.js} +3 -3
- package/dist/chunk-L7AD4KUD.js.map +1 -0
- package/dist/{chunk-SFI36VWW.js → chunk-QBDTQTMN.js} +3 -3
- package/dist/{chunk-SFI36VWW.js.map → chunk-QBDTQTMN.js.map} +1 -1
- package/dist/{chunk-NMARCV3R.cjs → chunk-WG4H5JC6.cjs} +7 -7
- package/dist/{chunk-NMARCV3R.cjs.map → chunk-WG4H5JC6.cjs.map} +1 -1
- package/dist/{chunk-J5FEPM7L.js → chunk-XS4P7XPV.js} +5 -5
- package/dist/{chunk-J5FEPM7L.js.map → chunk-XS4P7XPV.js.map} +1 -1
- package/dist/{chunk-ZZSVPAXM.js → chunk-YVLEDBN7.js} +4 -4
- package/dist/{chunk-ZZSVPAXM.js.map → chunk-YVLEDBN7.js.map} +1 -1
- package/dist/index.cjs +199 -134
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -2
- package/dist/index.d.ts +13 -2
- package/dist/index.js +112 -47
- 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 +28 -26
- package/dist/langchain/index.cjs.map +1 -1
- package/dist/langchain/index.d.cts +3 -3
- package/dist/langchain/index.d.ts +3 -3
- package/dist/langchain/index.js +13 -11
- package/dist/langchain/index.js.map +1 -1
- package/dist/langgraph/index.cjs +32 -30
- package/dist/langgraph/index.cjs.map +1 -1
- package/dist/langgraph/index.d.cts +3 -3
- package/dist/langgraph/index.d.ts +3 -3
- package/dist/langgraph/index.js +10 -8
- package/dist/langgraph/index.js.map +1 -1
- package/dist/openai/index.cjs +11 -11
- package/dist/openai/index.js +2 -2
- package/dist/openai-agents/index.cjs +63 -35
- package/dist/openai-agents/index.cjs.map +1 -1
- package/dist/openai-agents/index.d.cts +13 -4
- package/dist/openai-agents/index.d.ts +13 -4
- package/dist/openai-agents/index.js +33 -5
- package/dist/openai-agents/index.js.map +1 -1
- package/dist/{spans-DZtMuBvc.d.cts → spans-CBMWNg2C.d.cts} +1 -0
- package/dist/{spans-DZtMuBvc.d.ts → spans-CBMWNg2C.d.ts} +1 -0
- package/dist/{tracing-J8ZgxVzU.d.ts → tracing-BMWTyexr.d.ts} +1 -1
- package/dist/{tracing-CNlre8TK.d.cts → tracing-Bh-cbvr6.d.cts} +1 -1
- 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-52JTU4LH.cjs.map +0 -1
- package/dist/browser/chunk-6BNMYEMW.cjs.map +0 -1
- package/dist/browser/chunk-6T6ZPOKZ.js.map +0 -1
- package/dist/browser/chunk-TV7TRP5O.cjs.map +0 -1
- package/dist/browser/chunk-VIOT3AOP.js.map +0 -1
- package/dist/browser/chunk-YYUDZTHI.js.map +0 -1
- package/dist/chunk-3ONFIKKC.js.map +0 -1
- package/dist/chunk-GTPKPUAV.cjs.map +0 -1
- package/dist/chunk-KMBKZLXH.cjs.map +0 -1
- package/dist/chunk-KWOSUW7B.js.map +0 -1
- package/dist/chunk-LPLL2OXI.cjs.map +0 -1
- package/dist/chunk-ZIMGB7IT.js.map +0 -1
|
@@ -256,7 +256,7 @@ function redactValue(value, config, depth = 0) {
|
|
|
256
256
|
}
|
|
257
257
|
return value;
|
|
258
258
|
}
|
|
259
|
-
var PATTERN_ORDER, MANDATORY_PATTERNS, DEFAULT_OFF_PATTERNS, SHORT_KEYS, PATTERNS, EXTRA_PATTERN_CAP, EXTRA_PATTERN_CHAR_CAP, MAX_DEPTH;
|
|
259
|
+
var PATTERN_ORDER, MANDATORY_PATTERNS, DEFAULT_OFF_PATTERNS, SHORT_KEYS, SECRET_ASSIGNMENT_SOURCE, PATTERNS, EXTRA_PATTERN_CAP, EXTRA_PATTERN_CHAR_CAP, MAX_DEPTH;
|
|
260
260
|
var init_redaction = __esm({
|
|
261
261
|
"src/_internal/redaction.ts"() {
|
|
262
262
|
PATTERN_ORDER = [
|
|
@@ -267,7 +267,10 @@ var init_redaction = __esm({
|
|
|
267
267
|
"phone_us",
|
|
268
268
|
"phone_e164",
|
|
269
269
|
"ssn_us",
|
|
270
|
-
"ip_address"
|
|
270
|
+
"ip_address",
|
|
271
|
+
// Last: the value-shaped patterns above are more specific, so a JWT inside
|
|
272
|
+
// `authorization: Bearer eyJ...` gets its own tag before this one runs.
|
|
273
|
+
"secret_assignment"
|
|
271
274
|
];
|
|
272
275
|
MANDATORY_PATTERNS = /* @__PURE__ */ new Set([
|
|
273
276
|
"api_key_prefixed",
|
|
@@ -284,8 +287,13 @@ var init_redaction = __esm({
|
|
|
284
287
|
phone_us: "phone",
|
|
285
288
|
phone_e164: "phone",
|
|
286
289
|
ssn_us: "ssn",
|
|
287
|
-
ip_address: "ip"
|
|
290
|
+
ip_address: "ip",
|
|
291
|
+
secret_assignment: "secret"
|
|
292
|
+
// pragma: allowlist secret — a label, not a value
|
|
288
293
|
};
|
|
294
|
+
SECRET_ASSIGNMENT_SOURCE = // Compound keys accept `=` or `:`; bare `secret` requires `=`, because with
|
|
295
|
+
// `:` it is more often a marker (`k8s-secret: mounted`) than an assignment.
|
|
296
|
+
`(?:(?:password|passwd|pwd|client[-_]?secret|secret[-_]?key|private[-_]?key|access[-_]?key|api[-_]?key|auth[-_]?token|access[-_]?token|refresh[-_]?token|id[-_]?token|session[-_]?token|authorization|credentials?)["']?\\s*[=:]|\\bsecret["']?\\s*=)\\s*(?:bearer\\s+)?(?:"[^"]*"|'[^']*'|\\S+)`;
|
|
289
297
|
PATTERNS = {
|
|
290
298
|
api_key_prefixed: new RegExp(
|
|
291
299
|
"\\b(?:sk-[A-Za-z0-9_-]{20,}|sk_(?:live|test)_[A-Za-z0-9]{20,}|mhq_[A-Za-z0-9]{20,}|av_[A-Za-z0-9]{20,}|ghp_[A-Za-z0-9]{36}|gho_[A-Za-z0-9]{36}|ghu_[A-Za-z0-9]{36}|ghs_[A-Za-z0-9]{36}|ghr_[A-Za-z0-9]{36}|xox[bopsa]-[0-9A-Za-z\\-]{10,}|(?:AKIA|ASIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASCA)[0-9A-Z]{16})\\b",
|
|
@@ -316,7 +324,17 @@ var init_redaction = __esm({
|
|
|
316
324
|
ip_address: new RegExp(
|
|
317
325
|
"\\b(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}|(?:[A-F0-9]{1,4}:){2,7}[A-F0-9]{1,4})\\b",
|
|
318
326
|
"gi"
|
|
319
|
-
)
|
|
327
|
+
),
|
|
328
|
+
// MHQ-973 — key-context secret assignment. Every pattern above is
|
|
329
|
+
// VALUE-shaped: it recognises a credential by its own format. That cannot
|
|
330
|
+
// catch `password=hunter2` — `hunter2` is an ordinary word, and only the KEY
|
|
331
|
+
// marks it as a secret.
|
|
332
|
+
//
|
|
333
|
+
// Deliberately excludes a bare `token`: this is an LLM-observability SDK, and
|
|
334
|
+
// `input_tokens=100` / `max_tokens=4096` are core telemetry. Only unambiguous
|
|
335
|
+
// `*_token` compounds match. No leading `\\b` either, so `PGPASSWORD=` and
|
|
336
|
+
// `MYSQL_PWD=` are caught; the `[=:]` anchor is what prevents false positives.
|
|
337
|
+
secret_assignment: new RegExp(SECRET_ASSIGNMENT_SOURCE, "gi")
|
|
320
338
|
};
|
|
321
339
|
EXTRA_PATTERN_CAP = 10;
|
|
322
340
|
EXTRA_PATTERN_CHAR_CAP = 256;
|
|
@@ -411,6 +429,7 @@ function redactedMessage(error) {
|
|
|
411
429
|
const out = redactValue(raw, activeRedactionConfig);
|
|
412
430
|
raw = typeof out === "string" ? out : String(out);
|
|
413
431
|
}
|
|
432
|
+
raw = raw.replace(new RegExp(SECRET_ASSIGNMENT_SOURCE, "gi"), "[REDACTED:secret]");
|
|
414
433
|
} catch {
|
|
415
434
|
return "<redaction unavailable>";
|
|
416
435
|
}
|
|
@@ -436,6 +455,7 @@ function recordDrop(reason, category, quantity = 1) {
|
|
|
436
455
|
if (checkBucket(localLogBuckets, `drop:${key}`, LOCAL_LOG_LIMIT_PER_WINDOW, LOCAL_LOG_WINDOW_MS)) {
|
|
437
456
|
console.warn(`morse: dropped ${quantity} ${category} (${reason}) \u2014 telemetry is being lost`);
|
|
438
457
|
}
|
|
458
|
+
if (transmissionAllowed()) ensureTimer();
|
|
439
459
|
} catch {
|
|
440
460
|
}
|
|
441
461
|
}
|
|
@@ -604,12 +624,12 @@ function _resetForTesting() {
|
|
|
604
624
|
level = LEVEL_ERROR;
|
|
605
625
|
activeRedactionConfig = null;
|
|
606
626
|
}
|
|
607
|
-
var SDK_VERSION, LEVEL_OFF, LEVEL_ERROR, LEVEL_DEBUG, VALID_LEVELS, level, RATE_WINDOW_MS, RATE_LIMIT_PER_WINDOW, RATE_LIMIT_PER_WINDOW_DEBUG, rateBuckets, LOCAL_LOG_WINDOW_MS, LOCAL_LOG_LIMIT_PER_WINDOW, localLogBuckets, MAX_STACK_ENTRIES, MAX_MESSAGE_CHARS, MAX_BATCH_EVENTS, ALLOWED_EXTRA_KEYS, DIAGNOSTICS_PATH, MAX_PENDING, FLUSH_INTERVAL_MS, BREAKER_THRESHOLD, BREAKER_COOLDOWN_MS; exports.REASON_QUEUE_FULL = void 0; exports.REASON_RETRY_EXHAUSTED = void 0; exports.REASON_QUOTA_REJECTED = void 0; exports.REASON_SHUTDOWN_DROP = void 0; var counters, activeRedactionConfig, pending, timer, consecutiveFailures, breakerOpenUntil, reporting, MORSE_PATH_MARKERS, clientConfig;
|
|
627
|
+
var SDK_VERSION, LEVEL_OFF, LEVEL_ERROR, LEVEL_DEBUG, VALID_LEVELS, level, RATE_WINDOW_MS, RATE_LIMIT_PER_WINDOW, RATE_LIMIT_PER_WINDOW_DEBUG, rateBuckets, LOCAL_LOG_WINDOW_MS, LOCAL_LOG_LIMIT_PER_WINDOW, localLogBuckets, MAX_STACK_ENTRIES, MAX_MESSAGE_CHARS, MAX_BATCH_EVENTS, ALLOWED_EXTRA_KEYS, DIAGNOSTICS_PATH, MAX_PENDING, FLUSH_INTERVAL_MS, BREAKER_THRESHOLD, BREAKER_COOLDOWN_MS; exports.REASON_QUEUE_FULL = void 0; exports.REASON_RETRY_EXHAUSTED = void 0; exports.REASON_QUOTA_REJECTED = void 0; exports.REASON_ENCODE_FAILED = void 0; exports.REASON_SHUTDOWN_DROP = void 0; exports.REASON_AUTH_REJECTED = void 0; exports.REASON_ENDPOINT_REJECTED = void 0; exports.REASON_SEND_FAILED = void 0; var counters, activeRedactionConfig, pending, timer, consecutiveFailures, breakerOpenUntil, reporting, MORSE_PATH_MARKERS, clientConfig;
|
|
608
628
|
var init_diagnostics = __esm({
|
|
609
629
|
"src/_internal/diagnostics.ts"() {
|
|
610
630
|
init_env();
|
|
611
631
|
init_redaction();
|
|
612
|
-
SDK_VERSION = "0.
|
|
632
|
+
SDK_VERSION = "0.6.0-rc.1" ;
|
|
613
633
|
LEVEL_OFF = "off";
|
|
614
634
|
LEVEL_ERROR = "error";
|
|
615
635
|
LEVEL_DEBUG = "debug";
|
|
@@ -640,7 +660,11 @@ var init_diagnostics = __esm({
|
|
|
640
660
|
exports.REASON_QUEUE_FULL = "queue_full";
|
|
641
661
|
exports.REASON_RETRY_EXHAUSTED = "retry_exhausted";
|
|
642
662
|
exports.REASON_QUOTA_REJECTED = "quota_rejected";
|
|
663
|
+
exports.REASON_ENCODE_FAILED = "encode_failed";
|
|
643
664
|
exports.REASON_SHUTDOWN_DROP = "shutdown_drop";
|
|
665
|
+
exports.REASON_AUTH_REJECTED = "auth_rejected";
|
|
666
|
+
exports.REASON_ENDPOINT_REJECTED = "endpoint_rejected";
|
|
667
|
+
exports.REASON_SEND_FAILED = "send_failed";
|
|
644
668
|
counters = /* @__PURE__ */ new Map();
|
|
645
669
|
activeRedactionConfig = null;
|
|
646
670
|
pending = [];
|
|
@@ -708,7 +732,10 @@ var init_spans = __esm({
|
|
|
708
732
|
// MHQ-482: matches Python's `SpanType.RETRIEVER` (apps/sdk/python/src/morse_ai/spans.py).
|
|
709
733
|
// @beta — retriever span type is subject to change before SDK v1.0 (see
|
|
710
734
|
// the plain-LangChain adapter's on_retriever_* callbacks in src/langchain/).
|
|
711
|
-
RETRIEVER: "retriever"
|
|
735
|
+
RETRIEVER: "retriever",
|
|
736
|
+
// MHQ-1025: matches Python's `SpanType.HANDOFF`. One span per routing
|
|
737
|
+
// decision between two agents, with `from_agent` / `to_agent` metadata.
|
|
738
|
+
HANDOFF: "handoff"
|
|
712
739
|
};
|
|
713
740
|
}
|
|
714
741
|
});
|
|
@@ -783,6 +810,14 @@ function redactAttrValue(value, config) {
|
|
|
783
810
|
}
|
|
784
811
|
return value;
|
|
785
812
|
}
|
|
813
|
+
function dropReasonForExportError(error) {
|
|
814
|
+
const code = error?.code;
|
|
815
|
+
if (typeof code !== "number") return exports.REASON_RETRY_EXHAUSTED;
|
|
816
|
+
if (code === 429) return exports.REASON_QUOTA_REJECTED;
|
|
817
|
+
if (code === 401 || code === 403) return exports.REASON_AUTH_REJECTED;
|
|
818
|
+
if (code >= 400 && code < 500) return exports.REASON_ENDPOINT_REJECTED;
|
|
819
|
+
return exports.REASON_SEND_FAILED;
|
|
820
|
+
}
|
|
786
821
|
function getEngine() {
|
|
787
822
|
if (engine === null) engine = new OtelEngine();
|
|
788
823
|
return engine;
|
|
@@ -790,7 +825,7 @@ function getEngine() {
|
|
|
790
825
|
function spanDictToOtelAttributes(spanDict, traceDict, resourceDict, opts) {
|
|
791
826
|
const attrs = {};
|
|
792
827
|
const spanType = spanDict.type;
|
|
793
|
-
if (typeof spanType === "string" && spanType) attrs["
|
|
828
|
+
if (typeof spanType === "string" && spanType) attrs["morse.span_type"] = spanType;
|
|
794
829
|
const model = spanDict.model;
|
|
795
830
|
if (model !== void 0 && model !== null) attrs["gen_ai.request.model"] = String(model);
|
|
796
831
|
const tokenFields = [
|
|
@@ -809,12 +844,12 @@ function spanDictToOtelAttributes(spanDict, traceDict, resourceDict, opts) {
|
|
|
809
844
|
}
|
|
810
845
|
const costUsd = spanDict.cost_usd;
|
|
811
846
|
if (costUsd !== void 0 && costUsd !== null) {
|
|
812
|
-
attrs["
|
|
847
|
+
attrs["morse.cost_usd"] = String(costUsd);
|
|
813
848
|
}
|
|
814
849
|
for (const [src, otelKey] of [
|
|
815
|
-
["input_data", "
|
|
816
|
-
["output_data", "
|
|
817
|
-
["context_segments", "
|
|
850
|
+
["input_data", "morse.input_data"],
|
|
851
|
+
["output_data", "morse.output_data"],
|
|
852
|
+
["context_segments", "morse.context_segments"]
|
|
818
853
|
]) {
|
|
819
854
|
const v = spanDict[src];
|
|
820
855
|
if (v !== void 0 && v !== null) {
|
|
@@ -826,35 +861,36 @@ function spanDictToOtelAttributes(spanDict, traceDict, resourceDict, opts) {
|
|
|
826
861
|
if (metadata && typeof metadata === "object") {
|
|
827
862
|
for (const [key, value] of Object.entries(metadata)) {
|
|
828
863
|
const encoded = jsonCapped(value, opts.maxFieldBytes);
|
|
829
|
-
if (encoded !== null) attrs[`
|
|
864
|
+
if (encoded !== null) attrs[`morse.metadata.${key}`] = encoded;
|
|
830
865
|
}
|
|
831
866
|
}
|
|
832
867
|
const errorMessage = spanDict.error_message;
|
|
833
868
|
if (opts.isRoot) {
|
|
834
869
|
const threadId = traceDict.thread_id;
|
|
835
|
-
if (threadId !== void 0 && threadId !== null) attrs["
|
|
870
|
+
if (threadId !== void 0 && threadId !== null) attrs["morse.thread_id"] = String(threadId);
|
|
836
871
|
const userId = traceDict.user_id;
|
|
837
|
-
if (userId !== void 0 && userId !== null) attrs["
|
|
872
|
+
if (userId !== void 0 && userId !== null) attrs["morse.user_id"] = String(userId);
|
|
838
873
|
const userMetadata = traceDict.user_metadata;
|
|
839
874
|
if (userMetadata && typeof userMetadata === "object") {
|
|
840
875
|
const entries = Object.entries(userMetadata);
|
|
841
876
|
if (entries.length > 0) {
|
|
842
|
-
attrs["
|
|
877
|
+
attrs["morse.user_metadata"] = JSON.stringify(
|
|
843
878
|
Object.fromEntries(entries.map(([k, v]) => [k, String(v)]))
|
|
844
879
|
);
|
|
845
880
|
}
|
|
846
881
|
}
|
|
847
882
|
const success = traceDict.success;
|
|
848
|
-
if (success !== void 0 && success !== null)
|
|
883
|
+
if (success !== void 0 && success !== null)
|
|
884
|
+
attrs["morse.outcome.success"] = Boolean(success);
|
|
849
885
|
const outcome = traceDict.outcome;
|
|
850
|
-
if (outcome !== void 0 && outcome !== null) attrs["
|
|
886
|
+
if (outcome !== void 0 && outcome !== null) attrs["morse.outcome.label"] = String(outcome);
|
|
851
887
|
const framework = resourceDict["morse_ai.framework"];
|
|
852
|
-
if (typeof framework === "string" && framework) attrs["
|
|
888
|
+
if (typeof framework === "string" && framework) attrs["morse.framework"] = framework;
|
|
853
889
|
const source = resourceDict["morse_ai.source"];
|
|
854
|
-
if (typeof source === "string" && source) attrs["
|
|
890
|
+
if (typeof source === "string" && source) attrs["morse.source"] = source;
|
|
855
891
|
}
|
|
856
892
|
if (errorMessage && spanDict.status === "failed") {
|
|
857
|
-
attrs["
|
|
893
|
+
attrs["morse.error_message"] = String(errorMessage);
|
|
858
894
|
}
|
|
859
895
|
return attrs;
|
|
860
896
|
}
|
|
@@ -946,7 +982,7 @@ function reportSwallowed(err, fingerprint) {
|
|
|
946
982
|
} catch {
|
|
947
983
|
}
|
|
948
984
|
}
|
|
949
|
-
var INSTRUMENTATION_NAME, DEFAULT_MAX_FIELD_BYTES, TRUNCATION_MARKER, contextManagerRegistered, MAX_U64, RedactingSpanExporter, RecordingSpanExporter, ResultCapturingExporter, OtelEngine, engine;
|
|
985
|
+
var INSTRUMENTATION_NAME, DEFAULT_MAX_FIELD_BYTES, TRUNCATION_MARKER, contextManagerRegistered, MAX_U64, RedactingSpanExporter, DropReportingExporter, RecordingSpanExporter, ResultCapturingExporter, OtelEngine, engine;
|
|
950
986
|
var init_otel_provider = __esm({
|
|
951
987
|
"src/_internal/otel-provider.ts"() {
|
|
952
988
|
init_diagnostics();
|
|
@@ -983,6 +1019,29 @@ var init_otel_provider = __esm({
|
|
|
983
1019
|
return this.inner.forceFlush ? this.inner.forceFlush() : Promise.resolve();
|
|
984
1020
|
}
|
|
985
1021
|
};
|
|
1022
|
+
DropReportingExporter = class {
|
|
1023
|
+
constructor(inner) {
|
|
1024
|
+
this.inner = inner;
|
|
1025
|
+
}
|
|
1026
|
+
inner;
|
|
1027
|
+
export(spans, resultCallback) {
|
|
1028
|
+
this.inner.export(spans, (result) => {
|
|
1029
|
+
if (result.code === core.ExportResultCode.FAILED) {
|
|
1030
|
+
try {
|
|
1031
|
+
recordDrop(dropReasonForExportError(result.error), "span", spans.length);
|
|
1032
|
+
} catch {
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
resultCallback(result);
|
|
1036
|
+
});
|
|
1037
|
+
}
|
|
1038
|
+
shutdown() {
|
|
1039
|
+
return this.inner.shutdown();
|
|
1040
|
+
}
|
|
1041
|
+
forceFlush() {
|
|
1042
|
+
return this.inner.forceFlush ? this.inner.forceFlush() : Promise.resolve();
|
|
1043
|
+
}
|
|
1044
|
+
};
|
|
986
1045
|
RecordingSpanExporter = class {
|
|
987
1046
|
spans = [];
|
|
988
1047
|
export(spans, resultCallback) {
|
|
@@ -1049,7 +1108,10 @@ var init_otel_provider = __esm({
|
|
|
1049
1108
|
compression: otlpExporterBase.CompressionAlgorithm.GZIP,
|
|
1050
1109
|
timeoutMillis: opts.timeoutMillis
|
|
1051
1110
|
});
|
|
1052
|
-
let exporter = new RedactingSpanExporter(
|
|
1111
|
+
let exporter = new RedactingSpanExporter(
|
|
1112
|
+
new DropReportingExporter(otlpExporter),
|
|
1113
|
+
opts.redactionConfig
|
|
1114
|
+
);
|
|
1053
1115
|
if (opts.resultSink) {
|
|
1054
1116
|
exporter = new ResultCapturingExporter(exporter, opts.resultSink);
|
|
1055
1117
|
}
|
|
@@ -1467,6 +1529,18 @@ function setContext(dims) {
|
|
|
1467
1529
|
if (state.userMetadata === void 0) state.userMetadata = {};
|
|
1468
1530
|
Object.assign(state.userMetadata, coerceDims(dims, "morse.tracing.set_context"));
|
|
1469
1531
|
}
|
|
1532
|
+
function adoptThreadId(value) {
|
|
1533
|
+
const state = getActiveTraceState();
|
|
1534
|
+
if (state === null || state.threadId !== void 0 || value === null || value === void 0) {
|
|
1535
|
+
return;
|
|
1536
|
+
}
|
|
1537
|
+
try {
|
|
1538
|
+
const s = String(value);
|
|
1539
|
+
if (s !== "") state.threadId = s;
|
|
1540
|
+
} catch (err) {
|
|
1541
|
+
report(err, { fingerprint: "morse.tracing.adopt_thread_id" });
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1470
1544
|
function coerceDims(dims, fingerprint) {
|
|
1471
1545
|
const out = {};
|
|
1472
1546
|
for (const k of Object.keys(dims)) {
|
|
@@ -1669,6 +1743,7 @@ var init_propagation = __esm({
|
|
|
1669
1743
|
|
|
1670
1744
|
exports._resetForTesting = _resetForTesting;
|
|
1671
1745
|
exports._resetForTesting2 = _resetForTesting2;
|
|
1746
|
+
exports.adoptThreadId = adoptThreadId;
|
|
1672
1747
|
exports.buildRedactionConfig = buildRedactionConfig;
|
|
1673
1748
|
exports.buildTraceEntry = buildTraceEntry;
|
|
1674
1749
|
exports.extractTraceparent = extractTraceparent;
|
|
@@ -1718,5 +1793,5 @@ exports.setTransport = setTransport;
|
|
|
1718
1793
|
exports.spanAsync = spanAsync;
|
|
1719
1794
|
exports.spanSync = spanSync;
|
|
1720
1795
|
exports.startSpan = startSpan;
|
|
1721
|
-
//# sourceMappingURL=chunk-
|
|
1722
|
-
//# sourceMappingURL=chunk-
|
|
1796
|
+
//# sourceMappingURL=chunk-7DALGJL2.cjs.map
|
|
1797
|
+
//# sourceMappingURL=chunk-7DALGJL2.cjs.map
|