{"_id":"@amplitude/ai","_rev":"39-15e85e931d8074f4a8940ed9edd852f9","name":"@amplitude/ai","dist-tags":{"latest":"0.17.0"},"versions":{"0.1.0":{"name":"@amplitude/ai","version":"0.1.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.1.0","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-init":"bin/amplitude-ai-init.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"e10e71f02b87c3e6afae242248e54bef9d85a406","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.1.0.tgz","fileCount":510,"integrity":"sha512-UH4qwOtmWnmrL/kaqUiHe1Z1sAe/WCun+af9W/kFHzBgO8uyNQfcGBn0QAmhPqtP2Zby55Ja625/T2gACsi8bA==","signatures":[{"sig":"MEUCIBD8qvoxoB6jlyhB7DKKaC/cR1GaIAtAgiWaJSMAnLPpAiEAsMHT44Lm2oXpPLRjarZRKQges3KbXM3W2V9A8ew/a+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3153964},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./cli/init":"./dist/cli/init.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"dea4fb329a3d976e57ccf06624f1a782346a7d7b","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.0_1773860360256_0.5308670614862139","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@amplitude/ai","version":"0.1.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.1.1","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-init":"bin/amplitude-ai-init.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"78621599a610e18046687a33d74c7ca9f9231f9c","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.1.1.tgz","fileCount":510,"integrity":"sha512-8wjsjR3eO8CLG5IjnvYFHIgu52xKkI7j5h2uYBMpVSFjVGJ/C8sii4/y3n0aIs5NuuOeqxuNiHOTWvO9fPW6bw==","signatures":[{"sig":"MEYCIQCPFMeMwcuhT7eF9uA+ddhLjMvm6gNkWJKWXVdTy1IQswIhAPiGharV/x5QUnY1/78ATDmly9La9I24MJ32WI8B3gzz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3174211},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./cli/init":"./dist/cli/init.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"a3fd73f35aa7ec9cd37aa43d28de7667afe7bb7d","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.1_1773885141385_0.9719550002680415","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@amplitude/ai","version":"0.1.2","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.1.2","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-init":"bin/amplitude-ai-init.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"2637807b57d3d31602fa5841046d7da642943c08","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.1.2.tgz","fileCount":510,"integrity":"sha512-ucnQh525H+39G6dKb1TKSIsd9aSG59NO+M07BE/uJRu+F8S9THoNiBwTqUiky5RzqBHHzpGBE376ziCbar8EbA==","signatures":[{"sig":"MEUCIQDV6XJu+q3u4WCKoEzLDJDMvxv7gDh1eeCHrErxw5633gIgG4O3SxnyiebmKeQqxrUF6aHJUyvDlwNOhyHjqQu1IsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3174871},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./cli/init":"./dist/cli/init.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"506080f0cf4b8910ece866034effa85b08d5b85d","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.1.2_1773966353799_0.6330652321528902","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@amplitude/ai","version":"0.2.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.2.0","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-init":"bin/amplitude-ai-init.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"e214860d1da3bc84a5a39a00b42a786a4379359a","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.2.0.tgz","fileCount":510,"integrity":"sha512-evrB62m1ROilBxkdy/QhRVRNX0y9oXyhQJqEIhuBBEugGuPBSAtcjp1ykK6lAH1/p33dmx8mpNLZ0OrY/fC6lg==","signatures":[{"sig":"MEYCIQD/Ou4QrW1aicecQj25DmSyryTF3aJFnAcebaFzLDMYVQIhALvnCj7AmE6JQRDmrdEjojwACbuVfC4xQmG8wtwv/J47","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3206933},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./cli/init":"./dist/cli/init.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"ea04b7682d089c9f940aefbd789df00c4fd14ee1","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.2.0_1773998122301_0.16999103274532357","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@amplitude/ai","version":"0.2.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.2.1","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-init":"bin/amplitude-ai-init.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"432a62dbaa83d0a6bdf251192bf1588788f35d1c","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.2.1.tgz","fileCount":510,"integrity":"sha512-i8C0hmG9sMvvE1w1DMpS8ZUiLg8uJnuX9RX04gmJpuV+wOKx6pp7EZ6Q7dOcbS/QXzmVVqPO21rDwWPYkeiyVQ==","signatures":[{"sig":"MEYCIQCEiJWH43xPwdh6AaCDbRUyOfu8ZMIlq1fJKVkn1MMxuwIhAIZKXBnZA4PCCio8WZPhwt4DK1qAfujUryJcStTgr5PR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3207372},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./cli/init":"./dist/cli/init.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"fbb5827842337d40835fb2c0f2f52484adb2210b","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.2.1_1774002251400_0.9295670282560882","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amplitude/ai","version":"0.3.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.0","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"e80e993a460d6047f174acaa85f4bd208fbfc9e4","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.0.tgz","fileCount":527,"integrity":"sha512-U4BJpdMjXs0s5xEp0NfNDgUWE0Ge2oGWlE15oXv6mbFzNyMDP3a9jlgBTf3NGsp9V1I3/cO2oRGjISt9FWaOxw==","signatures":[{"sig":"MEUCIC0UecZiExfIM3fk68GBtu2SBAWK7P3ySsSsUbmHE59tAiEAqYfrIqvnxLhDEUlJNwUKmJqRckq4DvCAlhizRo0eL0s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4290880},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"b6eb88c985ddc38551c0e0b371b30e2bf5b286d5","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.0_1774082136002_0.4669667912353235","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amplitude/ai","version":"0.3.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.1","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"013ba1fb08e1b8389dff3024d6bc8ab7311c6dbe","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.1.tgz","fileCount":527,"integrity":"sha512-bwoGq9SANTaALmk4X89OlMWn8hLzAgPqQwXveUi89ZEHODKtlsqONDK926XRxGXKr63ZSpwU9PKqzr54zm0ODg==","signatures":[{"sig":"MEUCIQDmXZT8QtHPy4QphSKN+fmI67SU5MhcFEyVx72Y+yLcaQIgJT+ibb8EN+waUJ7E7t46aea1rXKYJrXsaYlNVqIcP/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4290682},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"0a5708b23e48ec0ee4e8377315f4db09e1cfcf7f","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.1_1774083550375_0.5200950769153443","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@amplitude/ai","version":"0.3.2","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.2","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"3c1b8694a98c94be336f503972fa0ba0e7046a01","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.2.tgz","fileCount":527,"integrity":"sha512-ymKWpUM116fYljO4+RBNWuQv4jimm8q1yrthfrsruxLzn9diJzaMmepUQthROc9YsFZl5MULIb//M1LbKATNJQ==","signatures":[{"sig":"MEUCIQCbPB0iBoXNdAKrrv4bhTJ9f1ucBUneufFNCAZlTEM6DwIgUPGqPAY6Z0XVSESe2GeGnO6vw9TUuVafcX9/i1Fxkcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4290569},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"0c81b9b49b51db659c26712b2ac0cfe4e96becf5","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.2_1774084002615_0.8547236970269112","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@amplitude/ai","version":"0.3.3","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.3","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"dc219586d584fdbe77a77b8c5b9717ea3482ae7b","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.3.tgz","fileCount":527,"integrity":"sha512-rIgSetGNr3pr1sS67a4lYsl9yYy0ShMj85TjSfa1eTZt8zrMgiFTkEPQWHPnD7S3xq83iY2jYvyBZ2Pv4+gx+Q==","signatures":[{"sig":"MEUCIAQt3OWc6K32Mh16IS3Kw/S1tOEh8hwjydjLBnEPu+gWAiEAqCnGVIGUetUZfXJrxJxceHiCwrQGYk0PFNrPcVwEWwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4291481},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"5eba466b2998eb720353401e7a1660a3a1eef249","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.3_1774114586785_0.45848334326665463","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@amplitude/ai","version":"0.3.4","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.4","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"8c8bd32d5829303d457732411a600bc79c3a2537","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.4.tgz","fileCount":527,"integrity":"sha512-h6B/f8UtSZjZAL3WF8cYz+PbdAySwuTuSZ65699Te5iqgG/44f/SdI79JveLowmaeazoGdJIuiFIjZLtsyUpbw==","signatures":[{"sig":"MEUCIBqcCT7E/QO+PL+hjsAhj6A8nAg144d45SkF4wi+gOzeAiEA+SM38qwzXAS7Qalj99YRQktTdtsKrzwG2Yl5/cwjymU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4291397},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"5fb36a7262b88d879d0d0d296d86b1a89b2024ab","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.4_1774115400662_0.6849083671579443","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@amplitude/ai","version":"0.3.5","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.5","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"60e973ae35f9acb67e548cf0a4141fd9ace63026","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.5.tgz","fileCount":527,"integrity":"sha512-ZHF2LLnZODaSoFWJAAb62epsL3bIHht9iQ9JpoGAX8lFwHu7qHEdcAatjQ2dfjFqOuz8/AcTuEoJ/Sr5SD6Mrw==","signatures":[{"sig":"MEQCIDUqnUUqPL0d9Pud2ZdmnkW5R9eKrNSg2qgob5jEsfpiAiBuioW0plvH/UNnkmcYd/C3lecPrkd0oxAitrt+p9YkPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4296040},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"aaa1695b60aed3205d1a99e14c42c73749c686b3","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.5_1774583625002_0.7657876853126329","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@amplitude/ai","version":"0.3.6","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.6","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"bfa0fb7db18c98551c438e2251d24d421c05e11b","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.6.tgz","fileCount":527,"integrity":"sha512-/m3WdHg4PYinmSeF1ZPbXa1bCHZ3YKhE77vmjNKDGVvxto888w3jhUrV8p8igwGGq+HdvUKX0Di7KG3/cKnjxg==","signatures":[{"sig":"MEUCIAmKGR5FFBbCX/gzL4hKGAtmroitlpEUSQh9nKhE99NcAiEAoOFJXae03WjawR3TP+wInG+1z4Sttm9fBw4nkjeR578=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4298719},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"8cb204d340b089076297f734b47bc406988f1e11","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.6_1774656963349_0.9133280440879892","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@amplitude/ai","version":"0.3.7","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.7","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"b2adbb082b9e384d4beb8dab365b36e80b592f25","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.7.tgz","fileCount":527,"integrity":"sha512-KbIxxKawXMo5cO4XBnvmUTOuERLv5Zsi/Z4c+U87VfqyD5+lT+27HFEogN2bmHU+a1f0FKKKt2m7zAR7K+c9MA==","signatures":[{"sig":"MEQCIEd/rkFRjFkJMnlVknRTjJeH7EKahbeqf4USL5C7bC/mAiAZb7SoU+zkNn6TBNBh8DJV9tbISR7Cp8AiYRiqSUCBcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4300692},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"6a4c6d0c224ad90d87e34414cd83e72d8f659ba9","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.7_1774934654201_0.22618768399621803","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@amplitude/ai","version":"0.3.8","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.8","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"0c9a1f304f845cdabfb6c7671637ad9b41ff2d64","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.8.tgz","fileCount":527,"integrity":"sha512-H4R/a0PjmvfMpw6JwZKJF7++mpM/s/ruOBMDx/SdR6/x1PNzZuSk0j7peYjCit7IpEut4MQT6zfGuzcmZtQpCQ==","signatures":[{"sig":"MEUCIQDX7A36ZTlP2KivY1shyN2SMW2h6K8RjmPn8aiqj89/QQIgHtNgXTzAdiWe7J0PGz2ENTawrGIpScjQ2n9SYWY91C0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4306885},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"ed98934c8ae07041e0f29fca7f70839326e23251","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.8_1774993070350_0.4950997518394551","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@amplitude/ai","version":"0.3.9","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.3.9","maintainers":[{"name":"rctbusk","email":"rctbusk@gmail.com"},{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"nutwani","email":"nirmal@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"ajhorst_amp","email":"aj.horst@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"amplicynthia","email":"cynthia.li@amplitude.com"},{"name":"jimmynotjim","email":"jimmynotjim@me.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"5528a074100c406e4baffbbcae1c28e79f1b82d5","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.3.9.tgz","fileCount":527,"integrity":"sha512-IGpvWIYDKKX0zdUyQ4X62FBkePPPebe/pe7Gjgy63uIWg0a+JeNTlVEV9qzOiyUNVwjfyS9vowj1b1gdRfFeiA==","signatures":[{"sig":"MEUCIFS6nyuwdnH2gBvuQY77W/j5UjD2auIKdJQ1INw8p6BQAiEAph63NthIJ6lofzBvNd/9s0vlKOgncmYKPZMSHr7KXFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.3.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4312349},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js"},"gitHead":"457517dd93aca3494e0d4f61a65935631bb021dc","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.9.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.3.9_1775177105919_0.41494571196169194","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@amplitude/ai","version":"0.4.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.4.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"1738247f5222e860bbd1174806a41e6a0b954829","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.4.0.tgz","fileCount":531,"integrity":"sha512-wjO/f6Ww0m2k8YVSeppmV2XVOeIQ5aDBoCOS9av0e7YusjbHRzbsgSdAQnDzuRSBvtxbcR6kIrvH6hvRHv871A==","signatures":[{"sig":"MEYCIQDTNNAc1hLS67b2Baaddlww4E6brFy8dv1wUqIP88Ri8QIhAMFuoDVBfjGmys98L+TCzU7sGMfChUFRi1sDjzOurSzz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4333742},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"e90f1ce1c8ee84497d983dc68e04b9029e8c8951","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.4.0_1776213970332_0.4687672308996558","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@amplitude/ai","version":"0.5.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.5.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"2e93f7dfdee59b6b42f1eaadc9084a6c6ddd4937","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.5.0.tgz","fileCount":543,"integrity":"sha512-0WqnQRpbnWwZ+0A5jAvMvkFCavUz8WklJn6kN5GiUnpcYCyIfZnt2D02KuqWpzvF5QtiL8H96g+5w6rqZQgoBA==","signatures":[{"sig":"MEUCIFbZjcHzGR9DSwVfcKiHo5clY2kGMMoppGg3fuW3yiZPAiEA+KK3UysaKiKSrW8Mnf7GVw8EmChODEmDC+KX1tHXF0c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4413922},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"d00ae0a1da066309309568f8de7a84f6a9d04f7f","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.5.0_1776367640974_0.4294380838238747","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@amplitude/ai","version":"0.5.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.5.1","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"dd0c24f5b343962de0d1e204516e14bbdef23ffd","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.5.1.tgz","fileCount":543,"integrity":"sha512-5dWEuqAn53HoJnOHxE2iLq1IbJiw8Nq7uRP9XmoXAtFErU/mgdd1cPN3cWmGn0yaQ6WU3y2qtHMuPekWbYnCmg==","signatures":[{"sig":"MEQCIFXFSewmryRTeQuB+GKhLcVg/TwLNd7ba/hTPIaRXGjEAiAKPO+y3rbgTN3uKJhjXgUc0z4DP+RJcGW4K5Rqlqrqig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4420583},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"9e1883fcfbf98c9f635341c7a5ee904879c56aa4","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.5.1_1776468277253_0.2066881884885865","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@amplitude/ai","version":"0.5.2","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.5.2","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"6fcc680ada51b1ba14fd65b5d053ea52d4ab6d02","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.5.2.tgz","fileCount":543,"integrity":"sha512-67otuE6roWPxPpcjcIRE5ro4Uq4eZdTcZkZw7PT025EVZT5mggixSeGkAGPgRqJKVpFFYxBUqa7wI/D2iEyxUg==","signatures":[{"sig":"MEQCIEeFVZy++2hcLLv5JxwiWxPNb4lH6xMpPr1FkyjERxDTAiARFphIZNnoBAoGELT5ov2f9d6HLhmaToZCuu5rscfHDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4424479},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"0eaf1863cbb0c10574cbb56137054d0e62403d4d","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.5.2_1776649220371_0.11334802930517274","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@amplitude/ai","version":"0.6.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.6.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"cc9437dac7a2fa7799bd5ed305256cae6bf965e2","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.6.0.tgz","fileCount":543,"integrity":"sha512-GzakIE0lzQ4uviRkCuK+7UANeRsscfOo6g6NatMvWCd28RemrdupexsFbT/Mt6dv9y0R/jRbFUudckcEDXTuWQ==","signatures":[{"sig":"MEUCIQD9txbHS0k6D1Pr89T1rGbTBFxvEUbn1vDvWyeuA5wkYwIgd1WYD0ndu35TQrmaEfELfY2dkc8VyX959hOPMYRkpLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4514999},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"af54b48cf9918e5250916355d669f866a6620856","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@pydantic/genai-prices":">=0.0.1","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@pydantic/genai-prices":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.6.0_1776839923248_0.5264014653404223","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@amplitude/ai","version":"0.6.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.6.1","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"f2e952548f373e870e1886dadad14c450406781c","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.6.1.tgz","fileCount":543,"integrity":"sha512-6JN0i5/N9DbaY7aIHLFjd5ajpGx4Pval4d8wNJ+FE8Nz9kYmqj7gtE2Lv/ipiYvVRSRefrJ3abEDmlc9EgBbgA==","signatures":[{"sig":"MEYCIQDFVOayJwb4+bVi7aHfSF1xQJSdUiEepYmWxF/kxF2SeAIhAKqQFMe1lYx66NJ7HfLyH1Cji6sxzF6ahBEMq6i+oWIq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4515982},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"33b25b6b763f949f8549315f60f55686fcc4aec9","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.12.1","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.6.1_1777399409139_0.03093765996108777","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@amplitude/ai","version":"0.7.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.7.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"def87545ef93678f72c93ee4fedf7fc5342e187c","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.7.0.tgz","fileCount":543,"integrity":"sha512-PjDW18SD8mZaybkF2e8AP/Sql8nx9p6F0JYz7v1iWSMNtBEYeVH/h9e9aRPV2CETYg+yB6YnBf9/jZ0lrGPHBg==","signatures":[{"sig":"MEYCIQDcZpYpJeQuXaltDHPeerYGpdEaG0WVR5OwZGRL4GIUUwIhAPdO5sRp5jkGdnxz2vDg9rrqr4UeVejfTE/F50kuaXMP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4530310},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"c0151f977e5f63c577080621a1d74b7e7fac50b9","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.7.0_1777491560799_0.4049296331373131","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@amplitude/ai","version":"0.8.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.8.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"6ba643b180759610b6068acdf6c1c8d95c275f01","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.8.0.tgz","fileCount":543,"integrity":"sha512-1Ng8Bi2Bf7rim5+lkkf0/qElMOGbZAqI2T7V5JrPAI6iqilCmoxqLYVxMWpm4J36/s9pL1A+9aJjbXgYOhPZ6A==","signatures":[{"sig":"MEQCIBOaGRxGzfA/JWE06+eZTFSoXCv5uofIZDvzhDTHhpjRAiBujIwC172Hf+mDPZQryAe4vIhe7RQdMJmSUw+q3R7KSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4538672},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"df96a365ef7b1d0fc17a6f37861dd234912a90ca","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.11.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.8.0_1777510927766_0.020502522928970812","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@amplitude/ai","version":"0.9.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.9.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"dc3b8058f3d210a494a50ed20852cc6b9259df6c","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.9.0.tgz","fileCount":543,"integrity":"sha512-BTACisxzjIhQdUt8k3pjcG3abny6P42X2vfBS0diTmFUxoSTQf7fjTx28mfABDsEGsjvQDIKtMIneOwpUWkwDg==","signatures":[{"sig":"MEUCIQDZYAB+YxGdBuk2/L/71J4tdy7UvxbzE3NbNr6GS9l4cQIgNLKRTZrr9gf2h9KayRnY3WNtcGilWaUkTK7N+EcLdgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4554204},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"153612cd28ade342e2beacf8d9425e94ace06ed8","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.12.1","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.9.0_1778882532363_0.9034264244133396","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@amplitude/ai","version":"0.11.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.11.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"brian.giori","email":"brian.giori@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"986c2c6b1709d996ab9ce750ab1688b86dbaa8b0","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.11.0.tgz","fileCount":547,"integrity":"sha512-qAMvZmmDZyfHyo8iSK7Vvx1tjdf5AAOcMzw5Iv+dIAL49bJJFdljR7Z6hRqws4t+Cs2a3L/gHDyXDn38qgEo5w==","signatures":[{"sig":"MEQCICt2vKr8FF0gAINORRZTpxeTZLga9GB3kNW63qw4VuQTAiAvoPZDugk89o8+v3gf0jONrOolhIkNjYsk0/cLO/RxFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4685939},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"78e1b74548c42373c8c1e7d4531ecce6760fb969","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.13.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.11.0_1780528387212_0.5937513159793608","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@amplitude/ai","version":"0.11.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.11.1","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"55449903e6423a00139f0d53fa87f1095dfe0f8a","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.11.1.tgz","fileCount":547,"integrity":"sha512-N2hYUmMBT3Con2h9GbXLOEfbh0CzFsFRy56GBg7PNWJMoRQSET16/PZ8yldx2GZn3jJhJmVD62uEFzcDJ2OuQw==","signatures":[{"sig":"MEUCIF7woJU2yPmm5cSKi9JEYJIDGbalzsJABt0NB2dIIlJrAiEA/vWX8G8oBJqjx8NvHtL2TM+qtlwgmihsRAx5NBGUuKE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4693862},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"f5e855c4ba2b6e2979efa28cc55229761264c818","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.13.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.11.1_1780986535929_0.22961580036871876","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@amplitude/ai","version":"0.11.2","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.11.2","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"e960f1443b3be60c9c561e35f5df2268ca22b3ab","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.11.2.tgz","fileCount":547,"integrity":"sha512-K1t2HM3jHydwawvlPsd+oRgBPx4cD6K1Uz2ZfqtDkPhi9lbfRZ5VjjBie4SN0KphZL+bpBDw6it9W+tAP5dutg==","signatures":[{"sig":"MEUCIQC1tfsKMCk9YieKOPdAleV1MQnidl5QyuwJ5FnxpGTT5QIgEjuYVzR5GShRJTmwyHILWhgi1ARtd9qDC/63sDJkGb8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4694005},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"488a7456304dc343b73a321a08587eb5e654fa6b","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.13.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.11.2_1781040343430_0.4565574922898097","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@amplitude/ai","version":"0.12.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.12.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"aed7c1fa83310b1e8a817793baf954b401cab7d7","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.12.0.tgz","fileCount":547,"integrity":"sha512-8iP3zpMph1VZa2rkil5hoNp+z4PKxB+GLJCEp3O+zj3ftdgS32axTzlpLhRHJmZ8z+joQgfPqv5CBAH/TXM5mQ==","signatures":[{"sig":"MEQCIBaq7IOIov6mV776+OS9RiLMSouWOFxTTvAh3pCprivoAiB4zqaQ9F7i0JkCpGaF8eNMVjNjQhd57nGuGuFigFusYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4699418},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"f4ddbe7f710cc55146481d8496230518754f8584","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.13.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.12.0_1781248991585_0.8713676483593522","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@amplitude/ai","version":"0.14.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.14.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"348ba54d63a2ba5e274ef7e9b0ae64e344afa02b","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.14.0.tgz","fileCount":569,"integrity":"sha512-CfYL4adjyygo7WtBhyD2AD8Hx32WigaLBkx+GkQrLBa2whfRAqZLFJgypKAB9Dxgse5rfixcOs+E6yu6/tQySw==","signatures":[{"sig":"MEUCIDZTMMf9NPuPoYsXNOk/9SiKN8eueOg/HjVvuY9DEzO7AiEA4g7FilBPSD+ebV7W/0h0/yydPO3OYiP55t63T3DX4IQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4902423},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./otel":"./dist/otel/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./otel/setup":"./dist/otel/setup.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./otel/mapper":"./dist/otel/mapper.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./otel/processor":"./dist/otel/processor.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./otel/conventions":"./dist/otel/conventions.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/git_metadata":"./dist/utils/git_metadata.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"47e7d416180f04c9c3303f5934e59571d6136b84","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.13.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","dependencies":{"@pydantic/genai-prices":">=0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@opentelemetry/api":">=1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@opentelemetry/sdk-trace-base":">=1.0.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@opentelemetry/api":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@opentelemetry/sdk-trace-base":{"optional":true},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.14.0_1782194468441_0.14492992325525633","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@amplitude/ai","version":"0.15.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.15.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"eric_amplitude","email":"eric.kim@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"62c4d4adcf511722d39b2634c3a03df55eebb43c","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.15.0.tgz","fileCount":569,"integrity":"sha512-a5uAdGxze78+iLFuU5FqhuAhoHFi/4dYqA+8HfvPRFqDpoc2YhgW/ITC3LmcPUkI6pXeUfo69oQE26BR6VRRhA==","signatures":[{"sig":"MEYCIQDSe/mUBxl+1RN4D47Q7t/NZ0QAJWf3bSaqgaIFybCLjgIhAJSf2ncuVfcGLY21TU2ToqfPp9eUYliyu3i59BzfGiMC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4960517},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./otel":"./dist/otel/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./otel/setup":"./dist/otel/setup.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./otel/mapper":"./dist/otel/mapper.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./otel/processor":"./dist/otel/processor.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./otel/conventions":"./dist/otel/conventions.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/git_metadata":"./dist/utils/git_metadata.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"45a3042f7fc40009f5cbdc3c510cf3fdf3190e3d","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.17.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@pydantic/genai-prices":">=0.0.72"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@opentelemetry/api":">=1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@opentelemetry/sdk-trace-base":">=1.0.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@opentelemetry/api":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@opentelemetry/sdk-trace-base":{"optional":true},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.15.0_1786484951844_0.39585585738519535","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@amplitude/ai","version":"0.15.1","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.15.1","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"eric_amplitude","email":"eric.kim@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"f4b51a1b2740ce2c5a36cc7cb72e8ec09c67b419","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.15.1.tgz","fileCount":569,"integrity":"sha512-ROstF2LRD5QhNHblZ+eX0v0hLmKjJwicBuzIDpol1Vv3N+TSVZqm73iki8D3Pvly+EqKcMXnsDf3mpjcW1/PuQ==","signatures":[{"sig":"MEYCIQDGoqMGK4+aHbBKqv1AQPnrvU0k4ix91mXgDJKjuyLkRwIhAJxqW+B8kfih+Lhw7jd5BXnXC+dy3UXYxHtt7e81Fa3a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4980199},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./otel":"./dist/otel/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./otel/setup":"./dist/otel/setup.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./otel/mapper":"./dist/otel/mapper.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./otel/processor":"./dist/otel/processor.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./otel/conventions":"./dist/otel/conventions.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/git_metadata":"./dist/utils/git_metadata.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"6fec6e12440dd59a6cdd45614616fe33d5172d0d","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.17.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@pydantic/genai-prices":">=0.0.72"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@opentelemetry/api":">=1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@opentelemetry/sdk-trace-base":">=1.0.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@opentelemetry/api":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@opentelemetry/sdk-trace-base":{"optional":true},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.15.1_1786742402511_0.7984949022527414","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@amplitude/ai","version":"0.16.0","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"license":"MIT","_id":"@amplitude/ai@0.16.0","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"eric_amplitude","email":"eric.kim@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"dist":{"shasum":"6e40bb378fad50b03e683276ca1040e77facc723","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.16.0.tgz","fileCount":569,"integrity":"sha512-7wOnNghRiuJM465QAc+COHoC3dU7z7nwH60aI/TmjEwhGoFYUy+TBzBqvAVZU0gCkHU7/CMJbAfSP8kTpCVuPQ==","signatures":[{"sig":"MEUCIQCpGKOEOL+Nx/n41jthsBCQgL7n68PqnHIKUr7wI0QZmwIgSptR8rzEPGWkCuSmNIWdWWSnvGD8RyzgLaRk/PTCf7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5015305},"main":"./dist/index.js","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./otel":"./dist/otel/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./otel/setup":"./dist/otel/setup.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./otel/mapper":"./dist/otel/mapper.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./otel/processor":"./dist/otel/processor.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./otel/conventions":"./dist/otel/conventions.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/git_metadata":"./dist/utils/git_metadata.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"cc42fc7da05934a7cf78936add8d893245a0c6b4","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.17.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@pydantic/genai-prices":">=0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@opentelemetry/api":">=1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@opentelemetry/sdk-trace-base":">=1.0.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@opentelemetry/api":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@opentelemetry/sdk-trace-base":{"optional":true},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ai_0.16.0_1787351042615_0.2896428048103461","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"_id":"@amplitude/ai@0.17.0","bin":{"amplitude-ai":"bin/amplitude-ai.mjs","amplitude-ai-mcp":"bin/amplitude-ai-mcp.mjs","amplitude-ai-doctor":"bin/amplitude-ai-doctor.mjs","amplitude-ai-status":"bin/amplitude-ai-status.mjs","amplitude-ai-instrument":"bin/amplitude-ai-instrument.mjs","amplitude-ai-completions":"bin/amplitude-ai-completions.mjs","amplitude-ai-register-catalog":"bin/amplitude-ai-register-catalog.mjs"},"bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"dist":{"shasum":"3b73f1db9a76f3429af487d5681dbf95a79cc244","tarball":"https://registry.npmjs.org/@amplitude/ai/-/ai-0.17.0.tgz","fileCount":577,"integrity":"sha512-sRR5fYrMMxJzJs+L0tHX4E5XFSZ5HSPFuoxkTJNDAjFAbViFOfYXbs91pXH1UpucJWbVav59NNPX2QUbopxNpA==","signatures":[{"sig":"MEQCICHl+X0+qIpfVR8tJ7JIswnmjALAoihbTNUWwWNve1oIAiAsXTJfF948vc88aK20UQ1pbaBpcr4EQny+MRNa5GwjVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCm4Z/cQI8xGynweXPtexPpYIky+sCfaPpPgzeXS7xnygIhAMloLFqimTQswfvjqSK8RvNC8tE/v7kmaaxKrvGBF+Fk"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amplitude%2fai@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5052594},"main":"./dist/index.js","name":"@amplitude/ai","pnpm":{"overrides":{"fast-xml-parser":">=5.5.6"},"onlyBuiltDependencies":["@biomejs/biome","esbuild"]},"type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":"./dist/index.js","./mcp":"./dist/mcp/index.js","./otel":"./dist/otel/index.js","./types":"./dist/types.js","./client":"./dist/client.js","./config":"./dist/config.js","./tenant":"./dist/tenant.js","./context":"./dist/context.js","./session":"./dist/session.js","./testing":"./dist/testing.js","./patching":"./dist/patching.js","./register":"./dist/register.js","./wrappers":"./dist/wrappers.js","./internals":"./dist/internals.js","./cli/doctor":"./dist/cli/doctor.js","./cli/status":"./dist/cli/status.js","./decorators":"./dist/decorators.js","./exceptions":"./dist/exceptions.js","./mcp/server":"./dist/mcp/server.js","./middleware":"./dist/middleware.js","./otel/setup":"./dist/otel/setup.js","./serverless":"./dist/serverless.js","./bound-agent":"./dist/bound-agent.js","./otel/mapper":"./dist/otel/mapper.js","./propagation":"./dist/propagation.js","./utils/costs":"./dist/utils/costs.js","./utils/debug":"./dist/utils/debug.js","./core/privacy":"./dist/core/privacy.js","./mcp/contract":"./dist/mcp/contract.js","./mcp/patterns":"./dist/mcp/patterns.js","./package.json":"./package.json","./utils/logger":"./dist/utils/logger.js","./utils/tokens":"./dist/utils/tokens.js","./cli/providers":"./dist/cli/providers.js","./core/tracking":"./dist/core/tracking.js","./core/constants":"./dist/core/constants.js","./otel/processor":"./dist/otel/processor.js","./providers/base":"./dist/providers/base.js","./utils/providers":"./dist/utils/providers.js","./utils/streaming":"./dist/utils/streaming.js","./core/enrichments":"./dist/core/enrichments.js","./mcp/scan-project":"./dist/mcp/scan-project.js","./otel/conventions":"./dist/otel/conventions.js","./providers/gemini":"./dist/providers/gemini.js","./providers/openai":"./dist/providers/openai.js","./mcp/validate-file":"./dist/mcp/validate-file.js","./providers/bedrock":"./dist/providers/bedrock.js","./providers/mistral":"./dist/providers/mistral.js","./utils/model-tiers":"./dist/utils/model-tiers.js","./utils/git_metadata":"./dist/utils/git_metadata.js","./utils/tool-latency":"./dist/utils/tool-latency.js","./integrations/crewai":"./dist/integrations/crewai.js","./mcp/instrument-file":"./dist/mcp/instrument-file.js","./providers/anthropic":"./dist/providers/anthropic.js","./utils/resolve-module":"./dist/utils/resolve-module.js","./utils/openai-provider":"./dist/utils/openai-provider.js","./utils/provider-detect":"./dist/utils/provider-detect.js","./integrations/langchain":"./dist/integrations/langchain.js","./providers/azure-openai":"./dist/providers/azure-openai.js","./providers/google-genai":"./dist/providers/google-genai.js","./integrations/llamaindex":"./dist/integrations/llamaindex.js","./mcp/generate-verify-test":"./dist/mcp/generate-verify-test.js","./utils/provider-request-id":"./dist/utils/provider-request-id.js","./integrations/openai-agents":"./dist/integrations/openai-agents.js","./integrations/opentelemetry":"./dist/integrations/opentelemetry.js","./integrations/anthropic-tools":"./dist/integrations/anthropic-tools.js","./integrations/claude-agent-sdk":"./dist/integrations/claude-agent-sdk.js","./integrations/anthropic-managed":"./dist/integrations/anthropic-managed.js"},"gitHead":"88e90d421cd47f9c44dc91c72e7ced6cb18ff358","license":"MIT","private":false,"scripts":{"lint":"eslint --cache --ext .js,.jsx,.ts,.tsx --quiet . && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched","test":"vitest","build":"tsdown","clean":"rimraf dist","lint:fix":"eslint --fix --ext .js,.jsx,.ts,.tsx . --cache && biome lint ./src --log-level=error --diagnostic-level=error --no-errors-on-unmatched --write","test:changed":"vitest run --changed${VITEST_CHANGED_BASE:+=$VITEST_CHANGED_BASE}","test:coverage":"vitest run --coverage","test:packaged":"pnpm run build && vitest run test/packaged-dist-smoke.test.ts","prepublishOnly":"pnpm run build","check:generated":"node scripts/generate-agent-docs.mjs --check","test:typescript":"tsc -p tsconfig.json --noEmit","generate:agent-docs":"node scripts/generate-agent-docs.mjs"},"version":"0.17.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cfc8f69d-02e6-4b67-8d8e-1e1a218313a2"}},"homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"_npmVersion":"11.19.0","description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","directories":{},"maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"eric_amplitude","email":"eric.kim@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@pydantic/genai-prices":">=0.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017","devDependencies":{"eslint":"8.57.0","openai":"^5.23.2","rimraf":"5.0.5","tsdown":"0.18.4","vitest":"4.0.14","typescript":"5.9.3","@biomejs/biome":"1.9.4","@vitest/coverage-v8":"4.0.14","@amplitude/analytics-node":"1.3.5","@modelcontextprotocol/sdk":"1.27.1","@typescript-eslint/parser":"8.29.1","@typescript-eslint/eslint-plugin":"8.29.1"},"peerDependencies":{"openai":">=4.0.0 <7.0.0","tiktoken":">=1.0.0","js-tiktoken":">=1.0.0","@anthropic-ai/sdk":">=0.29.0 <1.0.0","@opentelemetry/api":">=1.0.0","@mistralai/mistralai":">=1.3.6 <2.0.0","@google/generative-ai":">=0.21.0 <1.0.0","@amplitude/analytics-node":">=1.3.0","@opentelemetry/sdk-trace-base":">=1.0.0","@aws-sdk/client-bedrock-runtime":">=3.0.0 <4.0.0"},"optionalDependencies":{"zod":"3.25.76","acorn":"^8.16.0","acorn-typescript":"^1.4.13","@modelcontextprotocol/sdk":"1.27.1"},"peerDependenciesMeta":{"openai":{"optional":true},"tiktoken":{"optional":true},"js-tiktoken":{"optional":true},"@anthropic-ai/sdk":{"optional":true},"@opentelemetry/api":{"optional":true},"@mistralai/mistralai":{"optional":true},"@google/generative-ai":{"optional":true},"@amplitude/analytics-node":{"optional":false},"@opentelemetry/sdk-trace-base":{"optional":true},"@aws-sdk/client-bedrock-runtime":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai_0.17.0_1789777953097_0.8735418627717073"}}},"time":{"created":"2026-03-18T18:59:20.138Z","modified":"2026-09-19T00:32:33.734Z","0.1.0":"2026-03-18T18:59:20.509Z","0.1.1":"2026-03-19T01:52:21.608Z","0.1.2":"2026-03-20T00:25:54.073Z","0.2.0":"2026-03-20T09:15:22.590Z","0.2.1":"2026-03-20T10:24:11.588Z","0.3.0":"2026-03-21T08:35:36.198Z","0.3.1":"2026-03-21T08:59:10.562Z","0.3.2":"2026-03-21T09:06:42.858Z","0.3.3":"2026-03-21T17:36:27.044Z","0.3.4":"2026-03-21T17:50:00.844Z","0.3.5":"2026-03-27T03:53:45.257Z","0.3.6":"2026-03-28T00:16:03.605Z","0.3.7":"2026-03-31T05:24:14.525Z","0.3.8":"2026-03-31T21:37:50.583Z","0.3.9":"2026-04-03T00:45:06.160Z","0.4.0":"2026-04-15T00:46:10.565Z","0.5.0":"2026-04-16T19:27:21.165Z","0.5.1":"2026-04-17T23:24:37.429Z","0.5.2":"2026-04-20T01:40:20.569Z","0.6.0":"2026-04-22T06:38:43.503Z","0.6.1":"2026-04-28T18:03:29.366Z","0.7.0":"2026-04-29T19:39:21.020Z","0.8.0":"2026-04-30T01:02:08.019Z","0.9.0":"2026-05-15T22:02:12.566Z","0.11.0":"2026-06-03T23:13:07.409Z","0.11.1":"2026-06-09T06:28:56.106Z","0.11.2":"2026-06-09T21:25:43.611Z","0.12.0":"2026-06-12T07:23:11.749Z","0.14.0":"2026-06-23T06:01:08.616Z","0.15.0":"2026-08-11T21:49:12.029Z","0.15.1":"2026-08-14T21:20:02.716Z","0.16.0":"2026-08-21T22:24:02.807Z","0.17.0":"2026-09-19T00:32:33.253Z"},"bugs":{"url":"https://github.com/amplitude/Amplitude-AI-Node/issues"},"license":"MIT","homepage":"https://github.com/amplitude/Amplitude-AI-Node#readme","keywords":["amplitude","ai","llm","analytics","tracking","openai","anthropic"],"repository":{"url":"git+https://github.com/amplitude/Amplitude-AI-Node.git","type":"git"},"description":"Amplitude AI SDK - LLM usage tracking for Amplitude Analytics","maintainers":[{"name":"curtisbliu","email":"curtis@amplitude.com"},{"name":"kelson.warner","email":"kelson.warner@amplitude.com"},{"name":"sdk.dev","email":"sdk.dev@amplitude.com"},{"name":"eric_amplitude","email":"eric.kim@amplitude.com"},{"name":"daniel-graham-amplitude","email":"daniel.graham@amplitude.com"},{"name":"jjwang123","email":"jesse.wang@amplitude.com"}],"readme":"# @amplitude/ai\n\n[![npm version](https://img.shields.io/npm/v/%40amplitude/ai)](https://www.npmjs.com/package/@amplitude/ai)\n[![CI](https://github.com/amplitude/Amplitude-AI-Node/actions/workflows/test.yml/badge.svg)](https://github.com/amplitude/Amplitude-AI-Node/actions/workflows/test.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAgent analytics for [Amplitude](https://amplitude.com). Track every LLM call, user message, tool call, and quality signal as events in your Amplitude project — then build funnels, cohorts, and retention charts across AI and product behavior.\n\n```bash\nnpm install @amplitude/ai @amplitude/analytics-node\n```\n\n```typescript\nimport { AmplitudeAI, OpenAI } from '@amplitude/ai';\n\nconst ai = new AmplitudeAI({ apiKey: process.env.AMPLITUDE_AI_API_KEY! });\nconst openai = new OpenAI({ amplitude: ai, apiKey: process.env.OPENAI_API_KEY });\nconst agent = ai.agent('my-agent');\n\napp.post('/chat', async (req, res) => {\n  const session = agent.session({ userId: req.userId, sessionId: req.sessionId });\n\n  const result = await session.run(async (s) => {\n    s.trackUserMessage(req.body.message);\n    const response = await openai.chat.completions.create({\n      model: 'gpt-4o',\n      messages: req.body.messages,\n    });\n    return response.choices[0].message.content;\n  });\n\n  await ai.flush();\n  res.json({ response: result });\n});\n// Events: [Agent] User Message, [Agent] AI Response (with model, tokens, cost, latency),\n//         [Agent] Session End — all tied to userId and sessionId\n```\n\n## How to Get Started\n\n### Instrument with a coding agent (recommended)\n\n```bash\nnpm install @amplitude/ai\nnpx amplitude-ai\n```\n\nThe CLI prints a prompt to paste into any AI coding agent (Cursor, Claude Code, Windsurf, Copilot, Codex, etc.):\n\n> Instrument this app with @amplitude/ai. Follow node_modules/@amplitude/ai/amplitude-ai.md\n\nThe agent reads the guide, scans your project, discovers your agents and LLM call sites, and instruments everything — provider wrappers, session lifecycle, multi-agent delegation, tool tracking, scoring, and a verification test. You review and approve each step.\n\n### Manual setup\n\nWhether you use a coding agent or set up manually, the goal is the same: **full instrumentation** — agents + sessions + provider wrappers. This gives you every event type, per-user analytics, and server-side enrichment.\n\nFollow the [code example above](#amplitude-ai) to get started. The pattern is:\n\n1. **Swap your LLM import** — `import { OpenAI } from '@amplitude/ai'` (or `Anthropic`, `Gemini`, etc.)\n2. **Create an agent** — `ai.agent('my-agent')` to name and track your AI component\n3. **Wrap in a session** — `agent.session({ userId, sessionId }).run(async (s) => { ... })` for per-user analytics, funnels, cohorts, and server-side enrichment\n4. **Track user messages** — `s.trackUserMessage(...)` for conversation context\n5. **Score responses** — `s.score(...)` for quality measurement\n\n> `patch()` exists for quick verification or legacy codebases where you can't modify call sites, but it only captures `[Agent] AI Response` without user identity — no funnels, no cohorts, no retention. Start with full instrumentation; fall back to `patch()` only if you can't modify call sites.\n\n| Property        | Value                                                                                                                                                                            |\n| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Name            | @amplitude/ai                                                                                                                                                                    |\n| Version         | 0.11.0                                                                                                                                                                           |\n| Runtime         | Node.js                                                                                                                                                                          |\n| Peer dependency | @amplitude/analytics-node >= 1.3.0                                                                                                                                               |\n| Dependency      | @pydantic/genai-prices (cost calculation — installed automatically)                                                                                                              |\n| Optional peers  | openai, @anthropic-ai/sdk, @google/generative-ai, @google/genai, @mistralai/mistralai, @aws-sdk/client-bedrock-runtime, tiktoken or js-tiktoken (token counting)                               |\n\n## Table of Contents\n\n- [How to Get Started](#how-to-get-started)\n  - [Instrument with a Coding Agent (recommended)](#instrument-with-a-coding-agent-recommended)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n  - [Current Limitations](#current-limitations)\n  - [Is this for me?](#is-this-for-me)\n  - [Why this SDK?](#why-this-sdk)\n  - [What you can build](#what-you-can-build)\n- [What You Get at Each Level](#what-you-get-at-each-level)\n- [Core Concepts](#core-concepts)\n  - [User Identity](#user-identity)\n  - [Session](#session)\n- [Configuration](#configuration)\n- [Context Dict Conventions](#context-dict-conventions)\n- [Works with](#works-with)\n- [Privacy & Content Control](#privacy-content-control)\n- [Cache-Aware Cost Tracking](#cache-aware-cost-tracking)\n- [Semantic Cache Tracking](#semantic-cache-tracking)\n- [Model Tier Classification](#model-tier-classification)\n- [Provider Wrappers](#provider-wrappers)\n- [Streaming Tracking](#streaming-tracking)\n- [Attachment Tracking](#attachment-tracking)\n- [Implicit Feedback](#implicit-feedback)\n- [tool() and observe() HOFs](#tool-and-observe-hofs)\n- [Scoring Patterns](#scoring-patterns)\n- [Enrichments](#enrichments)\n- [Debug and Dry-Run Modes](#debug-and-dry-run-modes)\n- [Patching](#patching)\n- [Auto-Instrumentation CLI](#auto-instrumentation-cli)\n- [Integrations](#integrations)\n- [Data Flow](#data-flow)\n- [Integration Approaches](#integration-approaches)\n- [Integration Patterns](#integration-patterns)\n- [Serverless Environments](#serverless-environments)\n- [Error Handling and Reliability](#error-handling-and-reliability)\n- [Testing](#testing)\n- [Troubleshooting](#troubleshooting)\n- [Context Propagation](#context-propagation)\n- [Middleware](#middleware)\n- [Bulk Conversation Import](#bulk-conversation-import)\n- [Event Schema](#event-schema)\n- [Event Property Reference](#event-property-reference)\n- [Event JSON Examples](#event-json-examples)\n- [Sending Events Without the SDK](#sending-events-without-the-sdk)\n- [Register Event Schema in Your Data Catalog](#register-event-schema-in-your-data-catalog)\n- [Utilities and Type Exports](#utilities-and-type-exports)\n- [Constants](#constants)\n- [API Reference](#api-reference)\n- [For AI Coding Agents](#for-ai-coding-agents)\n- [For Python SDK Migrators](#for-python-sdk-migrators)\n- [Need Help?](#need-help)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Installation\n\n```bash\nnpm install @amplitude/ai @amplitude/analytics-node\n```\n\nInstall provider SDKs based on what you use (for example: `openai`, `@anthropic-ai/sdk`, `@google/generative-ai`, `@google/genai`, `@mistralai/mistralai`, `@aws-sdk/client-bedrock-runtime`).\n\n## Quick Start\n\n### 5-minute quick start\n\n1. **Install:** `npm install @amplitude/ai @amplitude/analytics-node`\n2. **Get your API key:** In Amplitude, go to **Settings > Projects** and copy the API key.\n3. **Instrument:** Run `npx amplitude-ai` and paste the printed prompt into your AI coding agent. Or follow the [manual setup](#manual-setup) steps — the goal is the same: agents + sessions + provider wrappers.\n4. **Set your API key** in the generated `.env` file and replace the placeholder `userId`/`sessionId`.\n5. **Run your app.** You should see `[Agent] User Message`, `[Agent] AI Response`, and `[Agent] Session End` within 30 seconds.\n\nTo verify locally before checking Amplitude, add `debug: true`:\n\n```typescript\nconst ai = new AmplitudeAI({\n  apiKey: process.env.AMPLITUDE_AI_API_KEY!,\n  config: new AIConfig({ debug: true }),\n});\n// Prints: [amplitude-ai] [Agent] AI Response | model=gpt-4o | tokens=847 | cost=$0.0042 | latency=1,203ms\n```\n\n> **Tip:** Call `enableLivePriceUpdates()` at startup so cost tracking stays accurate when new models are released. See [Cache-Aware Cost Tracking](#cache-aware-cost-tracking).\n\n### Current Limitations\n\n| Area | Status |\n| ---- | ------ |\n| Runtime | Node.js only (no browser). Python SDK available separately ([amplitude-ai on PyPI](https://pypi.org/project/amplitude-ai/)). |\n| Zero-code patching | OpenAI, Anthropic, Azure OpenAI, Gemini, Mistral, Bedrock (Converse, ConverseStream, and InvokeModel). |\n| CrewAI | Python-only; the Node.js export throws `ProviderError` by design. Use LangChain or OpenTelemetry integrations instead. |\n| Streaming cost tracking | Automatic for OpenAI and Anthropic. Manual token counts required for other providers' streamed responses. |\n\n### Is this for me?\n\n**Yes, if** you're building an AI-powered feature (chatbot, copilot, agent, RAG pipeline) and you want to measure how it impacts real user behavior. AI events land in the same Amplitude project as your product events, so you can build funnels from \"user asks a question\" to \"user converts,\" create cohorts of users with low AI quality scores, and measure retention without stitching data across tools.\n\n**Already using an LLM observability tool?** Keep it. The [OTEL bridge](#opentelemetry) adds Amplitude as a second destination in one line. Your existing traces stay, and you get product analytics on top.\n\n### Why this SDK?\n\nMost AI observability tools give you traces. This SDK gives you **per-turn events that live in your product analytics** so you can:\n\n- Build funnels from \"user opens chat\" through \"AI responds\" to \"user converts\"\n- Create cohorts of users with low AI quality scores and measure their 7-day retention\n- Answer \"is this AI feature helping or hurting?\" without moving data between tools\n\nThe structural difference is the event model. Trace-centric tools typically produce spans per LLM call. This SDK produces **one event per conversation turn** with 40+ properties: model, tokens, cost, latency, reasoning, implicit feedback signals (regeneration, copy, abandonment), cache breakdowns, agent hierarchy, and experiment context. Each event is independently queryable in Amplitude's charts, cohorts, funnels, and retention analysis.\n\n**Every AI event carries your product `user_id`.** No separate identity system, no data joining required. Build a funnel from \"user opens chat\" to \"AI responds\" to \"user upgrades\" directly in Amplitude.\n\n**Server-side enrichment does the evals for you.** When content is available (`contentMode: 'full'`), Amplitude's enrichment pipeline runs automatically on every session after it closes. You get topic classifications, quality rubrics, behavioral flags, and session outcomes without writing or maintaining any eval code. Define your own topics and scoring rubrics; the pipeline applies them to every session automatically. Results appear as `[Agent] Evaluator Result` events with rubric scores (`output_type: 'score'`), `[Agent] Topic Classification` events with category labels, and `[Agent] Session Record` summaries, all queryable in charts, cohorts, and funnels alongside your product events.\n\n**Quality signals from multiple event types.** User thumbs up/down and customer-run evals produce `[Agent] Score` events via the SDK's `score()` method (`source: 'user'`, `source: 'ai'`, or `source: 'reviewer'`). Server-side enrichment rubric scores produce `[Agent] Evaluator Result` events (`output_type: 'score'`). Both are queryable in charts, cohorts, and funnels. Filter by `[Agent] Evaluation Source` or `[Agent] Agent ID` for per-agent quality attribution.\n\n**Three content-control tiers.** `full` sends content and Amplitude runs enrichments for you. `metadata_only` sends zero content (you still get cost, latency, tokens, session grouping). `customer_enriched` sends zero content but lets you provide your own structured labels via `trackSessionEnrichment()`.\n\n**Cache-aware cost tracking.** Pass `cacheReadTokens` and `cacheCreationTokens` for accurate blended costs. Without this breakdown, naive cost calculation can overestimate by 2-5x for cache-heavy workloads.\n\n### What you can build\n\nOnce AI events are in Amplitude alongside your product events:\n\n- **Cohorts.** \"Users who had 3+ task failures in the last 30 days.\" \"Users with low task completion scores.\" Target them with Guides, measure churn impact.\n- **Funnels.** \"AI session about charts -> Chart Created.\" \"Sign Up -> First AI Session -> Conversion.\" Measure whether AI drives feature adoption and onboarding.\n- **Retention.** Do users with successful AI sessions retain better than those with failures? Segment retention curves by `[Agent] Session Outcome` or `[Agent] Task Completed`.\n- **Agent analytics.** Compare quality, cost, and failure rate across agents in one chart. Identify which agent in a multi-agent chain introduced a failure.\n\n### How quality measurement works\n\nThe SDK captures quality signals at three layers, from most direct to most comprehensive:\n\n**1. Explicit user feedback** — Instrument thumbs up/down, star ratings, or CSAT scores via [`trackScore()`](#scoring-patterns). Each call produces an `[Agent] Score` event with `source: 'user'`:\n\n```typescript\nai.trackScore({\n  userId: 'u1', name: 'user-feedback', value: 1,\n  targetId: aiMessageId, targetType: 'message', source: 'user',\n});\n```\n\n**2. Implicit behavioral signals** — The SDK auto-tracks behavioral proxies for quality on every turn, with zero additional instrumentation:\n\n| Signal | Property | Event | Interpretation |\n|--------|----------|-------|----------------|\n| Copy | `[Agent] Was Copied` | `[Agent] AI Response` | User copied the output — positive |\n| Regeneration | `[Agent] Is Regeneration` | `[Agent] User Message` | User asked for a redo — negative |\n| Edit | `[Agent] Is Edit` | `[Agent] User Message` | User refined their prompt — friction |\n| Abandonment | `[Agent] Abandonment Turn` | `[Agent] Session End` | User left after N turns — potential failure |\n\n**3. Automated server-side evaluation** — When `contentMode: 'full'`, Amplitude's enrichment pipeline runs LLM-as-judge evaluators on every session after it closes. No eval code to write or maintain:\n\n| Rubric | What it measures | Scale |\n|--------|-----------------|-------|\n| `task_completion` | Did the agent accomplish what the user asked? | 0–2 |\n| `response_quality` | Was the response clear, accurate, and helpful? | 0–2 |\n| `user_satisfaction` | Did the user seem satisfied based on conversation signals? | 0–2 |\n| `agent_confusion` | Did the agent misunderstand or go off track? | 0–2 |\n\nPlus boolean detectors: `negative_feedback` (frustration phrases), `task_failure` (agent failed to deliver), `data_quality_issues`, and `user_friction` (clarification loops, topic drift). All results are emitted as `[Agent] Score` events with `source: 'ai'`.\n\n**All three layers use the same `[Agent] Score` event type**, differentiated by `[Agent] Evaluation Source` (`'user'`, `'ai'`, or `'reviewer'`). One chart shows user feedback alongside automated evals. No joins, no separate tables.\n\n## What You Set vs What You Get\n\n| You set | Where it comes from | What you unlock |\n|---|---|---|\n| API key | Amplitude project settings | Events reach Amplitude |\n| userId | Your auth layer (JWT, session cookie, API token) | Per-user analytics, cohorts, retention |\n| agentId | Your choice (e.g. `'chat-handler'`) | Per-agent cost, latency, quality dashboards |\n| sessionId | Agent session ID — your thread, ticket, call, or run ID (see [What is an agent session?](#what-is-an-agent-session)) | Multi-turn analysis, session enrichment, quality scores |\n| *description* | *Your choice (e.g. `'Handles support queries via GPT-4o'`)* | *Human-readable agent registry from event streams* |\n| *contentMode + redactPii* | *Config (defaults work)* | *Server enrichment (automatic), PII scrubbing* |\n| *model, tokens, cost* | *Auto-captured by provider wrappers* | *Cost analytics, latency monitoring* |\n| parentAgentId | Auto via `child()`/`runAs()` | Multi-agent hierarchy |\n| env, agentVersion, context | Your deploy pipeline | Segmentation, regression detection |\n\n*Italicized rows require zero developer effort — they're automatic or have sensible defaults.*\n\n**The minimum viable setup is 4 fields**: API key, userId, agentId, sessionId.\nEverything else is either automatic or a progressive enhancement.\n\n## What You Get at Each Level\n\nThe coding agent workflow defaults to **full instrumentation** — the top row below. Lower levels exist as fallbacks, not as recommended starting points.\n\n| Level | Events you get | What it unlocks in Amplitude |\n|---|---|---|\n| **Full** (agents + sessions + wrappers) | User Message, AI Response, Tool Call, Session End, Score, Enrichments | Per-user funnels, cohorts, retention, session replay linking, quality scoring |\n| **Wrappers only** (no sessions) | AI Response (with cost, tokens, latency) | Aggregate cost monitoring, model comparison |\n| **`patch()` only** (no wrappers, no sessions) | AI Response (basic) | Aggregate call counts — useful for verification only |\n\n### Support matrix\n\n- Fully supported in Node.js: OpenAI chat completions, OpenAI Responses API, Azure OpenAI chat completions, Anthropic messages, Gemini, Mistral, Bedrock, LangChain, OpenTelemetry, LlamaIndex.\n- Partial support: zero-code `patch()` is best-effort by installed SDK and provider surface; OpenAI Agents tracing depends on incoming span payload shape from the host SDK.\n- Not currently supported in Node.js:\n  - `AmplitudeCrewAIHooks` is Python-only and throws in Node.js.\n\n### Parity and runtime limitations\n\nThis section is the source of truth for behavior that is intentionally different from Python due to runtime constraints:\n\n- `AmplitudeCrewAIHooks` is unsupported in Node.js (CrewAI is Python-only).\n- `tool()` does not auto-generate JSON Schema from runtime type hints; pass `inputSchema` explicitly.\n- Tool timeout behavior is async `Promise.race` based and cannot preempt synchronous CPU-bound code.\n- Auto-instrument bootstrap differs by runtime (`node --import` in Node vs `sitecustomize` in Python).\n- Request middleware differs by runtime (Express-compatible in Node vs ASGI middleware in Python).\n\n### Zero-code (for verification or legacy codebases)\n\n`patch()` monkey-patches provider SDKs so existing LLM calls are tracked without code changes. This is useful for verifying the SDK works or for legacy codebases where you can't modify call sites. It only captures `[Agent] AI Response` without user identity — for the full event model, use agents + sessions (see [Quick Start](#quick-start)).\n\n```typescript\nimport { AmplitudeAI, patch } from '@amplitude/ai';\n// OpenAI/Azure OpenAI chat completions (+ parse), OpenAI Responses, Anthropic, Gemini, Mistral,\n// and Bedrock Converse calls are tracked when patching succeeds.\n// No changes to your existing code needed.\nimport OpenAI from 'openai';\n\nconst ai = new AmplitudeAI({ apiKey: process.env.AMPLITUDE_AI_API_KEY! });\npatch({ amplitudeAI: ai });\n\nconst openai = new OpenAI();\n\nconst response = await openai.chat.completions.create({\n  model: 'gpt-4o',\n  messages: [{ role: 'user', content: 'Hello' }],\n});\n// ^ automatically tracked as [Agent] AI Response\n```\n\n> **Warning:** Patched calls that fire outside an active session context are **silently dropped** — no event is emitted and no error is thrown. If you instrument with `patch()` but see no events, this is the most likely cause. Wrap your LLM calls in `session.run()`, use the Express middleware, or pass context explicitly. See [Session](#session) and [Middleware](#middleware).\n\nOr use the CLI to auto-patch at process start without touching application code:\n\n```bash\nAMPLITUDE_AI_API_KEY=xxx AMPLITUDE_AI_AUTO_PATCH=true amplitude-ai-instrument node app.js\n```\n\n### Wrap (recommended for production)\n\nReplace the provider constructor with the Amplitude-instrumented version for automatic tracking with full control over options per call:\n\n```typescript\nimport { AmplitudeAI, OpenAI } from '@amplitude/ai';\n\nconst ai = new AmplitudeAI({ apiKey: process.env.AMPLITUDE_AI_API_KEY! });\nconst openai = new OpenAI({\n  amplitude: ai,\n  apiKey: process.env.OPENAI_API_KEY,\n});\n\nconst agent = ai.agent('my-agent', { userId: 'user-123' });\nconst session = agent.session();\n\nawait session.run(async () => {\n  const response = await openai.chat.completions.create({\n    model: 'gpt-4o',\n    messages: [{ role: 'user', content: 'Hello' }],\n  });\n  // AI response tracked automatically via wrapper\n\n  const responseV2 = await openai.responses.create({\n    model: 'gpt-4.1',\n    instructions: 'You are concise.',\n    input: [{ role: 'user', content: 'Summarize this in one sentence.' }],\n  });\n  // OpenAI Responses API is also tracked automatically\n});\n```\n\nOr wrap an existing client instance (supports OpenAI, Azure OpenAI, Anthropic, Gemini, Google Gen AI, Bedrock, and Mistral):\n\n```typescript\nimport { wrap } from '@amplitude/ai';\nimport OpenAI from 'openai';\n\nconst client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\nconst instrumented = wrap(client, ai);\n```\n\nAll provider constructors and `wrap()` accept either an `AmplitudeAI` instance or a raw Amplitude client — both work:\n\n```typescript\nnew OpenAI({ amplitude: ai }); // AmplitudeAI instance\nnew OpenAI({ amplitude: ai.amplitude }); // raw Amplitude client\nwrap(client, ai); // AmplitudeAI instance\nwrap(client, ai.amplitude); // raw Amplitude client\n```\n\n> **Note:** `wrap()` supports OpenAI, Azure OpenAI, Anthropic, Gemini (`@google/generative-ai`), Google Gen AI (`@google/genai`), Bedrock (`@aws-sdk/client-bedrock-runtime`), and Mistral clients. OpenAI/Anthropic clients are reconstructed from extracted credentials; Gemini/Google Gen AI/Bedrock/Mistral clients are adopted directly so your configured transport (Vertex AI project, AWS region/credentials, custom server URL) is preserved.\n\n### Full control\n\nCall tracking methods directly for maximum flexibility. Works with any LLM provider, including custom or self-hosted models:\n\n```typescript\nimport { AmplitudeAI } from '@amplitude/ai';\n\nconst ai = new AmplitudeAI({ apiKey: process.env.AMPLITUDE_AI_API_KEY! });\nconst agent = ai.agent('my-agent', { userId: 'user-123' });\nconst session = agent.session({ userId: 'user-123' });\n\nawait session.run(async (s) => {\n  s.trackUserMessage('Summarize this document');\n\n  const start = performance.now();\n  const response = await myCustomLLM.generate('Summarize this document');\n  const latencyMs = performance.now() - start;\n\n  s.trackAiMessage(response.text, 'my-model-v2', 'custom', latencyMs, {\n    inputTokens: response.usage.input,\n    outputTokens: response.usage.output,\n  });\n});\n```\n\n## Core Concepts\n\n### AmplitudeAI\n\nMain client that wraps Amplitude `analytics-node`. Create it with an API key or an existing Amplitude instance:\n\n```typescript\nconst ai = new AmplitudeAI({ apiKey: 'YOUR_API_KEY' });\n// Or with existing client:\nconst ai = new AmplitudeAI({ amplitude: existingAmplitudeClient });\n```\n\n### BoundAgent\n\nAgent with pre-bound defaults (`agentId`, `description`, `userId`, `env`, etc.). Use `agent()` to create:\n\n```typescript\nconst agent = ai.agent('support-bot', {\n  description: 'Handles customer support queries via OpenAI GPT-4o',\n  userId: 'user-123',\n  env: 'production',\n  customerOrgId: 'org-456',\n});\n```\n\nChild agents inherit context from their parent and automatically set `parentAgentId` (note: `description` is agent-specific and is **not** inherited — pass it explicitly if needed):\n\n```typescript\nconst orchestrator = ai.agent('orchestrator', {\n  description: 'Routes queries to specialized child agents',\n  userId: 'user-123',\n});\nconst researcher = orchestrator.child('researcher');\nconst writer = orchestrator.child('writer', {\n  description: 'Drafts responses using retrieved context',\n});\n// researcher.parentAgentId === 'orchestrator'\n// researcher inherits orchestrator's description; writer has its own\n```\n\n### TenantHandle\n\nMulti-tenant helper that pre-binds `customerOrgId` for all agents created from it:\n\n```typescript\nconst tenant = ai.tenant('org-456', { env: 'production' });\nconst agent = tenant.agent('support-bot', { userId: 'user-123' });\n```\n\n### User Identity\n\nUser identity flows through the **session**, **per-call**, or **middleware** -- not at agent creation or patch time. This keeps the agent reusable across users.\n\n**Via sessions** (recommended): pass `userId` when opening a session:\n\n```typescript\nconst agent = ai.agent('support-bot', { env: 'production' });\nconst session = agent.session({ userId: 'user-42' });\n\nawait session.run(async (s) => {\n  s.trackUserMessage('Hello');\n  // userId inherited from session context\n});\n```\n\n**Per-call**: pass `userId` on each tracking call (useful with the zero-code tier):\n\n```typescript\nagent.trackUserMessage('Hello', {\n  userId: 'user-42',\n  sessionId: 'sess-1',\n});\n```\n\n**Via middleware**: `createAmplitudeAIMiddleware` extracts user identity from the request (see [Middleware](#middleware)):\n\n```typescript\napp.use(\n  createAmplitudeAIMiddleware({\n    amplitudeAI: ai,\n    userIdResolver: (req) => req.headers['x-user-id'] ?? null,\n  }),\n);\n```\n\n### Session\n\n#### What is an agent session?\n\nAn **agent session** is not the same as Amplitude's standard analytics session.\n\n| | Agent session | Analytics session |\n|--|---------------|-------------------|\n| Property | `[Agent] Session ID` | `$session_id` (Browser SDK) |\n| SDK parameter | `sessionId` on `agent.session()` | `browserSessionId` on `agent.session()` |\n| Meaning | One unit of work the user hands the agent — a job with a real outcome | The user's app or web visit; powers Session Replay and standard product analytics |\n\nYou can have **multiple agent sessions inside one analytics session**. For example: when you open Amplitude, you start an analytics session; when you launch Global Agent from within Amplitude, you start an agent session.\n\n**What counts as one agent session:** one job from start to finish. Pass the ID you already track as `sessionId`:\n\n- Chatbot / copilot → thread or conversation ID\n- Support agent → ticket ID\n- Coding agent → task or ticket ID\n- Voice agent → call ID\n- Background / autonomous agent → run or job ID\n\nYou're not inventing a new identifier — use the thread, ticket, call, or run ID your app already has. Quickstart examples that omit `sessionId` (UUID auto-generation) are for demos only; production apps should pass your real job ID.\n\n##### When does an agent session end?\n\n**Close explicitly when the job is done (recommended).** Call `trackSessionEnd()` or let `session.run()` complete when the unit of work is finished (ticket resolved, call ended, run completed). This marks the session as complete and makes it **eligible for server-side enrichment immediately**.\n\nClosing does not block later events with the same `sessionId` — it is a completion marker, not a hard lock. If the user continues the **same job** (same thread or ticket), reusing the same `sessionId` is fine.\n\n**Idle timeout (automatic fallback).** If you don't close explicitly, the server marks the session eligible for enrichment after `idleTimeoutMinutes` of inactivity (default **30 minutes**). Raise it for jobs with long natural gaps — e.g. `240` for support tickets or coding agents with pauses between turns.\n\n**New goal → new session.** When the user starts a **different job**, use a **new `sessionId`**.\n\nAsync context manager using `AsyncLocalStorage`. Use `session.run()` to execute a callback within session context; session end is tracked automatically on exit:\n\n```typescript\nconst session = agent.session({ userId: 'user-123' });\nawait session.run(async (s) => {\n  s.trackUserMessage('Hello');\n  s.trackAiMessage(response.content, 'gpt-4', 'openai', latencyMs);\n});\n```\n\nStart a new trace within an ongoing session to group related operations:\n\n```typescript\nawait session.run(async (s) => {\n  const traceId = s.newTrace();\n  s.trackUserMessage('Follow-up question');\n  s.trackAiMessage(response.content, 'gpt-4o', 'openai', latencyMs);\n});\n```\n\nFor sessions where gaps between messages may exceed 30 minutes (e.g., coding assistants, support agents waiting on customer replies), pass `idleTimeoutMinutes` so Amplitude knows the session is still active:\n\n```typescript\nconst session = agent.session({\n  userId: 'user-123',\n  idleTimeoutMinutes: 240, // expect up to 4-hour gaps\n});\n```\n\nWithout this, sessions with long idle periods may be closed and enrichment may run earlier than expected. The default is 30 minutes.\n\n**Link to Session Replay**: If your frontend uses Amplitude's [Session Replay](https://www.docs.developers.amplitude.com/session-replay/), pass the browser's analytics `$session_id` as `browserSessionId` (separate from agent `sessionId`) plus `deviceId` to link agent sessions to browser recordings:\n\n```typescript\nconst session = agent.session({\n  userId: 'user-123',\n  sessionId: req.headers['x-thread-id'], // agent job ID (thread, ticket, call, or run)\n  deviceId: req.headers['x-amp-device-id'],\n  browserSessionId: req.headers['x-amp-session-id'], // analytics $session_id for replay\n});\n\nawait session.run(async (s) => {\n  s.trackUserMessage('What is retention?');\n  // All events now carry [Amplitude] Session Replay ID = deviceId/browserSessionId\n});\n```\n\n### tool()\n\nHigher-order function wrapping functions to auto-track as `[Agent] Tool Call` events:\n\n```typescript\nimport { tool } from '@amplitude/ai';\n\nconst searchDb = tool(\n  async (query: { q: string }) => {\n    return await db.search(query.q);\n  },\n  {\n    name: 'search_db',\n    inputSchema: { type: 'object', properties: { q: { type: 'string' } } },\n  },\n);\n```\n\n**Note on `inputSchema`**: Unlike the Python SDK which accepts a Pydantic model class and extracts the JSON Schema automatically, the TypeScript SDK accepts a raw JSON Schema object. For type-safe schema generation, consider using [Zod](https://zod.dev) with `zod-to-json-schema`:\n\n```typescript\nimport { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\n\nconst QuerySchema = z.object({ q: z.string(), limit: z.number().optional() });\nconst searchDb = tool(mySearchFn, {\n  name: 'search_db',\n  inputSchema: zodToJsonSchema(QuerySchema),\n});\n```\n\n### observe()\n\nHigher-order function wrapping functions to auto-track as `[Agent] Span` events:\n\n```typescript\nimport { observe } from '@amplitude/ai';\n\nconst processRequest = observe(\n  async (input: Request) => {\n    return await handleRequest(input);\n  },\n  { name: 'process_request' },\n);\n```\n\n## Configuration\n\n```typescript\nimport { AIConfig, AmplitudeAI, ContentMode } from '@amplitude/ai';\n\nconst config = new AIConfig({\n  contentMode: ContentMode.FULL, // FULL | METADATA_ONLY | CUSTOMER_ENRICHED — both ContentMode.FULL and 'full' work\n  redactPii: true,\n  customRedactionPatterns: ['sensitive-\\\\d+'],\n  debug: false,\n  dryRun: false,\n});\n\nconst ai = new AmplitudeAI({ apiKey: 'YOUR_API_KEY', config });\n```\n\n| Option                    | Description                                                                                                 |\n| ------------------------- | ----------------------------------------------------------------------------------------------------------- |\n| `contentMode`             | `'full'` (default), `'metadata_only'`, or `'customer_enriched'`. Both `ContentMode.FULL` and `'full'` work. |\n| `redactPii`               | Redact email, phone, SSN, credit-card, and IP-address patterns from tracked content. **Defaults to `true`** — set to `false` to opt out. |\n| `customRedactionPatterns` | Additional regex patterns for redaction. Accepts strings (`[REDACTED]` label) or `{ pattern, replacement }` objects for named labels. |\n| `customRedactionFn`       | Optional `(text: string) => string` callback for custom redaction logic (e.g. compromise.js NER). Called after all regex-based redaction. |\n| `debug`                   | Log events to stderr                                                                                        |\n| `dryRun`                  | Log without sending to Amplitude                                                                            |\n| `validate`                | Enable strict validation of required fields                                                                 |\n| `onEventCallback`         | Callback invoked exactly once per tracked event `(event, statusCode, message) => void` — fired from the underlying Amplitude client's delivery path, so it is not double-invoked by provider wrappers or `patch()` |\n| `propagateContext`        | Enable cross-service context propagation                                                                    |\n\n## Context Dict Conventions\n\nThe `context` parameter on `ai.agent()` accepts an arbitrary `Record<string, unknown>` that is JSON-serialized and attached to every event as `[Agent] Context`. This is the recommended way to add segmentation dimensions without requiring new global properties.\n\n**Recommended keys:**\n\n| Key | Example Values | Use Case |\n| --- | --- | --- |\n| `agent_type` | `\"planner\"`, `\"executor\"`, `\"retriever\"`, `\"router\"` | Filter/group analytics by agent role in multi-agent systems. |\n| `experiment_variant` | `\"control\"`, `\"treatment-v2\"`, `\"prompt-rewrite-a\"` | Segment AI sessions by A/B test variant. Compare quality scores, abandonment rates, or cost across experiment arms. |\n| `feature_flag` | `\"new-rag-pipeline\"`, `\"reasoning-model-enabled\"` | Track which feature flags were active during the session. |\n| `surface` | `\"chat\"`, `\"search\"`, `\"copilot\"`, `\"email-draft\"` | Identify which UI surface or product area triggered the AI interaction. |\n| `prompt_revision` | `\"v7\"`, `\"abc123\"`, `\"2026-02-15\"` | Track which prompt version was used. Detect prompt regression when combined with `agentVersion`. |\n| `deployment_region` | `\"us-east-1\"`, `\"eu-west-1\"` | Segment by deployment region for latency analysis or compliance tracking. |\n| `canary_group` | `\"canary\"`, `\"stable\"` | Identify canary vs. stable deployments for progressive rollout monitoring. |\n| `ingestion_path` | `\"gateway\"` | Tag traffic that routed through an OpenAI-compatible gateway (pair with `gateway`). |\n| `gateway` | `\"openrouter\"`, `\"litellm\"`, `\"requesty\"` | Which partner gateway handled the call. Existing `[Agent] Context` keys — no new schema fields. |\n\n**Example:**\n\n```typescript\nconst agent = ai.agent('support-bot', {\n  userId: 'u1',\n  description: 'Handles customer support queries via OpenAI GPT-4o',\n  agentVersion: '4.2.0',\n  context: {\n    agent_type: 'executor',\n    experiment_variant: 'reasoning-enabled',\n    surface: 'chat',\n    feature_flag: 'new-rag-pipeline',\n    prompt_revision: 'v7',\n  },\n});\n\n// All events from this agent (and its sessions, child agents, and provider\n// wrappers) will include [Agent] Context with these keys.\n```\n\n**Context merging in child agents:**\n\n```typescript\nconst parent = ai.agent('orchestrator', {\n  context: { experiment_variant: 'treatment', surface: 'chat' },\n});\nconst child = parent.child('researcher', {\n  context: { agent_type: 'retriever' },\n});\n// child context = { experiment_variant: 'treatment', surface: 'chat', agent_type: 'retriever' }\n// Child keys override parent keys; parent keys absent from the child are preserved.\n```\n\n**Querying in Amplitude:** The `[Agent] Context` property is a JSON string. To query individual keys:\n- **Derived properties**: For frequently-used keys, create a derived event property in Amplitude (Data → Properties → Derived → New) that extracts the value permanently.\n- **Filter**: Use `[Agent] Context contains \"key\":\"value\"` for string matching in chart filters.\n\n> **Note on `experiment_variant` and server-generated events:** Context keys appear on all SDK-emitted events (`[Agent] User Message`, `[Agent] AI Response`, etc.). `[Agent] Session Record` also carries `[Agent] Context` — the enrichment pipeline echoes it from the session's SDK events onto the server-generated record, so you can segment session-level quality, outcomes, and flags directly by a context key (e.g., `experiment_variant`). Other server-generated events (e.g. `[Agent] Score` with `source=\"ai\"`) do not yet inherit context keys; to segment those by experiment arm, use Amplitude Derived Properties to extract from `[Agent] Context` on the SDK events.\n\n## Works with\n\nOpenAI-compatible gateways and OTEL partners — no special SDK build required:\n\n| Partner | Path | Notes |\n| --- | --- | --- |\n| **OpenRouter** | SDK-through (`baseURL`) | Pass the **canonical** routed model id (e.g. `gpt-4o-mini`), not `openrouter/auto`. Align Amplitude `contentMode` with OpenRouter Privacy Mode. |\n| **LiteLLM** | SDK-through or OTLP | Set `CAPTURE_MESSAGE_CONTENT=true` when you need message bodies on OTEL spans. |\n| **Requesty** | SDK-through only | No OTLP push today — point the OpenAI client at Requesty's base URL. |\n| **Strands → Nova** | OTLP | Export GenAI spans into Amplitude via `AmplitudeAgentExporter` / `enableOtel()`. |\n\nPrefer **SDK-through** whenever you control the call site. Use gateway-only OTLP as a bridge for partners that already export GenAI spans.\n\n```typescript\nimport { AmplitudeAI, OpenAI } from '@amplitude/ai';\n\nconst ai = new AmplitudeAI({ apiKey: process.env.AMPLITUDE_AI_API_KEY! });\n\n// OpenRouter\nconst openrouter = new OpenAI({\n  amplitude: ai,\n  apiKey: process.env.OPENROUTER_API_KEY,\n  baseURL: 'https://openrouter.ai/api/v1',\n});\nconst orAgent = ai.agent('openrouter-agent', {\n  userId,\n  context: { ingestion_path: 'gateway', gateway: 'openrouter' },\n});\n\n// LiteLLM proxy\nconst litellm = new OpenAI({\n  amplitude: ai,\n  apiKey: process.env.LITELLM_API_KEY,\n  baseURL: 'http://localhost:4000/v1',\n});\nconst llAgent = ai.agent('litellm-agent', {\n  userId,\n  context: { ingestion_path: 'gateway', gateway: 'litellm' },\n});\n```\n\n**Model id rule:** pass the **real provider model** the gateway routed to (`gpt-4o-mini`, `claude-sonnet-4-20250514`). Gateway product labels (`openrouter/auto`, router aliases) cannot be priced — the SDK **omits** `[Agent] Cost USD` rather than recording `$0`.\n\nFor OTLP partners, emit at least `gen_ai.request.model`, `gen_ai.usage.input_tokens`, and `gen_ai.usage.output_tokens`. Full recipes: [`amplitude-ai.md` Works with](amplitude-ai.md#works-with).\n\n## Privacy & Content Control\n\nThree content modes control what data is sent to Amplitude:\n\n| Mode                | Message Content           | Token/Cost/Latency | Session Grouping | Server Enrichments |\n| ------------------- | ------------------------- | ------------------ | ---------------- | ------------------ |\n| `FULL`              | Sent (with PII redaction) | Yes                | Yes              | Yes (auto)         |\n| `METADATA_ONLY`     | Not sent                  | Yes                | Yes              | No                 |\n| `CUSTOMER_ENRICHED` | Not sent                  | Yes                | Yes              | Yes (you provide)  |\n\n### FULL mode (default)\n\nMessage content is captured and sent to Amplitude. PII redaction is **on by default** — built-in patterns scrub emails, phone numbers (US and international E.164), SSNs (dashed and spaced), credit card numbers, IPv4/IPv6 addresses, and base64 image data before the event leaves your process. Set `redactPii: false` to opt out:\n\n```typescript\nconst config = new AIConfig({\n  contentMode: ContentMode.FULL,\n  redactPii: true, // default; pass false to disable\n});\n```\n\nWith the default `redactPii: true`, a message like `\"Contact me at john@example.com or 555-123-4567\"` is sanitized to `\"Contact me at [email] or [phone]\"` before being sent.\n\n> **Upgrading to 0.7.0 with `redactPii: true`?** This release adds IPv4/IPv6 → `[ip_address]`, international phone → `[phone]`, and space-separated SSN → `[ssn]` placeholders. If any downstream pipeline or dashboard regex matches on raw IP or phone content in event properties, update those filters before upgrading.\n\nBuilt-in patterns now include international phone numbers (E.164 `+country...`) and IPv4/IPv6 addresses. Add custom patterns for domain-specific PII:\n\n```typescript\nconst config = new AIConfig({\n  contentMode: ContentMode.FULL,\n  redactPii: true,\n  customRedactionPatterns: ['ACCT-\\\\d{6,}', 'internal-key-[a-f0-9]+'],\n});\n```\n\n**Named replacements** — use `{ pattern, replacement }` objects for descriptive labels:\n\n```typescript\nconst config = new AIConfig({\n  redactPii: true,\n  customRedactionPatterns: [\n    { pattern: '\\\\bACME-\\\\d+\\\\b', replacement: '[ticket_id]' },\n    { pattern: '\\\\bORD-[A-Z0-9]+\\\\b', replacement: '[order_id]' },\n  ],\n});\n```\n\n**Custom redaction function** — plug in any external PII engine:\n\n```typescript\nconst config = new AIConfig({\n  redactPii: true,\n  customRedactionFn: myCustomScrubber, // (text: string) => string\n});\n```\n\nThe function runs *after* all built-in and custom-pattern redaction, receives the partially-redacted text, and must return a string. If it throws an exception, the SDK logs a warning and preserves the text from prior tiers unchanged.\n\n**Recipe: compromise.js for name/address detection**\n\n```typescript\nimport nlp from 'compromise';\n\nfunction redactNames(text: string): string {\n  const doc = nlp(text);\n  doc.people().replaceWith('[person]');\n  doc.places().replaceWith('[location]');\n  return doc.text();\n}\n\nconst ai = new AmplitudeAI({\n  apiKey: 'YOUR_KEY',\n  config: new AIConfig({\n    redactPii: true,\n    customRedactionFn: redactNames,\n  }),\n});\n```\n\nCustom redaction patterns are your responsibility: avoid expensive or catastrophic regexes in performance-sensitive paths.\n\nMessage content is stored at full length with no truncation or size limits. The `$llm_message` property is whitelisted server-side, and the Node SDK does not apply per-property string truncation.\n\n### METADATA_ONLY mode\n\nNo message content is sent. You still get token counts, cost, latency, model name, and session grouping — everything needed for cost analytics and performance monitoring:\n\n```typescript\nconst config = new AIConfig({\n  contentMode: ContentMode.METADATA_ONLY,\n});\n```\n\nUse this when you cannot send user content to a third-party analytics service (e.g., regulated industries, sensitive data).\n\n### CUSTOMER_ENRICHED mode\n\nLike `METADATA_ONLY` (no content sent), but designed for workflows where you enrich sessions with your own classifications, quality scores, and topic labels via the `SessionEnrichments` API:\n\n```typescript\nconst config = new AIConfig({\n  contentMode: ContentMode.CUSTOMER_ENRICHED,\n});\n\n// Later, after running your own classification pipeline:\nconst enrichments = new SessionEnrichments({\n  qualityScore: 0.85,\n  overallOutcome: 'resolved',\n});\nsession.setEnrichments(enrichments);\n```\n\n### PrivacyConfig (advanced)\n\n`PrivacyConfig` is derived from `AIConfig` via `config.toPrivacyConfig()`. For advanced use, create directly:\n\n```typescript\nimport { PrivacyConfig } from '@amplitude/ai';\n\nconst privacy = new PrivacyConfig({\n  privacyMode: true,\n  redactPii: true,\n  customRedactionPatterns: ['sensitive-\\\\d+'],\n});\n```\n\n### When to use which mode\n\n- **FULL**: You want to see actual conversation content in Amplitude, debug individual sessions, and leverage server-side enrichment pipelines. Best for development, internal tools, and applications where data sharing agreements permit it.\n- **METADATA_ONLY**: You want cost/performance analytics without exposing any message content. Best for regulated environments (healthcare, finance) or when content contains proprietary data.\n- **CUSTOMER_ENRICHED**: You want the privacy of METADATA_ONLY but also want structured analytics (topic classification, quality scores) that you compute on your own infrastructure before sending to Amplitude.\n\n## Cache-Aware Cost Tracking\n\nWhen using provider prompt caching (Anthropic's cache, OpenAI's cached completions, etc.), pass cache token breakdowns for accurate cost calculation:\n\n```typescript\ns.trackAiMessage(\n  response.content,\n  'claude-3.5-sonnet',\n  'anthropic',\n  latencyMs,\n  {\n    inputTokens: response.usage.input_tokens,\n    outputTokens: response.usage.output_tokens,\n    cacheReadTokens: response.usage.cache_read_input_tokens,\n    cacheCreationTokens: response.usage.cache_creation_input_tokens,\n  },\n);\n```\n\nWithout cache breakdowns, cost calculation treats all input tokens at the standard rate. With caching enabled, cache-read tokens are typically 10x cheaper than standard input tokens and cache-creation tokens are ~25% more expensive. Naive cost calculation without this breakdown can overestimate costs by 2-5x for cache-heavy workloads.\n\nThe SDK tracks four token categories:\n\n- `[Agent] Input Tokens` — standard (non-cached) input tokens\n- `[Agent] Output Tokens` — generated output tokens\n- `[Agent] Cache Read Tokens` — tokens read from provider cache (cheap)\n- `[Agent] Cache Creation Tokens` — tokens written to provider cache (slightly expensive)\n\nCost is auto-calculated when token counts are provided. The `@pydantic/genai-prices` package is included as a dependency and installed automatically with the SDK. If a model cannot be priced, `calculateCost()` returns `null`, logs a bounded warning, and the SDK omits `[Agent] Cost USD`. You can also pass `totalCostUsd` directly if you compute cost yourself:\n\n```typescript\ns.trackAiMessage(response.content, 'gpt-4o', 'openai', latencyMs, {\n  totalCostUsd: 0.0034,\n});\n```\n\n> **Note — pricing data freshness.** Cost calculation relies on pricing data bundled in the installed `@pydantic/genai-prices` package. Newly released models may have no cost until the package is updated. To get the latest pricing between package releases, opt in to live updates at startup:\n>\n> ```typescript\n> import { enableLivePriceUpdates } from '@amplitude/ai';\n> enableLivePriceUpdates(); // fetches latest prices from genai-prices GitHub repo hourly\n> ```\n>\n> This makes periodic HTTPS requests to `raw.githubusercontent.com` (~26 KB each). Only enable in environments where outbound network access is permitted.\n\n## Semantic Cache Tracking\n\nTrack full-response semantic cache hits (distinct from token-level prompt caching above):\n\n```typescript\ns.trackAiMessage(cachedResponse.content, 'gpt-4o', 'openai', latencyMs, {\n  wasCached: true, // served from Redis/semantic cache\n});\n```\n\nMaps to `[Agent] Was Cached`. Enables \"cache hit rate\" charts and cost optimization analysis. Only emitted when `true`; omitted (not `false`) when the response was not cached.\n\n## Model Tier Classification\n\nModels are automatically classified into tiers for cost/performance analysis:\n\n| Tier        | Examples                                                 | When to Use                    |\n| ----------- | -------------------------------------------------------- | ------------------------------ |\n| `fast`      | gpt-4o-mini, claude-3-haiku, gemini-flash, gpt-3.5-turbo | High-volume, latency-sensitive |\n| `standard`  | gpt-4o, claude-3.5-sonnet, gemini-pro, llama, command    | General purpose                |\n| `reasoning` | o1, o3-mini, deepseek-r1, claude with extended thinking  | Complex reasoning tasks        |\n\nThe tier is inferred automatically from the model name and attached as `[Agent] Model Tier` on every `[Agent] AI Response` event:\n\n```typescript\nimport {\n  inferModelTier,\n  TIER_FAST,\n  TIER_REASONING,\n  TIER_STANDARD,\n} from '@amplitude/ai';\n\ninferModelTier('gpt-4o-mini'); // 'fast'\ninferModelTier('claude-3.5-sonnet'); // 'standard'\ninferModelTier('o1-preview'); // 'reasoning'\n```\n\nOverride the auto-inferred tier for custom or fine-tuned models:\n\n```typescript\ns.trackAiMessage(\n  response.content,\n  'ft:gpt-4o:my-org:custom',\n  'openai',\n  latencyMs,\n  {\n    modelTier: 'standard',\n    inputTokens: response.usage.prompt_tokens,\n    outputTokens: response.usage.completion_tokens,\n  },\n);\n```\n\n## Provider Wrappers\n\nUse instrumented provider wrappers for automatic tracking:\n\n| Provider     | Class         | Package                         |\n| ------------ | ------------- | ------------------------------- |\n| OpenAI       | `OpenAI`      | openai                          |\n| Anthropic    | `Anthropic`   | @anthropic-ai/sdk               |\n| Gemini       | `Gemini`      | @google/generative-ai           |\n| Google Gen AI | `GoogleGenAI` | @google/genai                   |\n| AzureOpenAI  | `AzureOpenAI` | openai                          |\n| Bedrock      | `Bedrock`     | @aws-sdk/client-bedrock-runtime |\n| Mistral      | `Mistral`     | @mistralai/mistralai            |\n\n> `Gemini` targets the legacy `@google/generative-ai` SDK (`getGenerativeModel(...).generateContent(...)`). `GoogleGenAI` targets the new unified `@google/genai` SDK (`ai.models.generateContent({ model, contents, config })`). Pick the class that matches the package you installed.\n\n### Fireworks (OpenAI compatibility)\n\nUse the OpenAI-compatible wrapper with a Fireworks endpoint. The SDK validates the URL hostname, labels events with `[Agent] Provider = \"fireworks\"`, and captures the Fireworks `response.id` as `[Agent] Provider Request ID` on AI response events for Chat Completions and Responses, including streams.\n\n```typescript\nconst fireworks = new OpenAI({\n  amplitude: ai,\n  apiKey: process.env.FIREWORKS_API_KEY,\n  baseUrl: 'https://api.fireworks.ai/inference/v1',\n});\n```\n\nYou can set `provider: 'fireworks'` explicitly for a private proxy. Cost calculation uses public Fireworks/genai-prices data; unknown models omit cost, and no private Amplitude contract rates are included.\n\n**Feature coverage by provider:**\n\n| Feature               | OpenAI | Anthropic | Gemini | AzureOpenAI | Bedrock | Mistral |\n| --------------------- | ------ | --------- | ------ | ----------- | ------- | ------- |\n| Streaming             | Yes    | Yes       | Yes    | Yes         | Yes     | Yes     |\n| Tool call tracking    | Yes    | Yes       | No     | Yes         | Yes     | No      |\n| TTFB measurement      | Yes    | Yes       | No     | Yes         | No      | No      |\n| Cache token stats     | Yes    | Yes       | No     | No          | No      | No      |\n| Responses API         | Yes    | -         | -      | -           | -       | -       |\n| Reasoning content     | Yes    | Yes       | No     | Yes         | No      | No      |\n| System prompt capture | Yes    | Yes       | Yes    | Yes         | Yes     | Yes     |\n| Cost estimation       | Yes    | Yes       | Yes    | Yes         | Yes     | Yes     |\n\nProvider wrappers use injected `TrackFn` callbacks instead of class hierarchy casts, enabling easier composition and custom tracking logic.\n\n**Provider wrappers + delegation:** Inside `session.runAs()`, provider wrappers suppress auto `[Agent] User Message` emission so that internal `role: \"user\"` prompts in delegation calls don't create spurious user turns.\n\nBedrock model IDs like `us.anthropic.claude-3-5-sonnet` are automatically normalized for price lookup (e.g., to `claude-3-5-sonnet`).\n\n**OpenAI example:**\n\n```typescript\nimport { AmplitudeAI, OpenAI } from '@amplitude/ai';\n\nconst ai = new AmplitudeAI({ apiKey: process.env.AMPLITUDE_AI_API_KEY! });\nconst openai = new OpenAI({\n  amplitude: ai,\n  apiKey: process.env.OPENAI_API_KEY,\n});\n\nconst agent = ai.agent('my-agent', { userId: 'user-123' });\nconst session = agent.session();\n\nawait session.run(async (s) => {\n  const resp = await openai.chat.completions.create({\n    model: 'gpt-4',\n    messages: [{ role: 'user', content: 'Hello' }],\n  });\n  // AI response tracked automatically via wrapper\n});\n```\n\nOr wrap an existing client:\n\n```typescript\nimport { wrap } from '@amplitude/ai';\nimport OpenAI from 'openai';\n\nconst client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\nconst instrumented = wrap(client, ai);\n```\n\n## Streaming Tracking\n\n### Automatic streaming (provider wrappers)\n\nProvider wrappers (`OpenAI`, `AzureOpenAI`, `Anthropic`, `Gemini`, `Mistral`, `Bedrock`) automatically detect supported streaming responses and track them transparently. The wrapper intercepts the `AsyncIterable`, accumulates chunks, measures TTFB, and emits an `[Agent] AI Response` event after the stream is fully consumed:\n\n```typescript\nconst openai = new OpenAI({ amplitude: ai, apiKey: '...' });\n\n// Streaming is handled automatically — just iterate the result\nconst stream = await openai.chat.completions.create({\n  model: 'gpt-4o',\n  messages: [{ role: 'user', content: 'Hello' }],\n  stream: true,\n});\n\nfor await (const chunk of stream) {\n  process.stdout.write(chunk.choices[0]?.delta?.content ?? '');\n}\n// ^ AI Response event emitted automatically after loop ends\n```\n\n### Manual streaming\n\nTrack streaming responses manually with time-to-first-byte (TTFB) for latency analysis:\n\n```typescript\ns.trackAiMessage(fullContent, 'gpt-4o', 'openai', totalMs, {\n  isStreaming: true,\n  ttfbMs: timeToFirstByte,\n  inputTokens: usage.prompt_tokens,\n  outputTokens: usage.completion_tokens,\n});\n```\n\nThe SDK tracks two timing properties for streaming:\n\n- `[Agent] Latency Ms` — total wall-clock time from request to final chunk\n- `[Agent] TTFB Ms` — time-to-first-byte, the delay before the first token arrives\n\n### StreamingAccumulator\n\nFor manual streaming, use `StreamingAccumulator` to collect chunks and automatically measure TTFB:\n\n```typescript\nimport { StreamingAccumulator } from '@amplitude/ai';\n\nconst accumulator = new StreamingAccumulator();\n\nfor await (const chunk of stream) {\n  const content = chunk.choices[0]?.delta?.content;\n  if (content) {\n    accumulator.addContent(content);\n  }\n}\n\naccumulator.setUsage({\n  inputTokens: finalUsage.prompt_tokens,\n  outputTokens: finalUsage.completion_tokens,\n});\n\ns.trackAiMessage(\n  accumulator.content,\n  'gpt-4o',\n  'openai',\n  accumulator.elapsedMs,\n  {\n    isStreaming: true,\n    ttfbMs: accumulator.ttfbMs,\n    inputTokens: accumulator.inputTokens,\n    outputTokens: accumulator.outputTokens,\n    finishReason: accumulator.finishReason,\n  },\n);\n```\n\nThe accumulator automatically records TTFB when `addContent()` is called for the first time, and tracks total elapsed time via `elapsedMs`. For streaming errors, call `setError(message)` to set `isError` and `errorMessage`, which are included on the tracked AI Response event.\n\n## Attachment Tracking\n\nTrack files sent with user messages (images, PDFs, URLs):\n\n```typescript\ns.trackUserMessage('Analyze this document', {\n  attachments: [\n    { type: 'image', name: 'chart.png', size_bytes: 102400 },\n    { type: 'pdf', name: 'report.pdf', size_bytes: 2048576 },\n  ],\n});\n```\n\nThe SDK automatically derives aggregate properties from the attachment array:\n\n- `[Agent] Has Attachments` — boolean, true when attachments are present\n- `[Agent] Attachment Count` — number of attachments\n- `[Agent] Attachment Types` — deduplicated list of attachment types (e.g., `[\"image\", \"pdf\"]`)\n- `[Agent] Total Attachment Size Bytes` — sum of all `size_bytes` values\n- `[Agent] Attachments` — serialized JSON of the full attachment metadata\n\nAttachments can also be tracked on AI responses (e.g., when the model generates images or files):\n\n```typescript\ns.trackAiMessage(response.content, 'gpt-4o', 'openai', latencyMs, {\n  attachments: [{ type: 'image', name: 'generated.png', size_bytes: 204800 }],\n});\n```\n\n## Implicit Feedback\n\nTrack behavioral signals that indicate whether a response met the user's need, without requiring explicit ratings:\n\n```typescript\n// User asks a question\ns.trackUserMessage('How do I create a funnel?');\n\n// AI responds — user copies the answer (positive signal)\ns.trackAiMessage('To create a funnel, go to...', 'gpt-4o', 'openai', latencyMs, {\n  wasCopied: true,\n});\n\n// User regenerates (negative signal — first response wasn't good enough)\ns.trackUserMessage('How do I create a funnel?', {\n  isRegeneration: true,\n});\n\n// User edits their question (refining intent)\ns.trackUserMessage('How do I create a conversion funnel for signups?', {\n  isEdit: true,\n  editedMessageId: originalMsgId, // links the edit to the original\n});\n```\n\nTrack abandonment at session end — a low `abandonmentTurn` (e.g., 1) strongly signals first-response dissatisfaction:\n\n```typescript\nagent.trackSessionEnd({\n  sessionId: 'sess-1',\n  abandonmentTurn: 1, // user left after first AI response\n});\n```\n\nThese signals map to `[Agent] Was Copied`, `[Agent] Is Regeneration`, `[Agent] Is Edit`, `[Agent] Edited Message ID`, and `[Agent] Abandonment Turn`. Use them in Amplitude to build quality dashboards without requiring user surveys.\n\n## tool() and observe() HOFs\n\n### tool()\n\nWraps an async function to track as `[Agent] Tool Call`:\n\n```typescript\nimport { tool, ToolCallTracker } from '@amplitude/ai';\n\nToolCallTracker.setAmplitude(ai.amplitude, 'user-123', {\n  sessionId: 'sess-1',\n  traceId: 'trace-1',\n  agentId: 'my-agent',\n  privacyConfig: ai.config.toPrivacyConfig(),\n});\n\nconst fetchWeather = tool(\n  async (args: { city: string }) => {\n    return await weatherApi.get(args.city);\n  },\n  {\n    name: 'fetch_weather',\n    inputSchema: { type: 'object', properties: { city: { type: 'string' } } },\n    timeoutMs: 5000,\n    onError: (err, name) => console.error(`Tool ${name} failed:`, err),\n  },\n);\n```\n\n#### Business attribution for agent actions\n\nWhen a tool performs a real business action (add to cart, purchase, signup), emit **two** events on two planes: the `[Agent] Tool Call` above for operational health, **and** the standard product event via the base Amplitude SDK for business attribution:\n\n```typescript\nimport { track } from '@amplitude/analytics-node'; // or @amplitude/analytics-browser client-side\n\n// inside the tool, after the action succeeds:\ntrack(\n  'Product Added',                                              // reuse the product's existing event/property names\n  { product_id: productId, journey_type: 'agent' },\n  { user_id: currentUserId },                                   // same user_id as the [Agent] events\n);\n```\n\nThe `journey_type` discriminator (`agent` / `web` / `mobile`) makes agent-driven and click-driven journeys comparable in the **same funnel** with no joining. This is the one case where the base SDK's `track()` is correct — it stays a non-`[Agent]` event so it lands in the standard product taxonomy. Only for actions with a click-driven equivalent (not read-only tools), and reuse the existing event name/properties — don't invent them. See Step 3e of `amplitude-ai.md`.\n\n### observe()\n\nWraps a function to track as `[Agent] Span`:\n\n```typescript\nimport { observe } from '@amplitude/ai';\n\nconst enrichData = observe(async (data: unknown) => transform(data), {\n  name: 'enrich_data',\n  agentId: 'enricher',\n});\n```\n\n### Custom Events in Agent Analytics\n\n`trackSpan()` is the catch-all for any operation not covered by `trackUserMessage`, `trackAiMessage`, `trackToolCall`, or `trackEmbedding`. It emits an `[Agent] Span` event with full session context (session ID, agent ID, trace ID, SDK version) so custom events appear in Agent Analytics alongside auto-tracked events:\n\n```typescript\n// Track a custom business event that shows up in Agent Analytics\nconst spanId = session.trackSpan({\n  spanName: 'subscription_check',\n  latencyMs: 45,\n  outputState: 'active',\n  eventProperties: { plan: 'enterprise', seats: 50 },\n});\n```\n\n> **Note:** `eventProperties` adds flat top-level properties to the Amplitude event. On managed `[Agent]` event types, properties not in the schema may not be queryable in charts. For custom segmentation dimensions you want to chart, prefer `context` instead — it maps to the pre-registered `[Agent] Context` JSON property. Use `eventProperties` only when you have explicitly registered the properties in your project's tracking plan.\n\n`trackSpan()` is the recommended way to emit custom events. It supports parent-child nesting via `parentSpanId`, error tracking via `isError`, and all the standard session-level metadata.\n\n## Scoring Patterns\n\nTrack quality feedback from multiple sources using the `score()` method. Scores are emitted as `[Agent] Score` events.\n\n### User Feedback (thumbs up/down)\n\n```typescript\ns.score('thumbs-up', 1, messageId, { source: 'user' });\ns.score('thumbs-down', 0, messageId, { source: 'user' });\n```\n\n### Numeric Rating\n\n```typescript\ns.score('rating', 4, messageId, {\n  source: 'user',\n  comment: 'Very helpful but slightly verbose',\n});\n```\n\n### LLM-as-Judge\n\n```typescript\ns.score('quality', 0.85, messageId, {\n  source: 'ai',\n  comment: 'Clear and accurate response with proper citations',\n});\n```\n\n### Session-Level Scoring\n\nScore an entire session rather than a single message by setting `targetType` to `'session'`:\n\n```typescript\ns.score('session-quality', 0.9, session.sessionId, {\n  targetType: 'session',\n  source: 'ai',\n});\n```\n\n### Score Properties\n\nEach `[Agent] Score` event includes:\n\n- `[Agent] Score Name` — the name you provide (e.g., `\"thumbs-up\"`, `\"quality\"`)\n- `[Agent] Score Value` — numeric value\n- `[Agent] Target ID` — the message ID or session ID being scored\n- `[Agent] Target Type` — `\"message\"` (default) or `\"session\"`\n- `[Agent] Evaluation Source` — `\"user\"` (default) or `\"ai\"`\n- `[Agent] Comment` — optional free-text comment (respects content mode)\n\n## Enrichments\n\n### Session Enrichments\n\nAttach structured metadata to sessions for analytics. Enrichments are included when the session auto-ends:\n\n```typescript\nimport {\n  RubricScore,\n  SessionEnrichments,\n  TopicClassification,\n} from '@amplitude/ai';\n\nconst enrichments = new SessionEnrichments({\n  qualityScore: 0.85,\n  sentimentScore: 0.7,\n  overallOutcome: 'resolved',\n  topicClassifications: {\n    intent: new TopicClassification({\n      l1: 'billing',\n      primary: 'billing',\n      values: ['billing', 'refund'],\n      subcategories: ['REFUND_REQUEST', 'PRICING_QUESTION'],\n    }),\n  },\n  rubrics: [\n    new RubricScore({\n      name: 'helpfulness',\n      score: 4,\n      rationale: 'Provided clear step-by-step instructions',\n    }),\n    new RubricScore({\n      name: 'accuracy',\n      score: 5,\n      rationale: 'All information was factually correct',\n    }),\n  ],\n  agentChain: ['orchestrator', 'researcher', 'writer'],\n  rootAgentName: 'orchestrator',\n  requestComplexity: 'medium',\n});\n\nsession.setEnrichments(enrichments);\n// Enrichments are included automatically when session.run() completes\n```\n\n### Track Enrichments Separately\n\nSend enrichments as a standalone event without ending the session:\n\n```typescript\nagent.trackSessionEnrichment(enrichments, {\n  sessionId: 'sess-abc123',\n});\n```\n\n### End-to-End Example: `customer_enriched` Mode\n\nThis mode is for teams that run their own evaluation pipeline (or can't send message content to Amplitude) but still want rich session-level analytics. Here's a complete workflow:\n\n```typescript\nimport {\n  AIConfig,\n  AmplitudeAI,\n  ContentMode,\n  MessageLabel,\n  RubricScore,\n  SessionEnrichments,\n  TopicClassification,\n} from '@amplitude/ai';\n\n// 1. Configure: no content sent to Amplitude\nconst ai = new AmplitudeAI({\n  apiKey: process.env.AMPLITUDE_AI_API_KEY!,\n  config: new AIConfig({\n    contentMode: ContentMode.CUSTOMER_ENRICHED,\n  }),\n});\n\nconst agent = ai.agent('support-bot', {\n  description: 'Handles support conversations in metadata-only mode',\n  agentVersion: '2.1.0',\n});\n\n// 2. Run the conversation — content is NOT sent (metadata only)\nconst session = agent.session({ userId: 'user-42' });\nconst { sessionId, messageIds } = await session.run(async (s) => {\n  const msgIds: string[] = [];\n  msgIds.push(s.trackUserMessage('Why was I charged twice?'));\n  msgIds.push(\n    s.trackAiMessage(\n      aiResponse.content,\n      'gpt-4o',\n      'openai',\n      latencyMs,\n    ),\n  );\n  return { sessionId: s.sessionId, messageIds: msgIds };\n});\n\n// 3. Run your eval pipeline on the raw messages (e.g., your own LLM judge)\nconst evalResults = await myEvalPipeline(conversationHistory);\n\n// 4. Ship enrichments back to Amplitude\nconst enrichments = new SessionEnrichments({\n  qualityScore: evalResults.quality,\n  sentimentScore: evalResults.sentiment,\n  overallOutcome: evalResults.outcome,\n  topicClassifications: {\n    'billing': new TopicClassification({\n      topic: 'billing-dispute',\n      confidence: 0.92,\n    }),\n  },\n  rubricScores: [\n    new RubricScore({ name: 'accuracy', score: 4, maxScore: 5 }),\n    new RubricScore({ name: 'helpfulness', score: 5, maxScore: 5 }),\n  ],\n  messageLabels: {\n    [messageIds[0]]: [\n      new MessageLabel({ key: 'intent', value: 'billing-dispute', confidence: 0.94 }),\n    ],\n  },\n  customMetadata: { eval_model: 'gpt-4o-judge-v2' },\n});\n\nagent.trackSessionEnrichment(enrichments, { sessionId });\n```\n\nThis produces the same Amplitude event properties as Amplitude's built-in server-side enrichment (topics, rubrics, outcomes, message labels), but sourced from your pipeline. Use it when compliance requires zero-content transmission, or when you need custom evaluation logic beyond what the built-in enrichment provides.\n\n### Available Enrichment Fields\n\n- **Quality & Sentiment**: `qualityScore`, `sentimentScore`\n- **Outcome**: `overallOutcome`, `hasTaskFailure`, `taskFailureType`, `taskFailureReason`\n- **Topics**: `topic","readmeFilename":"README.md"}