@amplitude/ai 0.1.0

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 (510) hide show
  1. package/.cursor/skills/instrument-with-amplitude-ai/SKILL.md +50 -0
  2. package/AGENTS.md +79 -0
  3. package/LICENSE +21 -0
  4. package/README.md +2111 -0
  5. package/bin/amplitude-ai-completions.mjs +19 -0
  6. package/bin/amplitude-ai-doctor.mjs +26 -0
  7. package/bin/amplitude-ai-init.mjs +27 -0
  8. package/bin/amplitude-ai-instrument.mjs +52 -0
  9. package/bin/amplitude-ai-mcp.mjs +8 -0
  10. package/bin/amplitude-ai-register-catalog.mjs +156 -0
  11. package/bin/amplitude-ai-status.mjs +28 -0
  12. package/bin/amplitude-ai.mjs +43 -0
  13. package/bin/validate-catalog-constants.mjs +134 -0
  14. package/data/agent_event_catalog.json +1277 -0
  15. package/dist/_virtual/rolldown_runtime.js +31 -0
  16. package/dist/bound-agent.d.ts +56 -0
  17. package/dist/bound-agent.d.ts.map +1 -0
  18. package/dist/bound-agent.js +155 -0
  19. package/dist/bound-agent.js.map +1 -0
  20. package/dist/cli/doctor.d.ts +17 -0
  21. package/dist/cli/doctor.d.ts.map +1 -0
  22. package/dist/cli/doctor.js +89 -0
  23. package/dist/cli/doctor.js.map +1 -0
  24. package/dist/cli/init.d.ts +14 -0
  25. package/dist/cli/init.d.ts.map +1 -0
  26. package/dist/cli/init.js +40 -0
  27. package/dist/cli/init.js.map +1 -0
  28. package/dist/cli/providers.d.ts +32 -0
  29. package/dist/cli/providers.d.ts.map +1 -0
  30. package/dist/cli/providers.js +46 -0
  31. package/dist/cli/providers.js.map +1 -0
  32. package/dist/cli/status.d.ts +14 -0
  33. package/dist/cli/status.d.ts.map +1 -0
  34. package/dist/cli/status.js +38 -0
  35. package/dist/cli/status.js.map +1 -0
  36. package/dist/client.d.ts +246 -0
  37. package/dist/client.d.ts.map +1 -0
  38. package/dist/client.js +369 -0
  39. package/dist/client.js.map +1 -0
  40. package/dist/config.d.ts +60 -0
  41. package/dist/config.d.ts.map +1 -0
  42. package/dist/config.js +57 -0
  43. package/dist/config.js.map +1 -0
  44. package/dist/context.d.ts +44 -0
  45. package/dist/context.d.ts.map +1 -0
  46. package/dist/context.js +53 -0
  47. package/dist/context.js.map +1 -0
  48. package/dist/core/constants.d.ts +96 -0
  49. package/dist/core/constants.d.ts.map +1 -0
  50. package/dist/core/constants.js +105 -0
  51. package/dist/core/constants.js.map +1 -0
  52. package/dist/core/enrichments.d.ts +139 -0
  53. package/dist/core/enrichments.d.ts.map +1 -0
  54. package/dist/core/enrichments.js +177 -0
  55. package/dist/core/enrichments.js.map +1 -0
  56. package/dist/core/privacy.d.ts +53 -0
  57. package/dist/core/privacy.d.ts.map +1 -0
  58. package/dist/core/privacy.js +235 -0
  59. package/dist/core/privacy.js.map +1 -0
  60. package/dist/core/tracking.d.ts +242 -0
  61. package/dist/core/tracking.d.ts.map +1 -0
  62. package/dist/core/tracking.js +469 -0
  63. package/dist/core/tracking.js.map +1 -0
  64. package/dist/decorators.d.ts +109 -0
  65. package/dist/decorators.d.ts.map +1 -0
  66. package/dist/decorators.js +281 -0
  67. package/dist/decorators.js.map +1 -0
  68. package/dist/exceptions.d.ts +19 -0
  69. package/dist/exceptions.d.ts.map +1 -0
  70. package/dist/exceptions.js +35 -0
  71. package/dist/exceptions.js.map +1 -0
  72. package/dist/index.d.ts +37 -0
  73. package/dist/index.js +38 -0
  74. package/dist/integrations/anthropic-tools.d.ts +38 -0
  75. package/dist/integrations/anthropic-tools.d.ts.map +1 -0
  76. package/dist/integrations/anthropic-tools.js +175 -0
  77. package/dist/integrations/anthropic-tools.js.map +1 -0
  78. package/dist/integrations/crewai.d.ts +14 -0
  79. package/dist/integrations/crewai.d.ts.map +1 -0
  80. package/dist/integrations/crewai.js +19 -0
  81. package/dist/integrations/crewai.js.map +1 -0
  82. package/dist/integrations/langchain.d.ts +37 -0
  83. package/dist/integrations/langchain.d.ts.map +1 -0
  84. package/dist/integrations/langchain.js +189 -0
  85. package/dist/integrations/langchain.js.map +1 -0
  86. package/dist/integrations/llamaindex.d.ts +44 -0
  87. package/dist/integrations/llamaindex.d.ts.map +1 -0
  88. package/dist/integrations/llamaindex.js +144 -0
  89. package/dist/integrations/llamaindex.js.map +1 -0
  90. package/dist/integrations/openai-agents.d.ts +35 -0
  91. package/dist/integrations/openai-agents.d.ts.map +1 -0
  92. package/dist/integrations/openai-agents.js +248 -0
  93. package/dist/integrations/openai-agents.js.map +1 -0
  94. package/dist/integrations/opentelemetry.d.ts +40 -0
  95. package/dist/integrations/opentelemetry.d.ts.map +1 -0
  96. package/dist/integrations/opentelemetry.js +146 -0
  97. package/dist/integrations/opentelemetry.js.map +1 -0
  98. package/dist/internals.d.ts +5 -0
  99. package/dist/internals.js +5 -0
  100. package/dist/mcp/contract.d.ts +27 -0
  101. package/dist/mcp/contract.d.ts.map +1 -0
  102. package/dist/mcp/contract.js +25 -0
  103. package/dist/mcp/contract.js.map +1 -0
  104. package/dist/mcp/index.d.ts +4 -0
  105. package/dist/mcp/index.js +5 -0
  106. package/dist/mcp/patterns.d.ts +11 -0
  107. package/dist/mcp/patterns.d.ts.map +1 -0
  108. package/dist/mcp/patterns.js +38 -0
  109. package/dist/mcp/patterns.js.map +1 -0
  110. package/dist/mcp/server.d.ts +10 -0
  111. package/dist/mcp/server.d.ts.map +1 -0
  112. package/dist/mcp/server.js +241 -0
  113. package/dist/mcp/server.js.map +1 -0
  114. package/dist/mcp/validate-file.d.ts +20 -0
  115. package/dist/mcp/validate-file.d.ts.map +1 -0
  116. package/dist/mcp/validate-file.js +122 -0
  117. package/dist/mcp/validate-file.js.map +1 -0
  118. package/dist/middleware.d.ts +32 -0
  119. package/dist/middleware.d.ts.map +1 -0
  120. package/dist/middleware.js +67 -0
  121. package/dist/middleware.js.map +1 -0
  122. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js +54 -0
  123. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/helpers.js.map +1 -0
  124. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js +20 -0
  125. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.js.map +1 -0
  126. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js +34 -0
  127. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/mcp-server.js.map +1 -0
  128. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js +225 -0
  129. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/server.js.map +1 -0
  130. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js +22 -0
  131. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/completable.js.map +1 -0
  132. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js +351 -0
  133. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/index.js.map +1 -0
  134. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js +634 -0
  135. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js.map +1 -0
  136. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js +60 -0
  137. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js.map +1 -0
  138. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js +122 -0
  139. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.js.map +1 -0
  140. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js +37 -0
  141. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  142. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +858 -0
  143. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
  144. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js +32 -0
  145. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js.map +1 -0
  146. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js +74 -0
  147. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/toolNameValidation.js.map +1 -0
  148. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1262 -0
  149. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
  150. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js +83 -0
  151. package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/ajv-provider.js.map +1 -0
  152. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/formats.js +195 -0
  153. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/formats.js.map +1 -0
  154. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/index.js +44 -0
  155. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/index.js.map +1 -0
  156. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/limit.js +88 -0
  157. package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/limit.js.map +1 -0
  158. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/ajv.js +107 -0
  159. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/ajv.js.map +1 -0
  160. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js +142 -0
  161. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  162. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js +678 -0
  163. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  164. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js +145 -0
  165. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  166. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js +106 -0
  167. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js.map +1 -0
  168. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/index.js +227 -0
  169. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/index.js.map +1 -0
  170. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/names.js +33 -0
  171. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/names.js.map +1 -0
  172. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js +22 -0
  173. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  174. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js +137 -0
  175. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  176. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js +65 -0
  177. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js.map +1 -0
  178. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/util.js +150 -0
  179. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/util.js.map +1 -0
  180. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
  181. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  182. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js +52 -0
  183. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  184. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js +176 -0
  185. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  186. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  187. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  188. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js +437 -0
  189. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  190. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js +117 -0
  191. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  192. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js +76 -0
  193. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  194. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/core.js +587 -0
  195. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/core.js.map +1 -0
  196. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/data.js +22 -0
  197. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/data.js.map +1 -0
  198. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.js +145 -0
  199. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.js.map +1 -0
  200. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js +16 -0
  201. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  202. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js +29 -0
  203. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  204. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js +16 -0
  205. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  206. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js +20 -0
  207. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  208. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +61 -0
  209. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  210. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +101 -0
  211. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  212. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +34 -0
  213. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  214. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +21 -0
  215. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  216. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +94 -0
  217. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  218. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +91 -0
  219. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  220. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  221. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  222. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js +64 -0
  223. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  224. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js +63 -0
  225. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  226. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +39 -0
  227. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  228. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
  229. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  230. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +56 -0
  231. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  232. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +66 -0
  233. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  234. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
  235. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  236. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +57 -0
  237. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  238. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +46 -0
  239. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  240. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +22 -0
  241. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  242. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js +134 -0
  243. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  244. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
  245. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  246. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
  247. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  248. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js +116 -0
  249. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  250. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +106 -0
  251. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  252. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
  253. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  254. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
  255. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  256. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js +97 -0
  257. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  258. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js +15 -0
  259. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  260. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
  261. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  262. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js +32 -0
  263. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  264. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js +54 -0
  265. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  266. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js +53 -0
  267. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  268. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +33 -0
  269. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  270. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +38 -0
  271. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  272. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +52 -0
  273. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  274. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +33 -0
  275. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  276. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +32 -0
  277. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  278. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +43 -0
  279. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  280. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js +77 -0
  281. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  282. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
  283. package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  284. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +37 -0
  285. package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
  286. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js +240 -0
  287. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js.map +1 -0
  288. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +194 -0
  289. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js.map +1 -0
  290. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +286 -0
  291. package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js.map +1 -0
  292. package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +82 -0
  293. package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js.map +1 -0
  294. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js +37 -0
  295. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
  296. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js +30 -0
  297. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
  298. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +16 -0
  299. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
  300. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +10 -0
  301. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
  302. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js +57 -0
  303. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
  304. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +17 -0
  305. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
  306. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +23 -0
  307. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
  308. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +36 -0
  309. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
  310. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +8 -0
  311. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
  312. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +10 -0
  313. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
  314. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +10 -0
  315. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
  316. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +39 -0
  317. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
  318. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +13 -0
  319. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
  320. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +11 -0
  321. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
  322. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +11 -0
  323. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
  324. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +47 -0
  325. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
  326. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +17 -0
  327. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
  328. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +38 -0
  329. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
  330. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +16 -0
  331. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
  332. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +13 -0
  333. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
  334. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +11 -0
  335. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
  336. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +46 -0
  337. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
  338. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +37 -0
  339. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
  340. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +64 -0
  341. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
  342. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +20 -0
  343. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
  344. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +27 -0
  345. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
  346. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +10 -0
  347. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
  348. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +10 -0
  349. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
  350. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +56 -0
  351. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
  352. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +21 -0
  353. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
  354. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +250 -0
  355. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  356. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +38 -0
  357. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
  358. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
  359. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
  360. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +64 -0
  361. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
  362. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +10 -0
  363. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
  364. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js +78 -0
  365. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
  366. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +70 -0
  367. package/dist/node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
  368. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +104 -0
  369. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js.map +1 -0
  370. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +11 -0
  371. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js.map +1 -0
  372. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +10 -0
  373. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
  374. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +110 -0
  375. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
  376. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +99 -0
  377. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js.map +1 -0
  378. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +84 -0
  379. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js.map +1 -0
  380. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js +3160 -0
  381. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js.map +1 -0
  382. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js +23 -0
  383. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js.map +1 -0
  384. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js +38 -0
  385. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js.map +1 -0
  386. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js +12 -0
  387. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js.map +1 -0
  388. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js +611 -0
  389. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js.map +1 -0
  390. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js +437 -0
  391. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js.map +1 -0
  392. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js +360 -0
  393. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js.map +1 -0
  394. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js +50 -0
  395. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js.map +1 -0
  396. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js +34 -0
  397. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js.map +1 -0
  398. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js +71 -0
  399. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js.map +1 -0
  400. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js +74 -0
  401. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js.map +1 -0
  402. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js +63 -0
  403. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js.map +1 -0
  404. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js +50 -0
  405. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js.map +1 -0
  406. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js +1098 -0
  407. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js.map +1 -0
  408. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js +599 -0
  409. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
  410. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js +267 -0
  411. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js.map +1 -0
  412. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js +10 -0
  413. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js.map +1 -0
  414. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js +50 -0
  415. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js.map +1 -0
  416. package/dist/patching.d.ts +59 -0
  417. package/dist/patching.d.ts.map +1 -0
  418. package/dist/patching.js +891 -0
  419. package/dist/patching.js.map +1 -0
  420. package/dist/propagation.d.ts +8 -0
  421. package/dist/propagation.d.ts.map +1 -0
  422. package/dist/propagation.js +46 -0
  423. package/dist/propagation.js.map +1 -0
  424. package/dist/providers/anthropic.d.ts +44 -0
  425. package/dist/providers/anthropic.d.ts.map +1 -0
  426. package/dist/providers/anthropic.js +287 -0
  427. package/dist/providers/anthropic.js.map +1 -0
  428. package/dist/providers/azure-openai.d.ts +32 -0
  429. package/dist/providers/azure-openai.d.ts.map +1 -0
  430. package/dist/providers/azure-openai.js +39 -0
  431. package/dist/providers/azure-openai.js.map +1 -0
  432. package/dist/providers/base.d.ts +70 -0
  433. package/dist/providers/base.d.ts.map +1 -0
  434. package/dist/providers/base.js +141 -0
  435. package/dist/providers/base.js.map +1 -0
  436. package/dist/providers/bedrock.d.ts +41 -0
  437. package/dist/providers/bedrock.d.ts.map +1 -0
  438. package/dist/providers/bedrock.js +229 -0
  439. package/dist/providers/bedrock.js.map +1 -0
  440. package/dist/providers/gemini.d.ts +34 -0
  441. package/dist/providers/gemini.d.ts.map +1 -0
  442. package/dist/providers/gemini.js +225 -0
  443. package/dist/providers/gemini.js.map +1 -0
  444. package/dist/providers/mistral.d.ts +32 -0
  445. package/dist/providers/mistral.d.ts.map +1 -0
  446. package/dist/providers/mistral.js +218 -0
  447. package/dist/providers/mistral.js.map +1 -0
  448. package/dist/providers/openai.d.ts +61 -0
  449. package/dist/providers/openai.d.ts.map +1 -0
  450. package/dist/providers/openai.js +530 -0
  451. package/dist/providers/openai.js.map +1 -0
  452. package/dist/register.d.ts +1 -0
  453. package/dist/register.js +46 -0
  454. package/dist/register.js.map +1 -0
  455. package/dist/session.d.ts +46 -0
  456. package/dist/session.d.ts.map +1 -0
  457. package/dist/session.js +144 -0
  458. package/dist/session.js.map +1 -0
  459. package/dist/tenant.d.ts +30 -0
  460. package/dist/tenant.d.ts.map +1 -0
  461. package/dist/tenant.js +23 -0
  462. package/dist/tenant.js.map +1 -0
  463. package/dist/testing.d.ts +46 -0
  464. package/dist/testing.d.ts.map +1 -0
  465. package/dist/testing.js +120 -0
  466. package/dist/testing.js.map +1 -0
  467. package/dist/types.d.ts +384 -0
  468. package/dist/types.d.ts.map +1 -0
  469. package/dist/types.js +13 -0
  470. package/dist/types.js.map +1 -0
  471. package/dist/utils/costs.d.ts +27 -0
  472. package/dist/utils/costs.d.ts.map +1 -0
  473. package/dist/utils/costs.js +63 -0
  474. package/dist/utils/costs.js.map +1 -0
  475. package/dist/utils/debug.d.ts +6 -0
  476. package/dist/utils/debug.d.ts.map +1 -0
  477. package/dist/utils/debug.js +73 -0
  478. package/dist/utils/debug.js.map +1 -0
  479. package/dist/utils/logger.d.ts +11 -0
  480. package/dist/utils/logger.d.ts.map +1 -0
  481. package/dist/utils/logger.js +18 -0
  482. package/dist/utils/logger.js.map +1 -0
  483. package/dist/utils/model-tiers.d.ts +8 -0
  484. package/dist/utils/model-tiers.d.ts.map +1 -0
  485. package/dist/utils/model-tiers.js +76 -0
  486. package/dist/utils/model-tiers.js.map +1 -0
  487. package/dist/utils/providers.d.ts +5 -0
  488. package/dist/utils/providers.d.ts.map +1 -0
  489. package/dist/utils/providers.js +20 -0
  490. package/dist/utils/providers.js.map +1 -0
  491. package/dist/utils/resolve-module.d.ts +5 -0
  492. package/dist/utils/resolve-module.d.ts.map +1 -0
  493. package/dist/utils/resolve-module.js +29 -0
  494. package/dist/utils/resolve-module.js.map +1 -0
  495. package/dist/utils/streaming.d.ts +55 -0
  496. package/dist/utils/streaming.d.ts.map +1 -0
  497. package/dist/utils/streaming.js +72 -0
  498. package/dist/utils/streaming.js.map +1 -0
  499. package/dist/utils/tokens.d.ts +16 -0
  500. package/dist/utils/tokens.d.ts.map +1 -0
  501. package/dist/utils/tokens.js +80 -0
  502. package/dist/utils/tokens.js.map +1 -0
  503. package/dist/wrappers.d.ts +37 -0
  504. package/dist/wrappers.d.ts.map +1 -0
  505. package/dist/wrappers.js +61 -0
  506. package/dist/wrappers.js.map +1 -0
  507. package/llms-full.txt +127 -0
  508. package/llms.txt +28 -0
  509. package/mcp.schema.json +18 -0
  510. package/package.json +189 -0
@@ -0,0 +1,177 @@
1
+ //#region src/core/enrichments.ts
2
+ var MessageLabel = class {
3
+ key;
4
+ value;
5
+ confidence;
6
+ constructor(options) {
7
+ this.key = options.key;
8
+ this.value = options.value;
9
+ this.confidence = options.confidence ?? null;
10
+ }
11
+ toDict() {
12
+ const result = {
13
+ key: this.key,
14
+ value: this.value
15
+ };
16
+ if (this.confidence != null) result.confidence = this.confidence;
17
+ return result;
18
+ }
19
+ };
20
+ var EvidenceQuote = class {
21
+ quote;
22
+ turnIndex;
23
+ role;
24
+ constructor(options) {
25
+ this.quote = options.quote;
26
+ this.turnIndex = options.turnIndex;
27
+ this.role = options.role ?? null;
28
+ }
29
+ toDict() {
30
+ const result = {
31
+ quote: this.quote,
32
+ turn_index: this.turnIndex
33
+ };
34
+ if (this.role != null) result.role = this.role;
35
+ return result;
36
+ }
37
+ };
38
+ var TopicClassification = class {
39
+ l1;
40
+ values;
41
+ primary;
42
+ /** @deprecated Use {@link subcategories} instead. */
43
+ l2;
44
+ subcategories;
45
+ topicsCovered;
46
+ outcomesByTopic;
47
+ constructor(options = {}) {
48
+ this.l1 = options.l1 ?? null;
49
+ this.values = options.values ?? null;
50
+ this.primary = options.primary ?? null;
51
+ this.l2 = options.l2 ?? null;
52
+ this.subcategories = options.subcategories ?? null;
53
+ this.topicsCovered = options.topicsCovered ?? null;
54
+ this.outcomesByTopic = options.outcomesByTopic ?? null;
55
+ }
56
+ toDict() {
57
+ const result = {};
58
+ if (this.l1 != null) result.l1 = this.l1;
59
+ if (this.values != null) result.values = this.values;
60
+ if (this.primary != null) result.primary = this.primary;
61
+ if (this.l2 != null) result.l2 = this.l2;
62
+ if (this.subcategories != null) result.subcategories = this.subcategories;
63
+ if (this.topicsCovered != null) result.topics_covered = this.topicsCovered;
64
+ if (this.outcomesByTopic != null) result.outcomes_by_topic = this.outcomesByTopic;
65
+ return result;
66
+ }
67
+ };
68
+ var RubricScore = class {
69
+ name;
70
+ score;
71
+ rationale;
72
+ evidence;
73
+ improvementOpportunities;
74
+ constructor(options) {
75
+ this.name = options.name;
76
+ this.score = options.score;
77
+ this.rationale = options.rationale ?? null;
78
+ this.evidence = options.evidence ?? null;
79
+ this.improvementOpportunities = options.improvementOpportunities ?? null;
80
+ }
81
+ toDict() {
82
+ const result = {
83
+ name: this.name,
84
+ score: this.score
85
+ };
86
+ if (this.rationale != null) result.rationale = this.rationale;
87
+ if (this.evidence != null) result.evidence = this.evidence.map((e) => e.toDict());
88
+ if (this.improvementOpportunities != null) result.improvement_opportunities = this.improvementOpportunities;
89
+ return result;
90
+ }
91
+ };
92
+ var SessionEnrichments = class {
93
+ topicClassifications;
94
+ rubrics;
95
+ overallOutcome;
96
+ hasTaskFailure;
97
+ hasNegativeFeedback;
98
+ hasDataQualityIssues;
99
+ hasTechnicalFailure;
100
+ errorCategories;
101
+ behavioralPatterns;
102
+ customMetadata;
103
+ schemaVersion;
104
+ qualityScore;
105
+ sentimentScore;
106
+ taskFailureType;
107
+ taskFailureReason;
108
+ negativeFeedbackPhrases;
109
+ dataQualityIssues;
110
+ technicalErrorCount;
111
+ agentChain;
112
+ rootAgentName;
113
+ requestComplexity;
114
+ messageLabels;
115
+ constructor(options = {}) {
116
+ this.topicClassifications = options.topicClassifications ?? null;
117
+ this.rubrics = options.rubrics ?? null;
118
+ this.overallOutcome = options.overallOutcome ?? null;
119
+ this.hasTaskFailure = options.hasTaskFailure ?? false;
120
+ this.hasNegativeFeedback = options.hasNegativeFeedback ?? false;
121
+ this.hasDataQualityIssues = options.hasDataQualityIssues ?? false;
122
+ this.hasTechnicalFailure = options.hasTechnicalFailure ?? false;
123
+ this.errorCategories = options.errorCategories ?? null;
124
+ this.behavioralPatterns = options.behavioralPatterns ?? null;
125
+ this.customMetadata = options.customMetadata ?? null;
126
+ this.schemaVersion = options.schemaVersion ?? "2.0";
127
+ this.qualityScore = options.qualityScore ?? null;
128
+ this.sentimentScore = options.sentimentScore ?? null;
129
+ this.taskFailureType = options.taskFailureType ?? null;
130
+ this.taskFailureReason = options.taskFailureReason ?? null;
131
+ this.negativeFeedbackPhrases = options.negativeFeedbackPhrases ?? null;
132
+ this.dataQualityIssues = options.dataQualityIssues ?? null;
133
+ this.technicalErrorCount = options.technicalErrorCount ?? null;
134
+ this.agentChain = options.agentChain ?? null;
135
+ this.rootAgentName = options.rootAgentName ?? null;
136
+ this.requestComplexity = options.requestComplexity ?? null;
137
+ this.messageLabels = options.messageLabels ?? null;
138
+ }
139
+ toDict() {
140
+ const result = {};
141
+ if (this.topicClassifications != null) {
142
+ const tc = {};
143
+ for (const [name, classification] of Object.entries(this.topicClassifications)) tc[name] = classification.toDict();
144
+ result.topic_classifications = tc;
145
+ }
146
+ if (this.rubrics != null) result.rubrics = this.rubrics.map((r) => r.toDict());
147
+ if (this.overallOutcome != null) result.overall_outcome = this.overallOutcome;
148
+ result.has_task_failure = this.hasTaskFailure;
149
+ result.has_negative_feedback = this.hasNegativeFeedback;
150
+ result.has_data_quality_issues = this.hasDataQualityIssues;
151
+ result.has_technical_failure = this.hasTechnicalFailure;
152
+ if (this.errorCategories != null) result.error_categories = this.errorCategories;
153
+ if (this.behavioralPatterns != null) result.behavioral_patterns = this.behavioralPatterns;
154
+ if (this.customMetadata != null) result.custom_metadata = this.customMetadata;
155
+ result.schema_version = this.schemaVersion;
156
+ if (this.qualityScore != null) result.quality_score = this.qualityScore;
157
+ if (this.sentimentScore != null) result.sentiment_score = this.sentimentScore;
158
+ if (this.taskFailureType != null) result.task_failure_type = this.taskFailureType;
159
+ if (this.taskFailureReason != null) result.task_failure_reason = this.taskFailureReason;
160
+ if (this.negativeFeedbackPhrases != null) result.negative_feedback_phrases = this.negativeFeedbackPhrases;
161
+ if (this.dataQualityIssues != null) result.data_quality_issues = this.dataQualityIssues;
162
+ if (this.technicalErrorCount != null) result.technical_error_count = this.technicalErrorCount;
163
+ if (this.agentChain != null) result.agent_chain = this.agentChain;
164
+ if (this.rootAgentName != null) result.root_agent_name = this.rootAgentName;
165
+ if (this.requestComplexity != null) result.request_complexity = this.requestComplexity;
166
+ if (this.messageLabels != null) {
167
+ const ml = {};
168
+ for (const [mid, labels] of Object.entries(this.messageLabels)) ml[mid] = labels.map((lbl) => lbl.toDict());
169
+ result.message_labels = ml;
170
+ }
171
+ return result;
172
+ }
173
+ };
174
+
175
+ //#endregion
176
+ export { EvidenceQuote, MessageLabel, RubricScore, SessionEnrichments, TopicClassification };
177
+ //# sourceMappingURL=enrichments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichments.js","names":["result: MessageLabelData","result: EvidenceQuoteData","result: TopicClassificationData","result: RubricScoreData","result: Record<string, unknown>","tc: Record<string, TopicClassificationData>","ml: Record<string, MessageLabelData[]>"],"sources":["../../src/core/enrichments.ts"],"sourcesContent":["export interface MessageLabelData {\n key: string;\n value: string;\n confidence?: number;\n}\n\nexport class MessageLabel {\n readonly key: string;\n readonly value: string;\n readonly confidence: number | null;\n\n constructor(options: { key: string; value: string; confidence?: number }) {\n this.key = options.key;\n this.value = options.value;\n this.confidence = options.confidence ?? null;\n }\n\n toDict(): MessageLabelData {\n const result: MessageLabelData = { key: this.key, value: this.value };\n if (this.confidence != null) {\n result.confidence = this.confidence;\n }\n return result;\n }\n}\n\nexport interface EvidenceQuoteData {\n quote: string;\n turn_index: number;\n role?: string;\n}\n\nexport class EvidenceQuote {\n readonly quote: string;\n readonly turnIndex: number;\n readonly role: string | null;\n\n constructor(options: { quote: string; turnIndex: number; role?: string }) {\n this.quote = options.quote;\n this.turnIndex = options.turnIndex;\n this.role = options.role ?? null;\n }\n\n toDict(): EvidenceQuoteData {\n const result: EvidenceQuoteData = {\n quote: this.quote,\n turn_index: this.turnIndex,\n };\n if (this.role != null) {\n result.role = this.role;\n }\n return result;\n }\n}\n\nexport interface TopicClassificationData {\n l1?: string;\n values?: string[];\n primary?: string;\n /** @deprecated Use `subcategories` instead. */\n l2?: string;\n subcategories?: string[];\n topics_covered?: string[];\n outcomes_by_topic?: Record<string, string>;\n}\n\nexport class TopicClassification {\n readonly l1: string | null;\n readonly values: string[] | null;\n readonly primary: string | null;\n /** @deprecated Use {@link subcategories} instead. */\n readonly l2: string | null;\n readonly subcategories: string[] | null;\n readonly topicsCovered: string[] | null;\n readonly outcomesByTopic: Record<string, string> | null;\n\n constructor(\n options: {\n l1?: string;\n values?: string[];\n primary?: string;\n /** @deprecated Use `subcategories` instead. */\n l2?: string;\n subcategories?: string[];\n topicsCovered?: string[];\n outcomesByTopic?: Record<string, string>;\n } = {},\n ) {\n this.l1 = options.l1 ?? null;\n this.values = options.values ?? null;\n this.primary = options.primary ?? null;\n this.l2 = options.l2 ?? null;\n this.subcategories = options.subcategories ?? null;\n this.topicsCovered = options.topicsCovered ?? null;\n this.outcomesByTopic = options.outcomesByTopic ?? null;\n }\n\n toDict(): TopicClassificationData {\n const result: TopicClassificationData = {};\n if (this.l1 != null) result.l1 = this.l1;\n if (this.values != null) result.values = this.values;\n if (this.primary != null) result.primary = this.primary;\n if (this.l2 != null) result.l2 = this.l2;\n if (this.subcategories != null) result.subcategories = this.subcategories;\n if (this.topicsCovered != null) result.topics_covered = this.topicsCovered;\n if (this.outcomesByTopic != null)\n result.outcomes_by_topic = this.outcomesByTopic;\n return result;\n }\n}\n\nexport interface RubricScoreData {\n name: string;\n score: number;\n rationale?: string;\n evidence?: EvidenceQuoteData[];\n improvement_opportunities?: string;\n}\n\nexport class RubricScore {\n readonly name: string;\n readonly score: number;\n readonly rationale: string | null;\n readonly evidence: EvidenceQuote[] | null;\n readonly improvementOpportunities: string | null;\n\n constructor(options: {\n name: string;\n score: number;\n rationale?: string;\n evidence?: EvidenceQuote[];\n improvementOpportunities?: string;\n }) {\n this.name = options.name;\n this.score = options.score;\n this.rationale = options.rationale ?? null;\n this.evidence = options.evidence ?? null;\n this.improvementOpportunities = options.improvementOpportunities ?? null;\n }\n\n toDict(): RubricScoreData {\n const result: RubricScoreData = { name: this.name, score: this.score };\n if (this.rationale != null) result.rationale = this.rationale;\n if (this.evidence != null)\n result.evidence = this.evidence.map((e) => e.toDict());\n if (this.improvementOpportunities != null)\n result.improvement_opportunities = this.improvementOpportunities;\n return result;\n }\n}\n\nexport interface SessionEnrichmentsOptions {\n topicClassifications?: Record<string, TopicClassification>;\n rubrics?: RubricScore[];\n overallOutcome?: string;\n hasTaskFailure?: boolean;\n hasNegativeFeedback?: boolean;\n hasDataQualityIssues?: boolean;\n hasTechnicalFailure?: boolean;\n errorCategories?: string[];\n behavioralPatterns?: string[];\n customMetadata?: Record<string, unknown>;\n schemaVersion?: string;\n qualityScore?: number;\n sentimentScore?: number;\n taskFailureType?: string;\n taskFailureReason?: string;\n negativeFeedbackPhrases?: string[];\n dataQualityIssues?: string[];\n technicalErrorCount?: number;\n agentChain?: string[];\n rootAgentName?: string;\n requestComplexity?: string;\n messageLabels?: Record<string, MessageLabel[]>;\n}\n\nexport class SessionEnrichments {\n readonly topicClassifications: Record<string, TopicClassification> | null;\n readonly rubrics: RubricScore[] | null;\n readonly overallOutcome: string | null;\n readonly hasTaskFailure: boolean;\n readonly hasNegativeFeedback: boolean;\n readonly hasDataQualityIssues: boolean;\n readonly hasTechnicalFailure: boolean;\n readonly errorCategories: string[] | null;\n readonly behavioralPatterns: string[] | null;\n readonly customMetadata: Record<string, unknown> | null;\n readonly schemaVersion: string;\n readonly qualityScore: number | null;\n readonly sentimentScore: number | null;\n readonly taskFailureType: string | null;\n readonly taskFailureReason: string | null;\n readonly negativeFeedbackPhrases: string[] | null;\n readonly dataQualityIssues: string[] | null;\n readonly technicalErrorCount: number | null;\n readonly agentChain: string[] | null;\n readonly rootAgentName: string | null;\n readonly requestComplexity: string | null;\n readonly messageLabels: Record<string, MessageLabel[]> | null;\n\n constructor(options: SessionEnrichmentsOptions = {}) {\n this.topicClassifications = options.topicClassifications ?? null;\n this.rubrics = options.rubrics ?? null;\n this.overallOutcome = options.overallOutcome ?? null;\n this.hasTaskFailure = options.hasTaskFailure ?? false;\n this.hasNegativeFeedback = options.hasNegativeFeedback ?? false;\n this.hasDataQualityIssues = options.hasDataQualityIssues ?? false;\n this.hasTechnicalFailure = options.hasTechnicalFailure ?? false;\n this.errorCategories = options.errorCategories ?? null;\n this.behavioralPatterns = options.behavioralPatterns ?? null;\n this.customMetadata = options.customMetadata ?? null;\n this.schemaVersion = options.schemaVersion ?? '2.0';\n this.qualityScore = options.qualityScore ?? null;\n this.sentimentScore = options.sentimentScore ?? null;\n this.taskFailureType = options.taskFailureType ?? null;\n this.taskFailureReason = options.taskFailureReason ?? null;\n this.negativeFeedbackPhrases = options.negativeFeedbackPhrases ?? null;\n this.dataQualityIssues = options.dataQualityIssues ?? null;\n this.technicalErrorCount = options.technicalErrorCount ?? null;\n this.agentChain = options.agentChain ?? null;\n this.rootAgentName = options.rootAgentName ?? null;\n this.requestComplexity = options.requestComplexity ?? null;\n this.messageLabels = options.messageLabels ?? null;\n }\n\n toDict(): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n if (this.topicClassifications != null) {\n const tc: Record<string, TopicClassificationData> = {};\n for (const [name, classification] of Object.entries(\n this.topicClassifications,\n )) {\n tc[name] = classification.toDict();\n }\n result.topic_classifications = tc;\n }\n\n if (this.rubrics != null) {\n result.rubrics = this.rubrics.map((r) => r.toDict());\n }\n\n if (this.overallOutcome != null)\n result.overall_outcome = this.overallOutcome;\n\n // Boolean flags — always include\n result.has_task_failure = this.hasTaskFailure;\n result.has_negative_feedback = this.hasNegativeFeedback;\n result.has_data_quality_issues = this.hasDataQualityIssues;\n result.has_technical_failure = this.hasTechnicalFailure;\n\n if (this.errorCategories != null)\n result.error_categories = this.errorCategories;\n if (this.behavioralPatterns != null)\n result.behavioral_patterns = this.behavioralPatterns;\n if (this.customMetadata != null)\n result.custom_metadata = this.customMetadata;\n\n result.schema_version = this.schemaVersion;\n\n if (this.qualityScore != null) result.quality_score = this.qualityScore;\n if (this.sentimentScore != null)\n result.sentiment_score = this.sentimentScore;\n if (this.taskFailureType != null)\n result.task_failure_type = this.taskFailureType;\n if (this.taskFailureReason != null)\n result.task_failure_reason = this.taskFailureReason;\n if (this.negativeFeedbackPhrases != null)\n result.negative_feedback_phrases = this.negativeFeedbackPhrases;\n if (this.dataQualityIssues != null)\n result.data_quality_issues = this.dataQualityIssues;\n if (this.technicalErrorCount != null)\n result.technical_error_count = this.technicalErrorCount;\n if (this.agentChain != null) result.agent_chain = this.agentChain;\n if (this.rootAgentName != null) result.root_agent_name = this.rootAgentName;\n if (this.requestComplexity != null)\n result.request_complexity = this.requestComplexity;\n\n if (this.messageLabels != null) {\n const ml: Record<string, MessageLabelData[]> = {};\n for (const [mid, labels] of Object.entries(this.messageLabels)) {\n ml[mid] = labels.map((lbl) => lbl.toDict());\n }\n result.message_labels = ml;\n }\n\n return result;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ //#region src/core/privacy.d.ts
2
+ declare const REDACTED_IMAGE_PLACEHOLDER = "[base64 image redacted]";
3
+ declare const REDACTED_CONTENT_PLACEHOLDER = "[content redacted]";
4
+ declare const MAX_CHUNK_SIZE = 1024;
5
+ declare const MAX_CHUNKS = 8;
6
+ declare function isBase64DataUrl(text: string): boolean;
7
+ declare function isValidUrl(text: string): boolean;
8
+ declare function isRawBase64(text: string): boolean;
9
+ declare function createContentHash(content: unknown): string;
10
+ declare function redactBase64Content(value: unknown): unknown;
11
+ declare function redactPiiPatterns(text: string): string;
12
+ /**
13
+ * Return the `$llm_message` payload for the given text.
14
+ *
15
+ * Content is stored as `{ text: content }` at full length — the Node SDK
16
+ * does not truncate string properties, and Nova already whitelists
17
+ * `$llm_message` server-side.
18
+ *
19
+ * Previous versions split long content into `c0`..`c7` chunks. That format
20
+ * is still readable via {@link getTextFromLlmMessage} for backward
21
+ * compatibility, but is no longer produced.
22
+ */
23
+ declare function chunkContent(text: string): Record<string, unknown>;
24
+ declare function getTextFromLlmMessage(llmMessage: Record<string, unknown>): string;
25
+ declare function sanitizeAnyContent(content: unknown, privacyMode?: boolean, redactPii?: boolean): Record<string, unknown>;
26
+ declare function sanitizeStructuredContent(content: unknown, redactPii: boolean): unknown;
27
+ interface PrivacyConfigOptions {
28
+ privacyMode?: boolean;
29
+ redactPii?: boolean;
30
+ customRedactionPatterns?: string[];
31
+ contentMode?: string | null;
32
+ validate?: boolean;
33
+ debug?: boolean;
34
+ }
35
+ declare class PrivacyConfig {
36
+ readonly privacyMode: boolean;
37
+ readonly redactPii: boolean;
38
+ readonly validate: boolean;
39
+ readonly debug: boolean;
40
+ readonly customPatterns: string[];
41
+ private readonly _compiledCustomPatterns;
42
+ private readonly _contentMode;
43
+ constructor(options?: PrivacyConfigOptions);
44
+ get contentMode(): string | null;
45
+ private _applyCustomPatterns;
46
+ private _applyCustomPatternsToLlmMessage;
47
+ sanitizeContent(content: unknown): Record<string, unknown>;
48
+ sanitizeSystemPrompt(systemPrompt: string | null): Record<string, unknown>;
49
+ sanitizeReasoningContent(reasoningContent: string | null, reasoningTokens?: number | null): Record<string, unknown>;
50
+ }
51
+ //#endregion
52
+ export { MAX_CHUNKS, MAX_CHUNK_SIZE, PrivacyConfig, PrivacyConfigOptions, REDACTED_CONTENT_PLACEHOLDER, REDACTED_IMAGE_PLACEHOLDER, chunkContent, createContentHash, getTextFromLlmMessage, isBase64DataUrl, isRawBase64, isValidUrl, redactBase64Content, redactPiiPatterns, sanitizeAnyContent, sanitizeStructuredContent };
53
+ //# sourceMappingURL=privacy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.d.ts","names":[],"sources":["../../src/core/privacy.ts"],"sourcesContent":[],"mappings":";cAUa,0BAAA;AAAA,cACA,4BAAA,GAD0B,oBAAA;AAC1B,cAIA,cAAA,GAJ4B,IAAA;AAI5B,cACA,UAAA,GADc,CAAA;AACd,iBAgBG,eAAA,CAhBO,IAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAgBP,iBAIA,UAAA,CAJe,IAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAIf,iBAYA,WAAA,CAZU,IAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAYV,iBAKA,iBAAA,CALW,OAAA,EAAA,OAAA,CAAA,EAAA,MAAA;AAKX,iBAMA,mBAAA,CANiB,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA;AAMjB,iBAOA,iBAAA,CAPmB,IAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAOnC;AA8CA;AAIA;AAeA;AAgCA;AA8BA;AASA;;;;;AAkIW,iBA5NK,YAAA,CA4NL,IAAA,EAAA,MAAA,CAAA,EA5NiC,MA4NjC,CAAA,MAAA,EAAA,OAAA,CAAA;iBAxNK,qBAAA,aACF;iBAcE,kBAAA,gEAIb;iBA4Ba,yBAAA;UA8BC,oBAAA;;;;;;;;cASJ,aAAA;;;;;;;;wBASU;;;;qCAyEc;qDAwBgB;8FAwBhD"}
@@ -0,0 +1,235 @@
1
+ import { getLogger } from "../utils/logger.js";
2
+ import { PROP_HAS_REASONING, PROP_REASONING_CONTENT, PROP_REASONING_TOKENS, PROP_SYSTEM_PROMPT, PROP_SYSTEM_PROMPT_LENGTH } from "./constants.js";
3
+ import crypto from "node:crypto";
4
+
5
+ //#region src/core/privacy.ts
6
+ const REDACTED_IMAGE_PLACEHOLDER = "[base64 image redacted]";
7
+ const REDACTED_CONTENT_PLACEHOLDER = "[content redacted]";
8
+ const MAX_CHUNK_SIZE = 1024;
9
+ const MAX_CHUNKS = 8;
10
+ const VALID_CONTENT_MODES = new Set([
11
+ "full",
12
+ "metadata_only",
13
+ "customer_enriched"
14
+ ]);
15
+ const EMAIL_RE = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g;
16
+ const PHONE_RE = /\b\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})\b/g;
17
+ const CREDIT_CARD_RE = /\b(?:\d{4}[-\s]?){3}\d{4}\b/g;
18
+ const SSN_RE = /\b\d{3}-\d{2}-\d{4}\b/g;
19
+ const BASE64_DATA_URL_RE = /^data:([^;]+);base64,/;
20
+ const RAW_BASE64_RE = /^[A-Za-z0-9+/]+=*$/;
21
+ function isBase64DataUrl(text) {
22
+ return BASE64_DATA_URL_RE.test(text);
23
+ }
24
+ function isValidUrl(text) {
25
+ try {
26
+ const result = new URL(text);
27
+ return Boolean(result.protocol && result.hostname);
28
+ } catch {}
29
+ return text.startsWith("/") || text.startsWith("./") || text.startsWith("../");
30
+ }
31
+ function isRawBase64(text) {
32
+ if (isValidUrl(text)) return false;
33
+ return text.length > 20 && RAW_BASE64_RE.test(text);
34
+ }
35
+ function createContentHash(content) {
36
+ if (content == null) return "";
37
+ const contentStr = typeof content === "string" ? content : String(content);
38
+ return crypto.createHash("sha256").update(contentStr, "utf8").digest("hex");
39
+ }
40
+ function redactBase64Content(value) {
41
+ if (typeof value !== "string") return value;
42
+ if (isBase64DataUrl(value)) return REDACTED_IMAGE_PLACEHOLDER;
43
+ if (isRawBase64(value)) return REDACTED_IMAGE_PLACEHOLDER;
44
+ return value;
45
+ }
46
+ function redactPiiPatterns(text) {
47
+ let result = text;
48
+ result = result.replace(EMAIL_RE, "[email]");
49
+ result = result.replace(PHONE_RE, "[phone]");
50
+ result = result.replace(CREDIT_CARD_RE, "[credit_card]");
51
+ result = result.replace(SSN_RE, "[ssn]");
52
+ return result;
53
+ }
54
+ function extractTextFromStructuredContent(content) {
55
+ if (content == null) return "";
56
+ if (typeof content === "string") return content;
57
+ if (typeof content === "object" && !Array.isArray(content)) {
58
+ const dict = content;
59
+ for (const field of [
60
+ "content",
61
+ "text",
62
+ "message"
63
+ ]) if (field in dict) return extractTextFromStructuredContent(dict[field]);
64
+ return String(content);
65
+ }
66
+ if (Array.isArray(content)) {
67
+ const parts = [];
68
+ for (const item of content) if (typeof item === "string") parts.push(item);
69
+ else if (typeof item === "object") parts.push(extractTextFromStructuredContent(item));
70
+ else parts.push(String(item));
71
+ return parts.join("");
72
+ }
73
+ return String(content);
74
+ }
75
+ /**
76
+ * Return the `$llm_message` payload for the given text.
77
+ *
78
+ * Content is stored as `{ text: content }` at full length — the Node SDK
79
+ * does not truncate string properties, and Nova already whitelists
80
+ * `$llm_message` server-side.
81
+ *
82
+ * Previous versions split long content into `c0`..`c7` chunks. That format
83
+ * is still readable via {@link getTextFromLlmMessage} for backward
84
+ * compatibility, but is no longer produced.
85
+ */
86
+ function chunkContent(text) {
87
+ return { text };
88
+ }
89
+ function getTextFromLlmMessage(llmMessage) {
90
+ if ("text" in llmMessage) return String(llmMessage.text);
91
+ const n = llmMessage.n;
92
+ if (typeof n === "number" && n > 0) {
93
+ const parts = [];
94
+ for (let i = 0; i < n; i++) parts.push(String(llmMessage[`c${i}`] ?? ""));
95
+ return parts.join("");
96
+ }
97
+ return "";
98
+ }
99
+ function sanitizeAnyContent(content, privacyMode = false, redactPii = true) {
100
+ const result = {};
101
+ if (content == null) return result;
102
+ let textContent;
103
+ if (typeof content === "string") textContent = content;
104
+ else if (typeof content === "object") textContent = extractTextFromStructuredContent(content);
105
+ else textContent = String(content);
106
+ if (redactPii) {
107
+ textContent = redactPiiPatterns(textContent);
108
+ const redacted = redactBase64Content(textContent);
109
+ if (typeof redacted === "string") textContent = redacted;
110
+ }
111
+ if (privacyMode) result.content_hash = createContentHash(textContent);
112
+ else result.$llm_message = chunkContent(textContent);
113
+ return result;
114
+ }
115
+ function sanitizeStructuredContent(content, redactPii) {
116
+ if (typeof content === "string") {
117
+ let text = content;
118
+ if (redactPii) text = redactPiiPatterns(text);
119
+ return redactBase64Content(text);
120
+ }
121
+ if (content != null && typeof content === "object" && !Array.isArray(content)) {
122
+ const dict = content;
123
+ const sanitized = {};
124
+ for (const [key, value] of Object.entries(dict)) sanitized[key] = sanitizeStructuredContent(value, redactPii);
125
+ return sanitized;
126
+ }
127
+ if (Array.isArray(content)) return content.map((item) => sanitizeStructuredContent(item, redactPii));
128
+ return content;
129
+ }
130
+ var PrivacyConfig = class {
131
+ privacyMode;
132
+ redactPii;
133
+ validate;
134
+ debug;
135
+ customPatterns;
136
+ _compiledCustomPatterns;
137
+ _contentMode;
138
+ constructor(options = {}) {
139
+ this.privacyMode = options.privacyMode ?? false;
140
+ this.redactPii = options.redactPii ?? false;
141
+ this.validate = options.validate ?? false;
142
+ this.debug = options.debug ?? false;
143
+ this.customPatterns = options.customRedactionPatterns ?? [];
144
+ this._compiledCustomPatterns = [];
145
+ for (const pattern of this.customPatterns) try {
146
+ this._compiledCustomPatterns.push(new RegExp(pattern, "g"));
147
+ } catch (e) {
148
+ getLogger().warn(`Invalid custom redaction regex "${pattern}": ${e instanceof Error ? e.message : String(e)}`);
149
+ }
150
+ let modeStr = null;
151
+ if (options.contentMode != null) {
152
+ modeStr = String(options.contentMode);
153
+ if (!VALID_CONTENT_MODES.has(modeStr)) throw new Error(`Invalid content_mode "${options.contentMode}". Must be one of: ${[...VALID_CONTENT_MODES].sort().join(", ")}`);
154
+ }
155
+ this._contentMode = modeStr;
156
+ }
157
+ get contentMode() {
158
+ return this._contentMode;
159
+ }
160
+ _applyCustomPatterns(text) {
161
+ if (!this._compiledCustomPatterns.length || typeof text !== "string") return text;
162
+ let result = text;
163
+ for (const pattern of this._compiledCustomPatterns) try {
164
+ result = result.replace(pattern, "[REDACTED]");
165
+ } catch (e) {
166
+ getLogger().warn(`Invalid custom redaction regex "${pattern.source}": ${e instanceof Error ? e.message : String(e)}`);
167
+ }
168
+ return result;
169
+ }
170
+ _applyCustomPatternsToLlmMessage(llmMessage) {
171
+ if ("text" in llmMessage) {
172
+ llmMessage.text = this._applyCustomPatterns(String(llmMessage.text));
173
+ return;
174
+ }
175
+ const n = llmMessage.n;
176
+ if (typeof n === "number" && n > 0) for (let i = 0; i < n; i++) {
177
+ const key = `c${i}`;
178
+ if (key in llmMessage) llmMessage[key] = this._applyCustomPatterns(String(llmMessage[key] ?? ""));
179
+ }
180
+ }
181
+ sanitizeContent(content) {
182
+ if (this._contentMode == null) {
183
+ if (this.privacyMode) return {};
184
+ const result = sanitizeAnyContent(content, false, this.redactPii);
185
+ if (this.customPatterns.length && "$llm_message" in result) {
186
+ const msg = result.$llm_message;
187
+ this._applyCustomPatternsToLlmMessage(msg);
188
+ }
189
+ return result;
190
+ }
191
+ if (this._contentMode === "full") {
192
+ const result = sanitizeAnyContent(content, false, this.redactPii);
193
+ if (this.customPatterns.length && "$llm_message" in result) {
194
+ const msg = result.$llm_message;
195
+ this._applyCustomPatternsToLlmMessage(msg);
196
+ }
197
+ return result;
198
+ }
199
+ return {};
200
+ }
201
+ sanitizeSystemPrompt(systemPrompt) {
202
+ if (!systemPrompt) return {};
203
+ const result = { [PROP_SYSTEM_PROMPT_LENGTH]: systemPrompt.length };
204
+ let mode = this._contentMode;
205
+ if (mode == null) mode = this.privacyMode ? "metadata_only" : "full";
206
+ if (mode === "full") {
207
+ let sanitized = systemPrompt;
208
+ if (this.redactPii) sanitized = redactPiiPatterns(sanitized);
209
+ sanitized = this._applyCustomPatterns(sanitized);
210
+ result[PROP_SYSTEM_PROMPT] = sanitized.length > 1e4 ? sanitized.slice(0, 1e4) : sanitized;
211
+ }
212
+ return result;
213
+ }
214
+ sanitizeReasoningContent(reasoningContent, reasoningTokens) {
215
+ const result = {};
216
+ const hasReasoning = Boolean(reasoningContent) || reasoningTokens != null && reasoningTokens > 0;
217
+ if (!hasReasoning && reasoningTokens == null) return result;
218
+ if (hasReasoning) result[PROP_HAS_REASONING] = true;
219
+ if (reasoningTokens != null) result[PROP_REASONING_TOKENS] = reasoningTokens;
220
+ if (!hasReasoning || reasoningContent == null) return result;
221
+ let mode = this._contentMode;
222
+ if (mode == null) mode = this.privacyMode ? "metadata_only" : "full";
223
+ if (mode === "full") {
224
+ let sanitized = reasoningContent;
225
+ if (this.redactPii) sanitized = redactPiiPatterns(sanitized);
226
+ sanitized = this._applyCustomPatterns(sanitized);
227
+ result[PROP_REASONING_CONTENT] = sanitized.length > 1e4 ? sanitized.slice(0, 1e4) : sanitized;
228
+ }
229
+ return result;
230
+ }
231
+ };
232
+
233
+ //#endregion
234
+ export { MAX_CHUNKS, MAX_CHUNK_SIZE, PrivacyConfig, REDACTED_CONTENT_PLACEHOLDER, REDACTED_IMAGE_PLACEHOLDER, chunkContent, createContentHash, getTextFromLlmMessage, isBase64DataUrl, isRawBase64, isValidUrl, redactBase64Content, redactPiiPatterns, sanitizeAnyContent, sanitizeStructuredContent };
235
+ //# sourceMappingURL=privacy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privacy.js","names":["parts: string[]","result: Record<string, unknown>","textContent: string","sanitized: Record<string, unknown>","modeStr: string | null"],"sources":["../../src/core/privacy.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport { getLogger } from '../utils/logger.js';\nimport {\n PROP_HAS_REASONING,\n PROP_REASONING_CONTENT,\n PROP_REASONING_TOKENS,\n PROP_SYSTEM_PROMPT,\n PROP_SYSTEM_PROMPT_LENGTH,\n} from './constants.js';\n\nexport const REDACTED_IMAGE_PLACEHOLDER = '[base64 image redacted]';\nexport const REDACTED_CONTENT_PLACEHOLDER = '[content redacted]';\n\n// Legacy chunking constants — kept only so getTextFromLlmMessage() can\n// still read old chunked events. New events always use { text: content }.\nexport const MAX_CHUNK_SIZE = 1024;\nexport const MAX_CHUNKS = 8;\n\nconst VALID_CONTENT_MODES = new Set([\n 'full',\n 'metadata_only',\n 'customer_enriched',\n]);\n\n// PII regex patterns\nconst EMAIL_RE = /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}\\b/g;\nconst PHONE_RE = /\\b\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})\\b/g;\nconst CREDIT_CARD_RE = /\\b(?:\\d{4}[-\\s]?){3}\\d{4}\\b/g;\nconst SSN_RE = /\\b\\d{3}-\\d{2}-\\d{4}\\b/g;\nconst BASE64_DATA_URL_RE = /^data:([^;]+);base64,/;\nconst RAW_BASE64_RE = /^[A-Za-z0-9+/]+=*$/;\n\nexport function isBase64DataUrl(text: string): boolean {\n return BASE64_DATA_URL_RE.test(text);\n}\n\nexport function isValidUrl(text: string): boolean {\n try {\n const result = new URL(text);\n return Boolean(result.protocol && result.hostname);\n } catch {\n // not a valid absolute URL\n }\n return (\n text.startsWith('/') || text.startsWith('./') || text.startsWith('../')\n );\n}\n\nexport function isRawBase64(text: string): boolean {\n if (isValidUrl(text)) return false;\n return text.length > 20 && RAW_BASE64_RE.test(text);\n}\n\nexport function createContentHash(content: unknown): string {\n if (content == null) return '';\n const contentStr = typeof content === 'string' ? content : String(content);\n return crypto.createHash('sha256').update(contentStr, 'utf8').digest('hex');\n}\n\nexport function redactBase64Content(value: unknown): unknown {\n if (typeof value !== 'string') return value;\n if (isBase64DataUrl(value)) return REDACTED_IMAGE_PLACEHOLDER;\n if (isRawBase64(value)) return REDACTED_IMAGE_PLACEHOLDER;\n return value;\n}\n\nexport function redactPiiPatterns(text: string): string {\n let result = text;\n result = result.replace(EMAIL_RE, '[email]');\n result = result.replace(PHONE_RE, '[phone]');\n result = result.replace(CREDIT_CARD_RE, '[credit_card]');\n result = result.replace(SSN_RE, '[ssn]');\n return result;\n}\n\nfunction extractTextFromStructuredContent(content: unknown): string {\n if (content == null) return '';\n if (typeof content === 'string') return content;\n\n if (typeof content === 'object' && !Array.isArray(content)) {\n const dict = content as Record<string, unknown>;\n for (const field of ['content', 'text', 'message']) {\n if (field in dict) return extractTextFromStructuredContent(dict[field]);\n }\n return String(content);\n }\n\n if (Array.isArray(content)) {\n const parts: string[] = [];\n for (const item of content) {\n if (typeof item === 'string') parts.push(item);\n else if (typeof item === 'object')\n parts.push(extractTextFromStructuredContent(item));\n else parts.push(String(item));\n }\n return parts.join('');\n }\n\n return String(content);\n}\n\n/**\n * Return the `$llm_message` payload for the given text.\n *\n * Content is stored as `{ text: content }` at full length — the Node SDK\n * does not truncate string properties, and Nova already whitelists\n * `$llm_message` server-side.\n *\n * Previous versions split long content into `c0`..`c7` chunks. That format\n * is still readable via {@link getTextFromLlmMessage} for backward\n * compatibility, but is no longer produced.\n */\nexport function chunkContent(text: string): Record<string, unknown> {\n return { text };\n}\n\nexport function getTextFromLlmMessage(\n llmMessage: Record<string, unknown>,\n): string {\n if ('text' in llmMessage) return String(llmMessage.text);\n const n = llmMessage.n;\n if (typeof n === 'number' && n > 0) {\n const parts: string[] = [];\n for (let i = 0; i < n; i++) {\n parts.push(String(llmMessage[`c${i}`] ?? ''));\n }\n return parts.join('');\n }\n return '';\n}\n\nexport function sanitizeAnyContent(\n content: unknown,\n privacyMode = false,\n redactPii = true,\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n if (content == null) return result;\n\n let textContent: string;\n if (typeof content === 'string') {\n textContent = content;\n } else if (typeof content === 'object') {\n textContent = extractTextFromStructuredContent(content);\n } else {\n textContent = String(content);\n }\n\n if (redactPii) {\n textContent = redactPiiPatterns(textContent);\n const redacted = redactBase64Content(textContent);\n if (typeof redacted === 'string') textContent = redacted;\n }\n\n if (privacyMode) {\n result.content_hash = createContentHash(textContent);\n } else {\n result.$llm_message = chunkContent(textContent);\n }\n\n return result;\n}\n\nexport function sanitizeStructuredContent(\n content: unknown,\n redactPii: boolean,\n): unknown {\n if (typeof content === 'string') {\n let text = content;\n if (redactPii) text = redactPiiPatterns(text);\n return redactBase64Content(text);\n }\n\n if (\n content != null &&\n typeof content === 'object' &&\n !Array.isArray(content)\n ) {\n const dict = content as Record<string, unknown>;\n const sanitized: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(dict)) {\n sanitized[key] = sanitizeStructuredContent(value, redactPii);\n }\n return sanitized;\n }\n\n if (Array.isArray(content)) {\n return content.map((item) => sanitizeStructuredContent(item, redactPii));\n }\n\n return content;\n}\n\nexport interface PrivacyConfigOptions {\n privacyMode?: boolean;\n redactPii?: boolean;\n customRedactionPatterns?: string[];\n contentMode?: string | null;\n validate?: boolean;\n debug?: boolean;\n}\n\nexport class PrivacyConfig {\n readonly privacyMode: boolean;\n readonly redactPii: boolean;\n readonly validate: boolean;\n readonly debug: boolean;\n readonly customPatterns: string[];\n private readonly _compiledCustomPatterns: RegExp[];\n private readonly _contentMode: string | null;\n\n constructor(options: PrivacyConfigOptions = {}) {\n this.privacyMode = options.privacyMode ?? false;\n this.redactPii = options.redactPii ?? false;\n this.validate = options.validate ?? false;\n this.debug = options.debug ?? false;\n this.customPatterns = options.customRedactionPatterns ?? [];\n this._compiledCustomPatterns = [];\n\n for (const pattern of this.customPatterns) {\n try {\n this._compiledCustomPatterns.push(new RegExp(pattern, 'g'));\n } catch (e) {\n getLogger().warn(\n `Invalid custom redaction regex \"${pattern}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n\n let modeStr: string | null = null;\n if (options.contentMode != null) {\n modeStr = String(options.contentMode);\n if (!VALID_CONTENT_MODES.has(modeStr)) {\n throw new Error(\n `Invalid content_mode \"${options.contentMode}\". ` +\n `Must be one of: ${[...VALID_CONTENT_MODES].sort().join(', ')}`,\n );\n }\n }\n this._contentMode = modeStr;\n }\n\n get contentMode(): string | null {\n return this._contentMode;\n }\n\n private _applyCustomPatterns(text: string): string {\n if (!this._compiledCustomPatterns.length || typeof text !== 'string') {\n return text;\n }\n let result = text;\n for (const pattern of this._compiledCustomPatterns) {\n try {\n result = result.replace(pattern, '[REDACTED]');\n } catch (e) {\n getLogger().warn(\n `Invalid custom redaction regex \"${pattern.source}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n return result;\n }\n\n private _applyCustomPatternsToLlmMessage(\n llmMessage: Record<string, unknown>,\n ): void {\n if ('text' in llmMessage) {\n llmMessage.text = this._applyCustomPatterns(String(llmMessage.text));\n return;\n }\n\n const n = llmMessage.n;\n if (typeof n === 'number' && n > 0) {\n for (let i = 0; i < n; i++) {\n const key = `c${i}`;\n if (key in llmMessage) {\n llmMessage[key] = this._applyCustomPatterns(\n String(llmMessage[key] ?? ''),\n );\n }\n }\n }\n }\n\n sanitizeContent(content: unknown): Record<string, unknown> {\n if (this._contentMode == null) {\n if (this.privacyMode) return {};\n const result = sanitizeAnyContent(content, false, this.redactPii);\n if (this.customPatterns.length && '$llm_message' in result) {\n const msg = result.$llm_message as Record<string, unknown>;\n this._applyCustomPatternsToLlmMessage(msg);\n }\n return result;\n }\n\n if (this._contentMode === 'full') {\n const result = sanitizeAnyContent(content, false, this.redactPii);\n if (this.customPatterns.length && '$llm_message' in result) {\n const msg = result.$llm_message as Record<string, unknown>;\n this._applyCustomPatternsToLlmMessage(msg);\n }\n return result;\n }\n\n // metadata_only, customer_enriched → no content\n return {};\n }\n\n sanitizeSystemPrompt(systemPrompt: string | null): Record<string, unknown> {\n if (!systemPrompt) return {};\n\n const result: Record<string, unknown> = {\n [PROP_SYSTEM_PROMPT_LENGTH]: systemPrompt.length,\n };\n\n let mode = this._contentMode;\n if (mode == null) mode = this.privacyMode ? 'metadata_only' : 'full';\n\n if (mode === 'full') {\n let sanitized = systemPrompt;\n if (this.redactPii) sanitized = redactPiiPatterns(sanitized);\n sanitized = this._applyCustomPatterns(sanitized);\n result[PROP_SYSTEM_PROMPT] =\n sanitized.length > 10000 ? sanitized.slice(0, 10000) : sanitized;\n }\n\n return result;\n }\n\n sanitizeReasoningContent(\n reasoningContent: string | null,\n reasoningTokens?: number | null,\n ): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n const hasReasoning =\n Boolean(reasoningContent) ||\n (reasoningTokens != null && reasoningTokens > 0);\n if (!hasReasoning && reasoningTokens == null) return result;\n\n if (hasReasoning) result[PROP_HAS_REASONING] = true;\n if (reasoningTokens != null)\n result[PROP_REASONING_TOKENS] = reasoningTokens;\n if (!hasReasoning || reasoningContent == null) return result;\n\n let mode = this._contentMode;\n if (mode == null) mode = this.privacyMode ? 'metadata_only' : 'full';\n\n if (mode === 'full') {\n let sanitized = reasoningContent;\n if (this.redactPii) sanitized = redactPiiPatterns(sanitized);\n sanitized = this._applyCustomPatterns(sanitized);\n result[PROP_REASONING_CONTENT] =\n sanitized.length > 10000 ? sanitized.slice(0, 10000) : sanitized;\n }\n\n return result;\n }\n}\n"],"mappings":"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"}