@morsehq-dev/sdk 0.5.0-rc.6 → 0.5.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +11 -10
  2. package/dist/anthropic/index.cjs +11 -11
  3. package/dist/anthropic/index.js +4 -4
  4. package/dist/anthropic-agent-sdk/index.cjs +40 -40
  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 +40 -40
  9. package/dist/browser/anthropic-agent-sdk/index.js +6 -6
  10. package/dist/browser/{chunk-PHE4P3DN.js → chunk-5IMBYZUB.js} +3 -3
  11. package/dist/browser/{chunk-PHE4P3DN.js.map → chunk-5IMBYZUB.js.map} +1 -1
  12. package/dist/browser/{chunk-MIHCAKQ2.js → chunk-7G266PKE.js} +32 -9
  13. package/dist/browser/chunk-7G266PKE.js.map +1 -0
  14. package/dist/browser/{chunk-FDWPKINR.js → chunk-AX6NEG6X.js} +4 -4
  15. package/dist/browser/{chunk-FDWPKINR.js.map → chunk-AX6NEG6X.js.map} +1 -1
  16. package/dist/browser/{chunk-ZAISDHUV.cjs → chunk-E6WORBIU.cjs} +5 -5
  17. package/dist/browser/{chunk-ZAISDHUV.cjs.map → chunk-E6WORBIU.cjs.map} +1 -1
  18. package/dist/{chunk-B3WEUUUK.cjs → browser/chunk-FYIQARMI.cjs} +7 -7
  19. package/dist/browser/{chunk-NK6D2G5O.cjs.map → chunk-FYIQARMI.cjs.map} +1 -1
  20. package/dist/browser/{chunk-WG45SF7N.cjs → chunk-HJTUPXNE.cjs} +31 -8
  21. package/dist/browser/chunk-HJTUPXNE.cjs.map +1 -0
  22. package/dist/browser/{chunk-TGN4FEKB.cjs → chunk-HNOHWDK3.cjs} +12 -12
  23. package/dist/browser/{chunk-TGN4FEKB.cjs.map → chunk-HNOHWDK3.cjs.map} +1 -1
  24. package/dist/{chunk-LEDIWC2M.js → browser/chunk-PIZVCAW7.js} +4 -4
  25. package/dist/browser/{chunk-TIZ5QRK2.js.map → chunk-PIZVCAW7.js.map} +1 -1
  26. package/dist/browser/{chunk-2LZCQD3J.js → chunk-RDNSY73W.js} +3 -3
  27. package/dist/browser/{chunk-2LZCQD3J.js.map → chunk-RDNSY73W.js.map} +1 -1
  28. package/dist/browser/{chunk-IXCAR4UA.js → chunk-TIMAH323.js} +3 -3
  29. package/dist/browser/{chunk-IXCAR4UA.js.map → chunk-TIMAH323.js.map} +1 -1
  30. package/dist/browser/{chunk-JNF26SQM.js → chunk-VSHCKROM.js} +5 -5
  31. package/dist/browser/{chunk-JNF26SQM.js.map → chunk-VSHCKROM.js.map} +1 -1
  32. package/dist/browser/{chunk-PNUCUOUA.cjs → chunk-YXCWAU36.cjs} +15 -15
  33. package/dist/browser/{chunk-PNUCUOUA.cjs.map → chunk-YXCWAU36.cjs.map} +1 -1
  34. package/dist/browser/{chunk-6YPVIGD2.cjs → chunk-Z26QGUMP.cjs} +6 -6
  35. package/dist/browser/{chunk-6YPVIGD2.cjs.map → chunk-Z26QGUMP.cjs.map} +1 -1
  36. package/dist/browser/{chunk-DQ4JWHYH.cjs → chunk-ZOOYJTDT.cjs} +18 -18
  37. package/dist/browser/{chunk-DQ4JWHYH.cjs.map → chunk-ZOOYJTDT.cjs.map} +1 -1
  38. package/dist/browser/index.cjs +189 -124
  39. package/dist/browser/index.cjs.map +1 -1
  40. package/dist/browser/index.js +111 -46
  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 +34 -34
  51. package/dist/browser/openai-agents/index.js +4 -4
  52. package/dist/browser/vercel-ai/index.cjs +14 -14
  53. package/dist/browser/vercel-ai/index.js +3 -3
  54. package/dist/{browser/chunk-NK6D2G5O.cjs → chunk-2UFTRWUS.cjs} +7 -7
  55. package/dist/{chunk-B3WEUUUK.cjs.map → chunk-2UFTRWUS.cjs.map} +1 -1
  56. package/dist/{chunk-DK3RX7RS.js → chunk-4WUG3RMJ.js} +4 -4
  57. package/dist/{chunk-DK3RX7RS.js.map → chunk-4WUG3RMJ.js.map} +1 -1
  58. package/dist/{chunk-QTATKDEI.js → chunk-5MJS5ECA.js} +3 -3
  59. package/dist/{chunk-QTATKDEI.js.map → chunk-5MJS5ECA.js.map} +1 -1
  60. package/dist/{chunk-Z2AYPTB2.js → chunk-62FWHZXN.js} +5 -5
  61. package/dist/{chunk-Z2AYPTB2.js.map → chunk-62FWHZXN.js.map} +1 -1
  62. package/dist/{browser/chunk-TIZ5QRK2.js → chunk-FHQGPQFR.js} +4 -4
  63. package/dist/{chunk-LEDIWC2M.js.map → chunk-FHQGPQFR.js.map} +1 -1
  64. package/dist/{chunk-AT3YR5SP.cjs → chunk-GATTHW3X.cjs} +5 -5
  65. package/dist/{chunk-AT3YR5SP.cjs.map → chunk-GATTHW3X.cjs.map} +1 -1
  66. package/dist/{chunk-T5UFHQLZ.js → chunk-GQVNZPRF.js} +3 -3
  67. package/dist/{chunk-T5UFHQLZ.js.map → chunk-GQVNZPRF.js.map} +1 -1
  68. package/dist/{chunk-4QY5O46P.cjs → chunk-HCN6Z56N.cjs} +18 -18
  69. package/dist/{chunk-4QY5O46P.cjs.map → chunk-HCN6Z56N.cjs.map} +1 -1
  70. package/dist/{chunk-K4FHTOBB.cjs → chunk-KALB7HJ5.cjs} +12 -12
  71. package/dist/{chunk-K4FHTOBB.cjs.map → chunk-KALB7HJ5.cjs.map} +1 -1
  72. package/dist/{chunk-TEWSIQ6E.cjs → chunk-QLJAATBR.cjs} +6 -6
  73. package/dist/{chunk-TEWSIQ6E.cjs.map → chunk-QLJAATBR.cjs.map} +1 -1
  74. package/dist/{chunk-ZFZTJXIO.cjs → chunk-XBI4AMCW.cjs} +15 -15
  75. package/dist/{chunk-ZFZTJXIO.cjs.map → chunk-XBI4AMCW.cjs.map} +1 -1
  76. package/dist/{chunk-5YJXFU5U.js → chunk-YGKEP2GY.js} +32 -9
  77. package/dist/chunk-YGKEP2GY.js.map +1 -0
  78. package/dist/{chunk-2GWOF5JM.js → chunk-ZMRXUZ5L.js} +3 -3
  79. package/dist/{chunk-2GWOF5JM.js.map → chunk-ZMRXUZ5L.js.map} +1 -1
  80. package/dist/{chunk-UV5FUVNK.cjs → chunk-ZTBAMSCC.cjs} +31 -8
  81. package/dist/chunk-ZTBAMSCC.cjs.map +1 -0
  82. package/dist/index.cjs +196 -131
  83. package/dist/index.cjs.map +1 -1
  84. package/dist/index.d.cts +11 -0
  85. package/dist/index.d.ts +11 -0
  86. package/dist/index.js +112 -47
  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 +34 -34
  97. package/dist/openai-agents/index.js +4 -4
  98. package/dist/vercel-ai/index.cjs +14 -14
  99. package/dist/vercel-ai/index.js +3 -3
  100. package/package.json +1 -1
  101. package/dist/browser/chunk-MIHCAKQ2.js.map +0 -1
  102. package/dist/browser/chunk-WG45SF7N.cjs.map +0 -1
  103. package/dist/chunk-5YJXFU5U.js.map +0 -1
  104. package/dist/chunk-UV5FUVNK.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/_agent-sdk-common/redaction.ts"],"names":["absorbErrorsSync"],"mappings":"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","file":"chunk-NK6D2G5O.cjs","sourcesContent":["/**\n * Agent-SDK-specific redaction layered on top of `_internal/redaction.ts`.\n *\n * Phase 13 W1.2. The three TS agent-SDK adapters (Anthropic Agent SDK,\n * OpenAI Agents SDK, LangGraph JS) all summarize tool inputs/outputs and\n * content blocks before stamping them onto span attributes. This module\n * provides the shared helpers they call.\n *\n * Rules (see openspec/changes/2026-05-26-phase-13-ts-agent-sdk-adapters/\n * design.md §\"redaction.ts\"):\n * - Tool inputs truncated to 2 KB by default; tool outputs to 4 KB.\n * - Base64 / data: URL blobs >= 4 KB are replaced with a hashed marker\n * `<blob:sha256:HEX:LEN>` rather than stored inline.\n * - Binary content blocks (image / audio / video / screenshot) are\n * replaced by `{kind, hash, byte_len, dims?, mime?}` summaries.\n *\n * All public helpers are wrapped in `absorbErrorsSync` so they cannot\n * throw at the caller — telemetry must never break the host application.\n * On absorbed error: strings degrade to `\"<redaction_error>\"`,\n * `summarizeBinaryBlock` returns `null`, `redactContentBlocks` returns\n * its input unchanged.\n *\n * NB: The sha256 + canonical-JSON helpers below are duplicated from\n * `src/anthropic/index.ts` rather than imported. This is deliberate — the\n * Phase 13 W1 tasks are file-disjoint and cannot reach across into\n * `anthropic/`. The duplication is small and the algorithms are stable.\n */\n\nimport { absorbErrorsSync } from \"../_internal/errors\";\n\n/* ------------------------------------------------------------------------ */\n/* Public constants */\n/* ------------------------------------------------------------------------ */\n\nexport const DEFAULT_TOOL_ARG_MAX_BYTES = 2048;\nexport const DEFAULT_TOOL_OUTPUT_MAX_BYTES = 4096;\nexport const DEFAULT_BLOB_TRIGGER_BYTES = 4096;\n\n/* ------------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------------ */\n\nexport interface SummarizeOptions {\n /** Maximum byte length of the returned string. */\n maxBytes?: number;\n /**\n * If true (default), data: URLs and >= DEFAULT_BLOB_TRIGGER_BYTES base64\n * runs are replaced with `<blob:sha256:HEX:LEN>` markers before\n * truncation. Set false to keep blobs inline (still subject to\n * truncation).\n */\n stripBlobs?: boolean;\n}\n\nexport interface BinaryBlockSummary {\n kind: \"image\" | \"audio\" | \"video\" | \"screenshot\" | \"binary\";\n /** sha256 hex of the decoded (or, if not base64, raw) bytes. */\n hash: string;\n byte_len: number;\n dims?: { width: number; height: number };\n mime?: string;\n}\n\n/* ------------------------------------------------------------------------ */\n/* summarizeToolInput / summarizeToolOutput */\n/* ------------------------------------------------------------------------ */\n\nconst REDACTION_ERROR_FALLBACK = \"<redaction_error>\";\n\nfunction summarizeImpl(value: unknown, opts: SummarizeOptions, defaultMax: number): string {\n const maxBytes = opts.maxBytes ?? defaultMax;\n const stripBlobs = opts.stripBlobs !== false;\n\n // Stringify with stable key order.\n let str: string;\n if (typeof value === \"string\") {\n str = value;\n } else if (value === undefined) {\n str = \"undefined\";\n } else {\n str = canonicalJsonStringify(value);\n }\n\n if (stripBlobs) {\n str = stripBlobsFromString(str);\n }\n\n return truncateUtf8(str, maxBytes);\n}\n\nconst summarizeToolInputInner = (value: unknown, opts?: SummarizeOptions): string =>\n summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_ARG_MAX_BYTES);\n\nconst summarizeToolOutputInner = (value: unknown, opts?: SummarizeOptions): string =>\n summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_OUTPUT_MAX_BYTES);\n\nconst safeSummarizeToolInput = absorbErrorsSync(summarizeToolInputInner, {\n fingerprint: \"agent-sdk.redaction.summarizeToolInput\",\n});\n\nconst safeSummarizeToolOutput = absorbErrorsSync(summarizeToolOutputInner, {\n fingerprint: \"agent-sdk.redaction.summarizeToolOutput\",\n});\n\n/**\n * Reduce an arbitrary tool argument value to a small string suitable for\n * a span attribute. JSON-canonicalized (sorted keys), with optional blob\n * stripping, then truncated to `maxBytes` UTF-8 bytes.\n */\nexport function summarizeToolInput(value: unknown, opts?: SummarizeOptions): string {\n const out = safeSummarizeToolInput(value, opts);\n return out === undefined ? REDACTION_ERROR_FALLBACK : out;\n}\n\n/**\n * Same shape as `summarizeToolInput` but defaults to a larger byte cap\n * (`DEFAULT_TOOL_OUTPUT_MAX_BYTES`) appropriate for tool *results*.\n */\nexport function summarizeToolOutput(value: unknown, opts?: SummarizeOptions): string {\n const out = safeSummarizeToolOutput(value, opts);\n return out === undefined ? REDACTION_ERROR_FALLBACK : out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* summarizeBinaryBlock */\n/* ------------------------------------------------------------------------ */\n\nconst BINARY_KINDS: ReadonlySet<string> = new Set([\"image\", \"audio\", \"video\", \"screenshot\"]);\n\nfunction summarizeBinaryBlockInner(block: unknown): BinaryBlockSummary | null {\n if (block === null || typeof block !== \"object\") return null;\n const b = block as Record<string, unknown>;\n const type = typeof b.type === \"string\" ? b.type : null;\n if (type === null || !BINARY_KINDS.has(type)) return null;\n\n const kind = type as BinaryBlockSummary[\"kind\"];\n\n // Try to extract base64 payload + mime from a variety of shapes.\n let base64: string | null = null;\n let mime: string | undefined;\n\n // Shape 1: { source: { type: \"base64\", data: \"...\", media_type: \"image/png\" } }\n const source = b.source;\n if (source !== null && typeof source === \"object\") {\n const s = source as Record<string, unknown>;\n if (typeof s.data === \"string\") base64 = s.data;\n if (typeof s.media_type === \"string\") mime = s.media_type;\n else if (typeof s.mediaType === \"string\") mime = s.mediaType;\n }\n\n // Shape 2: { url: \"data:image/jpg;base64,...\" } or { dataUrl: \"...\" }\n if (base64 === null) {\n const url =\n typeof b.url === \"string\" ? b.url : typeof b.dataUrl === \"string\" ? b.dataUrl : null;\n if (url !== null && url.startsWith(\"data:\")) {\n const parsed = parseDataUrl(url);\n if (parsed !== null) {\n base64 = parsed.base64;\n if (mime === undefined) mime = parsed.mime;\n }\n }\n }\n\n // Shape 3: raw { data: \"...\" } at the top level.\n if (base64 === null && typeof b.data === \"string\") {\n base64 = b.data;\n }\n\n // Dimensions (optional).\n let dims: { width: number; height: number } | undefined;\n const w = b.width;\n const h = b.height;\n if (typeof w === \"number\" && typeof h === \"number\") {\n dims = { width: w, height: h };\n }\n\n // Hash + length. If we have base64, decode it; otherwise hash whatever\n // string we found as bytes. If we have neither, return a zero-length\n // summary — we still know the block was a binary type.\n let hash: string;\n let byte_len: number;\n if (base64 !== null) {\n const bytes = decodeBase64ToBytes(base64);\n hash = sha256HexBytes(bytes);\n byte_len = bytes.length;\n } else {\n hash = sha256Hex(\"\");\n byte_len = 0;\n }\n\n const out: BinaryBlockSummary = { kind, hash, byte_len };\n if (dims !== undefined) out.dims = dims;\n if (mime !== undefined) out.mime = mime;\n return out;\n}\n\nconst safeSummarizeBinaryBlock = absorbErrorsSync(summarizeBinaryBlockInner, {\n fingerprint: \"agent-sdk.redaction.summarizeBinaryBlock\",\n});\n\n/**\n * Recognize a content block of type image/audio/video/screenshot and\n * return a hashed summary instead of the raw bytes. Returns null if the\n * block isn't a recognizable binary block (or on internal error).\n */\nexport function summarizeBinaryBlock(block: unknown): BinaryBlockSummary | null {\n const out = safeSummarizeBinaryBlock(block);\n return out === undefined ? null : out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* redactContentBlocks */\n/* ------------------------------------------------------------------------ */\n\nfunction redactContentBlocksInner(blocks: unknown[]): unknown[] {\n return blocks.map((block) => {\n const summary = summarizeBinaryBlockInner(block);\n return summary === null ? block : summary;\n });\n}\n\nconst safeRedactContentBlocks = absorbErrorsSync(redactContentBlocksInner, {\n fingerprint: \"agent-sdk.redaction.redactContentBlocks\",\n});\n\n/**\n * Walk a content-blocks array and replace any binary blocks with their\n * `BinaryBlockSummary`. Non-binary blocks pass through unchanged.\n */\nexport function redactContentBlocks(blocks: unknown[]): unknown[] {\n const out = safeRedactContentBlocks(blocks);\n return out === undefined ? blocks : out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Blob stripping */\n/* ------------------------------------------------------------------------ */\n\n/** Match `data:<mime>;base64,<payload>` URLs of any length. */\nconst DATA_URL_RE = /data:[A-Za-z0-9.+/-]*(?:;[A-Za-z0-9.=+/-]+)*?;base64,[A-Za-z0-9+/=]+/g;\n\n/**\n * Match a long, unbroken run of base64 characters (no whitespace) that\n * could plausibly be a blob. The threshold here is deliberately small —\n * the byte-length check after the match decides whether it really gets\n * replaced.\n */\nconst LONG_BASE64_RE = /[A-Za-z0-9+/]{100,}={0,2}/g;\n\nfunction stripBlobsFromString(s: string): string {\n // Pass 1: data: URLs (any length >= trigger).\n let out = s.replace(DATA_URL_RE, (match) => {\n if (match.length < DEFAULT_BLOB_TRIGGER_BYTES) return match;\n const parsed = parseDataUrl(match);\n if (parsed === null) {\n return blobMarker(sha256Hex(match), match.length);\n }\n const bytes = decodeBase64ToBytes(parsed.base64);\n return blobMarker(sha256HexBytes(bytes), bytes.length);\n });\n\n // Pass 2: long base64 runs not embedded in a data: URL.\n out = out.replace(LONG_BASE64_RE, (match) => {\n if (match.length < DEFAULT_BLOB_TRIGGER_BYTES) return match;\n const bytes = decodeBase64ToBytes(match);\n return blobMarker(sha256HexBytes(bytes), bytes.length);\n });\n\n return out;\n}\n\nfunction blobMarker(hashHex: string, byteLen: number): string {\n return `<blob:sha256:${hashHex}:${byteLen}>`;\n}\n\nfunction parseDataUrl(url: string): { mime: string; base64: string } | null {\n // data:<mime>[;params];base64,<payload>\n if (!url.startsWith(\"data:\")) return null;\n const comma = url.indexOf(\",\");\n if (comma < 0) return null;\n const header = url.slice(5, comma);\n const payload = url.slice(comma + 1);\n if (!header.includes(\"base64\")) return null;\n // Strip any `;base64` and any other params.\n const parts = header.split(\";\");\n const mime = parts[0] !== undefined && parts[0] !== \"\" ? parts[0] : \"application/octet-stream\";\n return { mime, base64: payload };\n}\n\n/* ------------------------------------------------------------------------ */\n/* Base64 decode */\n/* ------------------------------------------------------------------------ */\n\nfunction decodeBase64ToBytes(b64: string): Uint8Array {\n // Strip whitespace.\n const cleaned = b64.replace(/\\s+/g, \"\");\n\n // Prefer Node's Buffer.\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 bufferMod = dynamicRequire(\"node:buffer\") as any;\n if (bufferMod?.Buffer) {\n const buf = bufferMod.Buffer.from(cleaned, \"base64\") as Uint8Array;\n return new Uint8Array(buf);\n }\n }\n } catch {\n // fall through\n }\n\n // Browser: atob.\n try {\n if (typeof atob === \"function\") {\n const bin = atob(cleaned);\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n return out;\n }\n } catch {\n // fall through\n }\n\n // Last-resort pure-JS decoder.\n return pureBase64Decode(cleaned);\n}\n\nconst B64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst B64_LOOKUP: Record<string, number> = (() => {\n const m: Record<string, number> = {};\n for (let i = 0; i < B64_ALPHABET.length; i++) m[B64_ALPHABET[i]!] = i;\n return m;\n})();\n\nfunction pureBase64Decode(s: string): Uint8Array {\n const stripped = s.replace(/=+$/, \"\");\n const out: number[] = [];\n let buffer = 0;\n let bits = 0;\n for (let i = 0; i < stripped.length; i++) {\n const ch = stripped[i]!;\n const v = B64_LOOKUP[ch];\n if (v === undefined) continue; // skip invalid\n buffer = (buffer << 6) | v;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out.push((buffer >> bits) & 0xff);\n }\n }\n return new Uint8Array(out);\n}\n\n/* ------------------------------------------------------------------------ */\n/* Canonical JSON stringify (duplicated from anthropic/index.ts) */\n/* ------------------------------------------------------------------------ */\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/* UTF-8 byte truncation */\n/* ------------------------------------------------------------------------ */\n\nfunction truncateUtf8(text: string, maxBytes: number): string {\n if (maxBytes <= 0) return \"\";\n // Fast path: cheap upper bound.\n if (text.length <= maxBytes / 4) return text;\n const bytes = utf8Encode(text);\n if (bytes.length <= maxBytes) return text;\n let cut = maxBytes;\n while (cut > 0 && (bytes[cut]! & 0xc0) === 0x80) {\n cut--;\n }\n return utf8Decode(bytes.subarray(0, cut));\n}\n\nfunction utf8Encode(text: string): Uint8Array {\n if (typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(text);\n }\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/* SHA-256 (duplicated from anthropic/index.ts) */\n/* ------------------------------------------------------------------------ */\n\nfunction sha256Hex(text: string): string {\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 return purejsSha256Bytes(utf8Encode(text));\n}\n\nfunction sha256HexBytes(bytes: Uint8Array): string {\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(bytes).digest(\"hex\");\n }\n }\n } catch {\n // fall through\n }\n return purejsSha256Bytes(bytes);\n}\n\nfunction purejsSha256Bytes(msg: Uint8Array): 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 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 BE 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\n // signed int when the high bit is set, which corrupts the schedule.\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/_agent-sdk-common/redaction.ts"],"names":["absorbErrorsSync"],"mappings":"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","file":"chunk-FYIQARMI.cjs","sourcesContent":["/**\n * Agent-SDK-specific redaction layered on top of `_internal/redaction.ts`.\n *\n * Phase 13 W1.2. The three TS agent-SDK adapters (Anthropic Agent SDK,\n * OpenAI Agents SDK, LangGraph JS) all summarize tool inputs/outputs and\n * content blocks before stamping them onto span attributes. This module\n * provides the shared helpers they call.\n *\n * Rules (see openspec/changes/2026-05-26-phase-13-ts-agent-sdk-adapters/\n * design.md §\"redaction.ts\"):\n * - Tool inputs truncated to 2 KB by default; tool outputs to 4 KB.\n * - Base64 / data: URL blobs >= 4 KB are replaced with a hashed marker\n * `<blob:sha256:HEX:LEN>` rather than stored inline.\n * - Binary content blocks (image / audio / video / screenshot) are\n * replaced by `{kind, hash, byte_len, dims?, mime?}` summaries.\n *\n * All public helpers are wrapped in `absorbErrorsSync` so they cannot\n * throw at the caller — telemetry must never break the host application.\n * On absorbed error: strings degrade to `\"<redaction_error>\"`,\n * `summarizeBinaryBlock` returns `null`, `redactContentBlocks` returns\n * its input unchanged.\n *\n * NB: The sha256 + canonical-JSON helpers below are duplicated from\n * `src/anthropic/index.ts` rather than imported. This is deliberate — the\n * Phase 13 W1 tasks are file-disjoint and cannot reach across into\n * `anthropic/`. The duplication is small and the algorithms are stable.\n */\n\nimport { absorbErrorsSync } from \"../_internal/errors\";\n\n/* ------------------------------------------------------------------------ */\n/* Public constants */\n/* ------------------------------------------------------------------------ */\n\nexport const DEFAULT_TOOL_ARG_MAX_BYTES = 2048;\nexport const DEFAULT_TOOL_OUTPUT_MAX_BYTES = 4096;\nexport const DEFAULT_BLOB_TRIGGER_BYTES = 4096;\n\n/* ------------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------------ */\n\nexport interface SummarizeOptions {\n /** Maximum byte length of the returned string. */\n maxBytes?: number;\n /**\n * If true (default), data: URLs and >= DEFAULT_BLOB_TRIGGER_BYTES base64\n * runs are replaced with `<blob:sha256:HEX:LEN>` markers before\n * truncation. Set false to keep blobs inline (still subject to\n * truncation).\n */\n stripBlobs?: boolean;\n}\n\nexport interface BinaryBlockSummary {\n kind: \"image\" | \"audio\" | \"video\" | \"screenshot\" | \"binary\";\n /** sha256 hex of the decoded (or, if not base64, raw) bytes. */\n hash: string;\n byte_len: number;\n dims?: { width: number; height: number };\n mime?: string;\n}\n\n/* ------------------------------------------------------------------------ */\n/* summarizeToolInput / summarizeToolOutput */\n/* ------------------------------------------------------------------------ */\n\nconst REDACTION_ERROR_FALLBACK = \"<redaction_error>\";\n\nfunction summarizeImpl(value: unknown, opts: SummarizeOptions, defaultMax: number): string {\n const maxBytes = opts.maxBytes ?? defaultMax;\n const stripBlobs = opts.stripBlobs !== false;\n\n // Stringify with stable key order.\n let str: string;\n if (typeof value === \"string\") {\n str = value;\n } else if (value === undefined) {\n str = \"undefined\";\n } else {\n str = canonicalJsonStringify(value);\n }\n\n if (stripBlobs) {\n str = stripBlobsFromString(str);\n }\n\n return truncateUtf8(str, maxBytes);\n}\n\nconst summarizeToolInputInner = (value: unknown, opts?: SummarizeOptions): string =>\n summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_ARG_MAX_BYTES);\n\nconst summarizeToolOutputInner = (value: unknown, opts?: SummarizeOptions): string =>\n summarizeImpl(value, opts ?? {}, DEFAULT_TOOL_OUTPUT_MAX_BYTES);\n\nconst safeSummarizeToolInput = absorbErrorsSync(summarizeToolInputInner, {\n fingerprint: \"agent-sdk.redaction.summarizeToolInput\",\n});\n\nconst safeSummarizeToolOutput = absorbErrorsSync(summarizeToolOutputInner, {\n fingerprint: \"agent-sdk.redaction.summarizeToolOutput\",\n});\n\n/**\n * Reduce an arbitrary tool argument value to a small string suitable for\n * a span attribute. JSON-canonicalized (sorted keys), with optional blob\n * stripping, then truncated to `maxBytes` UTF-8 bytes.\n */\nexport function summarizeToolInput(value: unknown, opts?: SummarizeOptions): string {\n const out = safeSummarizeToolInput(value, opts);\n return out === undefined ? REDACTION_ERROR_FALLBACK : out;\n}\n\n/**\n * Same shape as `summarizeToolInput` but defaults to a larger byte cap\n * (`DEFAULT_TOOL_OUTPUT_MAX_BYTES`) appropriate for tool *results*.\n */\nexport function summarizeToolOutput(value: unknown, opts?: SummarizeOptions): string {\n const out = safeSummarizeToolOutput(value, opts);\n return out === undefined ? REDACTION_ERROR_FALLBACK : out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* summarizeBinaryBlock */\n/* ------------------------------------------------------------------------ */\n\nconst BINARY_KINDS: ReadonlySet<string> = new Set([\"image\", \"audio\", \"video\", \"screenshot\"]);\n\nfunction summarizeBinaryBlockInner(block: unknown): BinaryBlockSummary | null {\n if (block === null || typeof block !== \"object\") return null;\n const b = block as Record<string, unknown>;\n const type = typeof b.type === \"string\" ? b.type : null;\n if (type === null || !BINARY_KINDS.has(type)) return null;\n\n const kind = type as BinaryBlockSummary[\"kind\"];\n\n // Try to extract base64 payload + mime from a variety of shapes.\n let base64: string | null = null;\n let mime: string | undefined;\n\n // Shape 1: { source: { type: \"base64\", data: \"...\", media_type: \"image/png\" } }\n const source = b.source;\n if (source !== null && typeof source === \"object\") {\n const s = source as Record<string, unknown>;\n if (typeof s.data === \"string\") base64 = s.data;\n if (typeof s.media_type === \"string\") mime = s.media_type;\n else if (typeof s.mediaType === \"string\") mime = s.mediaType;\n }\n\n // Shape 2: { url: \"data:image/jpg;base64,...\" } or { dataUrl: \"...\" }\n if (base64 === null) {\n const url =\n typeof b.url === \"string\" ? b.url : typeof b.dataUrl === \"string\" ? b.dataUrl : null;\n if (url !== null && url.startsWith(\"data:\")) {\n const parsed = parseDataUrl(url);\n if (parsed !== null) {\n base64 = parsed.base64;\n if (mime === undefined) mime = parsed.mime;\n }\n }\n }\n\n // Shape 3: raw { data: \"...\" } at the top level.\n if (base64 === null && typeof b.data === \"string\") {\n base64 = b.data;\n }\n\n // Dimensions (optional).\n let dims: { width: number; height: number } | undefined;\n const w = b.width;\n const h = b.height;\n if (typeof w === \"number\" && typeof h === \"number\") {\n dims = { width: w, height: h };\n }\n\n // Hash + length. If we have base64, decode it; otherwise hash whatever\n // string we found as bytes. If we have neither, return a zero-length\n // summary — we still know the block was a binary type.\n let hash: string;\n let byte_len: number;\n if (base64 !== null) {\n const bytes = decodeBase64ToBytes(base64);\n hash = sha256HexBytes(bytes);\n byte_len = bytes.length;\n } else {\n hash = sha256Hex(\"\");\n byte_len = 0;\n }\n\n const out: BinaryBlockSummary = { kind, hash, byte_len };\n if (dims !== undefined) out.dims = dims;\n if (mime !== undefined) out.mime = mime;\n return out;\n}\n\nconst safeSummarizeBinaryBlock = absorbErrorsSync(summarizeBinaryBlockInner, {\n fingerprint: \"agent-sdk.redaction.summarizeBinaryBlock\",\n});\n\n/**\n * Recognize a content block of type image/audio/video/screenshot and\n * return a hashed summary instead of the raw bytes. Returns null if the\n * block isn't a recognizable binary block (or on internal error).\n */\nexport function summarizeBinaryBlock(block: unknown): BinaryBlockSummary | null {\n const out = safeSummarizeBinaryBlock(block);\n return out === undefined ? null : out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* redactContentBlocks */\n/* ------------------------------------------------------------------------ */\n\nfunction redactContentBlocksInner(blocks: unknown[]): unknown[] {\n return blocks.map((block) => {\n const summary = summarizeBinaryBlockInner(block);\n return summary === null ? block : summary;\n });\n}\n\nconst safeRedactContentBlocks = absorbErrorsSync(redactContentBlocksInner, {\n fingerprint: \"agent-sdk.redaction.redactContentBlocks\",\n});\n\n/**\n * Walk a content-blocks array and replace any binary blocks with their\n * `BinaryBlockSummary`. Non-binary blocks pass through unchanged.\n */\nexport function redactContentBlocks(blocks: unknown[]): unknown[] {\n const out = safeRedactContentBlocks(blocks);\n return out === undefined ? blocks : out;\n}\n\n/* ------------------------------------------------------------------------ */\n/* Blob stripping */\n/* ------------------------------------------------------------------------ */\n\n/** Match `data:<mime>;base64,<payload>` URLs of any length. */\nconst DATA_URL_RE = /data:[A-Za-z0-9.+/-]*(?:;[A-Za-z0-9.=+/-]+)*?;base64,[A-Za-z0-9+/=]+/g;\n\n/**\n * Match a long, unbroken run of base64 characters (no whitespace) that\n * could plausibly be a blob. The threshold here is deliberately small —\n * the byte-length check after the match decides whether it really gets\n * replaced.\n */\nconst LONG_BASE64_RE = /[A-Za-z0-9+/]{100,}={0,2}/g;\n\nfunction stripBlobsFromString(s: string): string {\n // Pass 1: data: URLs (any length >= trigger).\n let out = s.replace(DATA_URL_RE, (match) => {\n if (match.length < DEFAULT_BLOB_TRIGGER_BYTES) return match;\n const parsed = parseDataUrl(match);\n if (parsed === null) {\n return blobMarker(sha256Hex(match), match.length);\n }\n const bytes = decodeBase64ToBytes(parsed.base64);\n return blobMarker(sha256HexBytes(bytes), bytes.length);\n });\n\n // Pass 2: long base64 runs not embedded in a data: URL.\n out = out.replace(LONG_BASE64_RE, (match) => {\n if (match.length < DEFAULT_BLOB_TRIGGER_BYTES) return match;\n const bytes = decodeBase64ToBytes(match);\n return blobMarker(sha256HexBytes(bytes), bytes.length);\n });\n\n return out;\n}\n\nfunction blobMarker(hashHex: string, byteLen: number): string {\n return `<blob:sha256:${hashHex}:${byteLen}>`;\n}\n\nfunction parseDataUrl(url: string): { mime: string; base64: string } | null {\n // data:<mime>[;params];base64,<payload>\n if (!url.startsWith(\"data:\")) return null;\n const comma = url.indexOf(\",\");\n if (comma < 0) return null;\n const header = url.slice(5, comma);\n const payload = url.slice(comma + 1);\n if (!header.includes(\"base64\")) return null;\n // Strip any `;base64` and any other params.\n const parts = header.split(\";\");\n const mime = parts[0] !== undefined && parts[0] !== \"\" ? parts[0] : \"application/octet-stream\";\n return { mime, base64: payload };\n}\n\n/* ------------------------------------------------------------------------ */\n/* Base64 decode */\n/* ------------------------------------------------------------------------ */\n\nfunction decodeBase64ToBytes(b64: string): Uint8Array {\n // Strip whitespace.\n const cleaned = b64.replace(/\\s+/g, \"\");\n\n // Prefer Node's Buffer.\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 bufferMod = dynamicRequire(\"node:buffer\") as any;\n if (bufferMod?.Buffer) {\n const buf = bufferMod.Buffer.from(cleaned, \"base64\") as Uint8Array;\n return new Uint8Array(buf);\n }\n }\n } catch {\n // fall through\n }\n\n // Browser: atob.\n try {\n if (typeof atob === \"function\") {\n const bin = atob(cleaned);\n const out = new Uint8Array(bin.length);\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);\n return out;\n }\n } catch {\n // fall through\n }\n\n // Last-resort pure-JS decoder.\n return pureBase64Decode(cleaned);\n}\n\nconst B64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst B64_LOOKUP: Record<string, number> = (() => {\n const m: Record<string, number> = {};\n for (let i = 0; i < B64_ALPHABET.length; i++) m[B64_ALPHABET[i]!] = i;\n return m;\n})();\n\nfunction pureBase64Decode(s: string): Uint8Array {\n const stripped = s.replace(/=+$/, \"\");\n const out: number[] = [];\n let buffer = 0;\n let bits = 0;\n for (let i = 0; i < stripped.length; i++) {\n const ch = stripped[i]!;\n const v = B64_LOOKUP[ch];\n if (v === undefined) continue; // skip invalid\n buffer = (buffer << 6) | v;\n bits += 6;\n if (bits >= 8) {\n bits -= 8;\n out.push((buffer >> bits) & 0xff);\n }\n }\n return new Uint8Array(out);\n}\n\n/* ------------------------------------------------------------------------ */\n/* Canonical JSON stringify (duplicated from anthropic/index.ts) */\n/* ------------------------------------------------------------------------ */\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/* UTF-8 byte truncation */\n/* ------------------------------------------------------------------------ */\n\nfunction truncateUtf8(text: string, maxBytes: number): string {\n if (maxBytes <= 0) return \"\";\n // Fast path: cheap upper bound.\n if (text.length <= maxBytes / 4) return text;\n const bytes = utf8Encode(text);\n if (bytes.length <= maxBytes) return text;\n let cut = maxBytes;\n while (cut > 0 && (bytes[cut]! & 0xc0) === 0x80) {\n cut--;\n }\n return utf8Decode(bytes.subarray(0, cut));\n}\n\nfunction utf8Encode(text: string): Uint8Array {\n if (typeof TextEncoder !== \"undefined\") {\n return new TextEncoder().encode(text);\n }\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/* SHA-256 (duplicated from anthropic/index.ts) */\n/* ------------------------------------------------------------------------ */\n\nfunction sha256Hex(text: string): string {\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 return purejsSha256Bytes(utf8Encode(text));\n}\n\nfunction sha256HexBytes(bytes: Uint8Array): string {\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(bytes).digest(\"hex\");\n }\n }\n } catch {\n // fall through\n }\n return purejsSha256Bytes(bytes);\n}\n\nfunction purejsSha256Bytes(msg: Uint8Array): 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 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 BE 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\n // signed int when the high bit is set, which corrupts the schedule.\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"]}
@@ -240,7 +240,7 @@ function redactValue(value, config, depth = 0) {
240
240
  }
241
241
  return value;
242
242
  }
243
- var PATTERN_ORDER, MANDATORY_PATTERNS, DEFAULT_OFF_PATTERNS, SHORT_KEYS, PATTERNS, EXTRA_PATTERN_CAP, EXTRA_PATTERN_CHAR_CAP, MAX_DEPTH;
243
+ var PATTERN_ORDER, MANDATORY_PATTERNS, DEFAULT_OFF_PATTERNS, SHORT_KEYS, SECRET_ASSIGNMENT_SOURCE, PATTERNS, EXTRA_PATTERN_CAP, EXTRA_PATTERN_CHAR_CAP, MAX_DEPTH;
244
244
  var init_redaction = __esm({
245
245
  "src/_internal/redaction.ts"() {
246
246
  PATTERN_ORDER = [
@@ -251,7 +251,10 @@ var init_redaction = __esm({
251
251
  "phone_us",
252
252
  "phone_e164",
253
253
  "ssn_us",
254
- "ip_address"
254
+ "ip_address",
255
+ // Last: the value-shaped patterns above are more specific, so a JWT inside
256
+ // `authorization: Bearer eyJ...` gets its own tag before this one runs.
257
+ "secret_assignment"
255
258
  ];
256
259
  MANDATORY_PATTERNS = /* @__PURE__ */ new Set([
257
260
  "api_key_prefixed",
@@ -268,8 +271,13 @@ var init_redaction = __esm({
268
271
  phone_us: "phone",
269
272
  phone_e164: "phone",
270
273
  ssn_us: "ssn",
271
- ip_address: "ip"
274
+ ip_address: "ip",
275
+ secret_assignment: "secret"
276
+ // pragma: allowlist secret — a label, not a value
272
277
  };
278
+ SECRET_ASSIGNMENT_SOURCE = // Compound keys accept `=` or `:`; bare `secret` requires `=`, because with
279
+ // `:` it is more often a marker (`k8s-secret: mounted`) than an assignment.
280
+ `(?:(?:password|passwd|pwd|client[-_]?secret|secret[-_]?key|private[-_]?key|access[-_]?key|api[-_]?key|auth[-_]?token|access[-_]?token|refresh[-_]?token|id[-_]?token|session[-_]?token|authorization|credentials?)["']?\\s*[=:]|\\bsecret["']?\\s*=)\\s*(?:bearer\\s+)?(?:"[^"]*"|'[^']*'|\\S+)`;
273
281
  PATTERNS = {
274
282
  api_key_prefixed: new RegExp(
275
283
  "\\b(?:sk-[A-Za-z0-9_-]{20,}|sk_(?:live|test)_[A-Za-z0-9]{20,}|mhq_[A-Za-z0-9]{20,}|av_[A-Za-z0-9]{20,}|ghp_[A-Za-z0-9]{36}|gho_[A-Za-z0-9]{36}|ghu_[A-Za-z0-9]{36}|ghs_[A-Za-z0-9]{36}|ghr_[A-Za-z0-9]{36}|xox[bopsa]-[0-9A-Za-z\\-]{10,}|(?:AKIA|ASIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASCA)[0-9A-Z]{16})\\b",
@@ -300,7 +308,17 @@ var init_redaction = __esm({
300
308
  ip_address: new RegExp(
301
309
  "\\b(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}|(?:[A-F0-9]{1,4}:){2,7}[A-F0-9]{1,4})\\b",
302
310
  "gi"
303
- )
311
+ ),
312
+ // MHQ-973 — key-context secret assignment. Every pattern above is
313
+ // VALUE-shaped: it recognises a credential by its own format. That cannot
314
+ // catch `password=hunter2` — `hunter2` is an ordinary word, and only the KEY
315
+ // marks it as a secret.
316
+ //
317
+ // Deliberately excludes a bare `token`: this is an LLM-observability SDK, and
318
+ // `input_tokens=100` / `max_tokens=4096` are core telemetry. Only unambiguous
319
+ // `*_token` compounds match. No leading `\\b` either, so `PGPASSWORD=` and
320
+ // `MYSQL_PWD=` are caught; the `[=:]` anchor is what prevents false positives.
321
+ secret_assignment: new RegExp(SECRET_ASSIGNMENT_SOURCE, "gi")
304
322
  };
305
323
  EXTRA_PATTERN_CAP = 10;
306
324
  EXTRA_PATTERN_CHAR_CAP = 256;
@@ -395,6 +413,7 @@ function redactedMessage(error) {
395
413
  const out = redactValue(raw, activeRedactionConfig);
396
414
  raw = typeof out === "string" ? out : String(out);
397
415
  }
416
+ raw = raw.replace(new RegExp(SECRET_ASSIGNMENT_SOURCE, "gi"), "[REDACTED:secret]");
398
417
  } catch {
399
418
  return "<redaction unavailable>";
400
419
  }
@@ -588,12 +607,12 @@ function _resetForTesting() {
588
607
  level = LEVEL_ERROR;
589
608
  activeRedactionConfig = null;
590
609
  }
591
- var SDK_VERSION, LEVEL_OFF, LEVEL_ERROR, LEVEL_DEBUG, VALID_LEVELS, level, RATE_WINDOW_MS, RATE_LIMIT_PER_WINDOW, RATE_LIMIT_PER_WINDOW_DEBUG, rateBuckets, LOCAL_LOG_WINDOW_MS, LOCAL_LOG_LIMIT_PER_WINDOW, localLogBuckets, MAX_STACK_ENTRIES, MAX_MESSAGE_CHARS, MAX_BATCH_EVENTS, ALLOWED_EXTRA_KEYS, DIAGNOSTICS_PATH, MAX_PENDING, FLUSH_INTERVAL_MS, BREAKER_THRESHOLD, BREAKER_COOLDOWN_MS; exports.REASON_QUEUE_FULL = void 0; exports.REASON_RETRY_EXHAUSTED = void 0; exports.REASON_QUOTA_REJECTED = void 0; exports.REASON_SHUTDOWN_DROP = void 0; var counters, activeRedactionConfig, pending, timer, consecutiveFailures, breakerOpenUntil, reporting, MORSE_PATH_MARKERS, clientConfig;
610
+ var SDK_VERSION, LEVEL_OFF, LEVEL_ERROR, LEVEL_DEBUG, VALID_LEVELS, level, RATE_WINDOW_MS, RATE_LIMIT_PER_WINDOW, RATE_LIMIT_PER_WINDOW_DEBUG, rateBuckets, LOCAL_LOG_WINDOW_MS, LOCAL_LOG_LIMIT_PER_WINDOW, localLogBuckets, MAX_STACK_ENTRIES, MAX_MESSAGE_CHARS, MAX_BATCH_EVENTS, ALLOWED_EXTRA_KEYS, DIAGNOSTICS_PATH, MAX_PENDING, FLUSH_INTERVAL_MS, BREAKER_THRESHOLD, BREAKER_COOLDOWN_MS; exports.REASON_QUEUE_FULL = void 0; exports.REASON_RETRY_EXHAUSTED = void 0; exports.REASON_QUOTA_REJECTED = void 0; exports.REASON_ENCODE_FAILED = void 0; exports.REASON_SHUTDOWN_DROP = void 0; exports.REASON_AUTH_REJECTED = void 0; exports.REASON_ENDPOINT_REJECTED = void 0; exports.REASON_SEND_FAILED = void 0; var counters, activeRedactionConfig, pending, timer, consecutiveFailures, breakerOpenUntil, reporting, MORSE_PATH_MARKERS, clientConfig;
592
611
  var init_diagnostics = __esm({
593
612
  "src/_internal/diagnostics.ts"() {
594
613
  init_env();
595
614
  init_redaction();
596
- SDK_VERSION = "0.5.0-rc.6" ;
615
+ SDK_VERSION = "0.5.1-rc.1" ;
597
616
  LEVEL_OFF = "off";
598
617
  LEVEL_ERROR = "error";
599
618
  LEVEL_DEBUG = "debug";
@@ -624,7 +643,11 @@ var init_diagnostics = __esm({
624
643
  exports.REASON_QUEUE_FULL = "queue_full";
625
644
  exports.REASON_RETRY_EXHAUSTED = "retry_exhausted";
626
645
  exports.REASON_QUOTA_REJECTED = "quota_rejected";
646
+ exports.REASON_ENCODE_FAILED = "encode_failed";
627
647
  exports.REASON_SHUTDOWN_DROP = "shutdown_drop";
648
+ exports.REASON_AUTH_REJECTED = "auth_rejected";
649
+ exports.REASON_ENDPOINT_REJECTED = "endpoint_rejected";
650
+ exports.REASON_SEND_FAILED = "send_failed";
628
651
  counters = /* @__PURE__ */ new Map();
629
652
  activeRedactionConfig = null;
630
653
  pending = [];
@@ -1314,5 +1337,5 @@ exports.setTransport = setTransport;
1314
1337
  exports.spanAsync = spanAsync;
1315
1338
  exports.spanSync = spanSync;
1316
1339
  exports.startSpan = startSpan;
1317
- //# sourceMappingURL=chunk-WG45SF7N.cjs.map
1318
- //# sourceMappingURL=chunk-WG45SF7N.cjs.map
1340
+ //# sourceMappingURL=chunk-HJTUPXNE.cjs.map
1341
+ //# sourceMappingURL=chunk-HJTUPXNE.cjs.map