@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,38 @@
|
|
|
1
|
+
import { AmplitudeAI } from "../client.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/anthropic-tools.d.ts
|
|
4
|
+
|
|
5
|
+
interface ToolLoopOptions {
|
|
6
|
+
amplitudeAI: AmplitudeAI;
|
|
7
|
+
userId?: string;
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
agentId?: string;
|
|
10
|
+
env?: string;
|
|
11
|
+
maxTurns?: number;
|
|
12
|
+
}
|
|
13
|
+
declare class AmplitudeToolLoop {
|
|
14
|
+
private _ai;
|
|
15
|
+
private _userId;
|
|
16
|
+
private _sessionId;
|
|
17
|
+
private _agentId;
|
|
18
|
+
private _env;
|
|
19
|
+
private _maxTurns;
|
|
20
|
+
constructor(options: ToolLoopOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Run a tool loop with the Anthropic API.
|
|
23
|
+
*
|
|
24
|
+
* This method orchestrates multi-turn tool_use conversations,
|
|
25
|
+
* tracking each AI response and tool call along the way.
|
|
26
|
+
*/
|
|
27
|
+
run(options: {
|
|
28
|
+
client: unknown;
|
|
29
|
+
model: string;
|
|
30
|
+
messages: Array<Record<string, unknown>>;
|
|
31
|
+
tools: Array<Record<string, unknown>>;
|
|
32
|
+
system?: string;
|
|
33
|
+
toolExecutor: (name: string, input: Record<string, unknown>) => Promise<unknown>;
|
|
34
|
+
}): Promise<Array<Record<string, unknown>>>;
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { AmplitudeToolLoop, ToolLoopOptions };
|
|
38
|
+
//# sourceMappingURL=anthropic-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-tools.d.ts","names":[],"sources":["../../src/integrations/anthropic-tools.ts"],"sourcesContent":[],"mappings":";;;;AA6CoB,UAnCH,eAAA,CAmCG;EAAN,WAAA,EAlCC,WAkCD;EACG,MAAA,CAAA,EAAA,MAAA;EAAN,SAAA,CAAA,EAAA,MAAA;EAIE,OAAA,CAAA,EAAA,MAAA;EACJ,GAAA,CAAA,EAAA,MAAA;EACW,QAAA,CAAA,EAAA,MAAA;;AAAd,cAjCO,iBAAA,CAiCP;EAAO,QAAA,GAAA;;;;;;uBAzBU;;;;;;;;;;cAkBT,MAAM;WACT,MAAM;;wCAIJ,4BACJ;MACH,QAAQ,MAAM"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { getActiveContext } from "../context.js";
|
|
2
|
+
import { calculateCost } from "../utils/costs.js";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/anthropic-tools.ts
|
|
5
|
+
var AmplitudeToolLoop = class {
|
|
6
|
+
_ai;
|
|
7
|
+
_userId;
|
|
8
|
+
_sessionId;
|
|
9
|
+
_agentId;
|
|
10
|
+
_env;
|
|
11
|
+
_maxTurns;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this._ai = options.amplitudeAI;
|
|
14
|
+
this._userId = options.userId ?? null;
|
|
15
|
+
this._sessionId = options.sessionId ?? null;
|
|
16
|
+
this._agentId = options.agentId ?? null;
|
|
17
|
+
this._env = options.env ?? null;
|
|
18
|
+
this._maxTurns = options.maxTurns ?? 10;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Run a tool loop with the Anthropic API.
|
|
22
|
+
*
|
|
23
|
+
* This method orchestrates multi-turn tool_use conversations,
|
|
24
|
+
* tracking each AI response and tool call along the way.
|
|
25
|
+
*/
|
|
26
|
+
async run(options) {
|
|
27
|
+
const ctx = getActiveContext();
|
|
28
|
+
const userId = this._userId ?? ctx?.userId ?? "unknown";
|
|
29
|
+
const sessionId = this._sessionId ?? ctx?.sessionId ?? "tool-loop-session";
|
|
30
|
+
const agentId = this._agentId ?? ctx?.agentId ?? void 0;
|
|
31
|
+
const env = this._env ?? ctx?.env ?? void 0;
|
|
32
|
+
const messages = [...options.messages];
|
|
33
|
+
const allResponses = [];
|
|
34
|
+
let currentTurnId = 1;
|
|
35
|
+
for (const msg of messages) {
|
|
36
|
+
const userText = _extractUserText(msg);
|
|
37
|
+
if (msg.role === "user" && userText.length > 0) {
|
|
38
|
+
this._ai.trackUserMessage({
|
|
39
|
+
userId,
|
|
40
|
+
content: userText,
|
|
41
|
+
sessionId,
|
|
42
|
+
agentId,
|
|
43
|
+
env,
|
|
44
|
+
turnId: currentTurnId
|
|
45
|
+
});
|
|
46
|
+
currentTurnId += 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
for (let turn = 0; turn < this._maxTurns; turn++) {
|
|
50
|
+
const messagesApi = options.client.messages;
|
|
51
|
+
const createFn = messagesApi.create;
|
|
52
|
+
const startTime = performance.now();
|
|
53
|
+
const response = await createFn.call(messagesApi, {
|
|
54
|
+
model: options.model,
|
|
55
|
+
messages,
|
|
56
|
+
tools: options.tools,
|
|
57
|
+
system: options.system
|
|
58
|
+
});
|
|
59
|
+
const latencyMs = performance.now() - startTime;
|
|
60
|
+
allResponses.push(response);
|
|
61
|
+
const content = _normalizeContentBlocks(response.content);
|
|
62
|
+
const responseText = _extractAssistantText(content);
|
|
63
|
+
const toolUseBlocks = content.filter((b) => b.type === "tool_use");
|
|
64
|
+
const usage = response.usage;
|
|
65
|
+
const cacheRead = usage?.cache_read_input_tokens ?? 0;
|
|
66
|
+
const cacheCreation = usage?.cache_creation_input_tokens ?? 0;
|
|
67
|
+
const rawInput = usage?.input_tokens ?? 0;
|
|
68
|
+
const normalizedInput = cacheRead || cacheCreation ? rawInput + cacheRead + cacheCreation : rawInput;
|
|
69
|
+
let costUsd;
|
|
70
|
+
if (usage?.input_tokens != null && usage?.output_tokens != null) try {
|
|
71
|
+
const cost = calculateCost({
|
|
72
|
+
modelName: options.model,
|
|
73
|
+
inputTokens: normalizedInput,
|
|
74
|
+
outputTokens: usage.output_tokens,
|
|
75
|
+
cacheReadInputTokens: cacheRead,
|
|
76
|
+
cacheCreationInputTokens: cacheCreation
|
|
77
|
+
});
|
|
78
|
+
if (cost > 0) costUsd = cost;
|
|
79
|
+
} catch {}
|
|
80
|
+
this._ai.trackAiMessage({
|
|
81
|
+
userId,
|
|
82
|
+
content: responseText,
|
|
83
|
+
sessionId,
|
|
84
|
+
model: options.model,
|
|
85
|
+
provider: "anthropic",
|
|
86
|
+
latencyMs,
|
|
87
|
+
turnId: currentTurnId,
|
|
88
|
+
agentId,
|
|
89
|
+
env,
|
|
90
|
+
inputTokens: normalizedInput || void 0,
|
|
91
|
+
outputTokens: usage?.output_tokens,
|
|
92
|
+
cacheReadTokens: cacheRead || void 0,
|
|
93
|
+
cacheCreationTokens: cacheCreation || void 0,
|
|
94
|
+
totalCostUsd: costUsd
|
|
95
|
+
});
|
|
96
|
+
currentTurnId += 1;
|
|
97
|
+
if (response.stop_reason !== "tool_use" || toolUseBlocks.length === 0) break;
|
|
98
|
+
messages.push({
|
|
99
|
+
role: "assistant",
|
|
100
|
+
content
|
|
101
|
+
});
|
|
102
|
+
const toolResults = [];
|
|
103
|
+
for (const toolUse of toolUseBlocks) {
|
|
104
|
+
const toolName = String(toolUse.name);
|
|
105
|
+
const toolInput = toolUse.input;
|
|
106
|
+
const toolStartTime = performance.now();
|
|
107
|
+
try {
|
|
108
|
+
const output = await options.toolExecutor(toolName, toolInput);
|
|
109
|
+
const toolLatencyMs = performance.now() - toolStartTime;
|
|
110
|
+
this._ai.trackToolCall({
|
|
111
|
+
userId,
|
|
112
|
+
toolName,
|
|
113
|
+
latencyMs: toolLatencyMs,
|
|
114
|
+
success: true,
|
|
115
|
+
sessionId,
|
|
116
|
+
agentId,
|
|
117
|
+
env,
|
|
118
|
+
input: toolInput,
|
|
119
|
+
output: output == null ? void 0 : String(output)
|
|
120
|
+
});
|
|
121
|
+
toolResults.push({
|
|
122
|
+
type: "tool_result",
|
|
123
|
+
tool_use_id: toolUse.id,
|
|
124
|
+
content: output == null ? "" : String(output)
|
|
125
|
+
});
|
|
126
|
+
} catch (error) {
|
|
127
|
+
const toolLatencyMs = performance.now() - toolStartTime;
|
|
128
|
+
this._ai.trackToolCall({
|
|
129
|
+
userId,
|
|
130
|
+
toolName,
|
|
131
|
+
latencyMs: toolLatencyMs,
|
|
132
|
+
success: false,
|
|
133
|
+
sessionId,
|
|
134
|
+
agentId,
|
|
135
|
+
env,
|
|
136
|
+
input: toolInput,
|
|
137
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
138
|
+
});
|
|
139
|
+
toolResults.push({
|
|
140
|
+
type: "tool_result",
|
|
141
|
+
tool_use_id: toolUse.id,
|
|
142
|
+
content: `Error: ${error instanceof Error ? error.message : String(error)}`,
|
|
143
|
+
is_error: true
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
messages.push({
|
|
148
|
+
role: "user",
|
|
149
|
+
content: toolResults
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return allResponses;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
function _extractUserText(msg) {
|
|
156
|
+
if (typeof msg.content === "string") return msg.content;
|
|
157
|
+
if (!Array.isArray(msg.content)) return "";
|
|
158
|
+
return msg.content.map((block) => {
|
|
159
|
+
if (typeof block === "string") return block;
|
|
160
|
+
const item = block;
|
|
161
|
+
return typeof item.text === "string" ? item.text : "";
|
|
162
|
+
}).join("");
|
|
163
|
+
}
|
|
164
|
+
function _extractAssistantText(content) {
|
|
165
|
+
if (!Array.isArray(content)) return "";
|
|
166
|
+
return content.filter((b) => b.type === "text").map((b) => String(b.text ?? "")).join("");
|
|
167
|
+
}
|
|
168
|
+
function _normalizeContentBlocks(value) {
|
|
169
|
+
if (!Array.isArray(value)) return [];
|
|
170
|
+
return value.filter((v) => v != null && typeof v === "object");
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
//#endregion
|
|
174
|
+
export { AmplitudeToolLoop };
|
|
175
|
+
//# sourceMappingURL=anthropic-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-tools.js","names":["allResponses: Array<Record<string, unknown>>","costUsd: number | undefined","toolResults: Array<Record<string, unknown>>"],"sources":["../../src/integrations/anthropic-tools.ts"],"sourcesContent":["/**\n * Anthropic tool loop integration.\n *\n * Runs Anthropic's multi-turn tool_use loop and tracks each turn.\n */\n\nimport type { AmplitudeAI } from '../client.js';\nimport { getActiveContext } from '../context.js';\nimport { calculateCost } from '../utils/costs.js';\n\nexport interface ToolLoopOptions {\n amplitudeAI: AmplitudeAI;\n userId?: string;\n sessionId?: string;\n agentId?: string;\n env?: string;\n maxTurns?: number;\n}\n\nexport class AmplitudeToolLoop {\n private _ai: AmplitudeAI;\n private _userId: string | null;\n private _sessionId: string | null;\n private _agentId: string | null;\n private _env: string | null;\n private _maxTurns: number;\n\n constructor(options: ToolLoopOptions) {\n this._ai = options.amplitudeAI;\n this._userId = options.userId ?? null;\n this._sessionId = options.sessionId ?? null;\n this._agentId = options.agentId ?? null;\n this._env = options.env ?? null;\n this._maxTurns = options.maxTurns ?? 10;\n }\n\n /**\n * Run a tool loop with the Anthropic API.\n *\n * This method orchestrates multi-turn tool_use conversations,\n * tracking each AI response and tool call along the way.\n */\n async run(options: {\n client: unknown;\n model: string;\n messages: Array<Record<string, unknown>>;\n tools: Array<Record<string, unknown>>;\n system?: string;\n toolExecutor: (\n name: string,\n input: Record<string, unknown>,\n ) => Promise<unknown>;\n }): Promise<Array<Record<string, unknown>>> {\n const ctx = getActiveContext();\n const userId = this._userId ?? ctx?.userId ?? 'unknown';\n const sessionId = this._sessionId ?? ctx?.sessionId ?? 'tool-loop-session';\n const agentId = this._agentId ?? ctx?.agentId ?? undefined;\n const env = this._env ?? ctx?.env ?? undefined;\n\n const messages = [...options.messages];\n const allResponses: Array<Record<string, unknown>> = [];\n let currentTurnId = 1;\n\n for (const msg of messages) {\n const userText = _extractUserText(msg);\n if (msg.role === 'user' && userText.length > 0) {\n this._ai.trackUserMessage({\n userId,\n content: userText,\n sessionId,\n agentId,\n env,\n turnId: currentTurnId,\n });\n currentTurnId += 1;\n }\n }\n\n for (let turn = 0; turn < this._maxTurns; turn++) {\n const clientObj = options.client as Record<string, unknown>;\n const messagesApi = clientObj.messages as Record<string, unknown>;\n const createFn = messagesApi.create as (\n ...args: unknown[]\n ) => Promise<unknown>;\n\n const startTime = performance.now();\n const response = (await createFn.call(messagesApi, {\n model: options.model,\n messages,\n tools: options.tools,\n system: options.system,\n })) as Record<string, unknown>;\n\n const latencyMs = performance.now() - startTime;\n allResponses.push(response);\n\n const content = _normalizeContentBlocks(response.content);\n const responseText = _extractAssistantText(content);\n const toolUseBlocks = content.filter((b) => b.type === 'tool_use');\n const usage = response.usage as Record<string, number> | undefined;\n\n const cacheRead = usage?.cache_read_input_tokens ?? 0;\n const cacheCreation = usage?.cache_creation_input_tokens ?? 0;\n const rawInput = usage?.input_tokens ?? 0;\n const normalizedInput =\n cacheRead || cacheCreation\n ? rawInput + cacheRead + cacheCreation\n : rawInput;\n\n let costUsd: number | undefined;\n if (usage?.input_tokens != null && usage?.output_tokens != null) {\n try {\n const cost = calculateCost({\n modelName: options.model,\n inputTokens: normalizedInput,\n outputTokens: usage.output_tokens,\n cacheReadInputTokens: cacheRead,\n cacheCreationInputTokens: cacheCreation,\n });\n if (cost > 0) costUsd = cost;\n } catch {\n // cost calculation is best-effort\n }\n }\n\n this._ai.trackAiMessage({\n userId,\n content: responseText,\n sessionId,\n model: options.model,\n provider: 'anthropic',\n latencyMs,\n turnId: currentTurnId,\n agentId,\n env,\n inputTokens: normalizedInput || undefined,\n outputTokens: usage?.output_tokens,\n cacheReadTokens: cacheRead || undefined,\n cacheCreationTokens: cacheCreation || undefined,\n totalCostUsd: costUsd,\n });\n currentTurnId += 1;\n\n if (response.stop_reason !== 'tool_use' || toolUseBlocks.length === 0) {\n break;\n }\n\n messages.push({ role: 'assistant', content });\n\n const toolResults: Array<Record<string, unknown>> = [];\n for (const toolUse of toolUseBlocks) {\n const toolName = String(toolUse.name);\n const toolInput = toolUse.input as Record<string, unknown>;\n const toolStartTime = performance.now();\n\n try {\n const output = await options.toolExecutor(toolName, toolInput);\n const toolLatencyMs = performance.now() - toolStartTime;\n\n this._ai.trackToolCall({\n userId,\n toolName,\n latencyMs: toolLatencyMs,\n success: true,\n sessionId,\n agentId,\n env,\n input: toolInput,\n output: output == null ? undefined : String(output),\n });\n\n toolResults.push({\n type: 'tool_result',\n tool_use_id: toolUse.id,\n content: output == null ? '' : String(output),\n });\n } catch (error) {\n const toolLatencyMs = performance.now() - toolStartTime;\n\n this._ai.trackToolCall({\n userId,\n toolName,\n latencyMs: toolLatencyMs,\n success: false,\n sessionId,\n agentId,\n env,\n input: toolInput,\n errorMessage:\n error instanceof Error ? error.message : String(error),\n });\n\n toolResults.push({\n type: 'tool_result',\n tool_use_id: toolUse.id,\n content: `Error: ${error instanceof Error ? error.message : String(error)}`,\n is_error: true,\n });\n }\n }\n\n messages.push({ role: 'user', content: toolResults });\n }\n\n return allResponses;\n }\n}\n\nfunction _extractUserText(msg: Record<string, unknown>): string {\n if (typeof msg.content === 'string') return msg.content;\n if (!Array.isArray(msg.content)) return '';\n return msg.content\n .map((block) => {\n if (typeof block === 'string') return block;\n const item = block as Record<string, unknown>;\n return typeof item.text === 'string' ? item.text : '';\n })\n .join('');\n}\n\nfunction _extractAssistantText(\n content: Array<Record<string, unknown>> | undefined,\n): string {\n if (!Array.isArray(content)) return '';\n return content\n .filter((b) => b.type === 'text')\n .map((b) => String(b.text ?? ''))\n .join('');\n}\n\nfunction _normalizeContentBlocks(\n value: unknown,\n): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) return [];\n return value.filter((v) => v != null && typeof v === 'object') as Array<\n Record<string, unknown>\n >;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//#region src/integrations/crewai.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* CrewAI integration — stub for TypeScript.
|
|
4
|
+
*
|
|
5
|
+
* CrewAI is a Python-only framework. This module is a placeholder
|
|
6
|
+
* to maintain API parity with the Python SDK. It will throw an
|
|
7
|
+
* informative error if someone tries to use it.
|
|
8
|
+
*/
|
|
9
|
+
declare class AmplitudeCrewAIHooks {
|
|
10
|
+
constructor();
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { AmplitudeCrewAIHooks };
|
|
14
|
+
//# sourceMappingURL=crewai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crewai.d.ts","names":[],"sources":["../../src/integrations/crewai.ts"],"sourcesContent":[],"mappings":";;AAUA;;;;;;cAAa,oBAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ProviderError } from "../exceptions.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/crewai.ts
|
|
4
|
+
/**
|
|
5
|
+
* CrewAI integration — stub for TypeScript.
|
|
6
|
+
*
|
|
7
|
+
* CrewAI is a Python-only framework. This module is a placeholder
|
|
8
|
+
* to maintain API parity with the Python SDK. It will throw an
|
|
9
|
+
* informative error if someone tries to use it.
|
|
10
|
+
*/
|
|
11
|
+
var AmplitudeCrewAIHooks = class {
|
|
12
|
+
constructor() {
|
|
13
|
+
throw new ProviderError("CrewAI is a Python-only framework. The @amplitude/ai CrewAI integration is not available in Node.js. Use the LangChain or OpenTelemetry integration instead.");
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { AmplitudeCrewAIHooks };
|
|
19
|
+
//# sourceMappingURL=crewai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crewai.js","names":[],"sources":["../../src/integrations/crewai.ts"],"sourcesContent":["/**\n * CrewAI integration — stub for TypeScript.\n *\n * CrewAI is a Python-only framework. This module is a placeholder\n * to maintain API parity with the Python SDK. It will throw an\n * informative error if someone tries to use it.\n */\n\nimport { ProviderError } from '../exceptions.js';\n\nexport class AmplitudeCrewAIHooks {\n constructor() {\n throw new ProviderError(\n 'CrewAI is a Python-only framework. The @amplitude/ai CrewAI integration ' +\n 'is not available in Node.js. Use the LangChain or OpenTelemetry integration instead.',\n );\n }\n}\n"],"mappings":";;;;;;;;;;AAUA,IAAa,uBAAb,MAAkC;CAChC,cAAc;AACZ,QAAM,IAAI,cACR,+JAED"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PrivacyConfig } from "../core/privacy.js";
|
|
2
|
+
import { AmplitudeAI } from "../client.js";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/langchain.d.ts
|
|
5
|
+
|
|
6
|
+
interface CallbackHandlerOptions {
|
|
7
|
+
amplitudeAI: AmplitudeAI;
|
|
8
|
+
userId?: string;
|
|
9
|
+
sessionId?: string;
|
|
10
|
+
agentId?: string;
|
|
11
|
+
env?: string;
|
|
12
|
+
privacyConfig?: PrivacyConfig | null;
|
|
13
|
+
}
|
|
14
|
+
declare class AmplitudeCallbackHandler {
|
|
15
|
+
private _ai;
|
|
16
|
+
private _userId;
|
|
17
|
+
private _sessionId;
|
|
18
|
+
private _agentId;
|
|
19
|
+
private _env;
|
|
20
|
+
private _privacyConfig;
|
|
21
|
+
private _runStartTimes;
|
|
22
|
+
private _runModelNames;
|
|
23
|
+
private _toolInputs;
|
|
24
|
+
private _toolNames;
|
|
25
|
+
constructor(options: CallbackHandlerOptions);
|
|
26
|
+
private _getContext;
|
|
27
|
+
handleLLMStart(serialized: Record<string, unknown>, prompts: string[], runId: string): void;
|
|
28
|
+
handleLLMEnd(output: Record<string, unknown>, runId: string): void;
|
|
29
|
+
handleToolStart(serialized: Record<string, unknown>, input: string, runId: string): void;
|
|
30
|
+
handleToolEnd(output: string, runId: string): void;
|
|
31
|
+
handleToolError(error: unknown, runId: string): void;
|
|
32
|
+
handleLLMError(error: unknown, runId: string): void;
|
|
33
|
+
}
|
|
34
|
+
declare function createAmplitudeCallback(options: CallbackHandlerOptions): AmplitudeCallbackHandler;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { AmplitudeCallbackHandler, CallbackHandlerOptions, createAmplitudeCallback };
|
|
37
|
+
//# sourceMappingURL=langchain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.d.ts","names":[],"sources":["../../src/integrations/langchain.ts"],"sourcesContent":[],"mappings":";;;;;AA6FuB,UAjFN,sBAAA,CAiFM;EAgEP,WAAA,EAhJD,WAgJC;EAAM,MAAA,CAAA,EAAA,MAAA;EAoFN,SAAA,CAAA,EAAA,MAAA;;;kBA/NE;;cAGL,wBAAA;;;;;;;;;;;uBAYU;;6BAqBP;uBAuCO;8BAgEP;;;;;iBAoFA,uBAAA,UACL,yBACR"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { getActiveContext } from "../context.js";
|
|
2
|
+
import { calculateCost } from "../utils/costs.js";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/langchain.ts
|
|
5
|
+
var AmplitudeCallbackHandler = class {
|
|
6
|
+
_ai;
|
|
7
|
+
_userId;
|
|
8
|
+
_sessionId;
|
|
9
|
+
_agentId;
|
|
10
|
+
_env;
|
|
11
|
+
_privacyConfig;
|
|
12
|
+
_runStartTimes = /* @__PURE__ */ new Map();
|
|
13
|
+
_runModelNames = /* @__PURE__ */ new Map();
|
|
14
|
+
_toolInputs = /* @__PURE__ */ new Map();
|
|
15
|
+
_toolNames = /* @__PURE__ */ new Map();
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this._ai = options.amplitudeAI;
|
|
18
|
+
this._userId = options.userId ?? null;
|
|
19
|
+
this._sessionId = options.sessionId ?? null;
|
|
20
|
+
this._agentId = options.agentId ?? null;
|
|
21
|
+
this._env = options.env ?? null;
|
|
22
|
+
this._privacyConfig = options.privacyConfig ?? null;
|
|
23
|
+
}
|
|
24
|
+
_getContext() {
|
|
25
|
+
const ctx = getActiveContext();
|
|
26
|
+
return {
|
|
27
|
+
userId: this._userId ?? ctx?.userId ?? "unknown",
|
|
28
|
+
sessionId: this._sessionId ?? ctx?.sessionId ?? void 0,
|
|
29
|
+
agentId: this._agentId ?? ctx?.agentId ?? void 0,
|
|
30
|
+
env: this._env ?? ctx?.env ?? void 0,
|
|
31
|
+
traceId: ctx?.traceId ?? void 0
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
handleLLMStart(serialized, prompts, runId) {
|
|
35
|
+
this._runStartTimes.set(runId, performance.now());
|
|
36
|
+
const kwargs = serialized.kwargs;
|
|
37
|
+
const idModel = Array.isArray(serialized.id) ? serialized.id.find((v) => typeof v === "string" && (v.includes("gpt") || v.includes("claude") || v.includes("gemini"))) : void 0;
|
|
38
|
+
const modelName = String(kwargs?.model ?? kwargs?.modelName ?? kwargs?.model_name ?? idModel ?? "");
|
|
39
|
+
if (modelName) this._runModelNames.set(runId, modelName);
|
|
40
|
+
const trackUserMessage = this._ai.trackUserMessage;
|
|
41
|
+
if (typeof trackUserMessage === "function") {
|
|
42
|
+
const ctx = this._getContext();
|
|
43
|
+
for (const prompt of prompts) {
|
|
44
|
+
if (!prompt) continue;
|
|
45
|
+
trackUserMessage({
|
|
46
|
+
userId: ctx.userId,
|
|
47
|
+
content: prompt,
|
|
48
|
+
sessionId: ctx.sessionId ?? "langchain-session",
|
|
49
|
+
traceId: ctx.traceId,
|
|
50
|
+
agentId: ctx.agentId,
|
|
51
|
+
env: ctx.env
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
handleLLMEnd(output, runId) {
|
|
57
|
+
const startTime = this._runStartTimes.get(runId) ?? performance.now();
|
|
58
|
+
this._runStartTimes.delete(runId);
|
|
59
|
+
const latencyMs = performance.now() - startTime;
|
|
60
|
+
const firstGen = output.generations?.[0]?.[0];
|
|
61
|
+
const content = _extractLangchainText(firstGen);
|
|
62
|
+
const llmOutput = output.llmOutput;
|
|
63
|
+
const usage = llmOutput?.tokenUsage ?? llmOutput?.usage ?? llmOutput?.usage_metadata;
|
|
64
|
+
const modelFromStart = this._runModelNames.get(runId);
|
|
65
|
+
this._runModelNames.delete(runId);
|
|
66
|
+
const ctx = this._getContext();
|
|
67
|
+
const modelName = String(llmOutput?.modelName ?? modelFromStart ?? "unknown");
|
|
68
|
+
const inputTokens = _safeNumber(usage?.promptTokens ?? usage?.prompt_tokens ?? usage?.input_tokens);
|
|
69
|
+
const outputTokens = _safeNumber(usage?.completionTokens ?? usage?.completion_tokens ?? usage?.output_tokens);
|
|
70
|
+
let costUsd;
|
|
71
|
+
if (modelName !== "unknown" && inputTokens != null && outputTokens != null) try {
|
|
72
|
+
const cost = calculateCost({
|
|
73
|
+
modelName,
|
|
74
|
+
inputTokens,
|
|
75
|
+
outputTokens
|
|
76
|
+
});
|
|
77
|
+
if (cost > 0) costUsd = cost;
|
|
78
|
+
} catch {}
|
|
79
|
+
this._ai.trackAiMessage({
|
|
80
|
+
userId: ctx.userId,
|
|
81
|
+
content,
|
|
82
|
+
sessionId: ctx.sessionId ?? "langchain-session",
|
|
83
|
+
model: modelName,
|
|
84
|
+
provider: "langchain",
|
|
85
|
+
latencyMs,
|
|
86
|
+
traceId: ctx.traceId,
|
|
87
|
+
agentId: ctx.agentId,
|
|
88
|
+
env: ctx.env,
|
|
89
|
+
inputTokens,
|
|
90
|
+
outputTokens,
|
|
91
|
+
totalTokens: _safeNumber(usage?.totalTokens ?? usage?.total_tokens),
|
|
92
|
+
totalCostUsd: costUsd,
|
|
93
|
+
privacyConfig: this._privacyConfig
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
handleToolStart(serialized, input, runId) {
|
|
97
|
+
this._runStartTimes.set(runId, performance.now());
|
|
98
|
+
this._toolInputs.set(runId, input);
|
|
99
|
+
const name = String(serialized.name ?? serialized.id?.slice(-1)[0] ?? "langchain-tool");
|
|
100
|
+
this._toolNames.set(runId, name);
|
|
101
|
+
}
|
|
102
|
+
handleToolEnd(output, runId) {
|
|
103
|
+
const startTime = this._runStartTimes.get(runId) ?? performance.now();
|
|
104
|
+
this._runStartTimes.delete(runId);
|
|
105
|
+
const latencyMs = performance.now() - startTime;
|
|
106
|
+
const toolInput = this._toolInputs.get(runId);
|
|
107
|
+
this._toolInputs.delete(runId);
|
|
108
|
+
const toolName = this._toolNames.get(runId) ?? "langchain-tool";
|
|
109
|
+
this._toolNames.delete(runId);
|
|
110
|
+
const ctx = this._getContext();
|
|
111
|
+
this._ai.trackToolCall({
|
|
112
|
+
userId: ctx.userId,
|
|
113
|
+
toolName,
|
|
114
|
+
latencyMs,
|
|
115
|
+
success: true,
|
|
116
|
+
sessionId: ctx.sessionId,
|
|
117
|
+
traceId: ctx.traceId,
|
|
118
|
+
agentId: ctx.agentId,
|
|
119
|
+
env: ctx.env,
|
|
120
|
+
input: toolInput,
|
|
121
|
+
output
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
handleToolError(error, runId) {
|
|
125
|
+
const startTime = this._runStartTimes.get(runId) ?? performance.now();
|
|
126
|
+
this._runStartTimes.delete(runId);
|
|
127
|
+
const latencyMs = performance.now() - startTime;
|
|
128
|
+
const toolInput = this._toolInputs.get(runId);
|
|
129
|
+
this._toolInputs.delete(runId);
|
|
130
|
+
const toolName = this._toolNames.get(runId) ?? "langchain-tool";
|
|
131
|
+
this._toolNames.delete(runId);
|
|
132
|
+
const ctx = this._getContext();
|
|
133
|
+
this._ai.trackToolCall({
|
|
134
|
+
userId: ctx.userId,
|
|
135
|
+
toolName,
|
|
136
|
+
latencyMs,
|
|
137
|
+
success: false,
|
|
138
|
+
sessionId: ctx.sessionId,
|
|
139
|
+
traceId: ctx.traceId,
|
|
140
|
+
agentId: ctx.agentId,
|
|
141
|
+
env: ctx.env,
|
|
142
|
+
input: toolInput,
|
|
143
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
handleLLMError(error, runId) {
|
|
147
|
+
const startTime = this._runStartTimes.get(runId) ?? performance.now();
|
|
148
|
+
this._runStartTimes.delete(runId);
|
|
149
|
+
const latencyMs = performance.now() - startTime;
|
|
150
|
+
const ctx = this._getContext();
|
|
151
|
+
this._ai.trackAiMessage({
|
|
152
|
+
userId: ctx.userId,
|
|
153
|
+
content: "",
|
|
154
|
+
sessionId: ctx.sessionId ?? "langchain-session",
|
|
155
|
+
model: "unknown",
|
|
156
|
+
provider: "langchain",
|
|
157
|
+
latencyMs,
|
|
158
|
+
traceId: ctx.traceId,
|
|
159
|
+
agentId: ctx.agentId,
|
|
160
|
+
env: ctx.env,
|
|
161
|
+
isError: true,
|
|
162
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
function createAmplitudeCallback(options) {
|
|
167
|
+
return new AmplitudeCallbackHandler(options);
|
|
168
|
+
}
|
|
169
|
+
function _safeNumber(value) {
|
|
170
|
+
return typeof value === "number" ? value : void 0;
|
|
171
|
+
}
|
|
172
|
+
function _extractLangchainText(generation) {
|
|
173
|
+
if (generation == null || typeof generation !== "object") return "";
|
|
174
|
+
const gen = generation;
|
|
175
|
+
if (typeof gen.text === "string") return gen.text;
|
|
176
|
+
const message = gen.message;
|
|
177
|
+
if (message == null) return "";
|
|
178
|
+
if (typeof message.content === "string") return message.content;
|
|
179
|
+
if (!Array.isArray(message.content)) return "";
|
|
180
|
+
return message.content.map((part) => {
|
|
181
|
+
if (typeof part === "string") return part;
|
|
182
|
+
const item = part;
|
|
183
|
+
return typeof item.text === "string" ? item.text : "";
|
|
184
|
+
}).join("");
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
//#endregion
|
|
188
|
+
export { AmplitudeCallbackHandler, createAmplitudeCallback };
|
|
189
|
+
//# sourceMappingURL=langchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain.js","names":["costUsd: number | undefined"],"sources":["../../src/integrations/langchain.ts"],"sourcesContent":["/**\n * LangChain integration — AmplitudeCallbackHandler.\n *\n * Tracks LLM calls, tool calls, and chain events via LangChain's\n * callback system.\n */\n\nimport type { AmplitudeAI } from '../client.js';\nimport { getActiveContext } from '../context.js';\nimport type { PrivacyConfig } from '../core/privacy.js';\nimport { calculateCost } from '../utils/costs.js';\n\nexport interface CallbackHandlerOptions {\n amplitudeAI: AmplitudeAI;\n userId?: string;\n sessionId?: string;\n agentId?: string;\n env?: string;\n privacyConfig?: PrivacyConfig | null;\n}\n\nexport class AmplitudeCallbackHandler {\n private _ai: AmplitudeAI;\n private _userId: string | null;\n private _sessionId: string | null;\n private _agentId: string | null;\n private _env: string | null;\n private _privacyConfig: PrivacyConfig | null;\n private _runStartTimes: Map<string, number> = new Map();\n private _runModelNames: Map<string, string> = new Map();\n private _toolInputs: Map<string, unknown> = new Map();\n private _toolNames: Map<string, string> = new Map();\n\n constructor(options: CallbackHandlerOptions) {\n this._ai = options.amplitudeAI;\n this._userId = options.userId ?? null;\n this._sessionId = options.sessionId ?? null;\n this._agentId = options.agentId ?? null;\n this._env = options.env ?? null;\n this._privacyConfig = options.privacyConfig ?? null;\n }\n\n private _getContext() {\n const ctx = getActiveContext();\n return {\n userId: this._userId ?? ctx?.userId ?? 'unknown',\n sessionId: this._sessionId ?? ctx?.sessionId ?? undefined,\n agentId: this._agentId ?? ctx?.agentId ?? undefined,\n env: this._env ?? ctx?.env ?? undefined,\n traceId: ctx?.traceId ?? undefined,\n };\n }\n\n handleLLMStart(\n serialized: Record<string, unknown>,\n prompts: string[],\n runId: string,\n ): void {\n this._runStartTimes.set(runId, performance.now());\n const kwargs = serialized.kwargs as Record<string, unknown> | undefined;\n const idModel = Array.isArray(serialized.id)\n ? serialized.id.find(\n (v) =>\n typeof v === 'string' &&\n (v.includes('gpt') || v.includes('claude') || v.includes('gemini')),\n )\n : undefined;\n const modelName = String(\n kwargs?.model ?? kwargs?.modelName ?? kwargs?.model_name ?? idModel ?? '',\n );\n if (modelName) this._runModelNames.set(runId, modelName);\n\n const trackUserMessage = (\n this._ai as unknown as {\n trackUserMessage?: (opts: Record<string, unknown>) => void;\n }\n ).trackUserMessage;\n if (typeof trackUserMessage === 'function') {\n const ctx = this._getContext();\n for (const prompt of prompts) {\n if (!prompt) continue;\n trackUserMessage({\n userId: ctx.userId,\n content: prompt,\n sessionId: ctx.sessionId ?? 'langchain-session',\n traceId: ctx.traceId,\n agentId: ctx.agentId,\n env: ctx.env,\n });\n }\n }\n }\n\n handleLLMEnd(output: Record<string, unknown>, runId: string): void {\n const startTime = this._runStartTimes.get(runId) ?? performance.now();\n this._runStartTimes.delete(runId);\n const latencyMs = performance.now() - startTime;\n\n const generations = output.generations as\n | Array<Array<Record<string, unknown>>>\n | undefined;\n const firstGen = generations?.[0]?.[0];\n const content = _extractLangchainText(firstGen);\n const llmOutput = output.llmOutput as Record<string, unknown> | undefined;\n const usage =\n (llmOutput?.tokenUsage as Record<string, unknown> | undefined) ??\n (llmOutput?.usage as Record<string, unknown> | undefined) ??\n (llmOutput?.usage_metadata as Record<string, unknown> | undefined);\n const modelFromStart = this._runModelNames.get(runId);\n this._runModelNames.delete(runId);\n\n const ctx = this._getContext();\n const modelName = String(\n llmOutput?.modelName ?? modelFromStart ?? 'unknown',\n );\n const inputTokens = _safeNumber(\n usage?.promptTokens ?? usage?.prompt_tokens ?? usage?.input_tokens,\n );\n const outputTokens = _safeNumber(\n usage?.completionTokens ??\n usage?.completion_tokens ??\n usage?.output_tokens,\n );\n\n let costUsd: number | undefined;\n if (\n modelName !== 'unknown' &&\n inputTokens != null &&\n outputTokens != null\n ) {\n try {\n const cost = calculateCost({ modelName, inputTokens, outputTokens });\n if (cost > 0) costUsd = cost;\n } catch {\n // cost calculation is best-effort\n }\n }\n\n this._ai.trackAiMessage({\n userId: ctx.userId,\n content,\n sessionId: ctx.sessionId ?? 'langchain-session',\n model: modelName,\n provider: 'langchain',\n latencyMs,\n traceId: ctx.traceId,\n agentId: ctx.agentId,\n env: ctx.env,\n inputTokens,\n outputTokens,\n totalTokens: _safeNumber(usage?.totalTokens ?? usage?.total_tokens),\n totalCostUsd: costUsd,\n privacyConfig: this._privacyConfig,\n });\n }\n\n handleToolStart(\n serialized: Record<string, unknown>,\n input: string,\n runId: string,\n ): void {\n this._runStartTimes.set(runId, performance.now());\n this._toolInputs.set(runId, input);\n const name = String(\n serialized.name ??\n (serialized.id as string[] | undefined)?.slice(-1)[0] ??\n 'langchain-tool',\n );\n this._toolNames.set(runId, name);\n }\n\n handleToolEnd(output: string, runId: string): void {\n const startTime = this._runStartTimes.get(runId) ?? performance.now();\n this._runStartTimes.delete(runId);\n const latencyMs = performance.now() - startTime;\n const toolInput = this._toolInputs.get(runId);\n this._toolInputs.delete(runId);\n const toolName = this._toolNames.get(runId) ?? 'langchain-tool';\n this._toolNames.delete(runId);\n\n const ctx = this._getContext();\n this._ai.trackToolCall({\n userId: ctx.userId,\n toolName,\n latencyMs,\n success: true,\n sessionId: ctx.sessionId,\n traceId: ctx.traceId,\n agentId: ctx.agentId,\n env: ctx.env,\n input: toolInput,\n output,\n });\n }\n\n handleToolError(error: unknown, runId: string): void {\n const startTime = this._runStartTimes.get(runId) ?? performance.now();\n this._runStartTimes.delete(runId);\n const latencyMs = performance.now() - startTime;\n const toolInput = this._toolInputs.get(runId);\n this._toolInputs.delete(runId);\n const toolName = this._toolNames.get(runId) ?? 'langchain-tool';\n this._toolNames.delete(runId);\n\n const ctx = this._getContext();\n this._ai.trackToolCall({\n userId: ctx.userId,\n toolName,\n latencyMs,\n success: false,\n sessionId: ctx.sessionId,\n traceId: ctx.traceId,\n agentId: ctx.agentId,\n env: ctx.env,\n input: toolInput,\n errorMessage: error instanceof Error ? error.message : String(error),\n });\n }\n\n handleLLMError(error: unknown, runId: string): void {\n const startTime = this._runStartTimes.get(runId) ?? performance.now();\n this._runStartTimes.delete(runId);\n const latencyMs = performance.now() - startTime;\n\n const ctx = this._getContext();\n this._ai.trackAiMessage({\n userId: ctx.userId,\n content: '',\n sessionId: ctx.sessionId ?? 'langchain-session',\n model: 'unknown',\n provider: 'langchain',\n latencyMs,\n traceId: ctx.traceId,\n agentId: ctx.agentId,\n env: ctx.env,\n isError: true,\n errorMessage: error instanceof Error ? error.message : String(error),\n });\n }\n}\n\nexport function createAmplitudeCallback(\n options: CallbackHandlerOptions,\n): AmplitudeCallbackHandler {\n return new AmplitudeCallbackHandler(options);\n}\n\nfunction _safeNumber(value: unknown): number | undefined {\n return typeof value === 'number' ? value : undefined;\n}\n\nfunction _extractLangchainText(generation: unknown): string {\n if (generation == null || typeof generation !== 'object') return '';\n const gen = generation as Record<string, unknown>;\n if (typeof gen.text === 'string') return gen.text;\n const message = gen.message as Record<string, unknown> | undefined;\n if (message == null) return '';\n if (typeof message.content === 'string') return message.content;\n if (!Array.isArray(message.content)) return '';\n return message.content\n .map((part) => {\n if (typeof part === 'string') return part;\n const item = part as Record<string, unknown>;\n return typeof item.text === 'string' ? item.text : '';\n })\n .join('');\n}\n"],"mappings":";;;;AAqBA,IAAa,2BAAb,MAAsC;CACpC,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ,iCAAsC,IAAI,KAAK;CACvD,AAAQ,iCAAsC,IAAI,KAAK;CACvD,AAAQ,8BAAoC,IAAI,KAAK;CACrD,AAAQ,6BAAkC,IAAI,KAAK;CAEnD,YAAY,SAAiC;AAC3C,OAAK,MAAM,QAAQ;AACnB,OAAK,UAAU,QAAQ,UAAU;AACjC,OAAK,aAAa,QAAQ,aAAa;AACvC,OAAK,WAAW,QAAQ,WAAW;AACnC,OAAK,OAAO,QAAQ,OAAO;AAC3B,OAAK,iBAAiB,QAAQ,iBAAiB;;CAGjD,AAAQ,cAAc;EACpB,MAAM,MAAM,kBAAkB;AAC9B,SAAO;GACL,QAAQ,KAAK,WAAW,KAAK,UAAU;GACvC,WAAW,KAAK,cAAc,KAAK,aAAa;GAChD,SAAS,KAAK,YAAY,KAAK,WAAW;GAC1C,KAAK,KAAK,QAAQ,KAAK,OAAO;GAC9B,SAAS,KAAK,WAAW;GAC1B;;CAGH,eACE,YACA,SACA,OACM;AACN,OAAK,eAAe,IAAI,OAAO,YAAY,KAAK,CAAC;EACjD,MAAM,SAAS,WAAW;EAC1B,MAAM,UAAU,MAAM,QAAQ,WAAW,GAAG,GACxC,WAAW,GAAG,MACX,MACC,OAAO,MAAM,aACZ,EAAE,SAAS,MAAM,IAAI,EAAE,SAAS,SAAS,IAAI,EAAE,SAAS,SAAS,EACrE,GACD;EACJ,MAAM,YAAY,OAChB,QAAQ,SAAS,QAAQ,aAAa,QAAQ,cAAc,WAAW,GACxE;AACD,MAAI,UAAW,MAAK,eAAe,IAAI,OAAO,UAAU;EAExD,MAAM,mBACJ,KAAK,IAGL;AACF,MAAI,OAAO,qBAAqB,YAAY;GAC1C,MAAM,MAAM,KAAK,aAAa;AAC9B,QAAK,MAAM,UAAU,SAAS;AAC5B,QAAI,CAAC,OAAQ;AACb,qBAAiB;KACf,QAAQ,IAAI;KACZ,SAAS;KACT,WAAW,IAAI,aAAa;KAC5B,SAAS,IAAI;KACb,SAAS,IAAI;KACb,KAAK,IAAI;KACV,CAAC;;;;CAKR,aAAa,QAAiC,OAAqB;EACjE,MAAM,YAAY,KAAK,eAAe,IAAI,MAAM,IAAI,YAAY,KAAK;AACrE,OAAK,eAAe,OAAO,MAAM;EACjC,MAAM,YAAY,YAAY,KAAK,GAAG;EAKtC,MAAM,WAHc,OAAO,cAGI,KAAK;EACpC,MAAM,UAAU,sBAAsB,SAAS;EAC/C,MAAM,YAAY,OAAO;EACzB,MAAM,QACH,WAAW,cACX,WAAW,SACX,WAAW;EACd,MAAM,iBAAiB,KAAK,eAAe,IAAI,MAAM;AACrD,OAAK,eAAe,OAAO,MAAM;EAEjC,MAAM,MAAM,KAAK,aAAa;EAC9B,MAAM,YAAY,OAChB,WAAW,aAAa,kBAAkB,UAC3C;EACD,MAAM,cAAc,YAClB,OAAO,gBAAgB,OAAO,iBAAiB,OAAO,aACvD;EACD,MAAM,eAAe,YACnB,OAAO,oBACL,OAAO,qBACP,OAAO,cACV;EAED,IAAIA;AACJ,MACE,cAAc,aACd,eAAe,QACf,gBAAgB,KAEhB,KAAI;GACF,MAAM,OAAO,cAAc;IAAE;IAAW;IAAa;IAAc,CAAC;AACpE,OAAI,OAAO,EAAG,WAAU;UAClB;AAKV,OAAK,IAAI,eAAe;GACtB,QAAQ,IAAI;GACZ;GACA,WAAW,IAAI,aAAa;GAC5B,OAAO;GACP,UAAU;GACV;GACA,SAAS,IAAI;GACb,SAAS,IAAI;GACb,KAAK,IAAI;GACT;GACA;GACA,aAAa,YAAY,OAAO,eAAe,OAAO,aAAa;GACnE,cAAc;GACd,eAAe,KAAK;GACrB,CAAC;;CAGJ,gBACE,YACA,OACA,OACM;AACN,OAAK,eAAe,IAAI,OAAO,YAAY,KAAK,CAAC;AACjD,OAAK,YAAY,IAAI,OAAO,MAAM;EAClC,MAAM,OAAO,OACX,WAAW,QACR,WAAW,IAA6B,MAAM,GAAG,CAAC,MACnD,iBACH;AACD,OAAK,WAAW,IAAI,OAAO,KAAK;;CAGlC,cAAc,QAAgB,OAAqB;EACjD,MAAM,YAAY,KAAK,eAAe,IAAI,MAAM,IAAI,YAAY,KAAK;AACrE,OAAK,eAAe,OAAO,MAAM;EACjC,MAAM,YAAY,YAAY,KAAK,GAAG;EACtC,MAAM,YAAY,KAAK,YAAY,IAAI,MAAM;AAC7C,OAAK,YAAY,OAAO,MAAM;EAC9B,MAAM,WAAW,KAAK,WAAW,IAAI,MAAM,IAAI;AAC/C,OAAK,WAAW,OAAO,MAAM;EAE7B,MAAM,MAAM,KAAK,aAAa;AAC9B,OAAK,IAAI,cAAc;GACrB,QAAQ,IAAI;GACZ;GACA;GACA,SAAS;GACT,WAAW,IAAI;GACf,SAAS,IAAI;GACb,SAAS,IAAI;GACb,KAAK,IAAI;GACT,OAAO;GACP;GACD,CAAC;;CAGJ,gBAAgB,OAAgB,OAAqB;EACnD,MAAM,YAAY,KAAK,eAAe,IAAI,MAAM,IAAI,YAAY,KAAK;AACrE,OAAK,eAAe,OAAO,MAAM;EACjC,MAAM,YAAY,YAAY,KAAK,GAAG;EACtC,MAAM,YAAY,KAAK,YAAY,IAAI,MAAM;AAC7C,OAAK,YAAY,OAAO,MAAM;EAC9B,MAAM,WAAW,KAAK,WAAW,IAAI,MAAM,IAAI;AAC/C,OAAK,WAAW,OAAO,MAAM;EAE7B,MAAM,MAAM,KAAK,aAAa;AAC9B,OAAK,IAAI,cAAc;GACrB,QAAQ,IAAI;GACZ;GACA;GACA,SAAS;GACT,WAAW,IAAI;GACf,SAAS,IAAI;GACb,SAAS,IAAI;GACb,KAAK,IAAI;GACT,OAAO;GACP,cAAc,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;GACrE,CAAC;;CAGJ,eAAe,OAAgB,OAAqB;EAClD,MAAM,YAAY,KAAK,eAAe,IAAI,MAAM,IAAI,YAAY,KAAK;AACrE,OAAK,eAAe,OAAO,MAAM;EACjC,MAAM,YAAY,YAAY,KAAK,GAAG;EAEtC,MAAM,MAAM,KAAK,aAAa;AAC9B,OAAK,IAAI,eAAe;GACtB,QAAQ,IAAI;GACZ,SAAS;GACT,WAAW,IAAI,aAAa;GAC5B,OAAO;GACP,UAAU;GACV;GACA,SAAS,IAAI;GACb,SAAS,IAAI;GACb,KAAK,IAAI;GACT,SAAS;GACT,cAAc,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;GACrE,CAAC;;;AAIN,SAAgB,wBACd,SAC0B;AAC1B,QAAO,IAAI,yBAAyB,QAAQ;;AAG9C,SAAS,YAAY,OAAoC;AACvD,QAAO,OAAO,UAAU,WAAW,QAAQ;;AAG7C,SAAS,sBAAsB,YAA6B;AAC1D,KAAI,cAAc,QAAQ,OAAO,eAAe,SAAU,QAAO;CACjE,MAAM,MAAM;AACZ,KAAI,OAAO,IAAI,SAAS,SAAU,QAAO,IAAI;CAC7C,MAAM,UAAU,IAAI;AACpB,KAAI,WAAW,KAAM,QAAO;AAC5B,KAAI,OAAO,QAAQ,YAAY,SAAU,QAAO,QAAQ;AACxD,KAAI,CAAC,MAAM,QAAQ,QAAQ,QAAQ,CAAE,QAAO;AAC5C,QAAO,QAAQ,QACZ,KAAK,SAAS;AACb,MAAI,OAAO,SAAS,SAAU,QAAO;EACrC,MAAM,OAAO;AACb,SAAO,OAAO,KAAK,SAAS,WAAW,KAAK,OAAO;GACnD,CACD,KAAK,GAAG"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { AmplitudeAI } from "../client.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/llamaindex.d.ts
|
|
4
|
+
|
|
5
|
+
interface LlamaIndexHandlerOptions {
|
|
6
|
+
amplitudeAI: AmplitudeAI;
|
|
7
|
+
userId?: string;
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
agentId?: string;
|
|
10
|
+
env?: string;
|
|
11
|
+
}
|
|
12
|
+
declare class AmplitudeLlamaIndexHandler {
|
|
13
|
+
private _ai;
|
|
14
|
+
private _userId;
|
|
15
|
+
private _sessionId;
|
|
16
|
+
private _agentId;
|
|
17
|
+
private _env;
|
|
18
|
+
private _startTimes;
|
|
19
|
+
constructor(options: LlamaIndexHandlerOptions);
|
|
20
|
+
private _getContext;
|
|
21
|
+
onLLMStart(eventId: string): void;
|
|
22
|
+
onLLMEnd(eventId: string, response: {
|
|
23
|
+
content?: string;
|
|
24
|
+
model?: string;
|
|
25
|
+
inputTokens?: number;
|
|
26
|
+
outputTokens?: number;
|
|
27
|
+
}): void;
|
|
28
|
+
onEmbeddingStart(eventId: string): void;
|
|
29
|
+
onEmbeddingEnd(eventId: string, response: {
|
|
30
|
+
model?: string;
|
|
31
|
+
inputTokens?: number;
|
|
32
|
+
dimensions?: number;
|
|
33
|
+
}): void;
|
|
34
|
+
onToolStart(eventId: string): void;
|
|
35
|
+
onToolEnd(eventId: string, response: {
|
|
36
|
+
toolName?: string;
|
|
37
|
+
output?: unknown;
|
|
38
|
+
success?: boolean;
|
|
39
|
+
}): void;
|
|
40
|
+
}
|
|
41
|
+
declare function createAmplitudeLlamaIndexHandler(options: LlamaIndexHandlerOptions): AmplitudeLlamaIndexHandler;
|
|
42
|
+
//#endregion
|
|
43
|
+
export { AmplitudeLlamaIndexHandler, LlamaIndexHandlerOptions, createAmplitudeLlamaIndexHandler };
|
|
44
|
+
//# sourceMappingURL=llamaindex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llamaindex.d.ts","names":[],"sources":["../../src/integrations/llamaindex.ts"],"sourcesContent":[],"mappings":";;;;UAWiB,wBAAA;eACF;;;;;;cAOF,0BAAA;;;;;;;uBAQU;;;;;;;;;;;;;;;;;;;;;;iBAiIP,gCAAA,UACL,2BACR"}
|