@morsehq-dev/sdk 0.5.0-rc.2 → 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.
Files changed (108) hide show
  1. package/README.md +34 -0
  2. package/dist/anthropic/index.cjs +11 -11
  3. package/dist/anthropic/index.js +4 -4
  4. package/dist/anthropic-agent-sdk/index.cjs +37 -37
  5. package/dist/anthropic-agent-sdk/index.js +6 -6
  6. package/dist/browser/anthropic/index.cjs +11 -11
  7. package/dist/browser/anthropic/index.js +4 -4
  8. package/dist/browser/anthropic-agent-sdk/index.cjs +37 -37
  9. package/dist/browser/anthropic-agent-sdk/index.js +6 -6
  10. package/dist/browser/{chunk-63ZI6PGP.cjs → chunk-255AHH2W.cjs} +15 -15
  11. package/dist/browser/{chunk-63ZI6PGP.cjs.map → chunk-255AHH2W.cjs.map} +1 -1
  12. package/dist/browser/{chunk-T4NHSVXH.cjs → chunk-36QTJJT7.cjs} +12 -12
  13. package/dist/browser/{chunk-T4NHSVXH.cjs.map → chunk-36QTJJT7.cjs.map} +1 -1
  14. package/dist/browser/{chunk-A5EYWAOT.cjs → chunk-3H2OJLC2.cjs} +13 -6
  15. package/dist/browser/chunk-3H2OJLC2.cjs.map +1 -0
  16. package/dist/browser/{chunk-YMEU6XQQ.cjs → chunk-3STFITZF.cjs} +6 -6
  17. package/dist/browser/{chunk-YMEU6XQQ.cjs.map → chunk-3STFITZF.cjs.map} +1 -1
  18. package/dist/{chunk-Y2QHMV6H.cjs → browser/chunk-6J6F5LJI.cjs} +7 -7
  19. package/dist/browser/{chunk-N3PXJCOE.cjs.map → chunk-6J6F5LJI.cjs.map} +1 -1
  20. package/dist/{chunk-ZWOSPXS4.js → browser/chunk-E2OVLWAF.js} +3 -3
  21. package/dist/browser/{chunk-AM6LMQCT.js.map → chunk-E2OVLWAF.js.map} +1 -1
  22. package/dist/browser/{chunk-L6FWDEGJ.js → chunk-JR6JN7IZ.js} +4 -4
  23. package/dist/browser/{chunk-L6FWDEGJ.js.map → chunk-JR6JN7IZ.js.map} +1 -1
  24. package/dist/browser/{chunk-NH54DAJP.js → chunk-KXVSMY6L.js} +3 -3
  25. package/dist/browser/{chunk-NH54DAJP.js.map → chunk-KXVSMY6L.js.map} +1 -1
  26. package/dist/browser/{chunk-3MTJGZGX.js → chunk-PIWO5L5N.js} +5 -5
  27. package/dist/browser/{chunk-3MTJGZGX.js.map → chunk-PIWO5L5N.js.map} +1 -1
  28. package/dist/browser/{chunk-SOJYLXCR.cjs → chunk-VOZBYSWK.cjs} +5 -5
  29. package/dist/browser/{chunk-SOJYLXCR.cjs.map → chunk-VOZBYSWK.cjs.map} +1 -1
  30. package/dist/browser/{chunk-FDE32B3R.js → chunk-VZA2EPY3.js} +4 -4
  31. package/dist/browser/{chunk-FDE32B3R.js.map → chunk-VZA2EPY3.js.map} +1 -1
  32. package/dist/browser/{chunk-NRYB5GJT.js → chunk-WIWUEI5Z.js} +3 -3
  33. package/dist/browser/{chunk-NRYB5GJT.js.map → chunk-WIWUEI5Z.js.map} +1 -1
  34. package/dist/browser/{chunk-OOGAYEJF.js → chunk-XD4VWCAC.js} +12 -7
  35. package/dist/browser/chunk-XD4VWCAC.js.map +1 -0
  36. package/dist/browser/{chunk-YR2FCEWM.cjs → chunk-YD7TO4PD.cjs} +18 -18
  37. package/dist/browser/{chunk-YR2FCEWM.cjs.map → chunk-YD7TO4PD.cjs.map} +1 -1
  38. package/dist/browser/index.cjs +91 -89
  39. package/dist/browser/index.cjs.map +1 -1
  40. package/dist/browser/index.js +10 -8
  41. package/dist/browser/index.js.map +1 -1
  42. package/dist/browser/integrations/pino.cjs +4 -4
  43. package/dist/browser/integrations/pino.js +3 -3
  44. package/dist/browser/langchain/index.cjs +17 -17
  45. package/dist/browser/langchain/index.js +2 -2
  46. package/dist/browser/langgraph/index.cjs +27 -27
  47. package/dist/browser/langgraph/index.js +5 -5
  48. package/dist/browser/openai/index.cjs +11 -11
  49. package/dist/browser/openai/index.js +2 -2
  50. package/dist/browser/openai-agents/index.cjs +38 -36
  51. package/dist/browser/openai-agents/index.cjs.map +1 -1
  52. package/dist/browser/openai-agents/index.js +8 -6
  53. package/dist/browser/openai-agents/index.js.map +1 -1
  54. package/dist/browser/vercel-ai/index.cjs +14 -14
  55. package/dist/browser/vercel-ai/index.js +3 -3
  56. package/dist/{chunk-YJYF4NSA.js → chunk-2O2FFJLK.js} +5 -5
  57. package/dist/{chunk-YJYF4NSA.js.map → chunk-2O2FFJLK.js.map} +1 -1
  58. package/dist/{browser/chunk-N3PXJCOE.cjs → chunk-7ZNGY236.cjs} +7 -7
  59. package/dist/{chunk-Y2QHMV6H.cjs.map → chunk-7ZNGY236.cjs.map} +1 -1
  60. package/dist/{chunk-FCAPLB7A.js → chunk-BNMTY7PE.js} +4 -4
  61. package/dist/{chunk-FCAPLB7A.js.map → chunk-BNMTY7PE.js.map} +1 -1
  62. package/dist/{chunk-3IGQWLWE.js → chunk-ELBY4SJ7.js} +12 -7
  63. package/dist/chunk-ELBY4SJ7.js.map +1 -0
  64. package/dist/{chunk-XCOZIFHC.cjs → chunk-HA5RY4N5.cjs} +13 -6
  65. package/dist/chunk-HA5RY4N5.cjs.map +1 -0
  66. package/dist/{chunk-VHF4GWJ4.cjs → chunk-HZKXILBF.cjs} +5 -5
  67. package/dist/{chunk-VHF4GWJ4.cjs.map → chunk-HZKXILBF.cjs.map} +1 -1
  68. package/dist/{browser/chunk-AM6LMQCT.js → chunk-JFFZBCTP.js} +3 -3
  69. package/dist/{chunk-ZWOSPXS4.js.map → chunk-JFFZBCTP.js.map} +1 -1
  70. package/dist/{chunk-SHK2XEPB.js → chunk-MBOISGKD.js} +4 -4
  71. package/dist/{chunk-SHK2XEPB.js.map → chunk-MBOISGKD.js.map} +1 -1
  72. package/dist/{chunk-S4WUABAU.js → chunk-Q6NQQ2LO.js} +3 -3
  73. package/dist/{chunk-S4WUABAU.js.map → chunk-Q6NQQ2LO.js.map} +1 -1
  74. package/dist/{chunk-6DZNK4VX.cjs → chunk-RDFDPK2X.cjs} +6 -6
  75. package/dist/{chunk-6DZNK4VX.cjs.map → chunk-RDFDPK2X.cjs.map} +1 -1
  76. package/dist/{chunk-ZIER4DGK.cjs → chunk-ULWGK6F5.cjs} +12 -12
  77. package/dist/{chunk-ZIER4DGK.cjs.map → chunk-ULWGK6F5.cjs.map} +1 -1
  78. package/dist/{chunk-SNGYSP7Z.cjs → chunk-VM3QM22Z.cjs} +18 -18
  79. package/dist/{chunk-SNGYSP7Z.cjs.map → chunk-VM3QM22Z.cjs.map} +1 -1
  80. package/dist/{chunk-Z2IYSTRT.cjs → chunk-WLNADB4J.cjs} +15 -15
  81. package/dist/{chunk-Z2IYSTRT.cjs.map → chunk-WLNADB4J.cjs.map} +1 -1
  82. package/dist/{chunk-XJUH6PR5.js → chunk-YPP5DDPO.js} +3 -3
  83. package/dist/{chunk-XJUH6PR5.js.map → chunk-YPP5DDPO.js.map} +1 -1
  84. package/dist/index.cjs +98 -96
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.js +11 -9
  87. package/dist/index.js.map +1 -1
  88. package/dist/integrations/pino.cjs +4 -4
  89. package/dist/integrations/pino.js +3 -3
  90. package/dist/langchain/index.cjs +17 -17
  91. package/dist/langchain/index.js +2 -2
  92. package/dist/langgraph/index.cjs +27 -27
  93. package/dist/langgraph/index.js +5 -5
  94. package/dist/openai/index.cjs +11 -11
  95. package/dist/openai/index.js +2 -2
  96. package/dist/openai-agents/index.cjs +38 -36
  97. package/dist/openai-agents/index.cjs.map +1 -1
  98. package/dist/openai-agents/index.d.cts +4 -0
  99. package/dist/openai-agents/index.d.ts +4 -0
  100. package/dist/openai-agents/index.js +8 -6
  101. package/dist/openai-agents/index.js.map +1 -1
  102. package/dist/vercel-ai/index.cjs +14 -14
  103. package/dist/vercel-ai/index.js +3 -3
  104. package/package.json +14 -13
  105. package/dist/browser/chunk-A5EYWAOT.cjs.map +0 -1
  106. package/dist/browser/chunk-OOGAYEJF.js.map +0 -1
  107. package/dist/chunk-3IGQWLWE.js.map +0 -1
  108. package/dist/chunk-XCOZIFHC.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/anthropic/index.ts"],"names":["init_spans","init_tracing","absorbErrorsAsync","opts","absorbErrorsSync","getActiveTraceState","setActiveFramework","startSpan","calculateCost","captureInputMessages","extractAnthropicOutputText","runAsync","nowIso","generateSpanId"],"mappings":"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","file":"chunk-YR2FCEWM.cjs","sourcesContent":["/**\n * `@morsehq-dev/sdk/anthropic` — Anthropic SDK instrumentation.\n *\n * Wraps `@anthropic-ai/sdk` `client.messages.create` so every Claude call\n * emits an `llm` span carrying pre-segmented `context_segments`. The\n * server-side classifier then skips its own messages-array partitioning\n * and persists the SDK-supplied segments verbatim.\n *\n * Two entry points:\n *\n * - `wrapAnthropic(client)` — returns a Proxy-like wrapper that\n * intercepts `messages.create`. Always succeeds. The customer keeps\n * using the wrapper as if it were the real client.\n *\n * - `instrumentAnthropic(client?)` — top-level helper. If a client is\n * passed, returns the wrapped form. If no client is passed AND the\n * `@anthropic-ai/sdk` package can be loaded, attempts to patch\n * `Messages.prototype.create` so every fresh `new Anthropic()` is\n * instrumented automatically. The prototype path is best-effort —\n * it is documented as fragile across Anthropic SDK versions, and\n * `wrapAnthropic` is the recommended public entry.\n *\n * Idempotent. `uninstallAnthropic()` restores the prototype and clears\n * the install sentinel.\n *\n * Wrapped under `absorbErrors*` so a tracing failure can never break the\n * customer's Anthropic call — at worst, calls go untraced.\n *\n * Mirrors `apps/sdk/typescript/src/vercel-ai/index.ts` in shape and\n * `openspec/changes/.../specs/observability/spec.md` (CTX-08) in\n * segmentation contract.\n */\n\nimport { absorbErrorsAsync, absorbErrorsSync } from \"../_internal/errors\";\nimport { calculateCost } from \"../_internal/pricing\";\nimport type { ContextSegment, SpanData } from \"../_internal/spans\";\nimport { generateSpanId, nowIso } from \"../_internal/spans\";\nimport { setActiveFramework } from \"../_internal/active-framework\";\nimport { captureInputMessages, extractAnthropicOutputText } from \"../_internal/llm-io\";\nimport { getActiveTraceState, runAsync as _runAsync, startSpan } from \"../_internal/tracing\";\n\n/* ------------------------------------------------------------------------ */\n/* Public types — minimal structural shapes, NOT a hard dep on `@anthropic-ai/sdk` */\n/* ------------------------------------------------------------------------ */\n\n/**\n * Subset of `@anthropic-ai/sdk`'s `MessageCreateParams` we read from. We\n * deliberately decline to import the real types so the SDK works even when\n * `@anthropic-ai/sdk` isn't installed (it's an optional peer dep).\n */\nexport interface AnthropicMessageCreateParams {\n model: string;\n max_tokens?: number;\n system?: string | AnthropicTextBlockParam[];\n messages: AnthropicMessageParam[];\n tools?: AnthropicToolParam[];\n tool_choice?: unknown;\n // Allow forward-compat fields without complaint.\n [key: string]: unknown;\n}\n\nexport interface AnthropicTextBlockParam {\n type: \"text\";\n text: string;\n cache_control?: { type: \"ephemeral\" } | null;\n}\n\nexport interface AnthropicToolUseBlockParam {\n type: \"tool_use\";\n id: string;\n name: string;\n input: unknown;\n}\n\nexport interface AnthropicToolResultBlockParam {\n type: \"tool_result\";\n tool_use_id: string;\n content: string | Array<{ type: string; text?: string; [k: string]: unknown }>;\n is_error?: boolean;\n}\n\nexport type AnthropicContentBlockParam =\n | AnthropicTextBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | { type: string; [k: string]: unknown };\n\nexport interface AnthropicMessageParam {\n role: \"user\" | \"assistant\" | string;\n content: string | AnthropicContentBlockParam[];\n}\n\nexport interface AnthropicToolParam {\n name: string;\n description?: string;\n input_schema?: unknown;\n // Anthropic supports custom tool types — let through.\n [key: string]: unknown;\n}\n\nexport interface AnthropicUsage {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n [key: string]: unknown;\n}\n\nexport interface AnthropicMessageResponse {\n id?: string;\n model?: string;\n usage?: AnthropicUsage;\n content?: Array<{ type: string; text?: string; [k: string]: unknown }>;\n [key: string]: unknown;\n}\n\n/**\n * Structural shape of the Anthropic client we wrap. We only require that\n * `client.messages.create` is a function returning a Promise.\n */\nexport interface AnthropicClientLike {\n messages: {\n create(\n params: AnthropicMessageCreateParams,\n options?: unknown,\n ): Promise<AnthropicMessageResponse>;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Module-level install sentinels */\n/* ------------------------------------------------------------------------ */\n\nconst WRAPPED_CLIENT = Symbol.for(\"morse.anthropic.wrapped\");\nconst INSTALL_SENTINEL = Symbol.for(\"morse.anthropic.installed\");\nconst ORIGINALS_SENTINEL = Symbol.for(\"morse.anthropic.originals\");\n\n/**\n * True once `instrumentAnthropic()` has successfully patched\n * `Messages.prototype.create` globally (called directly, or via\n * `_internal/auto-detect.ts`'s zero-config scan). Mirrors the Python SDK's\n * `wrap()` check on `anthropic._morse_ai_installed` (AGE-240 dogfood fix):\n * without this guard, a customer who lets auto-detect patch the prototype\n * AND then calls `wrapAnthropic(client)` manually on an instance would\n * record every `messages.create` call twice — once via the global patch,\n * once via the per-instance Proxy. `wrapAnthropic()` checks this flag and\n * returns the client unmodified when a global install is already active,\n * leaving the global patch as the sole recorder.\n */\nlet globalInstallActive = false;\n\ninterface OriginalsBag {\n protoCreate?: unknown;\n protoCarrier?: { prototype: { create: unknown } };\n}\n\ninterface InstalledModule {\n [INSTALL_SENTINEL]?: boolean;\n [ORIGINALS_SENTINEL]?: OriginalsBag;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------------ */\n\nexport interface InstrumentAnthropicOptions {\n /**\n * When provided, used as the parent agent span's name. Defaults to\n * `\"anthropic.messages.create\"`.\n */\n defaultAgentName?: string;\n /**\n * If a fresh Anthropic *module* import is passed (e.g.,\n * `await import(\"@anthropic-ai/sdk\")`), the adapter will best-effort\n * patch `Messages.prototype.create`. Most users should prefer\n * `wrapAnthropic(client)` instead.\n */\n anthropicModule?: unknown;\n /**\n * When `true` (MEM-11), every wrapped `messages.create` call also\n * emits a sibling `memory`-type span with\n * `metadata.memory_op_type=\"consolidate\"`, `parent_span_id` linking\n * back to the LLM span (server treats this as `producer_span_id`),\n * `metadata.summary_token_count` from the response's output_tokens,\n * and `metadata.summary_content_hash` (SHA-256 of the response's\n * first text block).\n *\n * Use this flag when the customer is calling Claude to summarize\n * their own conversation context (the customer-side compaction\n * pattern). Default `false` — existing callers see zero behavior change.\n *\n * Opt-in only. The adapter never auto-detects summarization from\n * system-prompt content (too many false positives).\n */\n summarize?: boolean;\n}\n\n/**\n * Wrap an Anthropic client so every `messages.create` call records an\n * `llm` span with `context_segments`. The wrapper preserves the rest of\n * the client's surface (other resources, helpers, etc.) via a Proxy.\n *\n * Idempotent — a previously wrapped client is returned as-is.\n */\nexport function wrapAnthropic<C extends AnthropicClientLike>(\n client: C,\n options: InstrumentAnthropicOptions = {},\n): C {\n if (!client || typeof client !== \"object\") return client;\n // Already wrapped? Pass through.\n if ((client as Record<string | symbol, unknown>)[WRAPPED_CLIENT]) return client;\n // A global install (manual `instrumentAnthropic()` or auto-detect) is\n // already recording every call at the prototype level — see\n // `globalInstallActive` doc comment above.\n if (globalInstallActive) return client;\n\n const originalCreate = client.messages?.create?.bind(client.messages);\n if (typeof originalCreate !== \"function\") return client;\n\n const patchedCreate = buildPatchedCreate(originalCreate, options);\n\n // We construct a new `messages` object that proxies to the original\n // for any non-`create` access, then a top-level proxy that returns\n // our patched `messages` while passing every other property through.\n const patchedMessages = new Proxy(client.messages, {\n get(target, prop, receiver) {\n if (prop === \"create\") return patchedCreate;\n const value = Reflect.get(target, prop, receiver);\n // Bind methods so `this` continues to point at the original.\n if (typeof value === \"function\") return (value as (...a: unknown[]) => unknown).bind(target);\n return value;\n },\n });\n\n const wrapper = new Proxy(client, {\n get(target, prop, receiver) {\n if (prop === WRAPPED_CLIENT) return true;\n if (prop === \"messages\") return patchedMessages;\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === \"function\") return (value as (...a: unknown[]) => unknown).bind(target);\n return value;\n },\n });\n\n return wrapper as C;\n}\n\n/**\n * Top-level installer. Two modes:\n *\n * - `instrumentAnthropic(client)` — equivalent to `wrapAnthropic(client)`.\n * - `instrumentAnthropic({ anthropicModule: mod })` — best-effort\n * prototype patch. Prefer the wrap form when possible.\n *\n * Always returns the wrapped client, or `undefined` if patching failed.\n * Errors are absorbed; this function never throws back at the caller.\n */\nexport const instrumentAnthropic = absorbErrorsAsync(\n async <C extends AnthropicClientLike>(\n clientOrOptions?: C | InstrumentAnthropicOptions,\n maybeOptions?: InstrumentAnthropicOptions,\n ): Promise<C | boolean> => {\n // Disambiguate the overloads.\n if (clientOrOptions && isClient(clientOrOptions)) {\n const opts = maybeOptions ?? {};\n return wrapAnthropic(clientOrOptions as C, opts);\n }\n const opts = (clientOrOptions as InstrumentAnthropicOptions | undefined) ?? {};\n const mod = await loadAnthropicModule(opts.anthropicModule);\n if (!mod) return false;\n const installed = (mod as InstalledModule)[INSTALL_SENTINEL] === true;\n if (installed) {\n globalInstallActive = true;\n return true;\n }\n\n const carrier = findMessagesPrototypeCarrier(mod);\n if (!carrier) return false;\n const originalCreate = carrier.prototype.create;\n if (typeof originalCreate !== \"function\") return false;\n\n const patchedCreate = buildPatchedCreate(function (\n this: unknown,\n params: AnthropicMessageCreateParams,\n callOptions?: unknown,\n ) {\n return (originalCreate as (...args: unknown[]) => Promise<AnthropicMessageResponse>).call(\n this,\n params,\n callOptions,\n );\n }, opts);\n carrier.prototype.create = patchedCreate as unknown as typeof carrier.prototype.create;\n (mod as InstalledModule)[ORIGINALS_SENTINEL] = {\n protoCreate: originalCreate,\n protoCarrier: carrier,\n };\n (mod as InstalledModule)[INSTALL_SENTINEL] = true;\n globalInstallActive = true;\n return true;\n },\n { fingerprint: \"morse.adapters.anthropic.install\" },\n);\n\n/**\n * Restore the prototype patch and clear the install sentinel.\n *\n * Pass the same module reference that was given to `instrumentAnthropic`\n * (or omit and the function will try to dynamic-import it). Calling\n * `uninstallAnthropic()` on a wrapped client (vs. a module) is a no-op —\n * just discard the wrapped client.\n */\nexport const uninstallAnthropic = absorbErrorsSync(\n (anthropicModule?: unknown): void => {\n if (!anthropicModule || typeof anthropicModule !== \"object\") return;\n const mod = anthropicModule as InstalledModule;\n if (!mod[INSTALL_SENTINEL]) return;\n const originals = mod[ORIGINALS_SENTINEL];\n if (originals?.protoCarrier && originals.protoCreate !== undefined) {\n originals.protoCarrier.prototype.create =\n originals.protoCreate as typeof originals.protoCarrier.prototype.create;\n }\n mod[ORIGINALS_SENTINEL] = undefined;\n mod[INSTALL_SENTINEL] = false;\n globalInstallActive = false;\n },\n { fingerprint: \"morse.adapters.anthropic.uninstall\" },\n);\n\n/**\n * Reset module-level install state for tests. Not part of the public API.\n * @internal\n */\nexport function _resetAnthropicInstallStateForTesting(): void {\n globalInstallActive = false;\n}\n\n/** True when a wrapped Anthropic client is passed in. */\nexport function isAnthropicWrapped(client: unknown): boolean {\n if (!client || typeof client !== \"object\") return false;\n return (client as Record<string | symbol, unknown>)[WRAPPED_CLIENT] === true;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Internals — module discovery */\n/* ------------------------------------------------------------------------ */\n\nfunction isClient(x: unknown): x is AnthropicClientLike {\n if (!x || typeof x !== \"object\") return false;\n const messages = (x as { messages?: { create?: unknown } }).messages;\n return !!messages && typeof messages.create === \"function\";\n}\n\nasync function loadAnthropicModule(explicit?: unknown): Promise<unknown | null> {\n if (explicit && typeof explicit === \"object\") return explicit;\n try {\n // Function-eval'd dynamic import keeps bundlers from trying to resolve\n // `@anthropic-ai/sdk` at build time when the dep isn't installed.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await (Function(\"m\", \"return import(m)\") as any)(\"@anthropic-ai/sdk\");\n } catch {\n return null;\n }\n}\n\n/**\n * Locate the Messages class prototype on the Anthropic SDK module.\n * The SDK has historically exposed it at slightly different paths across\n * versions; we try the most common shapes.\n */\nfunction findMessagesPrototypeCarrier(mod: unknown): { prototype: { create: unknown } } | null {\n if (!mod || typeof mod !== \"object\") return null;\n const m = mod as Record<string, unknown>;\n\n // Strategy 1: `mod.Anthropic.Messages` (default-export class with static).\n const Default = m.default ?? m.Anthropic ?? m;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const candidates: any[] = [\n (Default as Record<string, unknown> | undefined)?.Messages,\n (m as Record<string, unknown>).Messages,\n (Default as { resources?: { Messages?: unknown } } | undefined)?.resources?.Messages,\n ];\n for (const c of candidates) {\n if (c && typeof c === \"function\" && c.prototype && typeof c.prototype.create === \"function\") {\n return c as { prototype: { create: unknown } };\n }\n }\n return null;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Internals — wrapper that records an `llm` span */\n/* ------------------------------------------------------------------------ */\n\nfunction buildPatchedCreate(\n original: (\n params: AnthropicMessageCreateParams,\n options?: unknown,\n ) => Promise<AnthropicMessageResponse>,\n options: InstrumentAnthropicOptions,\n): (params: AnthropicMessageCreateParams, options?: unknown) => Promise<AnthropicMessageResponse> {\n const agentName = options.defaultAgentName ?? \"anthropic.messages.create\";\n const summarizeMode = options.summarize === true;\n\n return async function patchedCreate(\n this: unknown,\n params: AnthropicMessageCreateParams,\n callOptions?: unknown,\n ): Promise<AnthropicMessageResponse> {\n const inTrace = getActiveTraceState() !== null;\n\n const work = async (): Promise<AnthropicMessageResponse> => {\n setActiveFramework(\"anthropic\");\n const handle = startSpan({\n name: \"anthropic.messages.create\",\n type: \"llm\",\n metadata: { model: params?.model, max_tokens: params?.max_tokens },\n });\n let response: AnthropicMessageResponse | undefined;\n try {\n response = await original.call(this, params, callOptions);\n } catch (err) {\n handle?.end(err);\n throw err;\n }\n\n // Recording is best-effort — never let it throw at the caller.\n try {\n if (handle) {\n const segments = safeExtractSegments(params, response);\n const usage = response?.usage ?? {};\n const inputTokens =\n (usage.input_tokens ?? 0) +\n (usage.cache_creation_input_tokens ?? 0) +\n (usage.cache_read_input_tokens ?? 0);\n const outputTokens = usage.output_tokens ?? 0;\n handle.span.model = response?.model ?? params?.model;\n if (inputTokens > 0) handle.span.input_tokens = inputTokens;\n if (outputTokens > 0) handle.span.output_tokens = outputTokens;\n const cacheWrite = usage.cache_creation_input_tokens ?? 0;\n const cacheRead = usage.cache_read_input_tokens ?? 0;\n if (cacheWrite > 0) handle.span.cache_write_tokens = cacheWrite;\n if (cacheRead > 0) handle.span.cached_input_tokens = cacheRead;\n if (inputTokens > 0 || outputTokens > 0) {\n handle.span.total_tokens = inputTokens + outputTokens;\n }\n if (\n handle.span.cost_usd === undefined &&\n handle.span.model &&\n (inputTokens > 0 || outputTokens > 0)\n ) {\n const cost = calculateCost({\n inputTokens,\n outputTokens,\n model: handle.span.model,\n cachedInputTokens: cacheRead,\n cacheWriteTokens: cacheWrite,\n });\n if (cost !== undefined) handle.span.cost_usd = cost;\n }\n handle.span.context_segments = segments;\n // MHQ-858: prompt/response capture, parity with Python's\n // `_safe_input_messages` / `_extract_output_text`.\n const inputData = captureInputMessages(params?.messages, params?.system);\n if (inputData !== undefined) handle.span.input_data = inputData;\n const outputText = extractAnthropicOutputText(response?.content);\n if (outputText !== undefined) handle.span.output_data = { content: outputText };\n }\n } catch {\n // swallow — telemetry must never break the caller\n }\n handle?.end();\n\n // MEM-11: emit sibling memory span when summarize mode is enabled.\n // Sequenced AFTER the LLM span closes so its span_id is final.\n if (summarizeMode && handle) {\n try {\n emitSummarizeMemorySpan(handle.span, response);\n } catch {\n // swallow — telemetry must never break the caller\n }\n }\n return response;\n };\n\n if (inTrace) {\n return work();\n }\n\n // No active trace — open a fresh agent span around the call so the\n // llm span has a parent. We can't return work()'s Promise from inside\n // _runAsync's callback while preserving the LLM result's typing AND\n // having the fresh trace own the lifecycle, so we wrap explicitly.\n let result: AnthropicMessageResponse | undefined;\n let thrown: unknown;\n await _runAsync({ agentName }, async (runHandle) => {\n runHandle.setOutcome(true);\n try {\n result = await work();\n } catch (err) {\n thrown = err;\n throw err;\n }\n return null;\n });\n if (thrown !== undefined) throw thrown;\n // result is set unless work() threw, in which case we already rethrew.\n return result as AnthropicMessageResponse;\n };\n}\n\n/* ------------------------------------------------------------------------ */\n/* Public: deterministic segment extraction */\n/* ------------------------------------------------------------------------ */\n\n/**\n * Maximum bytes of `content` we ship per segment. Long blobs are truncated\n * with `content_truncated: true`. The server further enforces its own\n * cap; we keep the SDK floor lower to stay friendly to mobile networks.\n */\nexport const MAX_SEGMENT_CONTENT_BYTES = 4096;\n\n/**\n * Extract `ContextSegment[]` from an Anthropic `messages.create` request\n * + response. The ordering is:\n *\n * 1. `tools` → one `tool_descriptions` segment, position 0.\n * 2. `system` → `system_prompt` segment.\n * 3. Each prior `user` / `assistant` message → `chat_history` segment.\n * `tool_result` blocks (always inside `user.content`) become their\n * own `tool_observation` segments.\n * `tool_use` blocks (assistant-emitted) roll into the parent\n * assistant `chat_history` segment as part of the JSON content.\n * 4. The final `user` message → `current_input`.\n *\n * Cache state heuristic:\n * - `system` blocks with `cache_control.type === \"ephemeral\"` →\n * `cache_write`.\n * - If the response reports `cache_read_input_tokens > 0`, mark the\n * `system_prompt` and `tool_descriptions` segments as `cache_hit`\n * (overrides `cache_write` — the cache HIT is more informative\n * than the cache write attempt).\n *\n * `tokens` is intentionally left undefined — the server tokenizes.\n */\nexport function extractAnthropicSegments(\n params: AnthropicMessageCreateParams,\n response?: AnthropicMessageResponse,\n): ContextSegment[] {\n const segments: ContextSegment[] = [];\n let position = 0;\n\n // 1. Tools → tool_descriptions.\n if (Array.isArray(params.tools) && params.tools.length > 0) {\n const content = canonicalJsonStringify(params.tools);\n segments.push(makeSegment(position++, \"tool_descriptions\", content));\n }\n\n // 2. System.\n let systemHadEphemeral = false;\n if (params.system !== undefined && params.system !== null) {\n let text = \"\";\n if (typeof params.system === \"string\") {\n text = params.system;\n } else if (Array.isArray(params.system)) {\n const parts: string[] = [];\n for (const block of params.system) {\n if (block && typeof block === \"object\" && block.type === \"text\") {\n parts.push(typeof block.text === \"string\" ? block.text : \"\");\n if (\n block.cache_control &&\n typeof block.cache_control === \"object\" &&\n (block.cache_control as { type?: string }).type === \"ephemeral\"\n ) {\n systemHadEphemeral = true;\n }\n }\n }\n text = parts.join(\"\\n\");\n }\n const seg = makeSegment(position++, \"system_prompt\", text);\n if (systemHadEphemeral) seg.cache_state = \"cache_write\";\n segments.push(seg);\n }\n\n // 3 + 4. Walk messages.\n const messages = Array.isArray(params.messages) ? params.messages : [];\n // Identify the index of the LAST user message so we can route only it\n // to current_input. Earlier user messages are chat_history.\n let lastUserIdx = -1;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i]?.role === \"user\") {\n lastUserIdx = i;\n break;\n }\n }\n\n for (let i = 0; i < messages.length; i++) {\n const msg = messages[i];\n if (!msg) continue;\n const blocks = normalizeContent(msg.content);\n // Tool-result blocks always emit their own tool_observation segments.\n const toolResults = blocks.filter(\n (b) => b.type === \"tool_result\",\n ) as AnthropicToolResultBlockParam[];\n const nonToolResults = blocks.filter((b) => b.type !== \"tool_result\");\n\n // The non-tool-result remainder belongs to either current_input,\n // chat_history, or, if empty, nothing.\n if (nonToolResults.length > 0) {\n const text = renderBlocksAsText(nonToolResults, msg.role);\n let source: string;\n if (msg.role === \"user\" && i === lastUserIdx) {\n source = \"current_input\";\n } else {\n source = \"chat_history\";\n }\n segments.push(makeSegment(position++, source, text));\n } else if (\n typeof msg.content === \"string\" &&\n msg.role === \"user\" &&\n i === lastUserIdx &&\n msg.content.length > 0\n ) {\n // Edge case: pure-string user message that's also the last user.\n segments.push(makeSegment(position++, \"current_input\", msg.content));\n }\n\n // Each tool_result emits its own segment, in order.\n for (const tr of toolResults) {\n const text = renderToolResult(tr);\n const seg = makeSegment(position++, \"tool_observation\", text);\n seg.attrs = { tool_use_id: tr.tool_use_id };\n if (tr.is_error) {\n (seg.attrs as Record<string, unknown>).is_error = true;\n }\n segments.push(seg);\n }\n }\n\n // Cache hit override.\n const cacheRead = response?.usage?.cache_read_input_tokens ?? 0;\n if (cacheRead > 0) {\n for (const seg of segments) {\n if (seg.source === \"system_prompt\" || seg.source === \"tool_descriptions\") {\n seg.cache_state = \"cache_hit\";\n }\n }\n }\n\n return segments;\n}\n\nfunction safeExtractSegments(\n params: AnthropicMessageCreateParams,\n response?: AnthropicMessageResponse,\n): ContextSegment[] {\n try {\n return extractAnthropicSegments(params, response);\n } catch {\n return [];\n }\n}\n\n/**\n * MEM-11 — emit a sibling `memory`-type span linked to the given LLM span.\n *\n * The memory span:\n * - `type = \"memory\"`\n * - `parent_span_id = llmSpan.span_id` (server stores as producer_span_id)\n * - `metadata.memory_op_type = \"consolidate\"`\n * - `metadata.summary_token_count = response.usage.output_tokens`\n * - `metadata.summary_content_hash = SHA-256 of response.content[0].text`\n *\n * Caller is responsible for catching exceptions — telemetry must never\n * break the customer's Anthropic call.\n */\nfunction emitSummarizeMemorySpan(llmSpan: SpanData, response?: AnthropicMessageResponse): void {\n const state = getActiveTraceState();\n if (state === null) return;\n\n const summaryText = extractFirstTextBlock(response);\n const summaryHash = sha256Hex(summaryText);\n const summaryTokens = response?.usage?.output_tokens ?? 0;\n\n const startedAt = llmSpan.ended_at ?? llmSpan.started_at ?? nowIso();\n const memorySpan: SpanData = {\n trace_id: state.traceId,\n span_id: generateSpanId(),\n type: \"memory\",\n name: \"anthropic.summarize\",\n parent_span_id: llmSpan.span_id,\n started_at: startedAt,\n ended_at: startedAt,\n duration_ms: 0,\n status: \"completed\",\n metadata: {\n memory_op_type: \"consolidate\",\n summary_token_count: summaryTokens,\n summary_content_hash: summaryHash,\n },\n };\n state.completedSpans.push(memorySpan);\n}\n\n/**\n * Return the first text block of an Anthropic message response, or \"\" if\n * there is none. Best-effort; never throws.\n */\nfunction extractFirstTextBlock(response?: AnthropicMessageResponse): string {\n try {\n const content = response?.content;\n if (!Array.isArray(content)) return \"\";\n for (const block of content) {\n if (block && typeof block === \"object\" && block.type === \"text\") {\n const t = (block as { text?: unknown }).text;\n if (typeof t === \"string\" && t.length > 0) return t;\n }\n }\n return \"\";\n } catch {\n return \"\";\n }\n}\n\n/* ------------------------------------------------------------------------ */\n/* Helpers — segment construction */\n/* ------------------------------------------------------------------------ */\n\nfunction makeSegment(position: number, source: string, rawContent: string): ContextSegment {\n const fullHash = sha256Hex(rawContent);\n const truncated = truncateToBytes(rawContent, MAX_SEGMENT_CONTENT_BYTES);\n const seg: ContextSegment = {\n position,\n source,\n content_hash: fullHash,\n content: truncated.text,\n cache_state: \"cold\",\n };\n if (truncated.truncated) seg.content_truncated = true;\n return seg;\n}\n\nfunction normalizeContent(content: AnthropicMessageParam[\"content\"]): AnthropicContentBlockParam[] {\n if (typeof content === \"string\") {\n return [{ type: \"text\", text: content }];\n }\n if (Array.isArray(content)) {\n return content.filter((b): b is AnthropicContentBlockParam => !!b && typeof b === \"object\");\n }\n return [];\n}\n\nfunction renderBlocksAsText(blocks: AnthropicContentBlockParam[], role: string): string {\n // For chat_history / current_input we want a deterministic, hashable\n // string. Plain `text` blocks render as their text. `tool_use` blocks\n // render as a stable JSON marker so two equivalent calls hash the same.\n const out: string[] = [];\n for (const b of blocks) {\n if (!b || typeof b !== \"object\") continue;\n if (b.type === \"text\") {\n const text = (b as AnthropicTextBlockParam).text;\n if (typeof text === \"string\") out.push(text);\n } else if (b.type === \"tool_use\") {\n const tu = b as AnthropicToolUseBlockParam;\n out.push(`[tool_use:${tu.name}:${tu.id}] ${canonicalJsonStringify(tu.input ?? null)}`);\n } else {\n // Unknown block type — best-effort serialize.\n out.push(canonicalJsonStringify(b));\n }\n }\n // Prefix with role for disambiguation in chat_history; keeps the\n // segment self-describing without bloating the hash too much.\n if (role === \"assistant\") {\n return out.length === 1 && out[0] !== undefined ? out[0] : out.join(\"\\n\");\n }\n return out.length === 1 && out[0] !== undefined ? out[0] : out.join(\"\\n\");\n}\n\nfunction renderToolResult(tr: AnthropicToolResultBlockParam): string {\n if (typeof tr.content === \"string\") return tr.content;\n if (Array.isArray(tr.content)) {\n const parts: string[] = [];\n for (const b of tr.content) {\n if (b && typeof b === \"object\") {\n if (b.type === \"text\" && typeof b.text === \"string\") parts.push(b.text);\n else parts.push(canonicalJsonStringify(b));\n }\n }\n return parts.join(\"\\n\");\n }\n return \"\";\n}\n\n/* ------------------------------------------------------------------------ */\n/* Helpers — hashing + JSON canonicalization + byte truncation */\n/* ------------------------------------------------------------------------ */\n\n/**\n * Stringify with stable key ordering so equivalent objects hash to the\n * same content_hash regardless of property insertion order.\n */\nfunction canonicalJsonStringify(value: unknown): string {\n return JSON.stringify(value, function replacer(_key, val) {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n const obj = val as Record<string, unknown>;\n const sorted: Record<string, unknown> = {};\n for (const k of Object.keys(obj).sort()) {\n sorted[k] = obj[k];\n }\n return sorted;\n }\n return val;\n });\n}\n\n/**\n * Compute SHA-256 of `text` and return it hex-encoded. Tries Node's\n * `node:crypto` first (synchronous + zero-dep), falls back to a tiny\n * pure-TS impl when neither Node nor a Web Crypto sync API is available.\n *\n * NOTE: Web Crypto's `digest()` is async, but the segment-construction\n * path is sync. We therefore only use the Node sync API here. On the\n * browser we fall back to the pure-TS impl, which is fine for the\n * relatively short strings we hash (system prompts, tool defs, single\n * messages).\n */\nfunction sha256Hex(text: string): string {\n // Strategy 1: Node's crypto.createHash. Sync and dep-free.\n try {\n if (typeof process !== \"undefined\" && process.versions?.node) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dynamicRequire = Function(\"m\", \"return require(m)\") as any as (m: string) => unknown;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cryptoMod = dynamicRequire(\"node:crypto\") as any;\n if (cryptoMod?.createHash) {\n return cryptoMod.createHash(\"sha256\").update(text).digest(\"hex\");\n }\n }\n } catch {\n // fall through\n }\n // Strategy 2: pure-TS sha256 (used in browsers).\n return purejsSha256(text);\n}\n\nfunction truncateToBytes(text: string, maxBytes: number): { text: string; truncated: boolean } {\n // Fast path: cheap upper bound. 1 char ≤ 4 bytes UTF-8.\n if (text.length <= maxBytes / 4) return { text, truncated: false };\n // Build the encoded bytes once.\n const bytes = utf8Encode(text);\n if (bytes.length <= maxBytes) return { text, truncated: false };\n // Find the largest character boundary <= maxBytes.\n let cut = maxBytes;\n // Don't split a multi-byte sequence: walk back until we're at a\n // codepoint boundary (a byte where the top two bits aren't `10`).\n while (cut > 0 && (bytes[cut]! & 0xc0) === 0x80) {\n cut--;\n }\n return { text: utf8Decode(bytes.subarray(0, cut)), truncated: true };\n}\n\nfunction utf8Encode(text: string): Uint8Array {\n if (typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(text);\n }\n // Pure-JS fallback. Should never trigger on Node 18+ or modern browsers.\n const out: number[] = [];\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i);\n if (code < 0x80) {\n out.push(code);\n } else if (code < 0x800) {\n out.push(0xc0 | (code >> 6), 0x80 | (code & 0x3f));\n } else {\n out.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));\n }\n }\n return new Uint8Array(out);\n}\n\nfunction utf8Decode(bytes: Uint8Array): string {\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder(\"utf-8\").decode(bytes);\n }\n let out = \"\";\n for (let i = 0; i < bytes.length; ) {\n const b = bytes[i]!;\n if (b < 0x80) {\n out += String.fromCharCode(b);\n i++;\n } else if (b < 0xe0) {\n out += String.fromCharCode(((b & 0x1f) << 6) | (bytes[i + 1]! & 0x3f));\n i += 2;\n } else {\n out += String.fromCharCode(\n ((b & 0x0f) << 12) | ((bytes[i + 1]! & 0x3f) << 6) | (bytes[i + 2]! & 0x3f),\n );\n i += 3;\n }\n }\n return out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Pure-JS SHA-256 (used only when node:crypto is unavailable) */\n/* ------------------------------------------------------------------------ */\n\nfunction purejsSha256(text: string): string {\n const K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n const H = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ];\n\n // Pad message.\n const msg = utf8Encode(text);\n const msgLen = msg.length;\n const bitLen = msgLen * 8;\n const padded = new Uint8Array(((msgLen + 9 + 63) >> 6) << 6);\n padded.set(msg);\n padded[msgLen] = 0x80;\n // 64-bit big-endian length. JS bitwise ops are 32-bit, so split lo/hi via /.\n const lo = (bitLen & 0xffffffff) >>> 0;\n const hi = Math.floor(bitLen / 0x100000000) >>> 0;\n padded[padded.length - 8] = (hi >>> 24) & 0xff;\n padded[padded.length - 7] = (hi >>> 16) & 0xff;\n padded[padded.length - 6] = (hi >>> 8) & 0xff;\n padded[padded.length - 5] = hi & 0xff;\n padded[padded.length - 4] = (lo >>> 24) & 0xff;\n padded[padded.length - 3] = (lo >>> 16) & 0xff;\n padded[padded.length - 2] = (lo >>> 8) & 0xff;\n padded[padded.length - 1] = lo & 0xff;\n\n const W = new Uint32Array(64);\n for (let chunk = 0; chunk < padded.length; chunk += 64) {\n for (let i = 0; i < 16; i++) {\n // `>>> 0` forces unsigned — `(byte << 24)` otherwise produces a signed\n // int when the high bit is set, which corrupts the schedule on bytes ≥ 0x80.\n W[i] =\n ((padded[chunk + i * 4]! << 24) |\n (padded[chunk + i * 4 + 1]! << 16) |\n (padded[chunk + i * 4 + 2]! << 8) |\n padded[chunk + i * 4 + 3]!) >>>\n 0;\n }\n for (let i = 16; i < 64; i++) {\n const s0 = rotr(W[i - 15]!, 7) ^ rotr(W[i - 15]!, 18) ^ (W[i - 15]! >>> 3);\n const s1 = rotr(W[i - 2]!, 17) ^ rotr(W[i - 2]!, 19) ^ (W[i - 2]! >>> 10);\n W[i] = (W[i - 16]! + s0 + W[i - 7]! + s1) >>> 0;\n }\n\n let [a, b, c, d, e, f, g, h] = H;\n\n for (let i = 0; i < 64; i++) {\n const S1 = rotr(e!, 6) ^ rotr(e!, 11) ^ rotr(e!, 25);\n const ch = (e! & f!) ^ (~e! & g!);\n const temp1 = (h! + S1 + ch + K[i]! + W[i]!) >>> 0;\n const S0 = rotr(a!, 2) ^ rotr(a!, 13) ^ rotr(a!, 22);\n const maj = (a! & b!) ^ (a! & c!) ^ (b! & c!);\n const temp2 = (S0 + maj) >>> 0;\n h = g;\n g = f;\n f = e;\n e = (d! + temp1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (temp1 + temp2) >>> 0;\n }\n\n H[0] = (H[0]! + a!) >>> 0;\n H[1] = (H[1]! + b!) >>> 0;\n H[2] = (H[2]! + c!) >>> 0;\n H[3] = (H[3]! + d!) >>> 0;\n H[4] = (H[4]! + e!) >>> 0;\n H[5] = (H[5]! + f!) >>> 0;\n H[6] = (H[6]! + g!) >>> 0;\n H[7] = (H[7]! + h!) >>> 0;\n }\n\n let hex = \"\";\n for (const v of H) {\n hex += v.toString(16).padStart(8, \"0\");\n }\n return hex;\n}\n\nfunction rotr(x: number, n: number): number {\n return ((x >>> n) | (x << (32 - n))) >>> 0;\n}\n"]}
1
+ {"version":3,"sources":["../../src/anthropic/index.ts"],"names":["init_spans","init_tracing","absorbErrorsAsync","opts","absorbErrorsSync","getActiveTraceState","setActiveFramework","startSpan","calculateCost","captureInputMessages","extractAnthropicOutputText","runAsync","nowIso","generateSpanId"],"mappings":"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","file":"chunk-YD7TO4PD.cjs","sourcesContent":["/**\n * `@morsehq-dev/sdk/anthropic` — Anthropic SDK instrumentation.\n *\n * Wraps `@anthropic-ai/sdk` `client.messages.create` so every Claude call\n * emits an `llm` span carrying pre-segmented `context_segments`. The\n * server-side classifier then skips its own messages-array partitioning\n * and persists the SDK-supplied segments verbatim.\n *\n * Two entry points:\n *\n * - `wrapAnthropic(client)` — returns a Proxy-like wrapper that\n * intercepts `messages.create`. Always succeeds. The customer keeps\n * using the wrapper as if it were the real client.\n *\n * - `instrumentAnthropic(client?)` — top-level helper. If a client is\n * passed, returns the wrapped form. If no client is passed AND the\n * `@anthropic-ai/sdk` package can be loaded, attempts to patch\n * `Messages.prototype.create` so every fresh `new Anthropic()` is\n * instrumented automatically. The prototype path is best-effort —\n * it is documented as fragile across Anthropic SDK versions, and\n * `wrapAnthropic` is the recommended public entry.\n *\n * Idempotent. `uninstallAnthropic()` restores the prototype and clears\n * the install sentinel.\n *\n * Wrapped under `absorbErrors*` so a tracing failure can never break the\n * customer's Anthropic call — at worst, calls go untraced.\n *\n * Mirrors `apps/sdk/typescript/src/vercel-ai/index.ts` in shape and\n * `openspec/changes/.../specs/observability/spec.md` (CTX-08) in\n * segmentation contract.\n */\n\nimport { absorbErrorsAsync, absorbErrorsSync } from \"../_internal/errors\";\nimport { calculateCost } from \"../_internal/pricing\";\nimport type { ContextSegment, SpanData } from \"../_internal/spans\";\nimport { generateSpanId, nowIso } from \"../_internal/spans\";\nimport { setActiveFramework } from \"../_internal/active-framework\";\nimport { captureInputMessages, extractAnthropicOutputText } from \"../_internal/llm-io\";\nimport { getActiveTraceState, runAsync as _runAsync, startSpan } from \"../_internal/tracing\";\n\n/* ------------------------------------------------------------------------ */\n/* Public types — minimal structural shapes, NOT a hard dep on `@anthropic-ai/sdk` */\n/* ------------------------------------------------------------------------ */\n\n/**\n * Subset of `@anthropic-ai/sdk`'s `MessageCreateParams` we read from. We\n * deliberately decline to import the real types so the SDK works even when\n * `@anthropic-ai/sdk` isn't installed (it's an optional peer dep).\n */\nexport interface AnthropicMessageCreateParams {\n model: string;\n max_tokens?: number;\n system?: string | AnthropicTextBlockParam[];\n messages: AnthropicMessageParam[];\n tools?: AnthropicToolParam[];\n tool_choice?: unknown;\n // Allow forward-compat fields without complaint.\n [key: string]: unknown;\n}\n\nexport interface AnthropicTextBlockParam {\n type: \"text\";\n text: string;\n cache_control?: { type: \"ephemeral\" } | null;\n}\n\nexport interface AnthropicToolUseBlockParam {\n type: \"tool_use\";\n id: string;\n name: string;\n input: unknown;\n}\n\nexport interface AnthropicToolResultBlockParam {\n type: \"tool_result\";\n tool_use_id: string;\n content: string | Array<{ type: string; text?: string; [k: string]: unknown }>;\n is_error?: boolean;\n}\n\nexport type AnthropicContentBlockParam =\n | AnthropicTextBlockParam\n | AnthropicToolUseBlockParam\n | AnthropicToolResultBlockParam\n | { type: string; [k: string]: unknown };\n\nexport interface AnthropicMessageParam {\n role: \"user\" | \"assistant\" | string;\n content: string | AnthropicContentBlockParam[];\n}\n\nexport interface AnthropicToolParam {\n name: string;\n description?: string;\n input_schema?: unknown;\n // Anthropic supports custom tool types — let through.\n [key: string]: unknown;\n}\n\nexport interface AnthropicUsage {\n input_tokens?: number;\n output_tokens?: number;\n cache_creation_input_tokens?: number;\n cache_read_input_tokens?: number;\n [key: string]: unknown;\n}\n\nexport interface AnthropicMessageResponse {\n id?: string;\n model?: string;\n usage?: AnthropicUsage;\n content?: Array<{ type: string; text?: string; [k: string]: unknown }>;\n [key: string]: unknown;\n}\n\n/**\n * Structural shape of the Anthropic client we wrap. We only require that\n * `client.messages.create` is a function returning a Promise.\n */\nexport interface AnthropicClientLike {\n messages: {\n create(\n params: AnthropicMessageCreateParams,\n options?: unknown,\n ): Promise<AnthropicMessageResponse>;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Module-level install sentinels */\n/* ------------------------------------------------------------------------ */\n\nconst WRAPPED_CLIENT = Symbol.for(\"morse.anthropic.wrapped\");\nconst INSTALL_SENTINEL = Symbol.for(\"morse.anthropic.installed\");\nconst ORIGINALS_SENTINEL = Symbol.for(\"morse.anthropic.originals\");\n\n/**\n * True once `instrumentAnthropic()` has successfully patched\n * `Messages.prototype.create` globally (called directly, or via\n * `_internal/auto-detect.ts`'s zero-config scan). Mirrors the Python SDK's\n * `wrap()` check on `anthropic._morse_ai_installed` (AGE-240 dogfood fix):\n * without this guard, a customer who lets auto-detect patch the prototype\n * AND then calls `wrapAnthropic(client)` manually on an instance would\n * record every `messages.create` call twice — once via the global patch,\n * once via the per-instance Proxy. `wrapAnthropic()` checks this flag and\n * returns the client unmodified when a global install is already active,\n * leaving the global patch as the sole recorder.\n */\nlet globalInstallActive = false;\n\ninterface OriginalsBag {\n protoCreate?: unknown;\n protoCarrier?: { prototype: { create: unknown } };\n}\n\ninterface InstalledModule {\n [INSTALL_SENTINEL]?: boolean;\n [ORIGINALS_SENTINEL]?: OriginalsBag;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Public API */\n/* ------------------------------------------------------------------------ */\n\nexport interface InstrumentAnthropicOptions {\n /**\n * When provided, used as the parent agent span's name. Defaults to\n * `\"anthropic.messages.create\"`.\n */\n defaultAgentName?: string;\n /**\n * If a fresh Anthropic *module* import is passed (e.g.,\n * `await import(\"@anthropic-ai/sdk\")`), the adapter will best-effort\n * patch `Messages.prototype.create`. Most users should prefer\n * `wrapAnthropic(client)` instead.\n */\n anthropicModule?: unknown;\n /**\n * When `true` (MEM-11), every wrapped `messages.create` call also\n * emits a sibling `memory`-type span with\n * `metadata.memory_op_type=\"consolidate\"`, `parent_span_id` linking\n * back to the LLM span (server treats this as `producer_span_id`),\n * `metadata.summary_token_count` from the response's output_tokens,\n * and `metadata.summary_content_hash` (SHA-256 of the response's\n * first text block).\n *\n * Use this flag when the customer is calling Claude to summarize\n * their own conversation context (the customer-side compaction\n * pattern). Default `false` — existing callers see zero behavior change.\n *\n * Opt-in only. The adapter never auto-detects summarization from\n * system-prompt content (too many false positives).\n */\n summarize?: boolean;\n}\n\n/**\n * Wrap an Anthropic client so every `messages.create` call records an\n * `llm` span with `context_segments`. The wrapper preserves the rest of\n * the client's surface (other resources, helpers, etc.) via a Proxy.\n *\n * Idempotent — a previously wrapped client is returned as-is.\n */\nexport function wrapAnthropic<C extends AnthropicClientLike>(\n client: C,\n options: InstrumentAnthropicOptions = {},\n): C {\n if (!client || typeof client !== \"object\") return client;\n // Already wrapped? Pass through.\n if ((client as Record<string | symbol, unknown>)[WRAPPED_CLIENT]) return client;\n // A global install (manual `instrumentAnthropic()` or auto-detect) is\n // already recording every call at the prototype level — see\n // `globalInstallActive` doc comment above.\n if (globalInstallActive) return client;\n\n const originalCreate = client.messages?.create?.bind(client.messages);\n if (typeof originalCreate !== \"function\") return client;\n\n const patchedCreate = buildPatchedCreate(originalCreate, options);\n\n // We construct a new `messages` object that proxies to the original\n // for any non-`create` access, then a top-level proxy that returns\n // our patched `messages` while passing every other property through.\n const patchedMessages = new Proxy(client.messages, {\n get(target, prop, receiver) {\n if (prop === \"create\") return patchedCreate;\n const value = Reflect.get(target, prop, receiver);\n // Bind methods so `this` continues to point at the original.\n if (typeof value === \"function\") return (value as (...a: unknown[]) => unknown).bind(target);\n return value;\n },\n });\n\n const wrapper = new Proxy(client, {\n get(target, prop, receiver) {\n if (prop === WRAPPED_CLIENT) return true;\n if (prop === \"messages\") return patchedMessages;\n const value = Reflect.get(target, prop, receiver);\n if (typeof value === \"function\") return (value as (...a: unknown[]) => unknown).bind(target);\n return value;\n },\n });\n\n return wrapper as C;\n}\n\n/**\n * Top-level installer. Two modes:\n *\n * - `instrumentAnthropic(client)` — equivalent to `wrapAnthropic(client)`.\n * - `instrumentAnthropic({ anthropicModule: mod })` — best-effort\n * prototype patch. Prefer the wrap form when possible.\n *\n * Always returns the wrapped client, or `undefined` if patching failed.\n * Errors are absorbed; this function never throws back at the caller.\n */\nexport const instrumentAnthropic = absorbErrorsAsync(\n async <C extends AnthropicClientLike>(\n clientOrOptions?: C | InstrumentAnthropicOptions,\n maybeOptions?: InstrumentAnthropicOptions,\n ): Promise<C | boolean> => {\n // Disambiguate the overloads.\n if (clientOrOptions && isClient(clientOrOptions)) {\n const opts = maybeOptions ?? {};\n return wrapAnthropic(clientOrOptions as C, opts);\n }\n const opts = (clientOrOptions as InstrumentAnthropicOptions | undefined) ?? {};\n const mod = await loadAnthropicModule(opts.anthropicModule);\n if (!mod) return false;\n const installed = (mod as InstalledModule)[INSTALL_SENTINEL] === true;\n if (installed) {\n globalInstallActive = true;\n return true;\n }\n\n const carrier = findMessagesPrototypeCarrier(mod);\n if (!carrier) return false;\n const originalCreate = carrier.prototype.create;\n if (typeof originalCreate !== \"function\") return false;\n\n const patchedCreate = buildPatchedCreate(function (\n this: unknown,\n params: AnthropicMessageCreateParams,\n callOptions?: unknown,\n ) {\n return (originalCreate as (...args: unknown[]) => Promise<AnthropicMessageResponse>).call(\n this,\n params,\n callOptions,\n );\n }, opts);\n carrier.prototype.create = patchedCreate as unknown as typeof carrier.prototype.create;\n (mod as InstalledModule)[ORIGINALS_SENTINEL] = {\n protoCreate: originalCreate,\n protoCarrier: carrier,\n };\n (mod as InstalledModule)[INSTALL_SENTINEL] = true;\n globalInstallActive = true;\n return true;\n },\n { fingerprint: \"morse.adapters.anthropic.install\" },\n);\n\n/**\n * Restore the prototype patch and clear the install sentinel.\n *\n * Pass the same module reference that was given to `instrumentAnthropic`\n * (or omit and the function will try to dynamic-import it). Calling\n * `uninstallAnthropic()` on a wrapped client (vs. a module) is a no-op —\n * just discard the wrapped client.\n */\nexport const uninstallAnthropic = absorbErrorsSync(\n (anthropicModule?: unknown): void => {\n if (!anthropicModule || typeof anthropicModule !== \"object\") return;\n const mod = anthropicModule as InstalledModule;\n if (!mod[INSTALL_SENTINEL]) return;\n const originals = mod[ORIGINALS_SENTINEL];\n if (originals?.protoCarrier && originals.protoCreate !== undefined) {\n originals.protoCarrier.prototype.create =\n originals.protoCreate as typeof originals.protoCarrier.prototype.create;\n }\n mod[ORIGINALS_SENTINEL] = undefined;\n mod[INSTALL_SENTINEL] = false;\n globalInstallActive = false;\n },\n { fingerprint: \"morse.adapters.anthropic.uninstall\" },\n);\n\n/**\n * Reset module-level install state for tests. Not part of the public API.\n * @internal\n */\nexport function _resetAnthropicInstallStateForTesting(): void {\n globalInstallActive = false;\n}\n\n/** True when a wrapped Anthropic client is passed in. */\nexport function isAnthropicWrapped(client: unknown): boolean {\n if (!client || typeof client !== \"object\") return false;\n return (client as Record<string | symbol, unknown>)[WRAPPED_CLIENT] === true;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Internals — module discovery */\n/* ------------------------------------------------------------------------ */\n\nfunction isClient(x: unknown): x is AnthropicClientLike {\n if (!x || typeof x !== \"object\") return false;\n const messages = (x as { messages?: { create?: unknown } }).messages;\n return !!messages && typeof messages.create === \"function\";\n}\n\nasync function loadAnthropicModule(explicit?: unknown): Promise<unknown | null> {\n if (explicit && typeof explicit === \"object\") return explicit;\n try {\n // Function-eval'd dynamic import keeps bundlers from trying to resolve\n // `@anthropic-ai/sdk` at build time when the dep isn't installed.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return await (Function(\"m\", \"return import(m)\") as any)(\"@anthropic-ai/sdk\");\n } catch {\n return null;\n }\n}\n\n/**\n * Locate the Messages class prototype on the Anthropic SDK module.\n * The SDK has historically exposed it at slightly different paths across\n * versions; we try the most common shapes.\n */\nfunction findMessagesPrototypeCarrier(mod: unknown): { prototype: { create: unknown } } | null {\n if (!mod || typeof mod !== \"object\") return null;\n const m = mod as Record<string, unknown>;\n\n // Strategy 1: `mod.Anthropic.Messages` (default-export class with static).\n const Default = m.default ?? m.Anthropic ?? m;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const candidates: any[] = [\n (Default as Record<string, unknown> | undefined)?.Messages,\n (m as Record<string, unknown>).Messages,\n (Default as { resources?: { Messages?: unknown } } | undefined)?.resources?.Messages,\n ];\n for (const c of candidates) {\n if (c && typeof c === \"function\" && c.prototype && typeof c.prototype.create === \"function\") {\n return c as { prototype: { create: unknown } };\n }\n }\n return null;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Internals — wrapper that records an `llm` span */\n/* ------------------------------------------------------------------------ */\n\nfunction buildPatchedCreate(\n original: (\n params: AnthropicMessageCreateParams,\n options?: unknown,\n ) => Promise<AnthropicMessageResponse>,\n options: InstrumentAnthropicOptions,\n): (params: AnthropicMessageCreateParams, options?: unknown) => Promise<AnthropicMessageResponse> {\n const agentName = options.defaultAgentName ?? \"anthropic.messages.create\";\n const summarizeMode = options.summarize === true;\n\n return async function patchedCreate(\n this: unknown,\n params: AnthropicMessageCreateParams,\n callOptions?: unknown,\n ): Promise<AnthropicMessageResponse> {\n const inTrace = getActiveTraceState() !== null;\n\n const work = async (): Promise<AnthropicMessageResponse> => {\n setActiveFramework(\"anthropic\");\n const handle = startSpan({\n name: \"anthropic.messages.create\",\n type: \"llm\",\n metadata: { model: params?.model, max_tokens: params?.max_tokens },\n });\n let response: AnthropicMessageResponse | undefined;\n try {\n response = await original.call(this, params, callOptions);\n } catch (err) {\n handle?.end(err);\n throw err;\n }\n\n // Recording is best-effort — never let it throw at the caller.\n try {\n if (handle) {\n const segments = safeExtractSegments(params, response);\n const usage = response?.usage ?? {};\n const inputTokens =\n (usage.input_tokens ?? 0) +\n (usage.cache_creation_input_tokens ?? 0) +\n (usage.cache_read_input_tokens ?? 0);\n const outputTokens = usage.output_tokens ?? 0;\n handle.span.model = response?.model ?? params?.model;\n if (inputTokens > 0) handle.span.input_tokens = inputTokens;\n if (outputTokens > 0) handle.span.output_tokens = outputTokens;\n const cacheWrite = usage.cache_creation_input_tokens ?? 0;\n const cacheRead = usage.cache_read_input_tokens ?? 0;\n if (cacheWrite > 0) handle.span.cache_write_tokens = cacheWrite;\n if (cacheRead > 0) handle.span.cached_input_tokens = cacheRead;\n if (inputTokens > 0 || outputTokens > 0) {\n handle.span.total_tokens = inputTokens + outputTokens;\n }\n if (\n handle.span.cost_usd === undefined &&\n handle.span.model &&\n (inputTokens > 0 || outputTokens > 0)\n ) {\n const cost = calculateCost({\n inputTokens,\n outputTokens,\n model: handle.span.model,\n cachedInputTokens: cacheRead,\n cacheWriteTokens: cacheWrite,\n });\n if (cost !== undefined) handle.span.cost_usd = cost;\n }\n handle.span.context_segments = segments;\n // MHQ-858: prompt/response capture, parity with Python's\n // `_safe_input_messages` / `_extract_output_text`.\n const inputData = captureInputMessages(params?.messages, params?.system);\n if (inputData !== undefined) handle.span.input_data = inputData;\n const outputText = extractAnthropicOutputText(response?.content);\n if (outputText !== undefined) handle.span.output_data = { content: outputText };\n }\n } catch {\n // swallow — telemetry must never break the caller\n }\n handle?.end();\n\n // MEM-11: emit sibling memory span when summarize mode is enabled.\n // Sequenced AFTER the LLM span closes so its span_id is final.\n if (summarizeMode && handle) {\n try {\n emitSummarizeMemorySpan(handle.span, response);\n } catch {\n // swallow — telemetry must never break the caller\n }\n }\n return response;\n };\n\n if (inTrace) {\n return work();\n }\n\n // No active trace — open a fresh agent span around the call so the\n // llm span has a parent. We can't return work()'s Promise from inside\n // _runAsync's callback while preserving the LLM result's typing AND\n // having the fresh trace own the lifecycle, so we wrap explicitly.\n let result: AnthropicMessageResponse | undefined;\n let thrown: unknown;\n await _runAsync({ agentName }, async (runHandle) => {\n runHandle.setOutcome(true);\n try {\n result = await work();\n } catch (err) {\n thrown = err;\n throw err;\n }\n return null;\n });\n if (thrown !== undefined) throw thrown;\n // result is set unless work() threw, in which case we already rethrew.\n return result as AnthropicMessageResponse;\n };\n}\n\n/* ------------------------------------------------------------------------ */\n/* Public: deterministic segment extraction */\n/* ------------------------------------------------------------------------ */\n\n/**\n * Maximum bytes of `content` we ship per segment. Long blobs are truncated\n * with `content_truncated: true`. The server further enforces its own\n * cap; we keep the SDK floor lower to stay friendly to mobile networks.\n */\nexport const MAX_SEGMENT_CONTENT_BYTES = 4096;\n\n/**\n * Extract `ContextSegment[]` from an Anthropic `messages.create` request\n * + response. The ordering is:\n *\n * 1. `tools` → one `tool_descriptions` segment, position 0.\n * 2. `system` → `system_prompt` segment.\n * 3. Each prior `user` / `assistant` message → `chat_history` segment.\n * `tool_result` blocks (always inside `user.content`) become their\n * own `tool_observation` segments.\n * `tool_use` blocks (assistant-emitted) roll into the parent\n * assistant `chat_history` segment as part of the JSON content.\n * 4. The final `user` message → `current_input`.\n *\n * Cache state heuristic:\n * - `system` blocks with `cache_control.type === \"ephemeral\"` →\n * `cache_write`.\n * - If the response reports `cache_read_input_tokens > 0`, mark the\n * `system_prompt` and `tool_descriptions` segments as `cache_hit`\n * (overrides `cache_write` — the cache HIT is more informative\n * than the cache write attempt).\n *\n * `tokens` is intentionally left undefined — the server tokenizes.\n */\nexport function extractAnthropicSegments(\n params: AnthropicMessageCreateParams,\n response?: AnthropicMessageResponse,\n): ContextSegment[] {\n const segments: ContextSegment[] = [];\n let position = 0;\n\n // 1. Tools → tool_descriptions.\n if (Array.isArray(params.tools) && params.tools.length > 0) {\n const content = canonicalJsonStringify(params.tools);\n segments.push(makeSegment(position++, \"tool_descriptions\", content));\n }\n\n // 2. System.\n let systemHadEphemeral = false;\n if (params.system !== undefined && params.system !== null) {\n let text = \"\";\n if (typeof params.system === \"string\") {\n text = params.system;\n } else if (Array.isArray(params.system)) {\n const parts: string[] = [];\n for (const block of params.system) {\n if (block && typeof block === \"object\" && block.type === \"text\") {\n parts.push(typeof block.text === \"string\" ? block.text : \"\");\n if (\n block.cache_control &&\n typeof block.cache_control === \"object\" &&\n (block.cache_control as { type?: string }).type === \"ephemeral\"\n ) {\n systemHadEphemeral = true;\n }\n }\n }\n text = parts.join(\"\\n\");\n }\n const seg = makeSegment(position++, \"system_prompt\", text);\n if (systemHadEphemeral) seg.cache_state = \"cache_write\";\n segments.push(seg);\n }\n\n // 3 + 4. Walk messages.\n const messages = Array.isArray(params.messages) ? params.messages : [];\n // Identify the index of the LAST user message so we can route only it\n // to current_input. Earlier user messages are chat_history.\n let lastUserIdx = -1;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i]?.role === \"user\") {\n lastUserIdx = i;\n break;\n }\n }\n\n for (let i = 0; i < messages.length; i++) {\n const msg = messages[i];\n if (!msg) continue;\n const blocks = normalizeContent(msg.content);\n // Tool-result blocks always emit their own tool_observation segments.\n const toolResults = blocks.filter(\n (b) => b.type === \"tool_result\",\n ) as AnthropicToolResultBlockParam[];\n const nonToolResults = blocks.filter((b) => b.type !== \"tool_result\");\n\n // The non-tool-result remainder belongs to either current_input,\n // chat_history, or, if empty, nothing.\n if (nonToolResults.length > 0) {\n const text = renderBlocksAsText(nonToolResults, msg.role);\n let source: string;\n if (msg.role === \"user\" && i === lastUserIdx) {\n source = \"current_input\";\n } else {\n source = \"chat_history\";\n }\n segments.push(makeSegment(position++, source, text));\n } else if (\n typeof msg.content === \"string\" &&\n msg.role === \"user\" &&\n i === lastUserIdx &&\n msg.content.length > 0\n ) {\n // Edge case: pure-string user message that's also the last user.\n segments.push(makeSegment(position++, \"current_input\", msg.content));\n }\n\n // Each tool_result emits its own segment, in order.\n for (const tr of toolResults) {\n const text = renderToolResult(tr);\n const seg = makeSegment(position++, \"tool_observation\", text);\n seg.attrs = { tool_use_id: tr.tool_use_id };\n if (tr.is_error) {\n (seg.attrs as Record<string, unknown>).is_error = true;\n }\n segments.push(seg);\n }\n }\n\n // Cache hit override.\n const cacheRead = response?.usage?.cache_read_input_tokens ?? 0;\n if (cacheRead > 0) {\n for (const seg of segments) {\n if (seg.source === \"system_prompt\" || seg.source === \"tool_descriptions\") {\n seg.cache_state = \"cache_hit\";\n }\n }\n }\n\n return segments;\n}\n\nfunction safeExtractSegments(\n params: AnthropicMessageCreateParams,\n response?: AnthropicMessageResponse,\n): ContextSegment[] {\n try {\n return extractAnthropicSegments(params, response);\n } catch {\n return [];\n }\n}\n\n/**\n * MEM-11 — emit a sibling `memory`-type span linked to the given LLM span.\n *\n * The memory span:\n * - `type = \"memory\"`\n * - `parent_span_id = llmSpan.span_id` (server stores as producer_span_id)\n * - `metadata.memory_op_type = \"consolidate\"`\n * - `metadata.summary_token_count = response.usage.output_tokens`\n * - `metadata.summary_content_hash = SHA-256 of response.content[0].text`\n *\n * Caller is responsible for catching exceptions — telemetry must never\n * break the customer's Anthropic call.\n */\nfunction emitSummarizeMemorySpan(llmSpan: SpanData, response?: AnthropicMessageResponse): void {\n const state = getActiveTraceState();\n if (state === null) return;\n\n const summaryText = extractFirstTextBlock(response);\n const summaryHash = sha256Hex(summaryText);\n const summaryTokens = response?.usage?.output_tokens ?? 0;\n\n const startedAt = llmSpan.ended_at ?? llmSpan.started_at ?? nowIso();\n const memorySpan: SpanData = {\n trace_id: state.traceId,\n span_id: generateSpanId(),\n type: \"memory\",\n name: \"anthropic.summarize\",\n parent_span_id: llmSpan.span_id,\n started_at: startedAt,\n ended_at: startedAt,\n duration_ms: 0,\n status: \"completed\",\n metadata: {\n memory_op_type: \"consolidate\",\n summary_token_count: summaryTokens,\n summary_content_hash: summaryHash,\n },\n };\n state.completedSpans.push(memorySpan);\n}\n\n/**\n * Return the first text block of an Anthropic message response, or \"\" if\n * there is none. Best-effort; never throws.\n */\nfunction extractFirstTextBlock(response?: AnthropicMessageResponse): string {\n try {\n const content = response?.content;\n if (!Array.isArray(content)) return \"\";\n for (const block of content) {\n if (block && typeof block === \"object\" && block.type === \"text\") {\n const t = (block as { text?: unknown }).text;\n if (typeof t === \"string\" && t.length > 0) return t;\n }\n }\n return \"\";\n } catch {\n return \"\";\n }\n}\n\n/* ------------------------------------------------------------------------ */\n/* Helpers — segment construction */\n/* ------------------------------------------------------------------------ */\n\nfunction makeSegment(position: number, source: string, rawContent: string): ContextSegment {\n const fullHash = sha256Hex(rawContent);\n const truncated = truncateToBytes(rawContent, MAX_SEGMENT_CONTENT_BYTES);\n const seg: ContextSegment = {\n position,\n source,\n content_hash: fullHash,\n content: truncated.text,\n cache_state: \"cold\",\n };\n if (truncated.truncated) seg.content_truncated = true;\n return seg;\n}\n\nfunction normalizeContent(content: AnthropicMessageParam[\"content\"]): AnthropicContentBlockParam[] {\n if (typeof content === \"string\") {\n return [{ type: \"text\", text: content }];\n }\n if (Array.isArray(content)) {\n return content.filter((b): b is AnthropicContentBlockParam => !!b && typeof b === \"object\");\n }\n return [];\n}\n\nfunction renderBlocksAsText(blocks: AnthropicContentBlockParam[], role: string): string {\n // For chat_history / current_input we want a deterministic, hashable\n // string. Plain `text` blocks render as their text. `tool_use` blocks\n // render as a stable JSON marker so two equivalent calls hash the same.\n const out: string[] = [];\n for (const b of blocks) {\n if (!b || typeof b !== \"object\") continue;\n if (b.type === \"text\") {\n const text = (b as AnthropicTextBlockParam).text;\n if (typeof text === \"string\") out.push(text);\n } else if (b.type === \"tool_use\") {\n const tu = b as AnthropicToolUseBlockParam;\n out.push(`[tool_use:${tu.name}:${tu.id}] ${canonicalJsonStringify(tu.input ?? null)}`);\n } else {\n // Unknown block type — best-effort serialize.\n out.push(canonicalJsonStringify(b));\n }\n }\n // Prefix with role for disambiguation in chat_history; keeps the\n // segment self-describing without bloating the hash too much.\n if (role === \"assistant\") {\n return out.length === 1 && out[0] !== undefined ? out[0] : out.join(\"\\n\");\n }\n return out.length === 1 && out[0] !== undefined ? out[0] : out.join(\"\\n\");\n}\n\nfunction renderToolResult(tr: AnthropicToolResultBlockParam): string {\n if (typeof tr.content === \"string\") return tr.content;\n if (Array.isArray(tr.content)) {\n const parts: string[] = [];\n for (const b of tr.content) {\n if (b && typeof b === \"object\") {\n if (b.type === \"text\" && typeof b.text === \"string\") parts.push(b.text);\n else parts.push(canonicalJsonStringify(b));\n }\n }\n return parts.join(\"\\n\");\n }\n return \"\";\n}\n\n/* ------------------------------------------------------------------------ */\n/* Helpers — hashing + JSON canonicalization + byte truncation */\n/* ------------------------------------------------------------------------ */\n\n/**\n * Stringify with stable key ordering so equivalent objects hash to the\n * same content_hash regardless of property insertion order.\n */\nfunction canonicalJsonStringify(value: unknown): string {\n return JSON.stringify(value, function replacer(_key, val) {\n if (val && typeof val === \"object\" && !Array.isArray(val)) {\n const obj = val as Record<string, unknown>;\n const sorted: Record<string, unknown> = {};\n for (const k of Object.keys(obj).sort()) {\n sorted[k] = obj[k];\n }\n return sorted;\n }\n return val;\n });\n}\n\n/**\n * Compute SHA-256 of `text` and return it hex-encoded. Tries Node's\n * `node:crypto` first (synchronous + zero-dep), falls back to a tiny\n * pure-TS impl when neither Node nor a Web Crypto sync API is available.\n *\n * NOTE: Web Crypto's `digest()` is async, but the segment-construction\n * path is sync. We therefore only use the Node sync API here. On the\n * browser we fall back to the pure-TS impl, which is fine for the\n * relatively short strings we hash (system prompts, tool defs, single\n * messages).\n */\nfunction sha256Hex(text: string): string {\n // Strategy 1: Node's crypto.createHash. Sync and dep-free.\n try {\n if (typeof process !== \"undefined\" && process.versions?.node) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const dynamicRequire = Function(\"m\", \"return require(m)\") as any as (m: string) => unknown;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cryptoMod = dynamicRequire(\"node:crypto\") as any;\n if (cryptoMod?.createHash) {\n return cryptoMod.createHash(\"sha256\").update(text).digest(\"hex\");\n }\n }\n } catch {\n // fall through\n }\n // Strategy 2: pure-TS sha256 (used in browsers).\n return purejsSha256(text);\n}\n\nfunction truncateToBytes(text: string, maxBytes: number): { text: string; truncated: boolean } {\n // Fast path: cheap upper bound. 1 char ≤ 4 bytes UTF-8.\n if (text.length <= maxBytes / 4) return { text, truncated: false };\n // Build the encoded bytes once.\n const bytes = utf8Encode(text);\n if (bytes.length <= maxBytes) return { text, truncated: false };\n // Find the largest character boundary <= maxBytes.\n let cut = maxBytes;\n // Don't split a multi-byte sequence: walk back until we're at a\n // codepoint boundary (a byte where the top two bits aren't `10`).\n while (cut > 0 && (bytes[cut]! & 0xc0) === 0x80) {\n cut--;\n }\n return { text: utf8Decode(bytes.subarray(0, cut)), truncated: true };\n}\n\nfunction utf8Encode(text: string): Uint8Array {\n if (typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(text);\n }\n // Pure-JS fallback. Should never trigger on Node 18+ or modern browsers.\n const out: number[] = [];\n for (let i = 0; i < text.length; i++) {\n const code = text.charCodeAt(i);\n if (code < 0x80) {\n out.push(code);\n } else if (code < 0x800) {\n out.push(0xc0 | (code >> 6), 0x80 | (code & 0x3f));\n } else {\n out.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 0x3f), 0x80 | (code & 0x3f));\n }\n }\n return new Uint8Array(out);\n}\n\nfunction utf8Decode(bytes: Uint8Array): string {\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder(\"utf-8\").decode(bytes);\n }\n let out = \"\";\n for (let i = 0; i < bytes.length; ) {\n const b = bytes[i]!;\n if (b < 0x80) {\n out += String.fromCharCode(b);\n i++;\n } else if (b < 0xe0) {\n out += String.fromCharCode(((b & 0x1f) << 6) | (bytes[i + 1]! & 0x3f));\n i += 2;\n } else {\n out += String.fromCharCode(\n ((b & 0x0f) << 12) | ((bytes[i + 1]! & 0x3f) << 6) | (bytes[i + 2]! & 0x3f),\n );\n i += 3;\n }\n }\n return out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Pure-JS SHA-256 (used only when node:crypto is unavailable) */\n/* ------------------------------------------------------------------------ */\n\nfunction purejsSha256(text: string): string {\n const K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n ];\n const H = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ];\n\n // Pad message.\n const msg = utf8Encode(text);\n const msgLen = msg.length;\n const bitLen = msgLen * 8;\n const padded = new Uint8Array(((msgLen + 9 + 63) >> 6) << 6);\n padded.set(msg);\n padded[msgLen] = 0x80;\n // 64-bit big-endian length. JS bitwise ops are 32-bit, so split lo/hi via /.\n const lo = (bitLen & 0xffffffff) >>> 0;\n const hi = Math.floor(bitLen / 0x100000000) >>> 0;\n padded[padded.length - 8] = (hi >>> 24) & 0xff;\n padded[padded.length - 7] = (hi >>> 16) & 0xff;\n padded[padded.length - 6] = (hi >>> 8) & 0xff;\n padded[padded.length - 5] = hi & 0xff;\n padded[padded.length - 4] = (lo >>> 24) & 0xff;\n padded[padded.length - 3] = (lo >>> 16) & 0xff;\n padded[padded.length - 2] = (lo >>> 8) & 0xff;\n padded[padded.length - 1] = lo & 0xff;\n\n const W = new Uint32Array(64);\n for (let chunk = 0; chunk < padded.length; chunk += 64) {\n for (let i = 0; i < 16; i++) {\n // `>>> 0` forces unsigned — `(byte << 24)` otherwise produces a signed\n // int when the high bit is set, which corrupts the schedule on bytes ≥ 0x80.\n W[i] =\n ((padded[chunk + i * 4]! << 24) |\n (padded[chunk + i * 4 + 1]! << 16) |\n (padded[chunk + i * 4 + 2]! << 8) |\n padded[chunk + i * 4 + 3]!) >>>\n 0;\n }\n for (let i = 16; i < 64; i++) {\n const s0 = rotr(W[i - 15]!, 7) ^ rotr(W[i - 15]!, 18) ^ (W[i - 15]! >>> 3);\n const s1 = rotr(W[i - 2]!, 17) ^ rotr(W[i - 2]!, 19) ^ (W[i - 2]! >>> 10);\n W[i] = (W[i - 16]! + s0 + W[i - 7]! + s1) >>> 0;\n }\n\n let [a, b, c, d, e, f, g, h] = H;\n\n for (let i = 0; i < 64; i++) {\n const S1 = rotr(e!, 6) ^ rotr(e!, 11) ^ rotr(e!, 25);\n const ch = (e! & f!) ^ (~e! & g!);\n const temp1 = (h! + S1 + ch + K[i]! + W[i]!) >>> 0;\n const S0 = rotr(a!, 2) ^ rotr(a!, 13) ^ rotr(a!, 22);\n const maj = (a! & b!) ^ (a! & c!) ^ (b! & c!);\n const temp2 = (S0 + maj) >>> 0;\n h = g;\n g = f;\n f = e;\n e = (d! + temp1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (temp1 + temp2) >>> 0;\n }\n\n H[0] = (H[0]! + a!) >>> 0;\n H[1] = (H[1]! + b!) >>> 0;\n H[2] = (H[2]! + c!) >>> 0;\n H[3] = (H[3]! + d!) >>> 0;\n H[4] = (H[4]! + e!) >>> 0;\n H[5] = (H[5]! + f!) >>> 0;\n H[6] = (H[6]! + g!) >>> 0;\n H[7] = (H[7]! + h!) >>> 0;\n }\n\n let hex = \"\";\n for (const v of H) {\n hex += v.toString(16).padStart(8, \"0\");\n }\n return hex;\n}\n\nfunction rotr(x: number, n: number): number {\n return ((x >>> n) | (x << (32 - n))) >>> 0;\n}\n"]}