@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
|
@@ -254,7 +254,7 @@ function redactValue(value, config, depth = 0) {
|
|
|
254
254
|
}
|
|
255
255
|
return value;
|
|
256
256
|
}
|
|
257
|
-
var PATTERN_ORDER, MANDATORY_PATTERNS, DEFAULT_OFF_PATTERNS, SHORT_KEYS, PATTERNS, EXTRA_PATTERN_CAP, EXTRA_PATTERN_CHAR_CAP, MAX_DEPTH;
|
|
257
|
+
var PATTERN_ORDER, MANDATORY_PATTERNS, DEFAULT_OFF_PATTERNS, SHORT_KEYS, SECRET_ASSIGNMENT_SOURCE, PATTERNS, EXTRA_PATTERN_CAP, EXTRA_PATTERN_CHAR_CAP, MAX_DEPTH;
|
|
258
258
|
var init_redaction = __esm({
|
|
259
259
|
"src/_internal/redaction.ts"() {
|
|
260
260
|
PATTERN_ORDER = [
|
|
@@ -265,7 +265,10 @@ var init_redaction = __esm({
|
|
|
265
265
|
"phone_us",
|
|
266
266
|
"phone_e164",
|
|
267
267
|
"ssn_us",
|
|
268
|
-
"ip_address"
|
|
268
|
+
"ip_address",
|
|
269
|
+
// Last: the value-shaped patterns above are more specific, so a JWT inside
|
|
270
|
+
// `authorization: Bearer eyJ...` gets its own tag before this one runs.
|
|
271
|
+
"secret_assignment"
|
|
269
272
|
];
|
|
270
273
|
MANDATORY_PATTERNS = /* @__PURE__ */ new Set([
|
|
271
274
|
"api_key_prefixed",
|
|
@@ -282,8 +285,13 @@ var init_redaction = __esm({
|
|
|
282
285
|
phone_us: "phone",
|
|
283
286
|
phone_e164: "phone",
|
|
284
287
|
ssn_us: "ssn",
|
|
285
|
-
ip_address: "ip"
|
|
288
|
+
ip_address: "ip",
|
|
289
|
+
secret_assignment: "secret"
|
|
290
|
+
// pragma: allowlist secret — a label, not a value
|
|
286
291
|
};
|
|
292
|
+
SECRET_ASSIGNMENT_SOURCE = // Compound keys accept `=` or `:`; bare `secret` requires `=`, because with
|
|
293
|
+
// `:` it is more often a marker (`k8s-secret: mounted`) than an assignment.
|
|
294
|
+
`(?:(?: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+)`;
|
|
287
295
|
PATTERNS = {
|
|
288
296
|
api_key_prefixed: new RegExp(
|
|
289
297
|
"\\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",
|
|
@@ -314,7 +322,17 @@ var init_redaction = __esm({
|
|
|
314
322
|
ip_address: new RegExp(
|
|
315
323
|
"\\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",
|
|
316
324
|
"gi"
|
|
317
|
-
)
|
|
325
|
+
),
|
|
326
|
+
// MHQ-973 — key-context secret assignment. Every pattern above is
|
|
327
|
+
// VALUE-shaped: it recognises a credential by its own format. That cannot
|
|
328
|
+
// catch `password=hunter2` — `hunter2` is an ordinary word, and only the KEY
|
|
329
|
+
// marks it as a secret.
|
|
330
|
+
//
|
|
331
|
+
// Deliberately excludes a bare `token`: this is an LLM-observability SDK, and
|
|
332
|
+
// `input_tokens=100` / `max_tokens=4096` are core telemetry. Only unambiguous
|
|
333
|
+
// `*_token` compounds match. No leading `\\b` either, so `PGPASSWORD=` and
|
|
334
|
+
// `MYSQL_PWD=` are caught; the `[=:]` anchor is what prevents false positives.
|
|
335
|
+
secret_assignment: new RegExp(SECRET_ASSIGNMENT_SOURCE, "gi")
|
|
318
336
|
};
|
|
319
337
|
EXTRA_PATTERN_CAP = 10;
|
|
320
338
|
EXTRA_PATTERN_CHAR_CAP = 256;
|
|
@@ -409,6 +427,7 @@ function redactedMessage(error) {
|
|
|
409
427
|
const out = redactValue(raw, activeRedactionConfig);
|
|
410
428
|
raw = typeof out === "string" ? out : String(out);
|
|
411
429
|
}
|
|
430
|
+
raw = raw.replace(new RegExp(SECRET_ASSIGNMENT_SOURCE, "gi"), "[REDACTED:secret]");
|
|
412
431
|
} catch {
|
|
413
432
|
return "<redaction unavailable>";
|
|
414
433
|
}
|
|
@@ -434,6 +453,7 @@ function recordDrop(reason, category, quantity = 1) {
|
|
|
434
453
|
if (checkBucket(localLogBuckets, `drop:${key}`, LOCAL_LOG_LIMIT_PER_WINDOW, LOCAL_LOG_WINDOW_MS)) {
|
|
435
454
|
console.warn(`morse: dropped ${quantity} ${category} (${reason}) \u2014 telemetry is being lost`);
|
|
436
455
|
}
|
|
456
|
+
if (transmissionAllowed()) ensureTimer();
|
|
437
457
|
} catch {
|
|
438
458
|
}
|
|
439
459
|
}
|
|
@@ -602,12 +622,12 @@ function _resetForTesting() {
|
|
|
602
622
|
level = LEVEL_ERROR;
|
|
603
623
|
activeRedactionConfig = null;
|
|
604
624
|
}
|
|
605
|
-
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, REASON_QUEUE_FULL, REASON_RETRY_EXHAUSTED, REASON_QUOTA_REJECTED, REASON_SHUTDOWN_DROP, counters, activeRedactionConfig, pending, timer, consecutiveFailures, breakerOpenUntil, reporting, MORSE_PATH_MARKERS, clientConfig;
|
|
625
|
+
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, REASON_QUEUE_FULL, REASON_RETRY_EXHAUSTED, REASON_QUOTA_REJECTED, REASON_ENCODE_FAILED, REASON_SHUTDOWN_DROP, REASON_AUTH_REJECTED, REASON_ENDPOINT_REJECTED, REASON_SEND_FAILED, counters, activeRedactionConfig, pending, timer, consecutiveFailures, breakerOpenUntil, reporting, MORSE_PATH_MARKERS, clientConfig;
|
|
606
626
|
var init_diagnostics = __esm({
|
|
607
627
|
"src/_internal/diagnostics.ts"() {
|
|
608
628
|
init_env();
|
|
609
629
|
init_redaction();
|
|
610
|
-
SDK_VERSION = "0.
|
|
630
|
+
SDK_VERSION = "0.6.0-rc.1" ;
|
|
611
631
|
LEVEL_OFF = "off";
|
|
612
632
|
LEVEL_ERROR = "error";
|
|
613
633
|
LEVEL_DEBUG = "debug";
|
|
@@ -638,7 +658,11 @@ var init_diagnostics = __esm({
|
|
|
638
658
|
REASON_QUEUE_FULL = "queue_full";
|
|
639
659
|
REASON_RETRY_EXHAUSTED = "retry_exhausted";
|
|
640
660
|
REASON_QUOTA_REJECTED = "quota_rejected";
|
|
661
|
+
REASON_ENCODE_FAILED = "encode_failed";
|
|
641
662
|
REASON_SHUTDOWN_DROP = "shutdown_drop";
|
|
663
|
+
REASON_AUTH_REJECTED = "auth_rejected";
|
|
664
|
+
REASON_ENDPOINT_REJECTED = "endpoint_rejected";
|
|
665
|
+
REASON_SEND_FAILED = "send_failed";
|
|
642
666
|
counters = /* @__PURE__ */ new Map();
|
|
643
667
|
activeRedactionConfig = null;
|
|
644
668
|
pending = [];
|
|
@@ -706,7 +730,10 @@ var init_spans = __esm({
|
|
|
706
730
|
// MHQ-482: matches Python's `SpanType.RETRIEVER` (apps/sdk/python/src/morse_ai/spans.py).
|
|
707
731
|
// @beta — retriever span type is subject to change before SDK v1.0 (see
|
|
708
732
|
// the plain-LangChain adapter's on_retriever_* callbacks in src/langchain/).
|
|
709
|
-
RETRIEVER: "retriever"
|
|
733
|
+
RETRIEVER: "retriever",
|
|
734
|
+
// MHQ-1025: matches Python's `SpanType.HANDOFF`. One span per routing
|
|
735
|
+
// decision between two agents, with `from_agent` / `to_agent` metadata.
|
|
736
|
+
HANDOFF: "handoff"
|
|
710
737
|
};
|
|
711
738
|
}
|
|
712
739
|
});
|
|
@@ -781,6 +808,14 @@ function redactAttrValue(value, config) {
|
|
|
781
808
|
}
|
|
782
809
|
return value;
|
|
783
810
|
}
|
|
811
|
+
function dropReasonForExportError(error) {
|
|
812
|
+
const code = error?.code;
|
|
813
|
+
if (typeof code !== "number") return REASON_RETRY_EXHAUSTED;
|
|
814
|
+
if (code === 429) return REASON_QUOTA_REJECTED;
|
|
815
|
+
if (code === 401 || code === 403) return REASON_AUTH_REJECTED;
|
|
816
|
+
if (code >= 400 && code < 500) return REASON_ENDPOINT_REJECTED;
|
|
817
|
+
return REASON_SEND_FAILED;
|
|
818
|
+
}
|
|
784
819
|
function getEngine() {
|
|
785
820
|
if (engine === null) engine = new OtelEngine();
|
|
786
821
|
return engine;
|
|
@@ -788,7 +823,7 @@ function getEngine() {
|
|
|
788
823
|
function spanDictToOtelAttributes(spanDict, traceDict, resourceDict, opts) {
|
|
789
824
|
const attrs = {};
|
|
790
825
|
const spanType = spanDict.type;
|
|
791
|
-
if (typeof spanType === "string" && spanType) attrs["
|
|
826
|
+
if (typeof spanType === "string" && spanType) attrs["morse.span_type"] = spanType;
|
|
792
827
|
const model = spanDict.model;
|
|
793
828
|
if (model !== void 0 && model !== null) attrs["gen_ai.request.model"] = String(model);
|
|
794
829
|
const tokenFields = [
|
|
@@ -807,12 +842,12 @@ function spanDictToOtelAttributes(spanDict, traceDict, resourceDict, opts) {
|
|
|
807
842
|
}
|
|
808
843
|
const costUsd = spanDict.cost_usd;
|
|
809
844
|
if (costUsd !== void 0 && costUsd !== null) {
|
|
810
|
-
attrs["
|
|
845
|
+
attrs["morse.cost_usd"] = String(costUsd);
|
|
811
846
|
}
|
|
812
847
|
for (const [src, otelKey] of [
|
|
813
|
-
["input_data", "
|
|
814
|
-
["output_data", "
|
|
815
|
-
["context_segments", "
|
|
848
|
+
["input_data", "morse.input_data"],
|
|
849
|
+
["output_data", "morse.output_data"],
|
|
850
|
+
["context_segments", "morse.context_segments"]
|
|
816
851
|
]) {
|
|
817
852
|
const v = spanDict[src];
|
|
818
853
|
if (v !== void 0 && v !== null) {
|
|
@@ -824,35 +859,36 @@ function spanDictToOtelAttributes(spanDict, traceDict, resourceDict, opts) {
|
|
|
824
859
|
if (metadata && typeof metadata === "object") {
|
|
825
860
|
for (const [key, value] of Object.entries(metadata)) {
|
|
826
861
|
const encoded = jsonCapped(value, opts.maxFieldBytes);
|
|
827
|
-
if (encoded !== null) attrs[`
|
|
862
|
+
if (encoded !== null) attrs[`morse.metadata.${key}`] = encoded;
|
|
828
863
|
}
|
|
829
864
|
}
|
|
830
865
|
const errorMessage = spanDict.error_message;
|
|
831
866
|
if (opts.isRoot) {
|
|
832
867
|
const threadId = traceDict.thread_id;
|
|
833
|
-
if (threadId !== void 0 && threadId !== null) attrs["
|
|
868
|
+
if (threadId !== void 0 && threadId !== null) attrs["morse.thread_id"] = String(threadId);
|
|
834
869
|
const userId = traceDict.user_id;
|
|
835
|
-
if (userId !== void 0 && userId !== null) attrs["
|
|
870
|
+
if (userId !== void 0 && userId !== null) attrs["morse.user_id"] = String(userId);
|
|
836
871
|
const userMetadata = traceDict.user_metadata;
|
|
837
872
|
if (userMetadata && typeof userMetadata === "object") {
|
|
838
873
|
const entries = Object.entries(userMetadata);
|
|
839
874
|
if (entries.length > 0) {
|
|
840
|
-
attrs["
|
|
875
|
+
attrs["morse.user_metadata"] = JSON.stringify(
|
|
841
876
|
Object.fromEntries(entries.map(([k, v]) => [k, String(v)]))
|
|
842
877
|
);
|
|
843
878
|
}
|
|
844
879
|
}
|
|
845
880
|
const success = traceDict.success;
|
|
846
|
-
if (success !== void 0 && success !== null)
|
|
881
|
+
if (success !== void 0 && success !== null)
|
|
882
|
+
attrs["morse.outcome.success"] = Boolean(success);
|
|
847
883
|
const outcome = traceDict.outcome;
|
|
848
|
-
if (outcome !== void 0 && outcome !== null) attrs["
|
|
884
|
+
if (outcome !== void 0 && outcome !== null) attrs["morse.outcome.label"] = String(outcome);
|
|
849
885
|
const framework = resourceDict["morse_ai.framework"];
|
|
850
|
-
if (typeof framework === "string" && framework) attrs["
|
|
886
|
+
if (typeof framework === "string" && framework) attrs["morse.framework"] = framework;
|
|
851
887
|
const source = resourceDict["morse_ai.source"];
|
|
852
|
-
if (typeof source === "string" && source) attrs["
|
|
888
|
+
if (typeof source === "string" && source) attrs["morse.source"] = source;
|
|
853
889
|
}
|
|
854
890
|
if (errorMessage && spanDict.status === "failed") {
|
|
855
|
-
attrs["
|
|
891
|
+
attrs["morse.error_message"] = String(errorMessage);
|
|
856
892
|
}
|
|
857
893
|
return attrs;
|
|
858
894
|
}
|
|
@@ -944,7 +980,7 @@ function reportSwallowed(err, fingerprint) {
|
|
|
944
980
|
} catch {
|
|
945
981
|
}
|
|
946
982
|
}
|
|
947
|
-
var INSTRUMENTATION_NAME, DEFAULT_MAX_FIELD_BYTES, TRUNCATION_MARKER, contextManagerRegistered, MAX_U64, RedactingSpanExporter, RecordingSpanExporter, ResultCapturingExporter, OtelEngine, engine;
|
|
983
|
+
var INSTRUMENTATION_NAME, DEFAULT_MAX_FIELD_BYTES, TRUNCATION_MARKER, contextManagerRegistered, MAX_U64, RedactingSpanExporter, DropReportingExporter, RecordingSpanExporter, ResultCapturingExporter, OtelEngine, engine;
|
|
948
984
|
var init_otel_provider = __esm({
|
|
949
985
|
"src/_internal/otel-provider.ts"() {
|
|
950
986
|
init_diagnostics();
|
|
@@ -981,6 +1017,29 @@ var init_otel_provider = __esm({
|
|
|
981
1017
|
return this.inner.forceFlush ? this.inner.forceFlush() : Promise.resolve();
|
|
982
1018
|
}
|
|
983
1019
|
};
|
|
1020
|
+
DropReportingExporter = class {
|
|
1021
|
+
constructor(inner) {
|
|
1022
|
+
this.inner = inner;
|
|
1023
|
+
}
|
|
1024
|
+
inner;
|
|
1025
|
+
export(spans, resultCallback) {
|
|
1026
|
+
this.inner.export(spans, (result) => {
|
|
1027
|
+
if (result.code === ExportResultCode.FAILED) {
|
|
1028
|
+
try {
|
|
1029
|
+
recordDrop(dropReasonForExportError(result.error), "span", spans.length);
|
|
1030
|
+
} catch {
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
resultCallback(result);
|
|
1034
|
+
});
|
|
1035
|
+
}
|
|
1036
|
+
shutdown() {
|
|
1037
|
+
return this.inner.shutdown();
|
|
1038
|
+
}
|
|
1039
|
+
forceFlush() {
|
|
1040
|
+
return this.inner.forceFlush ? this.inner.forceFlush() : Promise.resolve();
|
|
1041
|
+
}
|
|
1042
|
+
};
|
|
984
1043
|
RecordingSpanExporter = class {
|
|
985
1044
|
spans = [];
|
|
986
1045
|
export(spans, resultCallback) {
|
|
@@ -1047,7 +1106,10 @@ var init_otel_provider = __esm({
|
|
|
1047
1106
|
compression: CompressionAlgorithm.GZIP,
|
|
1048
1107
|
timeoutMillis: opts.timeoutMillis
|
|
1049
1108
|
});
|
|
1050
|
-
let exporter = new RedactingSpanExporter(
|
|
1109
|
+
let exporter = new RedactingSpanExporter(
|
|
1110
|
+
new DropReportingExporter(otlpExporter),
|
|
1111
|
+
opts.redactionConfig
|
|
1112
|
+
);
|
|
1051
1113
|
if (opts.resultSink) {
|
|
1052
1114
|
exporter = new ResultCapturingExporter(exporter, opts.resultSink);
|
|
1053
1115
|
}
|
|
@@ -1465,6 +1527,18 @@ function setContext(dims) {
|
|
|
1465
1527
|
if (state.userMetadata === void 0) state.userMetadata = {};
|
|
1466
1528
|
Object.assign(state.userMetadata, coerceDims(dims, "morse.tracing.set_context"));
|
|
1467
1529
|
}
|
|
1530
|
+
function adoptThreadId(value) {
|
|
1531
|
+
const state = getActiveTraceState();
|
|
1532
|
+
if (state === null || state.threadId !== void 0 || value === null || value === void 0) {
|
|
1533
|
+
return;
|
|
1534
|
+
}
|
|
1535
|
+
try {
|
|
1536
|
+
const s = String(value);
|
|
1537
|
+
if (s !== "") state.threadId = s;
|
|
1538
|
+
} catch (err) {
|
|
1539
|
+
report(err, { fingerprint: "morse.tracing.adopt_thread_id" });
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1468
1542
|
function coerceDims(dims, fingerprint) {
|
|
1469
1543
|
const out = {};
|
|
1470
1544
|
for (const k of Object.keys(dims)) {
|
|
@@ -1665,6 +1739,6 @@ var init_propagation = __esm({
|
|
|
1665
1739
|
}
|
|
1666
1740
|
});
|
|
1667
1741
|
|
|
1668
|
-
export { DEFAULT_ENDPOINT, REASON_QUEUE_FULL, REASON_QUOTA_REJECTED, REASON_RETRY_EXHAUSTED, REASON_SHUTDOWN_DROP, SpanType, W3C_TRACEPARENT_HEADER, _resetForTesting, _resetForTesting2, buildRedactionConfig, buildTraceEntry, extractTraceparent, flushOnce, formatTraceparent, generateSpanId, generateTraceId, getActiveTraceState, getApiKey, getEndpoint, getEngine, getFlushIntervalSeconds, getInternalSource, getLastTrace, getMaxBatchSize, getMaxFieldBytes, getMaxQueueSize, getRedactionConfig, getSampleRate, getTransport, init_diagnostics, init_env, init_otel_provider, init_propagation, init_redaction, init_spans, init_tracing, injectIntoRequestInit, injectTraceparent, isAutoDetectDisabled, isDbCaptureEnabled, isDisabled, isValidInternalSource, nowIso, recordDrop, redactValue, report, runAsync, runSync, sendTrace, setContext, setDiagnosticsClientConfig, setLevel, setRedactionConfig2 as setRedactionConfig, setSource, setTransport, spanAsync, spanSync, startSpan };
|
|
1669
|
-
//# sourceMappingURL=chunk-
|
|
1670
|
-
//# sourceMappingURL=chunk-
|
|
1742
|
+
export { DEFAULT_ENDPOINT, REASON_AUTH_REJECTED, REASON_ENCODE_FAILED, REASON_ENDPOINT_REJECTED, REASON_QUEUE_FULL, REASON_QUOTA_REJECTED, REASON_RETRY_EXHAUSTED, REASON_SEND_FAILED, REASON_SHUTDOWN_DROP, SpanType, W3C_TRACEPARENT_HEADER, _resetForTesting, _resetForTesting2, adoptThreadId, buildRedactionConfig, buildTraceEntry, extractTraceparent, flushOnce, formatTraceparent, generateSpanId, generateTraceId, getActiveTraceState, getApiKey, getEndpoint, getEngine, getFlushIntervalSeconds, getInternalSource, getLastTrace, getMaxBatchSize, getMaxFieldBytes, getMaxQueueSize, getRedactionConfig, getSampleRate, getTransport, init_diagnostics, init_env, init_otel_provider, init_propagation, init_redaction, init_spans, init_tracing, injectIntoRequestInit, injectTraceparent, isAutoDetectDisabled, isDbCaptureEnabled, isDisabled, isValidInternalSource, nowIso, recordDrop, redactValue, report, runAsync, runSync, sendTrace, setContext, setDiagnosticsClientConfig, setLevel, setRedactionConfig2 as setRedactionConfig, setSource, setTransport, spanAsync, spanSync, startSpan };
|
|
1743
|
+
//# sourceMappingURL=chunk-HJV35HWL.js.map
|
|
1744
|
+
//# sourceMappingURL=chunk-HJV35HWL.js.map
|