@morsehq-dev/sdk 0.5.0-rc.3 → 0.5.0-rc.4
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 +34 -0
- package/dist/anthropic/index.cjs +11 -11
- package/dist/anthropic/index.js +4 -4
- package/dist/anthropic-agent-sdk/index.cjs +37 -37
- package/dist/anthropic-agent-sdk/index.js +6 -6
- package/dist/browser/anthropic/index.cjs +11 -11
- package/dist/browser/anthropic/index.js +4 -4
- package/dist/browser/anthropic-agent-sdk/index.cjs +37 -37
- package/dist/browser/anthropic-agent-sdk/index.js +6 -6
- package/dist/{chunk-DPGUBZVO.cjs → browser/chunk-255AHH2W.cjs} +15 -15
- package/dist/browser/{chunk-XLQSSJUZ.cjs.map → chunk-255AHH2W.cjs.map} +1 -1
- package/dist/browser/{chunk-QCI2ZDQS.cjs → chunk-36QTJJT7.cjs} +12 -12
- package/dist/browser/{chunk-QCI2ZDQS.cjs.map → chunk-36QTJJT7.cjs.map} +1 -1
- package/dist/browser/{chunk-PM5D6VXF.cjs → chunk-3H2OJLC2.cjs} +4 -3
- package/dist/browser/{chunk-PM5D6VXF.cjs.map → chunk-3H2OJLC2.cjs.map} +1 -1
- package/dist/browser/{chunk-P7XWSMFX.cjs → chunk-3STFITZF.cjs} +6 -6
- package/dist/browser/{chunk-P7XWSMFX.cjs.map → chunk-3STFITZF.cjs.map} +1 -1
- package/dist/browser/{chunk-YSJVJ3Z3.cjs → chunk-6J6F5LJI.cjs} +7 -7
- package/dist/browser/{chunk-YSJVJ3Z3.cjs.map → chunk-6J6F5LJI.cjs.map} +1 -1
- package/dist/browser/{chunk-LGG5PL5U.js → chunk-E2OVLWAF.js} +3 -3
- package/dist/browser/{chunk-LGG5PL5U.js.map → chunk-E2OVLWAF.js.map} +1 -1
- package/dist/{chunk-HCEKAVDR.js → browser/chunk-JR6JN7IZ.js} +4 -4
- package/dist/browser/{chunk-KGSLJLWW.js.map → chunk-JR6JN7IZ.js.map} +1 -1
- package/dist/browser/{chunk-WUQXNRD3.js → chunk-KXVSMY6L.js} +3 -3
- package/dist/browser/{chunk-WUQXNRD3.js.map → chunk-KXVSMY6L.js.map} +1 -1
- package/dist/browser/{chunk-N4Q2WMOE.js → chunk-PIWO5L5N.js} +5 -5
- package/dist/browser/{chunk-N4Q2WMOE.js.map → chunk-PIWO5L5N.js.map} +1 -1
- package/dist/browser/{chunk-KFWCOUL3.cjs → chunk-VOZBYSWK.cjs} +5 -5
- package/dist/browser/{chunk-KFWCOUL3.cjs.map → chunk-VOZBYSWK.cjs.map} +1 -1
- package/dist/{chunk-7PGR4NJG.js → browser/chunk-VZA2EPY3.js} +4 -4
- package/dist/browser/{chunk-MOBYR3AP.js.map → chunk-VZA2EPY3.js.map} +1 -1
- package/dist/browser/{chunk-MI4OUWUZ.js → chunk-WIWUEI5Z.js} +3 -3
- package/dist/browser/{chunk-MI4OUWUZ.js.map → chunk-WIWUEI5Z.js.map} +1 -1
- package/dist/browser/{chunk-Y3BOPSM3.js → chunk-XD4VWCAC.js} +4 -4
- package/dist/browser/{chunk-Y3BOPSM3.js.map → chunk-XD4VWCAC.js.map} +1 -1
- package/dist/browser/{chunk-VSG4EWNL.cjs → chunk-YD7TO4PD.cjs} +18 -18
- package/dist/browser/{chunk-VSG4EWNL.cjs.map → chunk-YD7TO4PD.cjs.map} +1 -1
- package/dist/browser/index.cjs +91 -90
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +9 -8
- 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 +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-XHOLQGN6.js → chunk-2O2FFJLK.js} +5 -5
- package/dist/{chunk-XHOLQGN6.js.map → chunk-2O2FFJLK.js.map} +1 -1
- package/dist/{chunk-3XQOZXJM.cjs → chunk-7ZNGY236.cjs} +7 -7
- package/dist/{chunk-3XQOZXJM.cjs.map → chunk-7ZNGY236.cjs.map} +1 -1
- package/dist/{browser/chunk-MOBYR3AP.js → chunk-BNMTY7PE.js} +4 -4
- package/dist/{chunk-7PGR4NJG.js.map → chunk-BNMTY7PE.js.map} +1 -1
- package/dist/{chunk-XZRJXJFA.js → chunk-ELBY4SJ7.js} +4 -4
- package/dist/{chunk-XZRJXJFA.js.map → chunk-ELBY4SJ7.js.map} +1 -1
- package/dist/{chunk-E3G3IE6Y.cjs → chunk-HA5RY4N5.cjs} +4 -3
- package/dist/{chunk-E3G3IE6Y.cjs.map → chunk-HA5RY4N5.cjs.map} +1 -1
- package/dist/{chunk-NGBJJGOC.cjs → chunk-HZKXILBF.cjs} +5 -5
- package/dist/{chunk-NGBJJGOC.cjs.map → chunk-HZKXILBF.cjs.map} +1 -1
- package/dist/{chunk-ZFE75G7S.js → chunk-JFFZBCTP.js} +3 -3
- package/dist/{chunk-ZFE75G7S.js.map → chunk-JFFZBCTP.js.map} +1 -1
- package/dist/{browser/chunk-KGSLJLWW.js → chunk-MBOISGKD.js} +4 -4
- package/dist/{chunk-HCEKAVDR.js.map → chunk-MBOISGKD.js.map} +1 -1
- package/dist/{chunk-UAJO6JM7.js → chunk-Q6NQQ2LO.js} +3 -3
- package/dist/{chunk-UAJO6JM7.js.map → chunk-Q6NQQ2LO.js.map} +1 -1
- package/dist/{chunk-TGHDV5MC.cjs → chunk-RDFDPK2X.cjs} +6 -6
- package/dist/{chunk-TGHDV5MC.cjs.map → chunk-RDFDPK2X.cjs.map} +1 -1
- package/dist/{chunk-RK3JPX27.cjs → chunk-ULWGK6F5.cjs} +12 -12
- package/dist/{chunk-RK3JPX27.cjs.map → chunk-ULWGK6F5.cjs.map} +1 -1
- package/dist/{chunk-YQ6ZA7OE.cjs → chunk-VM3QM22Z.cjs} +18 -18
- package/dist/{chunk-YQ6ZA7OE.cjs.map → chunk-VM3QM22Z.cjs.map} +1 -1
- package/dist/{browser/chunk-XLQSSJUZ.cjs → chunk-WLNADB4J.cjs} +15 -15
- package/dist/{chunk-DPGUBZVO.cjs.map → chunk-WLNADB4J.cjs.map} +1 -1
- package/dist/{chunk-T2NESDMT.js → chunk-YPP5DDPO.js} +3 -3
- package/dist/{chunk-T2NESDMT.js.map → chunk-YPP5DDPO.js.map} +1 -1
- package/dist/index.cjs +98 -97
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -9
- 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 +14 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/_internal/active-framework.ts","../src/_internal/llm-io.ts"],"names":[],"mappings":";;;;AAwBA,YAAA,EAAA;AASO,SAAS,mBAAmB,IAAA,EAAoB;AACrD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,WAAW,CAAA,EAAG;AACnD,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,mBAAA,EAAoB;AAClC,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,SAAA,EAAW;AACtC,MAAA,KAAA,CAAM,SAAA,GAAY,IAAA;AAAA,IACpB;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;;;AC3BO,IAAM,gBAAA,GAAmB,IAAA;AAMzB,SAAS,YAAA,CAAa,IAAA,EAAc,QAAA,GAAmB,gBAAA,EAA0B;AACtF,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,MAAA,KAAW,GAAG,OAAO,IAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA;AACjC,EAAA,IAAI,KAAA,CAAM,MAAA,IAAU,QAAA,EAAU,OAAO,IAAA;AAGrC,EAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY,OAAA,EAAS,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC5F,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA,GAAI,QAAA;AACpC;AAiBO,SAAS,oBAAA,CACd,QAAA,EACA,MAAA,EACA,QAAA,GAAmB,gBAAA,EACQ;AAC3B,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,QAAQ,KAAK,QAAA,CAAS,MAAA,KAAW,GAAG,OAAO,MAAA;AAE9D,EAAA,MAAM,YAAA,GAAe,QAAA,CAClB,MAAA,CAAO,CAAC,CAAA,KAAoC,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,IAAI,CAAA,CAC/E,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACX,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,OAAA,EAAS,OAAO,CAAA,CAAE,OAAA,KAAY,QAAA,GAAW,aAAa,CAAA,CAAE,OAAA,EAAS,QAAQ,CAAA,GAAI,CAAA,CAAE;AAAA,GACjF,CAAE,CAAA;AACJ,EAAA,IAAI,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAEtC,EAAA,MAAM,GAAA,GAAqB,EAAE,QAAA,EAAU,YAAA,EAAa;AACpD,EAAA,MAAM,UAAA,GAAa,cAAc,MAAM,CAAA;AACvC,EAAA,IAAI,UAAA,EAAY,GAAA,CAAI,MAAA,GAAS,YAAA,CAAa,YAAY,QAAQ,CAAA;AAC9D,EAAA,OAAO,GAAA;AACT;AAMO,SAAS,cAAc,MAAA,EAAqC;AACjE,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,EAAU,OAAO,MAAA,IAAU,MAAA;AACjD,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,MAAA;AACnC,EAAA,MAAM,QAAQ,MAAA,CACX,GAAA;AAAA,IAAI,CAAC,KAAA,KACJ,OAAO,KAAA,KAAU,QAAA,GACb,KAAA,GACA,OAAQ,KAAA,EAA8B,IAAA,KAAS,QAAA,GAC5C,KAAA,CAA2B,IAAA,GAC5B;AAAA,GACR,CACC,OAAO,OAAO,CAAA;AACjB,EAAA,OAAO,MAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,GAAI,MAAA;AAC/C;AAOO,SAAS,0BAAA,CACd,OAAA,EACA,QAAA,GAAmB,gBAAA,EACC;AACpB,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,MAAA;AAC5D,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,IAAI,CAAA,EAAG,SAAS,MAAA,IAAU,OAAO,EAAE,IAAA,KAAS,QAAA,IAAY,EAAE,IAAA,EAAM;AAC9D,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAI,CAAA;AAAA,IACnB,CAAA,MAAA,IAAW,CAAA,EAAG,IAAA,KAAS,UAAA,EAAY;AACjC,MAAA,MAAM,OAAO,OAAO,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,EAAE,IAAA,GAAO,MAAA;AACnD,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,KAAA,GAAQ,CAAA,UAAA,EAAa,IAAI,CAAA,EAAA,EAAK,QAAA,CAAS,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA,GAAK,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IACvF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC/B,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,QAAQ,CAAA;AAChD;AAMO,SAAS,uBAAA,CACd,OAAA,EACA,QAAA,GAAmB,gBAAA,EACC;AACpB,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,MAAA;AAC5D,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,UAAW,MAAA,EAAkD,OAAA;AACnE,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,IAAI,OAAO,OAAA,CAAQ,OAAA,KAAY,QAAA,IAAY,QAAQ,OAAA,EAAS;AAC1D,MAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA,IAC5B;AACA,IAAA,MAAM,YAAY,OAAA,CAAQ,UAAA;AAC1B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5B,MAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC5B,QAAA,MAAM,KAAM,IAAA,EAAiE,QAAA;AAC7E,QAAA,MAAM,OAAO,OAAO,EAAA,EAAI,IAAA,KAAS,QAAA,GAAW,GAAG,IAAA,GAAO,MAAA;AACtD,QAAA,KAAA,CAAM,IAAA;AAAA,UACJ,EAAA,EAAI,SAAA,GAAY,CAAA,WAAA,EAAc,IAAI,CAAA,EAAA,EAAK,MAAA,CAAO,EAAA,CAAG,SAAS,CAAC,CAAA,CAAA,GAAK,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC/B,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,QAAQ,CAAA;AAChD;AAOO,SAAS,wBAAA,CACd,QAAA,EACA,QAAA,GAAmB,gBAAA,EACQ;AAC3B,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,QAAQ,KAAK,QAAA,CAAS,MAAA,KAAW,GAAG,OAAO,MAAA;AAC9D,EAAA,MAAM,eAAe,QAAA,CAClB,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,MAAM,OAAA,CAAQ,CAAC,CAAA,IAAK,MAAA,EAAW,SAAS,aAAA,CAAc,UAAA,CAAW,CAAC,CAAC,CAAA,GAAI,CAAA,CACrF,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA,CAClC,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAA,CAAE,MAAM,OAAA,EAAS,YAAA,CAAa,EAAE,OAAA,EAAS,QAAQ,GAAE,CAAE,CAAA;AAC5E,EAAA,OAAO,aAAa,MAAA,GAAS,CAAA,GAAI,EAAE,QAAA,EAAU,cAAa,GAAI,MAAA;AAChE;AAGO,SAAS,cAAA,CACd,OAAA,EACA,QAAA,GAAmB,gBAAA,EACQ;AAC3B,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,MAAA;AAC5D,EAAA,MAAM,QAAA,GAAW,QACd,MAAA,CAAO,CAAC,MAAmB,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,MAAA,GAAS,CAAC,EAChE,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,MAAA,EAAiB,SAAS,YAAA,CAAa,CAAA,EAAG,QAAQ,CAAA,EAAE,CAAE,CAAA;AAC7E,EAAA,OAAO,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,EAAE,UAAS,GAAI,MAAA;AAC9C;AAMO,SAAS,0BAAA,CACd,WAAA,EACA,QAAA,GAAmB,gBAAA,EACC;AACpB,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,WAAW,GAAG,OAAO,MAAA;AACxC,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC3B,IAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,MAAA,MAAM,OAAQ,GAAA,EAA4B,IAAA;AAC1C,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,EAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IACvD;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC/B,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,QAAQ,CAAA;AAChD;AAEA,SAAS,SAAS,KAAA,EAAwB;AACxC,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,IAAK,OAAO,KAAK,CAAA;AAAA,EAC9C,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACF","file":"chunk-T2NESDMT.js","sourcesContent":["/**\n * MHQ-859 — active framework discovery, the TS half of AGE-240.\n *\n * Python has had this since AGE-240: each adapter marks itself active when\n * it intercepts a call, the trace stamps `morse_ai.framework` on its\n * resource, and the server uses it to disambiguate agents that share a\n * logical name but not an implementation. TypeScript had the *consumer*\n * side wired all along — `otel-provider.ts` already maps\n * `resource[\"morse_ai.framework\"]` to the `av.framework` root-span\n * attribute — but nothing ever set it, so every TS trace landed with\n * `framework` NULL and framework filtering silently excluded all TS traffic.\n *\n * Python uses a `threading.local`. The Node equivalent is per-trace state,\n * not per-thread: `AsyncLocalStorage` already scopes the active trace, and\n * concurrent traces in one process must not see each other's marker. So the\n * marker is written straight onto the active trace state and there is no\n * module-global to leak across interleaved async calls — which also removes\n * the need for Python's `clear_active_framework()` try/finally discipline.\n *\n * First framework wins per trace: when a customer mixes two adapters in one\n * trace, the first to fire defines the label. Absence is the signal — never\n * invent a default.\n */\n\nimport { getActiveTraceState } from \"./tracing\";\n\n/**\n * Mark `name` as the framework for the currently-active trace.\n *\n * No-op when no trace is active (an adapter can fire outside `run()`), and\n * no-op when a framework is already set. Never throws — telemetry must not\n * break customer code.\n */\nexport function setActiveFramework(name: string): void {\n if (typeof name !== \"string\" || name.length === 0) return;\n try {\n const state = getActiveTraceState();\n if (state !== null && !state.framework) {\n state.framework = name;\n }\n } catch {\n // swallow — never break the caller\n }\n}\n\n/** Framework recorded on the active trace, or `undefined`. */\nexport function getActiveFramework(): string | undefined {\n try {\n return getActiveTraceState()?.framework ?? undefined;\n } catch {\n return undefined;\n }\n}\n","/**\n * MHQ-858 — shared `input_data` / `output_data` capture for LLM spans.\n *\n * Python's adapters have captured prompt/response content on `llm` spans\n * since MHQ-772; no TypeScript adapter ever did, so the trace-detail\n * INPUT/OUTPUT panes were empty for every TS customer while being populated\n * for the Python customer running the identical workload.\n *\n * Mirrors `morse_ai/adapters/anthropic.py`'s `_safe_input_messages` /\n * `_extract_output_text`, including the 4096-byte cap, so the two SDKs\n * produce the same shape for the same call.\n */\n\nimport { contentToText, getContent, getRole } from \"../_agent-sdk-common/context-decomposer\";\n\n/** Bytes of text kept per field. Matches Python's `_CONTENT_BYTE_CAP`. */\nexport const CONTENT_BYTE_CAP = 4096;\n\n/**\n * Truncate on a UTF-8 *byte* budget, not a UTF-16 code-unit count — a\n * 4096-char string of emoji is 16KB on the wire. Never splits a code point.\n */\nexport function truncateText(text: string, maxBytes: number = CONTENT_BYTE_CAP): string {\n if (typeof text !== \"string\" || text.length === 0) return text;\n const encoder = new TextEncoder();\n const bytes = encoder.encode(text);\n if (bytes.length <= maxBytes) return text;\n // `fatal: false` replaces a trailing partial code point with U+FFFD\n // rather than throwing; drop it so the value stays clean.\n const sliced = new TextDecoder(\"utf-8\", { fatal: false }).decode(bytes.subarray(0, maxBytes));\n return sliced.replace(/�$/, \"\") + \"…\";\n}\n\nexport interface CapturedInput {\n messages: Array<{ role?: unknown; content?: unknown }>;\n system?: string;\n}\n\n/**\n * Build a truncated, JSON-safe `input_data` from a chat-completions-shaped\n * request. String content is truncated; block-form content (tool_use,\n * tool_result, image parts) passes through as-is — per-block truncation\n * would mean reconstructing each provider's content-block schema exactly,\n * which is not worth it for a display field.\n *\n * Returns `undefined` when there is nothing worth showing, so callers can\n * assign unconditionally without writing empty objects onto the wire.\n */\nexport function captureInputMessages(\n messages: unknown,\n system?: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): CapturedInput | undefined {\n if (!Array.isArray(messages) || messages.length === 0) return undefined;\n\n const safeMessages = messages\n .filter((m): m is Record<string, unknown> => typeof m === \"object\" && m !== null)\n .map((m) => ({\n role: m.role,\n content: typeof m.content === \"string\" ? truncateText(m.content, maxBytes) : m.content,\n }));\n if (safeMessages.length === 0) return undefined;\n\n const out: CapturedInput = { messages: safeMessages };\n const systemText = flattenSystem(system);\n if (systemText) out.system = truncateText(systemText, maxBytes);\n return out;\n}\n\n/**\n * Anthropic's `system` is either a string or an array of text blocks.\n * Returns `undefined` when neither yields text.\n */\nexport function flattenSystem(system: unknown): string | undefined {\n if (typeof system === \"string\") return system || undefined;\n if (!Array.isArray(system)) return undefined;\n const parts = system\n .map((block) =>\n typeof block === \"string\"\n ? block\n : typeof (block as { text?: unknown })?.text === \"string\"\n ? (block as { text: string }).text\n : \"\",\n )\n .filter(Boolean);\n return parts.length > 0 ? parts.join(\"\\n\") : undefined;\n}\n\n/**\n * Extract the assistant's text from an Anthropic `Message.content` array.\n * A response that only calls a tool still yields something meaningful\n * rather than nothing — same rule as Python's `_extract_output_text`.\n */\nexport function extractAnthropicOutputText(\n content: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): string | undefined {\n if (!Array.isArray(content) || content.length === 0) return undefined;\n const parts: string[] = [];\n for (const block of content) {\n const b = block as { type?: unknown; text?: unknown; name?: unknown; input?: unknown };\n if (b?.type === \"text\" && typeof b.text === \"string\" && b.text) {\n parts.push(b.text);\n } else if (b?.type === \"tool_use\") {\n const name = typeof b.name === \"string\" ? b.name : \"tool\";\n parts.push(b.input ? `[tool_use:${name}] ${safeJson(b.input)}` : `[tool_use:${name}]`);\n }\n }\n if (parts.length === 0) return undefined;\n return truncateText(parts.join(\"\\n\"), maxBytes);\n}\n\n/**\n * Extract the assistant's text from an OpenAI chat-completions response,\n * including a tool-call-only response.\n */\nexport function extractOpenAiOutputText(\n choices: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): string | undefined {\n if (!Array.isArray(choices) || choices.length === 0) return undefined;\n const parts: string[] = [];\n for (const choice of choices) {\n const message = (choice as { message?: Record<string, unknown> })?.message;\n if (!message) continue;\n if (typeof message.content === \"string\" && message.content) {\n parts.push(message.content);\n }\n const toolCalls = message.tool_calls;\n if (Array.isArray(toolCalls)) {\n for (const call of toolCalls) {\n const fn = (call as { function?: { name?: unknown; arguments?: unknown } })?.function;\n const name = typeof fn?.name === \"string\" ? fn.name : \"tool\";\n parts.push(\n fn?.arguments ? `[tool_call:${name}] ${String(fn.arguments)}` : `[tool_call:${name}]`,\n );\n }\n }\n }\n if (parts.length === 0) return undefined;\n return truncateText(parts.join(\"\\n\"), maxBytes);\n}\n\n/**\n * `input_data` for LangChain/LangGraph callbacks, whose messages are class\n * instances with `_getType()` rather than plain `{role, content}` dicts.\n * Reuses the decomposer's duck-typing so the two never drift.\n */\nexport function captureLangChainMessages(\n messages: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): CapturedInput | undefined {\n if (!Array.isArray(messages) || messages.length === 0) return undefined;\n const safeMessages = messages\n .map((m) => ({ role: getRole(m) || undefined, content: contentToText(getContent(m)) }))\n .filter((m) => m.content.length > 0)\n .map((m) => ({ role: m.role, content: truncateText(m.content, maxBytes) }));\n return safeMessages.length > 0 ? { messages: safeMessages } : undefined;\n}\n\n/** `input_data` for the raw-prompt (non-chat) LangChain LLM callback. */\nexport function capturePrompts(\n prompts: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): CapturedInput | undefined {\n if (!Array.isArray(prompts) || prompts.length === 0) return undefined;\n const messages = prompts\n .filter((p): p is string => typeof p === \"string\" && p.length > 0)\n .map((p) => ({ role: \"user\" as const, content: truncateText(p, maxBytes) }));\n return messages.length > 0 ? { messages } : undefined;\n}\n\n/**\n * `output_data` text from a LangChain `LLMResult` — `generations` is an\n * array-of-arrays (one inner array per prompt).\n */\nexport function extractLangChainOutputText(\n generations: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): string | undefined {\n if (!Array.isArray(generations)) return undefined;\n const parts: string[] = [];\n for (const group of generations) {\n if (!Array.isArray(group)) continue;\n for (const gen of group) {\n const text = (gen as { text?: unknown })?.text;\n if (typeof text === \"string\" && text) parts.push(text);\n }\n }\n if (parts.length === 0) return undefined;\n return truncateText(parts.join(\"\\n\"), maxBytes);\n}\n\nfunction safeJson(value: unknown): string {\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/_internal/active-framework.ts","../src/_internal/llm-io.ts"],"names":[],"mappings":";;;;AAwBA,YAAA,EAAA;AASO,SAAS,mBAAmB,IAAA,EAAoB;AACrD,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,WAAW,CAAA,EAAG;AACnD,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,mBAAA,EAAoB;AAClC,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,CAAC,KAAA,CAAM,SAAA,EAAW;AACtC,MAAA,KAAA,CAAM,SAAA,GAAY,IAAA;AAAA,IACpB;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AACF;;;AC3BO,IAAM,gBAAA,GAAmB,IAAA;AAMzB,SAAS,YAAA,CAAa,IAAA,EAAc,QAAA,GAAmB,gBAAA,EAA0B;AACtF,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,MAAA,KAAW,GAAG,OAAO,IAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA;AACjC,EAAA,IAAI,KAAA,CAAM,MAAA,IAAU,QAAA,EAAU,OAAO,IAAA;AAGrC,EAAA,MAAM,MAAA,GAAS,IAAI,WAAA,CAAY,OAAA,EAAS,EAAE,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAC,CAAA;AAC5F,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA,GAAI,QAAA;AACpC;AAiBO,SAAS,oBAAA,CACd,QAAA,EACA,MAAA,EACA,QAAA,GAAmB,gBAAA,EACQ;AAC3B,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,QAAQ,KAAK,QAAA,CAAS,MAAA,KAAW,GAAG,OAAO,MAAA;AAE9D,EAAA,MAAM,YAAA,GAAe,QAAA,CAClB,MAAA,CAAO,CAAC,CAAA,KAAoC,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,IAAI,CAAA,CAC/E,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACX,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,OAAA,EAAS,OAAO,CAAA,CAAE,OAAA,KAAY,QAAA,GAAW,aAAa,CAAA,CAAE,OAAA,EAAS,QAAQ,CAAA,GAAI,CAAA,CAAE;AAAA,GACjF,CAAE,CAAA;AACJ,EAAA,IAAI,YAAA,CAAa,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAEtC,EAAA,MAAM,GAAA,GAAqB,EAAE,QAAA,EAAU,YAAA,EAAa;AACpD,EAAA,MAAM,UAAA,GAAa,cAAc,MAAM,CAAA;AACvC,EAAA,IAAI,UAAA,EAAY,GAAA,CAAI,MAAA,GAAS,YAAA,CAAa,YAAY,QAAQ,CAAA;AAC9D,EAAA,OAAO,GAAA;AACT;AAMO,SAAS,cAAc,MAAA,EAAqC;AACjE,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,EAAU,OAAO,MAAA,IAAU,MAAA;AACjD,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,GAAG,OAAO,MAAA;AACnC,EAAA,MAAM,QAAQ,MAAA,CACX,GAAA;AAAA,IAAI,CAAC,KAAA,KACJ,OAAO,KAAA,KAAU,QAAA,GACb,KAAA,GACA,OAAQ,KAAA,EAA8B,IAAA,KAAS,QAAA,GAC5C,KAAA,CAA2B,IAAA,GAC5B;AAAA,GACR,CACC,OAAO,OAAO,CAAA;AACjB,EAAA,OAAO,MAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA,GAAI,MAAA;AAC/C;AAOO,SAAS,0BAAA,CACd,OAAA,EACA,QAAA,GAAmB,gBAAA,EACC;AACpB,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,MAAA;AAC5D,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,MAAM,CAAA,GAAI,KAAA;AACV,IAAA,IAAI,CAAA,EAAG,SAAS,MAAA,IAAU,OAAO,EAAE,IAAA,KAAS,QAAA,IAAY,EAAE,IAAA,EAAM;AAC9D,MAAA,KAAA,CAAM,IAAA,CAAK,EAAE,IAAI,CAAA;AAAA,IACnB,CAAA,MAAA,IAAW,CAAA,EAAG,IAAA,KAAS,UAAA,EAAY;AACjC,MAAA,MAAM,OAAO,OAAO,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,EAAE,IAAA,GAAO,MAAA;AACnD,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,CAAE,KAAA,GAAQ,CAAA,UAAA,EAAa,IAAI,CAAA,EAAA,EAAK,QAAA,CAAS,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA,GAAK,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,CAAG,CAAA;AAAA,IACvF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC/B,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,QAAQ,CAAA;AAChD;AAMO,SAAS,uBAAA,CACd,OAAA,EACA,QAAA,GAAmB,gBAAA,EACC;AACpB,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,MAAA;AAC5D,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,UAAW,MAAA,EAAkD,OAAA;AACnE,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,IAAI,OAAO,OAAA,CAAQ,OAAA,KAAY,QAAA,IAAY,QAAQ,OAAA,EAAS;AAC1D,MAAA,KAAA,CAAM,IAAA,CAAK,QAAQ,OAAO,CAAA;AAAA,IAC5B;AACA,IAAA,MAAM,YAAY,OAAA,CAAQ,UAAA;AAC1B,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5B,MAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC5B,QAAA,MAAM,KAAM,IAAA,EAAiE,QAAA;AAC7E,QAAA,MAAM,OAAO,OAAO,EAAA,EAAI,IAAA,KAAS,QAAA,GAAW,GAAG,IAAA,GAAO,MAAA;AACtD,QAAA,KAAA,CAAM,IAAA;AAAA,UACJ,EAAA,EAAI,SAAA,GAAY,CAAA,WAAA,EAAc,IAAI,CAAA,EAAA,EAAK,MAAA,CAAO,EAAA,CAAG,SAAS,CAAC,CAAA,CAAA,GAAK,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA;AAAA,SACpF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC/B,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,QAAQ,CAAA;AAChD;AAOO,SAAS,wBAAA,CACd,QAAA,EACA,QAAA,GAAmB,gBAAA,EACQ;AAC3B,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,QAAQ,KAAK,QAAA,CAAS,MAAA,KAAW,GAAG,OAAO,MAAA;AAC9D,EAAA,MAAM,eAAe,QAAA,CAClB,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,MAAM,OAAA,CAAQ,CAAC,CAAA,IAAK,MAAA,EAAW,SAAS,aAAA,CAAc,UAAA,CAAW,CAAC,CAAC,CAAA,GAAI,CAAA,CACrF,MAAA,CAAO,CAAC,CAAA,KAAM,EAAE,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA,CAClC,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAA,CAAE,MAAM,OAAA,EAAS,YAAA,CAAa,EAAE,OAAA,EAAS,QAAQ,GAAE,CAAE,CAAA;AAC5E,EAAA,OAAO,aAAa,MAAA,GAAS,CAAA,GAAI,EAAE,QAAA,EAAU,cAAa,GAAI,MAAA;AAChE;AAGO,SAAS,cAAA,CACd,OAAA,EACA,QAAA,GAAmB,gBAAA,EACQ;AAC3B,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,MAAA;AAC5D,EAAA,MAAM,QAAA,GAAW,QACd,MAAA,CAAO,CAAC,MAAmB,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,MAAA,GAAS,CAAC,EAChE,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,MAAA,EAAiB,SAAS,YAAA,CAAa,CAAA,EAAG,QAAQ,CAAA,EAAE,CAAE,CAAA;AAC7E,EAAA,OAAO,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,EAAE,UAAS,GAAI,MAAA;AAC9C;AAMO,SAAS,0BAAA,CACd,WAAA,EACA,QAAA,GAAmB,gBAAA,EACC;AACpB,EAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,WAAW,GAAG,OAAO,MAAA;AACxC,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,MAAW,SAAS,WAAA,EAAa;AAC/B,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC3B,IAAA,KAAA,MAAW,OAAO,KAAA,EAAO;AACvB,MAAA,MAAM,OAAQ,GAAA,EAA4B,IAAA;AAC1C,MAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,EAAM,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IACvD;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC/B,EAAA,OAAO,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,IAAI,GAAG,QAAQ,CAAA;AAChD;AAEA,SAAS,SAAS,KAAA,EAAwB;AACxC,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,IAAK,OAAO,KAAK,CAAA;AAAA,EAC9C,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AACF","file":"chunk-YPP5DDPO.js","sourcesContent":["/**\n * MHQ-859 — active framework discovery, the TS half of AGE-240.\n *\n * Python has had this since AGE-240: each adapter marks itself active when\n * it intercepts a call, the trace stamps `morse_ai.framework` on its\n * resource, and the server uses it to disambiguate agents that share a\n * logical name but not an implementation. TypeScript had the *consumer*\n * side wired all along — `otel-provider.ts` already maps\n * `resource[\"morse_ai.framework\"]` to the `av.framework` root-span\n * attribute — but nothing ever set it, so every TS trace landed with\n * `framework` NULL and framework filtering silently excluded all TS traffic.\n *\n * Python uses a `threading.local`. The Node equivalent is per-trace state,\n * not per-thread: `AsyncLocalStorage` already scopes the active trace, and\n * concurrent traces in one process must not see each other's marker. So the\n * marker is written straight onto the active trace state and there is no\n * module-global to leak across interleaved async calls — which also removes\n * the need for Python's `clear_active_framework()` try/finally discipline.\n *\n * First framework wins per trace: when a customer mixes two adapters in one\n * trace, the first to fire defines the label. Absence is the signal — never\n * invent a default.\n */\n\nimport { getActiveTraceState } from \"./tracing\";\n\n/**\n * Mark `name` as the framework for the currently-active trace.\n *\n * No-op when no trace is active (an adapter can fire outside `run()`), and\n * no-op when a framework is already set. Never throws — telemetry must not\n * break customer code.\n */\nexport function setActiveFramework(name: string): void {\n if (typeof name !== \"string\" || name.length === 0) return;\n try {\n const state = getActiveTraceState();\n if (state !== null && !state.framework) {\n state.framework = name;\n }\n } catch {\n // swallow — never break the caller\n }\n}\n\n/** Framework recorded on the active trace, or `undefined`. */\nexport function getActiveFramework(): string | undefined {\n try {\n return getActiveTraceState()?.framework ?? undefined;\n } catch {\n return undefined;\n }\n}\n","/**\n * MHQ-858 — shared `input_data` / `output_data` capture for LLM spans.\n *\n * Python's adapters have captured prompt/response content on `llm` spans\n * since MHQ-772; no TypeScript adapter ever did, so the trace-detail\n * INPUT/OUTPUT panes were empty for every TS customer while being populated\n * for the Python customer running the identical workload.\n *\n * Mirrors `morse_ai/adapters/anthropic.py`'s `_safe_input_messages` /\n * `_extract_output_text`, including the 4096-byte cap, so the two SDKs\n * produce the same shape for the same call.\n */\n\nimport { contentToText, getContent, getRole } from \"../_agent-sdk-common/context-decomposer\";\n\n/** Bytes of text kept per field. Matches Python's `_CONTENT_BYTE_CAP`. */\nexport const CONTENT_BYTE_CAP = 4096;\n\n/**\n * Truncate on a UTF-8 *byte* budget, not a UTF-16 code-unit count — a\n * 4096-char string of emoji is 16KB on the wire. Never splits a code point.\n */\nexport function truncateText(text: string, maxBytes: number = CONTENT_BYTE_CAP): string {\n if (typeof text !== \"string\" || text.length === 0) return text;\n const encoder = new TextEncoder();\n const bytes = encoder.encode(text);\n if (bytes.length <= maxBytes) return text;\n // `fatal: false` replaces a trailing partial code point with U+FFFD\n // rather than throwing; drop it so the value stays clean.\n const sliced = new TextDecoder(\"utf-8\", { fatal: false }).decode(bytes.subarray(0, maxBytes));\n return sliced.replace(/�$/, \"\") + \"…\";\n}\n\nexport interface CapturedInput {\n messages: Array<{ role?: unknown; content?: unknown }>;\n system?: string;\n}\n\n/**\n * Build a truncated, JSON-safe `input_data` from a chat-completions-shaped\n * request. String content is truncated; block-form content (tool_use,\n * tool_result, image parts) passes through as-is — per-block truncation\n * would mean reconstructing each provider's content-block schema exactly,\n * which is not worth it for a display field.\n *\n * Returns `undefined` when there is nothing worth showing, so callers can\n * assign unconditionally without writing empty objects onto the wire.\n */\nexport function captureInputMessages(\n messages: unknown,\n system?: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): CapturedInput | undefined {\n if (!Array.isArray(messages) || messages.length === 0) return undefined;\n\n const safeMessages = messages\n .filter((m): m is Record<string, unknown> => typeof m === \"object\" && m !== null)\n .map((m) => ({\n role: m.role,\n content: typeof m.content === \"string\" ? truncateText(m.content, maxBytes) : m.content,\n }));\n if (safeMessages.length === 0) return undefined;\n\n const out: CapturedInput = { messages: safeMessages };\n const systemText = flattenSystem(system);\n if (systemText) out.system = truncateText(systemText, maxBytes);\n return out;\n}\n\n/**\n * Anthropic's `system` is either a string or an array of text blocks.\n * Returns `undefined` when neither yields text.\n */\nexport function flattenSystem(system: unknown): string | undefined {\n if (typeof system === \"string\") return system || undefined;\n if (!Array.isArray(system)) return undefined;\n const parts = system\n .map((block) =>\n typeof block === \"string\"\n ? block\n : typeof (block as { text?: unknown })?.text === \"string\"\n ? (block as { text: string }).text\n : \"\",\n )\n .filter(Boolean);\n return parts.length > 0 ? parts.join(\"\\n\") : undefined;\n}\n\n/**\n * Extract the assistant's text from an Anthropic `Message.content` array.\n * A response that only calls a tool still yields something meaningful\n * rather than nothing — same rule as Python's `_extract_output_text`.\n */\nexport function extractAnthropicOutputText(\n content: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): string | undefined {\n if (!Array.isArray(content) || content.length === 0) return undefined;\n const parts: string[] = [];\n for (const block of content) {\n const b = block as { type?: unknown; text?: unknown; name?: unknown; input?: unknown };\n if (b?.type === \"text\" && typeof b.text === \"string\" && b.text) {\n parts.push(b.text);\n } else if (b?.type === \"tool_use\") {\n const name = typeof b.name === \"string\" ? b.name : \"tool\";\n parts.push(b.input ? `[tool_use:${name}] ${safeJson(b.input)}` : `[tool_use:${name}]`);\n }\n }\n if (parts.length === 0) return undefined;\n return truncateText(parts.join(\"\\n\"), maxBytes);\n}\n\n/**\n * Extract the assistant's text from an OpenAI chat-completions response,\n * including a tool-call-only response.\n */\nexport function extractOpenAiOutputText(\n choices: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): string | undefined {\n if (!Array.isArray(choices) || choices.length === 0) return undefined;\n const parts: string[] = [];\n for (const choice of choices) {\n const message = (choice as { message?: Record<string, unknown> })?.message;\n if (!message) continue;\n if (typeof message.content === \"string\" && message.content) {\n parts.push(message.content);\n }\n const toolCalls = message.tool_calls;\n if (Array.isArray(toolCalls)) {\n for (const call of toolCalls) {\n const fn = (call as { function?: { name?: unknown; arguments?: unknown } })?.function;\n const name = typeof fn?.name === \"string\" ? fn.name : \"tool\";\n parts.push(\n fn?.arguments ? `[tool_call:${name}] ${String(fn.arguments)}` : `[tool_call:${name}]`,\n );\n }\n }\n }\n if (parts.length === 0) return undefined;\n return truncateText(parts.join(\"\\n\"), maxBytes);\n}\n\n/**\n * `input_data` for LangChain/LangGraph callbacks, whose messages are class\n * instances with `_getType()` rather than plain `{role, content}` dicts.\n * Reuses the decomposer's duck-typing so the two never drift.\n */\nexport function captureLangChainMessages(\n messages: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): CapturedInput | undefined {\n if (!Array.isArray(messages) || messages.length === 0) return undefined;\n const safeMessages = messages\n .map((m) => ({ role: getRole(m) || undefined, content: contentToText(getContent(m)) }))\n .filter((m) => m.content.length > 0)\n .map((m) => ({ role: m.role, content: truncateText(m.content, maxBytes) }));\n return safeMessages.length > 0 ? { messages: safeMessages } : undefined;\n}\n\n/** `input_data` for the raw-prompt (non-chat) LangChain LLM callback. */\nexport function capturePrompts(\n prompts: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): CapturedInput | undefined {\n if (!Array.isArray(prompts) || prompts.length === 0) return undefined;\n const messages = prompts\n .filter((p): p is string => typeof p === \"string\" && p.length > 0)\n .map((p) => ({ role: \"user\" as const, content: truncateText(p, maxBytes) }));\n return messages.length > 0 ? { messages } : undefined;\n}\n\n/**\n * `output_data` text from a LangChain `LLMResult` — `generations` is an\n * array-of-arrays (one inner array per prompt).\n */\nexport function extractLangChainOutputText(\n generations: unknown,\n maxBytes: number = CONTENT_BYTE_CAP,\n): string | undefined {\n if (!Array.isArray(generations)) return undefined;\n const parts: string[] = [];\n for (const group of generations) {\n if (!Array.isArray(group)) continue;\n for (const gen of group) {\n const text = (gen as { text?: unknown })?.text;\n if (typeof text === \"string\" && text) parts.push(text);\n }\n }\n if (parts.length === 0) return undefined;\n return truncateText(parts.join(\"\\n\"), maxBytes);\n}\n\nfunction safeJson(value: unknown): string {\n try {\n return JSON.stringify(value) ?? String(value);\n } catch {\n return String(value);\n }\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
6
|
-
var
|
|
3
|
+
var chunkVM3QM22Z_cjs = require('./chunk-VM3QM22Z.cjs');
|
|
4
|
+
var chunkULWGK6F5_cjs = require('./chunk-ULWGK6F5.cjs');
|
|
5
|
+
require('./chunk-HZKXILBF.cjs');
|
|
6
|
+
var chunkRDFDPK2X_cjs = require('./chunk-RDFDPK2X.cjs');
|
|
7
7
|
require('./chunk-KBWPNIH4.cjs');
|
|
8
8
|
require('./chunk-HICEJ4LV.cjs');
|
|
9
|
-
var
|
|
9
|
+
var chunkHA5RY4N5_cjs = require('./chunk-HA5RY4N5.cjs');
|
|
10
10
|
var module$1 = require('module');
|
|
11
11
|
var instrumentationPg = require('@opentelemetry/instrumentation-pg');
|
|
12
12
|
var instrumentationMysql2 = require('@opentelemetry/instrumentation-mysql2');
|
|
@@ -14,10 +14,10 @@ var instrumentation = require('@opentelemetry/instrumentation');
|
|
|
14
14
|
var api = require('@opentelemetry/api');
|
|
15
15
|
|
|
16
16
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
17
|
-
|
|
17
|
+
chunkHA5RY4N5_cjs.init_env();
|
|
18
18
|
var FULL_INSTALL_TARGETS = {
|
|
19
19
|
"@anthropic-ai/sdk": {
|
|
20
|
-
install: (mod) =>
|
|
20
|
+
install: (mod) => chunkVM3QM22Z_cjs.instrumentAnthropic({ anthropicModule: mod })
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
var DETECT_ONLY_TARGETS = {
|
|
@@ -91,7 +91,7 @@ function uninstallLazyHook() {
|
|
|
91
91
|
originalRequire = null;
|
|
92
92
|
}
|
|
93
93
|
async function installAdapters() {
|
|
94
|
-
if (
|
|
94
|
+
if (chunkHA5RY4N5_cjs.isAutoDetectDisabled()) return;
|
|
95
95
|
const nodeRequire = getNodeRequire();
|
|
96
96
|
if (!nodeRequire) return;
|
|
97
97
|
const installPromises = [];
|
|
@@ -129,11 +129,11 @@ function _resetForTesting3() {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
// src/index.ts
|
|
132
|
-
|
|
132
|
+
chunkHA5RY4N5_cjs.init_env();
|
|
133
133
|
|
|
134
134
|
// src/_internal/db-capture.ts
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
chunkHA5RY4N5_cjs.init_env();
|
|
136
|
+
chunkHA5RY4N5_cjs.init_otel_provider();
|
|
137
137
|
var SEMCONV_DB_SYSTEM_NAME = "db.system.name";
|
|
138
138
|
var SEMCONV_DB_QUERY_TEXT = "db.query.text";
|
|
139
139
|
var DB_SYSTEM_NAME_SQLITE = "sqlite";
|
|
@@ -247,7 +247,7 @@ function registerDbInstrumentation() {
|
|
|
247
247
|
disableDbCapture();
|
|
248
248
|
try {
|
|
249
249
|
const instrumentations = buildDbInstrumentations();
|
|
250
|
-
const off =
|
|
250
|
+
const off = chunkHA5RY4N5_cjs.getEngine().registerInstrumentations(instrumentations);
|
|
251
251
|
if (off === null) return false;
|
|
252
252
|
unregister = off;
|
|
253
253
|
registeredInstrumentations = instrumentations;
|
|
@@ -269,18 +269,18 @@ function disableDbCapture() {
|
|
|
269
269
|
registeredInstrumentations = null;
|
|
270
270
|
}
|
|
271
271
|
function maybeEnableDbCaptureFromEnv() {
|
|
272
|
-
if (
|
|
272
|
+
if (chunkHA5RY4N5_cjs.isDbCaptureEnabled()) {
|
|
273
273
|
registerDbInstrumentation();
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
// src/index.ts
|
|
278
|
-
|
|
279
|
-
|
|
278
|
+
chunkHA5RY4N5_cjs.init_otel_provider();
|
|
279
|
+
chunkHA5RY4N5_cjs.init_redaction();
|
|
280
280
|
|
|
281
281
|
// src/_internal/transport.ts
|
|
282
|
-
|
|
283
|
-
var SDK_VERSION = "0.5.0-rc.
|
|
282
|
+
chunkHA5RY4N5_cjs.init_diagnostics();
|
|
283
|
+
var SDK_VERSION = "0.5.0-rc.4" ;
|
|
284
284
|
var RETRY_AFTER_CAP_SECONDS = 30;
|
|
285
285
|
function parseRetryAfter(value) {
|
|
286
286
|
if (!value) return null;
|
|
@@ -385,11 +385,11 @@ var BatchTransport = class {
|
|
|
385
385
|
/** Enqueue an event. Non-blocking. Returns false if the queue is full. */
|
|
386
386
|
track(event) {
|
|
387
387
|
if (this.closed) {
|
|
388
|
-
|
|
388
|
+
chunkHA5RY4N5_cjs.recordDrop(chunkHA5RY4N5_cjs.REASON_SHUTDOWN_DROP, "trace");
|
|
389
389
|
return false;
|
|
390
390
|
}
|
|
391
391
|
if (this.queue.length >= this.maxQueueSize) {
|
|
392
|
-
|
|
392
|
+
chunkHA5RY4N5_cjs.recordDrop(chunkHA5RY4N5_cjs.REASON_QUEUE_FULL, "trace");
|
|
393
393
|
return false;
|
|
394
394
|
}
|
|
395
395
|
this.queue.push(event);
|
|
@@ -476,12 +476,12 @@ var BatchTransport = class {
|
|
|
476
476
|
body: JSON.stringify(payload),
|
|
477
477
|
signal: controller.signal
|
|
478
478
|
});
|
|
479
|
-
|
|
479
|
+
chunkHA5RY4N5_cjs.setLevel(resp.headers.get("X-Morse-Diagnostics"));
|
|
480
480
|
const droppedCount = countPayloadEntries(payload);
|
|
481
481
|
const droppedCategory = categoryOf(payload);
|
|
482
482
|
if (resp.status === 429) {
|
|
483
483
|
await recordQuotaState(resp);
|
|
484
|
-
|
|
484
|
+
chunkHA5RY4N5_cjs.recordDrop(chunkHA5RY4N5_cjs.REASON_QUOTA_REJECTED, droppedCategory, droppedCount);
|
|
485
485
|
}
|
|
486
486
|
if (!resp.ok) {
|
|
487
487
|
let bodySnippet = "";
|
|
@@ -491,9 +491,9 @@ var BatchTransport = class {
|
|
|
491
491
|
} catch {
|
|
492
492
|
}
|
|
493
493
|
if (resp.status !== 429) {
|
|
494
|
-
|
|
494
|
+
chunkHA5RY4N5_cjs.recordDrop(chunkHA5RY4N5_cjs.REASON_RETRY_EXHAUSTED, droppedCategory, droppedCount);
|
|
495
495
|
}
|
|
496
|
-
|
|
496
|
+
chunkHA5RY4N5_cjs.report(new Error(`morse: batch POST returned ${resp.status} ${bodySnippet}`), {
|
|
497
497
|
fingerprint: "morse.transport.post.non_2xx",
|
|
498
498
|
extra: {
|
|
499
499
|
endpoint_host: hostnameOf(url),
|
|
@@ -502,8 +502,8 @@ var BatchTransport = class {
|
|
|
502
502
|
});
|
|
503
503
|
}
|
|
504
504
|
} catch (err) {
|
|
505
|
-
|
|
506
|
-
|
|
505
|
+
chunkHA5RY4N5_cjs.recordDrop(chunkHA5RY4N5_cjs.REASON_RETRY_EXHAUSTED, categoryOf(payload), countPayloadEntries(payload));
|
|
506
|
+
chunkHA5RY4N5_cjs.report(err, {
|
|
507
507
|
fingerprint: "morse.transport.post.network",
|
|
508
508
|
extra: {
|
|
509
509
|
endpoint_host: hostnameOf(url),
|
|
@@ -547,10 +547,10 @@ function categoryOf(payload) {
|
|
|
547
547
|
}
|
|
548
548
|
|
|
549
549
|
// src/index.ts
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
550
|
+
chunkHA5RY4N5_cjs.init_tracing();
|
|
551
|
+
chunkHA5RY4N5_cjs.init_diagnostics();
|
|
552
|
+
chunkHA5RY4N5_cjs.init_spans();
|
|
553
|
+
chunkHA5RY4N5_cjs.init_propagation();
|
|
554
554
|
var version = SDK_VERSION;
|
|
555
555
|
var singleton = null;
|
|
556
556
|
var transportFactory = (opts) => new BatchTransport(opts);
|
|
@@ -570,9 +570,9 @@ function logDestinationOnce(endpoint) {
|
|
|
570
570
|
}
|
|
571
571
|
function resolveEndpoint(explicit) {
|
|
572
572
|
if (explicit && explicit.length > 0) return explicit;
|
|
573
|
-
const fromEnv =
|
|
573
|
+
const fromEnv = chunkHA5RY4N5_cjs.getEndpoint();
|
|
574
574
|
if (fromEnv) return fromEnv;
|
|
575
|
-
return
|
|
575
|
+
return chunkHA5RY4N5_cjs.DEFAULT_ENDPOINT;
|
|
576
576
|
}
|
|
577
577
|
var OTLP_TRACES_PATH = "/api/v1/otlp/v1/traces";
|
|
578
578
|
function deriveOtlpEndpoint(tracesEndpoint) {
|
|
@@ -587,10 +587,10 @@ function deriveOtlpEndpoint(tracesEndpoint) {
|
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
589
|
function buildSingleton(opts, redaction) {
|
|
590
|
-
if (
|
|
590
|
+
if (chunkHA5RY4N5_cjs.isDisabled()) {
|
|
591
591
|
return null;
|
|
592
592
|
}
|
|
593
|
-
const apiKey = opts.apiKey ??
|
|
593
|
+
const apiKey = opts.apiKey ?? chunkHA5RY4N5_cjs.getApiKey();
|
|
594
594
|
if (!apiKey) {
|
|
595
595
|
if (!noApiKeyWarningEmitted) {
|
|
596
596
|
logger2(
|
|
@@ -602,24 +602,24 @@ function buildSingleton(opts, redaction) {
|
|
|
602
602
|
return null;
|
|
603
603
|
}
|
|
604
604
|
const endpoint = resolveEndpoint(opts.endpoint);
|
|
605
|
-
const flushIntervalSeconds = opts.flushIntervalSeconds ??
|
|
605
|
+
const flushIntervalSeconds = opts.flushIntervalSeconds ?? chunkHA5RY4N5_cjs.getFlushIntervalSeconds();
|
|
606
606
|
const transport = transportFactory({ apiKey, endpoint, flushIntervalSeconds });
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
const explicitSource =
|
|
611
|
-
const resolvedSource = explicitSource ??
|
|
612
|
-
|
|
607
|
+
chunkHA5RY4N5_cjs.setTransport(transport);
|
|
608
|
+
chunkHA5RY4N5_cjs.setRedactionConfig(redaction);
|
|
609
|
+
chunkHA5RY4N5_cjs.setDiagnosticsClientConfig({ apiKey, endpoint });
|
|
610
|
+
const explicitSource = chunkHA5RY4N5_cjs.isValidInternalSource(opts.source) ? opts.source : void 0;
|
|
611
|
+
const resolvedSource = explicitSource ?? chunkHA5RY4N5_cjs.getInternalSource() ?? null;
|
|
612
|
+
chunkHA5RY4N5_cjs.setSource(resolvedSource);
|
|
613
613
|
logDestinationOnce(endpoint);
|
|
614
614
|
try {
|
|
615
|
-
|
|
615
|
+
chunkHA5RY4N5_cjs.getEngine().configure({
|
|
616
616
|
endpoint: deriveOtlpEndpoint(endpoint),
|
|
617
617
|
apiKey,
|
|
618
|
-
sampleRate:
|
|
618
|
+
sampleRate: chunkHA5RY4N5_cjs.getSampleRate(),
|
|
619
619
|
scheduleDelayMillis: flushIntervalSeconds * 1e3,
|
|
620
|
-
maxQueueSize:
|
|
621
|
-
maxExportBatchSize:
|
|
622
|
-
maxFieldBytes:
|
|
620
|
+
maxQueueSize: chunkHA5RY4N5_cjs.getMaxQueueSize(),
|
|
621
|
+
maxExportBatchSize: chunkHA5RY4N5_cjs.getMaxBatchSize(),
|
|
622
|
+
maxFieldBytes: chunkHA5RY4N5_cjs.getMaxFieldBytes(),
|
|
623
623
|
// 10s (not the exporter's un-overridden 30s ceiling): a genuine
|
|
624
624
|
// network blip still gets several retries with backoff; a fully dead
|
|
625
625
|
// endpoint fails within a bounded, shutdown-friendly window instead
|
|
@@ -628,32 +628,32 @@ function buildSingleton(opts, redaction) {
|
|
|
628
628
|
redactionConfig: redaction
|
|
629
629
|
});
|
|
630
630
|
} catch (err) {
|
|
631
|
-
|
|
631
|
+
chunkHA5RY4N5_cjs.report(err, { fingerprint: "morse.otel_provider.configure" });
|
|
632
632
|
}
|
|
633
633
|
void installAdapters().catch(() => {
|
|
634
634
|
});
|
|
635
635
|
try {
|
|
636
636
|
maybeEnableDbCaptureFromEnv();
|
|
637
637
|
} catch (err) {
|
|
638
|
-
|
|
638
|
+
chunkHA5RY4N5_cjs.report(err, { fingerprint: "morse.db_capture.register" });
|
|
639
639
|
}
|
|
640
640
|
return { apiKey, endpoint, transport, redaction };
|
|
641
641
|
}
|
|
642
642
|
function ensureInitialized() {
|
|
643
|
-
if (
|
|
643
|
+
if (chunkHA5RY4N5_cjs.isDisabled()) return null;
|
|
644
644
|
if (singleton !== null) return singleton;
|
|
645
|
-
singleton = buildSingleton({},
|
|
645
|
+
singleton = buildSingleton({}, chunkHA5RY4N5_cjs.buildRedactionConfig());
|
|
646
646
|
return singleton;
|
|
647
647
|
}
|
|
648
|
-
|
|
648
|
+
chunkULWGK6F5_cjs._setEnsureInitialized(() => {
|
|
649
649
|
ensureInitialized();
|
|
650
650
|
});
|
|
651
651
|
function init(options = {}) {
|
|
652
|
-
if (
|
|
652
|
+
if (chunkHA5RY4N5_cjs.isDisabled()) {
|
|
653
653
|
logger2("info", "morse: MORSE_DISABLED=1 \u2014 SDK is a no-op");
|
|
654
654
|
return;
|
|
655
655
|
}
|
|
656
|
-
const redaction =
|
|
656
|
+
const redaction = chunkHA5RY4N5_cjs.buildRedactionConfig(options.redaction);
|
|
657
657
|
try {
|
|
658
658
|
if (singleton !== null) {
|
|
659
659
|
void singleton.transport.shutdown();
|
|
@@ -661,10 +661,10 @@ function init(options = {}) {
|
|
|
661
661
|
}
|
|
662
662
|
singleton = buildSingleton(options, redaction);
|
|
663
663
|
} catch (err) {
|
|
664
|
-
|
|
664
|
+
chunkHA5RY4N5_cjs.report(err, { fingerprint: "morse.init" });
|
|
665
665
|
}
|
|
666
666
|
}
|
|
667
|
-
var track =
|
|
667
|
+
var track = chunkRDFDPK2X_cjs.absorbErrorsSync(
|
|
668
668
|
(options) => {
|
|
669
669
|
const state = ensureInitialized();
|
|
670
670
|
if (!state) return;
|
|
@@ -672,33 +672,33 @@ var track = chunkTGHDV5MC_cjs.absorbErrorsSync(
|
|
|
672
672
|
agent_id: options.agentId,
|
|
673
673
|
...options.runData
|
|
674
674
|
};
|
|
675
|
-
const redacted =
|
|
675
|
+
const redacted = chunkHA5RY4N5_cjs.redactValue(payload, state.redaction);
|
|
676
676
|
state.transport.track(redacted);
|
|
677
677
|
},
|
|
678
678
|
{ fingerprint: "morse.track" }
|
|
679
679
|
);
|
|
680
|
-
var batchTrack =
|
|
680
|
+
var batchTrack = chunkRDFDPK2X_cjs.absorbErrorsSync(
|
|
681
681
|
(runs) => {
|
|
682
682
|
const state = ensureInitialized();
|
|
683
683
|
if (!state) return;
|
|
684
684
|
for (const run2 of runs) {
|
|
685
|
-
const redacted =
|
|
685
|
+
const redacted = chunkHA5RY4N5_cjs.redactValue(run2, state.redaction);
|
|
686
686
|
state.transport.track(redacted);
|
|
687
687
|
}
|
|
688
688
|
},
|
|
689
689
|
{ fingerprint: "morse.batch_track" }
|
|
690
690
|
);
|
|
691
|
-
var record =
|
|
691
|
+
var record = chunkRDFDPK2X_cjs.absorbErrorsSync(
|
|
692
692
|
(rec) => {
|
|
693
693
|
const state = ensureInitialized();
|
|
694
694
|
if (!state) return;
|
|
695
|
-
const traceId =
|
|
696
|
-
const now =
|
|
695
|
+
const traceId = chunkHA5RY4N5_cjs.generateTraceId();
|
|
696
|
+
const now = chunkHA5RY4N5_cjs.nowIso();
|
|
697
697
|
const resolvedStatus = rec.errorMessage ? "failed" : rec.status ?? "completed";
|
|
698
698
|
const span2 = {
|
|
699
699
|
trace_id: traceId,
|
|
700
|
-
span_id:
|
|
701
|
-
type:
|
|
700
|
+
span_id: chunkHA5RY4N5_cjs.generateSpanId(),
|
|
701
|
+
type: chunkHA5RY4N5_cjs.SpanType.AGENT,
|
|
702
702
|
name: rec.agent,
|
|
703
703
|
started_at: now,
|
|
704
704
|
ended_at: now,
|
|
@@ -723,57 +723,58 @@ var record = chunkTGHDV5MC_cjs.absorbErrorsSync(
|
|
|
723
723
|
success: rec.success,
|
|
724
724
|
outcome: rec.outcome
|
|
725
725
|
};
|
|
726
|
-
const entry =
|
|
727
|
-
const redacted =
|
|
728
|
-
|
|
726
|
+
const entry = chunkHA5RY4N5_cjs.buildTraceEntry(traceFields, [span2]);
|
|
727
|
+
const redacted = chunkHA5RY4N5_cjs.redactValue(entry, state.redaction);
|
|
728
|
+
chunkHA5RY4N5_cjs.sendTrace(redacted);
|
|
729
729
|
},
|
|
730
730
|
{ fingerprint: "morse.record" }
|
|
731
731
|
);
|
|
732
732
|
function run(nameOrOpts, fn) {
|
|
733
733
|
const opts = typeof nameOrOpts === "string" ? { agentName: nameOrOpts } : nameOrOpts;
|
|
734
734
|
ensureInitialized();
|
|
735
|
-
return
|
|
735
|
+
return chunkHA5RY4N5_cjs.runSync(opts, fn);
|
|
736
736
|
}
|
|
737
737
|
function runTraced(options, fn) {
|
|
738
738
|
ensureInitialized();
|
|
739
|
-
return
|
|
739
|
+
return chunkHA5RY4N5_cjs.runAsync(options, fn);
|
|
740
740
|
}
|
|
741
741
|
function setContext2(dims) {
|
|
742
|
-
|
|
742
|
+
chunkHA5RY4N5_cjs.setContext(dims);
|
|
743
743
|
}
|
|
744
744
|
function startSpan2(options) {
|
|
745
|
-
return
|
|
745
|
+
return chunkHA5RY4N5_cjs.startSpan(options);
|
|
746
746
|
}
|
|
747
747
|
function span(options, fn) {
|
|
748
|
-
return
|
|
748
|
+
return chunkHA5RY4N5_cjs.spanSync(options, fn);
|
|
749
749
|
}
|
|
750
750
|
function spanAsync2(options, fn) {
|
|
751
|
-
return
|
|
751
|
+
return chunkHA5RY4N5_cjs.spanAsync(options, fn);
|
|
752
752
|
}
|
|
753
|
-
var flush =
|
|
753
|
+
var flush = chunkRDFDPK2X_cjs.absorbErrorsAsync(
|
|
754
754
|
async () => {
|
|
755
755
|
if (singleton !== null) {
|
|
756
756
|
await singleton.transport.flush();
|
|
757
|
-
await
|
|
757
|
+
await chunkHA5RY4N5_cjs.getEngine().flush();
|
|
758
758
|
}
|
|
759
759
|
},
|
|
760
760
|
{ fingerprint: "morse.flush" }
|
|
761
761
|
);
|
|
762
|
-
var quotaState2 =
|
|
762
|
+
var quotaState2 = chunkRDFDPK2X_cjs.absorbErrorsSync(
|
|
763
763
|
() => {
|
|
764
764
|
if (singleton === null) return null;
|
|
765
765
|
return getQuotaState();
|
|
766
766
|
},
|
|
767
767
|
{ fingerprint: "morse.quota_state" }
|
|
768
768
|
);
|
|
769
|
-
var shutdown =
|
|
769
|
+
var shutdown = chunkRDFDPK2X_cjs.absorbErrorsAsync(
|
|
770
770
|
async () => {
|
|
771
771
|
if (singleton !== null) {
|
|
772
772
|
await singleton.transport.shutdown();
|
|
773
|
-
await
|
|
774
|
-
|
|
773
|
+
await chunkHA5RY4N5_cjs.getEngine().flush();
|
|
774
|
+
chunkHA5RY4N5_cjs.getEngine().shutdown();
|
|
775
|
+
await chunkHA5RY4N5_cjs.flushOnce();
|
|
775
776
|
singleton = null;
|
|
776
|
-
|
|
777
|
+
chunkHA5RY4N5_cjs.setTransport(null);
|
|
777
778
|
}
|
|
778
779
|
},
|
|
779
780
|
{ fingerprint: "morse.shutdown" }
|
|
@@ -782,14 +783,14 @@ function _resetForTesting4() {
|
|
|
782
783
|
if (singleton !== null) {
|
|
783
784
|
void singleton.transport.shutdown();
|
|
784
785
|
singleton = null;
|
|
785
|
-
|
|
786
|
+
chunkHA5RY4N5_cjs.setTransport(null);
|
|
786
787
|
}
|
|
787
|
-
|
|
788
|
+
chunkHA5RY4N5_cjs.getEngine().resetForTesting();
|
|
788
789
|
noApiKeyWarningEmitted = false;
|
|
789
790
|
lastLoggedEndpoint = null;
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
791
|
+
chunkHA5RY4N5_cjs.setSource(null);
|
|
792
|
+
chunkHA5RY4N5_cjs._resetForTesting2();
|
|
793
|
+
chunkHA5RY4N5_cjs._resetForTesting();
|
|
793
794
|
_resetForTesting3();
|
|
794
795
|
_resetQuotaStateForTesting();
|
|
795
796
|
transportFactory = (opts) => new BatchTransport(opts);
|
|
@@ -798,59 +799,59 @@ function _setTransportFactoryForTesting(factory) {
|
|
|
798
799
|
transportFactory = factory;
|
|
799
800
|
}
|
|
800
801
|
function _getLastTraceForTesting() {
|
|
801
|
-
return
|
|
802
|
+
return chunkHA5RY4N5_cjs.getLastTrace();
|
|
802
803
|
}
|
|
803
804
|
function _getActiveTraceStateForTesting() {
|
|
804
|
-
return
|
|
805
|
+
return chunkHA5RY4N5_cjs.getActiveTraceState();
|
|
805
806
|
}
|
|
806
807
|
|
|
807
808
|
Object.defineProperty(exports, "MAX_SEGMENT_CONTENT_BYTES", {
|
|
808
809
|
enumerable: true,
|
|
809
|
-
get: function () { return
|
|
810
|
+
get: function () { return chunkVM3QM22Z_cjs.MAX_SEGMENT_CONTENT_BYTES; }
|
|
810
811
|
});
|
|
811
812
|
Object.defineProperty(exports, "extractAnthropicSegments", {
|
|
812
813
|
enumerable: true,
|
|
813
|
-
get: function () { return
|
|
814
|
+
get: function () { return chunkVM3QM22Z_cjs.extractAnthropicSegments; }
|
|
814
815
|
});
|
|
815
816
|
Object.defineProperty(exports, "instrumentAnthropic", {
|
|
816
817
|
enumerable: true,
|
|
817
|
-
get: function () { return
|
|
818
|
+
get: function () { return chunkVM3QM22Z_cjs.instrumentAnthropic; }
|
|
818
819
|
});
|
|
819
820
|
Object.defineProperty(exports, "isAnthropicWrapped", {
|
|
820
821
|
enumerable: true,
|
|
821
|
-
get: function () { return
|
|
822
|
+
get: function () { return chunkVM3QM22Z_cjs.isAnthropicWrapped; }
|
|
822
823
|
});
|
|
823
824
|
Object.defineProperty(exports, "uninstallAnthropic", {
|
|
824
825
|
enumerable: true,
|
|
825
|
-
get: function () { return
|
|
826
|
+
get: function () { return chunkVM3QM22Z_cjs.uninstallAnthropic; }
|
|
826
827
|
});
|
|
827
828
|
Object.defineProperty(exports, "wrapAnthropic", {
|
|
828
829
|
enumerable: true,
|
|
829
|
-
get: function () { return
|
|
830
|
+
get: function () { return chunkVM3QM22Z_cjs.wrapAnthropic; }
|
|
830
831
|
});
|
|
831
832
|
Object.defineProperty(exports, "log", {
|
|
832
833
|
enumerable: true,
|
|
833
|
-
get: function () { return
|
|
834
|
+
get: function () { return chunkULWGK6F5_cjs.log; }
|
|
834
835
|
});
|
|
835
836
|
Object.defineProperty(exports, "W3C_TRACEPARENT_HEADER", {
|
|
836
837
|
enumerable: true,
|
|
837
|
-
get: function () { return
|
|
838
|
+
get: function () { return chunkHA5RY4N5_cjs.W3C_TRACEPARENT_HEADER; }
|
|
838
839
|
});
|
|
839
840
|
Object.defineProperty(exports, "extractTraceparent", {
|
|
840
841
|
enumerable: true,
|
|
841
|
-
get: function () { return
|
|
842
|
+
get: function () { return chunkHA5RY4N5_cjs.extractTraceparent; }
|
|
842
843
|
});
|
|
843
844
|
Object.defineProperty(exports, "formatTraceparent", {
|
|
844
845
|
enumerable: true,
|
|
845
|
-
get: function () { return
|
|
846
|
+
get: function () { return chunkHA5RY4N5_cjs.formatTraceparent; }
|
|
846
847
|
});
|
|
847
848
|
Object.defineProperty(exports, "injectIntoRequestInit", {
|
|
848
849
|
enumerable: true,
|
|
849
|
-
get: function () { return
|
|
850
|
+
get: function () { return chunkHA5RY4N5_cjs.injectIntoRequestInit; }
|
|
850
851
|
});
|
|
851
852
|
Object.defineProperty(exports, "injectTraceparent", {
|
|
852
853
|
enumerable: true,
|
|
853
|
-
get: function () { return
|
|
854
|
+
get: function () { return chunkHA5RY4N5_cjs.injectTraceparent; }
|
|
854
855
|
});
|
|
855
856
|
exports._getActiveTraceStateForTesting = _getActiveTraceStateForTesting;
|
|
856
857
|
exports._getLastTraceForTesting = _getLastTraceForTesting;
|