@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.
- package/.cursor/skills/instrument-with-amplitude-ai/SKILL.md +50 -0
- package/AGENTS.md +79 -0
- package/LICENSE +21 -0
- package/README.md +2111 -0
- package/bin/amplitude-ai-completions.mjs +19 -0
- package/bin/amplitude-ai-doctor.mjs +26 -0
- package/bin/amplitude-ai-init.mjs +27 -0
- package/bin/amplitude-ai-instrument.mjs +52 -0
- package/bin/amplitude-ai-mcp.mjs +8 -0
- package/bin/amplitude-ai-register-catalog.mjs +156 -0
- package/bin/amplitude-ai-status.mjs +28 -0
- package/bin/amplitude-ai.mjs +43 -0
- package/bin/validate-catalog-constants.mjs +134 -0
- package/data/agent_event_catalog.json +1277 -0
- package/dist/_virtual/rolldown_runtime.js +31 -0
- package/dist/bound-agent.d.ts +56 -0
- package/dist/bound-agent.d.ts.map +1 -0
- package/dist/bound-agent.js +155 -0
- package/dist/bound-agent.js.map +1 -0
- package/dist/cli/doctor.d.ts +17 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +89 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/init.d.ts +14 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +40 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/providers.d.ts +32 -0
- package/dist/cli/providers.d.ts.map +1 -0
- package/dist/cli/providers.js +46 -0
- package/dist/cli/providers.js.map +1 -0
- package/dist/cli/status.d.ts +14 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +38 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/client.d.ts +246 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +369 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +60 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +57 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +53 -0
- package/dist/context.js.map +1 -0
- package/dist/core/constants.d.ts +96 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +105 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/enrichments.d.ts +139 -0
- package/dist/core/enrichments.d.ts.map +1 -0
- package/dist/core/enrichments.js +177 -0
- package/dist/core/enrichments.js.map +1 -0
- package/dist/core/privacy.d.ts +53 -0
- package/dist/core/privacy.d.ts.map +1 -0
- package/dist/core/privacy.js +235 -0
- package/dist/core/privacy.js.map +1 -0
- package/dist/core/tracking.d.ts +242 -0
- package/dist/core/tracking.d.ts.map +1 -0
- package/dist/core/tracking.js +469 -0
- package/dist/core/tracking.js.map +1 -0
- package/dist/decorators.d.ts +109 -0
- package/dist/decorators.d.ts.map +1 -0
- package/dist/decorators.js +281 -0
- package/dist/decorators.js.map +1 -0
- package/dist/exceptions.d.ts +19 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +35 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +38 -0
- package/dist/integrations/anthropic-tools.d.ts +38 -0
- package/dist/integrations/anthropic-tools.d.ts.map +1 -0
- package/dist/integrations/anthropic-tools.js +175 -0
- package/dist/integrations/anthropic-tools.js.map +1 -0
- package/dist/integrations/crewai.d.ts +14 -0
- package/dist/integrations/crewai.d.ts.map +1 -0
- package/dist/integrations/crewai.js +19 -0
- package/dist/integrations/crewai.js.map +1 -0
- package/dist/integrations/langchain.d.ts +37 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +189 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/integrations/llamaindex.d.ts +44 -0
- package/dist/integrations/llamaindex.d.ts.map +1 -0
- package/dist/integrations/llamaindex.js +144 -0
- package/dist/integrations/llamaindex.js.map +1 -0
- package/dist/integrations/openai-agents.d.ts +35 -0
- package/dist/integrations/openai-agents.d.ts.map +1 -0
- package/dist/integrations/openai-agents.js +248 -0
- package/dist/integrations/openai-agents.js.map +1 -0
- package/dist/integrations/opentelemetry.d.ts +40 -0
- package/dist/integrations/opentelemetry.d.ts.map +1 -0
- package/dist/integrations/opentelemetry.js +146 -0
- package/dist/integrations/opentelemetry.js.map +1 -0
- package/dist/internals.d.ts +5 -0
- package/dist/internals.js +5 -0
- package/dist/mcp/contract.d.ts +27 -0
- package/dist/mcp/contract.d.ts.map +1 -0
- package/dist/mcp/contract.js +25 -0
- package/dist/mcp/contract.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/patterns.d.ts +11 -0
- package/dist/mcp/patterns.d.ts.map +1 -0
- package/dist/mcp/patterns.js +38 -0
- package/dist/mcp/patterns.js.map +1 -0
- package/dist/mcp/server.d.ts +10 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +241 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/validate-file.d.ts +20 -0
- package/dist/mcp/validate-file.d.ts.map +1 -0
- package/dist/mcp/validate-file.js +122 -0
- package/dist/mcp/validate-file.js.map +1 -0
- package/dist/middleware.d.ts +32 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +67 -0
- package/dist/middleware.js.map +1 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/@modelcontextprotocol_sdk@1.27.1_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1262 -0
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/formats.js +195 -0
- package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/formats.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/index.js +44 -0
- package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/limit.js +88 -0
- package/dist/node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/dist/limit.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/ajv.js +107 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/ajv.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js +142 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js +678 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js +145 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js +106 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/index.js +227 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/names.js +33 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js +22 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js +137 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js +65 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/util.js +150 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js +27 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js +52 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js +176 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js +437 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js +117 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js +76 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/core.js +587 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/core.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/data.js +22 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/data.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.js +145 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js +16 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js +29 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js +16 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js +20 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +61 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +101 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +34 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +21 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +94 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +91 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js +64 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js +63 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +39 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js +36 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +56 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +66 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +22 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +57 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +46 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +22 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js +134 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js +19 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js +27 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js +116 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +106 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +18 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js +31 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js +97 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js +15 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js +27 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js +32 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js +54 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js +53 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +33 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +38 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +52 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +33 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +32 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +43 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js +77 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +75 -0
- package/dist/node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +37 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js +240 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js.map +1 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +194 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js.map +1 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +286 -0
- package/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js.map +1 -0
- package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +82 -0
- package/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js.map +1 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js +104 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js +11 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js +10 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js +110 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js +99 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js +84 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js +3160 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js +23 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js +38 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js +12 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js +611 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js +437 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js +360 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js +50 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js +34 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js +71 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js +74 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js +63 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js +50 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js +1098 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js +599 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js +267 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js +10 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js.map +1 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js +50 -0
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js.map +1 -0
- package/dist/patching.d.ts +59 -0
- package/dist/patching.d.ts.map +1 -0
- package/dist/patching.js +891 -0
- package/dist/patching.js.map +1 -0
- package/dist/propagation.d.ts +8 -0
- package/dist/propagation.d.ts.map +1 -0
- package/dist/propagation.js +46 -0
- package/dist/propagation.js.map +1 -0
- package/dist/providers/anthropic.d.ts +44 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +287 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/azure-openai.d.ts +32 -0
- package/dist/providers/azure-openai.d.ts.map +1 -0
- package/dist/providers/azure-openai.js +39 -0
- package/dist/providers/azure-openai.js.map +1 -0
- package/dist/providers/base.d.ts +70 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +141 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/bedrock.d.ts +41 -0
- package/dist/providers/bedrock.d.ts.map +1 -0
- package/dist/providers/bedrock.js +229 -0
- package/dist/providers/bedrock.js.map +1 -0
- package/dist/providers/gemini.d.ts +34 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +225 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/mistral.d.ts +32 -0
- package/dist/providers/mistral.d.ts.map +1 -0
- package/dist/providers/mistral.js +218 -0
- package/dist/providers/mistral.js.map +1 -0
- package/dist/providers/openai.d.ts +61 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +530 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/register.d.ts +1 -0
- package/dist/register.js +46 -0
- package/dist/register.js.map +1 -0
- package/dist/session.d.ts +46 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +144 -0
- package/dist/session.js.map +1 -0
- package/dist/tenant.d.ts +30 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +23 -0
- package/dist/tenant.js.map +1 -0
- package/dist/testing.d.ts +46 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +120 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +384 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/costs.d.ts +27 -0
- package/dist/utils/costs.d.ts.map +1 -0
- package/dist/utils/costs.js +63 -0
- package/dist/utils/costs.js.map +1 -0
- package/dist/utils/debug.d.ts +6 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +73 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +18 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/model-tiers.d.ts +8 -0
- package/dist/utils/model-tiers.d.ts.map +1 -0
- package/dist/utils/model-tiers.js +76 -0
- package/dist/utils/model-tiers.js.map +1 -0
- package/dist/utils/providers.d.ts +5 -0
- package/dist/utils/providers.d.ts.map +1 -0
- package/dist/utils/providers.js +20 -0
- package/dist/utils/providers.js.map +1 -0
- package/dist/utils/resolve-module.d.ts +5 -0
- package/dist/utils/resolve-module.d.ts.map +1 -0
- package/dist/utils/resolve-module.js +29 -0
- package/dist/utils/resolve-module.js.map +1 -0
- package/dist/utils/streaming.d.ts +55 -0
- package/dist/utils/streaming.d.ts.map +1 -0
- package/dist/utils/streaming.js +72 -0
- package/dist/utils/streaming.js.map +1 -0
- package/dist/utils/tokens.d.ts +16 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +80 -0
- package/dist/utils/tokens.js.map +1 -0
- package/dist/wrappers.d.ts +37 -0
- package/dist/wrappers.d.ts.map +1 -0
- package/dist/wrappers.js +61 -0
- package/dist/wrappers.js.map +1 -0
- package/llms-full.txt +127 -0
- package/llms.txt +28 -0
- package/mcp.schema.json +18 -0
- 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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"}
|