{"_id":"@bentolabs/ams","_rev":"4-9d8ce1474273ac522c189016b58348c8","name":"@bentolabs/ams","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@bentolabs/ams","version":"0.1.0","keywords":["bentolabs","ams","sdk","observability","llm","tracing"],"author":{"name":"BentoLabs"},"license":"Apache-2.0","_id":"@bentolabs/ams@0.1.0","maintainers":[{"name":"bentolabs-ai","email":"kaushik@bentolabs.ai"},{"name":"ronak-bento","email":"ronak@bentolabs.ai"}],"homepage":"https://github.com/BentoLabs-ai/ams#readme","bugs":{"url":"https://github.com/BentoLabs-ai/ams/issues"},"bin":{"ams":"dist/cli.cjs","ams-cli":"dist/cli-dev.cjs"},"dist":{"shasum":"1e98ada58a353826c18ae952226f38a1f684554c","tarball":"https://registry.npmjs.org/@bentolabs/ams/-/ams-0.1.0.tgz","fileCount":60,"integrity":"sha512-hsHYn8OYJt6A8BDS7gIFcHj/bbUxWbHhSmhsL2jsi99b/2qABwzOcipyaig/Z+YUdnggAh5+FUlmDS5cHnUhBw==","signatures":[{"sig":"MEYCIQDdzQWgCqrNEI84WfSs5aFyV4Y39LCZprf3lU8uqgZ3ygIhAMHNv6N+B+DSABTXWplw78bwPyHb5ys6+FGkeiWS9GFo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44631734},"main":"dist/index.cjs","types":"dist/index.d.cts","module":"dist/index.mjs","exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"},"./dist/cli/worker/build.cjs":"./dist/cli/worker/build.cjs","./dist/cli/worker/index.cjs":"./dist/cli/worker/index.cjs","./dist/cli/worker/ts-parser.cjs":"./dist/cli/worker/ts-parser.cjs"},"gitHead":"a20023b7f5f453c67f998ce16e096ede073a7b60","scripts":{"lint":"eslint","test":"tsx --test test/*.test.ts test/**/*.test.ts","build":"tsdown","prepare":"tsdown","lint:fix":"eslint --fix"},"_npmUser":{"name":"ronak-bento","email":"ronak@bentolabs.ai"},"repository":{"url":"git+https://github.com/BentoLabs-ai/ams.git","type":"git"},"_npmVersion":"10.9.4","description":"TypeScript SDK for BentoLabs AMS","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.25.0 || ^4","glob":"^13.0.6","pino":"9.12.0","uuid":"^11.1.0","dotenv":"^17.2.2","esbuild":"^0.25.8","chokidar":"^5.0.0","lmnr-cli":"^0.1.7","commander":"^14.0.2","csv-parser":"^3.2.0","pino-pretty":"^13.1.1","cli-progress":"^3.12.0","@grpc/grpc-js":"^1.13.4","export-to-csv":"^1.4.0","@opentelemetry/api":"^1.9.0","eventsource-parser":"^3.0.6","zod-to-json-schema":"^3.25.0","@opentelemetry/core":"^1.30.1 || ^2.0.0","@opentelemetry/sdk-node":"^0.200.0","@opentelemetry/resources":"^1.30.1 || ^2.0.0","@lmnr-ai/claude-code-proxy":"^0.1.17","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.0.0","@opentelemetry/sdk-trace-node":"^1.30.1 || ^2.0.0","@opentelemetry/instrumentation":"^0.57.0 || >=0.200.0","@traceloop/instrumentation-azure":"^0.12.0","@opentelemetry/otlp-exporter-base":"^0.57.0 || >=0.200.0","@traceloop/instrumentation-cohere":"^0.12.0","@traceloop/instrumentation-openai":"^0.12.0","@traceloop/instrumentation-qdrant":"^0.12.0","@opentelemetry/context-async-hooks":"^1.30.1 || ^2.0.0","@traceloop/instrumentation-bedrock":"^0.12.0","@opentelemetry/semantic-conventions":"^1.36.0","@traceloop/instrumentation-chromadb":"^0.12.0","@traceloop/instrumentation-pinecone":"^0.12.0","@traceloop/instrumentation-together":"^0.12.1","@traceloop/instrumentation-vertexai":"^0.12.0","@traceloop/instrumentation-anthropic":"^0.12.0","@traceloop/instrumentation-langchain":"^0.12.0","@traceloop/instrumentation-llamaindex":"^0.12.0","@opentelemetry/otlp-grpc-exporter-base":"^0.57.0 || >=0.208.0","@opentelemetry/exporter-trace-otlp-grpc":"^0.57.0 || >=0.200.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0 || >=0.200.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.3","tsx":"^4.20.3","nock":"^14.0.8","ai-v5":"npm:ai@5.0.116","openai":"^6.9.1","chromadb":"^3.0.10","puppeteer":"^24.37.5","llamaindex":"^0.12.1","typescript":"^5.8.3","@types/node":"^24.12.0","@types/uuid":"^10.0.0","together-ai":"^0.30.0","@azure/openai":"^2.0.0","@google/genai":"^1.42.0","@onkernel/sdk":"^0.18.0","@types/semver":"^7.7.0","@ai-sdk/openai":"^3.0.1","@lmnr-ai/types":"workspace:*","puppeteer-core":"^24.37.5","@langchain/core":"^1.1.36","@lmnr-ai/client":"workspace:*","@ai-sdk/provider":"^3.0.0","@playwright/test":"^1.54.2","@anthropic-ai/sdk":"^0.57.0","@langchain/classic":"^1.0.25","@ai-sdk/provider-v2":"npm:@ai-sdk/provider@2.0.0","@types/cli-progress":"^3.11.6","@google-cloud/vertexai":"^1.10.0","@qdrant/js-client-rest":"^1.17.0","@pinecone-database/pinecone":"^5.1.2","@aws-sdk/client-bedrock-runtime":"^3.1019.0"},"_npmOperationalInternal":{"tmp":"tmp/ams_0.1.0_1776261208947_0.807429739582394","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@bentolabs/ams","version":"0.1.1","keywords":["bentolabs","ams","sdk","observability","llm","tracing"],"author":{"name":"BentoLabs"},"license":"Apache-2.0","_id":"@bentolabs/ams@0.1.1","maintainers":[{"name":"bentolabs-ai","email":"kaushik@bentolabs.ai"},{"name":"ronak-bento","email":"ronak@bentolabs.ai"}],"homepage":"https://github.com/BentoLabs-ai/ams#readme","bugs":{"url":"https://github.com/BentoLabs-ai/ams/issues"},"bin":{"ams":"dist/cli.cjs","ams-cli":"dist/cli-dev.cjs"},"dist":{"shasum":"6fc28a01bf4d829960a200407f4077dcff66e2db","tarball":"https://registry.npmjs.org/@bentolabs/ams/-/ams-0.1.1.tgz","fileCount":60,"integrity":"sha512-w5JJgcKDaifjizbzZpHhWUaTxqH4iPW+wyd0Pn71cHdtNuObGvBBJ8dz6iWsDbORbLqNcbdWksvVGI2y2bD9mw==","signatures":[{"sig":"MEUCIQCoLR6kWINeXofRUrGU+hLXfQjDDs9nO8cxnR7btC6T5AIgAK7MF6CLfFrZSle8IgEjYUK6cR9v2YABctwyJaNuJEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44627973},"main":"dist/index.cjs","types":"dist/index.d.cts","module":"dist/index.mjs","exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"},"./dist/cli/worker/build.cjs":"./dist/cli/worker/build.cjs","./dist/cli/worker/index.cjs":"./dist/cli/worker/index.cjs","./dist/cli/worker/ts-parser.cjs":"./dist/cli/worker/ts-parser.cjs"},"gitHead":"a20023b7f5f453c67f998ce16e096ede073a7b60","scripts":{"lint":"eslint","test":"tsx --test test/*.test.ts test/**/*.test.ts","build":"tsdown","prepare":"tsdown","lint:fix":"eslint --fix"},"_npmUser":{"name":"ronak-bento","email":"ronak@bentolabs.ai"},"repository":{"url":"git+https://github.com/BentoLabs-ai/ams.git","type":"git"},"_npmVersion":"10.9.4","description":"TypeScript SDK for BentoLabs AMS","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.25.0 || ^4","glob":"^13.0.6","pino":"9.12.0","uuid":"^11.1.0","dotenv":"^17.2.2","esbuild":"^0.25.8","chokidar":"^5.0.0","lmnr-cli":"^0.1.7","commander":"^14.0.2","csv-parser":"^3.2.0","pino-pretty":"^13.1.1","cli-progress":"^3.12.0","@grpc/grpc-js":"^1.13.4","export-to-csv":"^1.4.0","@opentelemetry/api":"^1.9.0","eventsource-parser":"^3.0.6","zod-to-json-schema":"^3.25.0","@opentelemetry/core":"^1.30.1 || ^2.0.0","@opentelemetry/sdk-node":"^0.200.0","@opentelemetry/resources":"^1.30.1 || ^2.0.0","@lmnr-ai/claude-code-proxy":"^0.1.17","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.0.0","@opentelemetry/sdk-trace-node":"^1.30.1 || ^2.0.0","@opentelemetry/instrumentation":"^0.57.0 || >=0.200.0","@traceloop/instrumentation-azure":"^0.12.0","@opentelemetry/otlp-exporter-base":"^0.57.0 || >=0.200.0","@traceloop/instrumentation-cohere":"^0.12.0","@traceloop/instrumentation-openai":"^0.12.0","@traceloop/instrumentation-qdrant":"^0.12.0","@opentelemetry/context-async-hooks":"^1.30.1 || ^2.0.0","@traceloop/instrumentation-bedrock":"^0.12.0","@opentelemetry/semantic-conventions":"^1.36.0","@traceloop/instrumentation-chromadb":"^0.12.0","@traceloop/instrumentation-pinecone":"^0.12.0","@traceloop/instrumentation-together":"^0.12.1","@traceloop/instrumentation-vertexai":"^0.12.0","@traceloop/instrumentation-anthropic":"^0.12.0","@traceloop/instrumentation-langchain":"^0.12.0","@traceloop/instrumentation-llamaindex":"^0.12.0","@opentelemetry/otlp-grpc-exporter-base":"^0.57.0 || >=0.208.0","@opentelemetry/exporter-trace-otlp-grpc":"^0.57.0 || >=0.200.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0 || >=0.200.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.3","tsx":"^4.20.3","nock":"^14.0.8","ai-v5":"npm:ai@5.0.116","openai":"^6.9.1","chromadb":"^3.0.10","puppeteer":"^24.37.5","llamaindex":"^0.12.1","typescript":"^5.8.3","@types/node":"^24.12.0","@types/uuid":"^10.0.0","together-ai":"^0.30.0","@azure/openai":"^2.0.0","@google/genai":"^1.42.0","@onkernel/sdk":"^0.18.0","@types/semver":"^7.7.0","@ai-sdk/openai":"^3.0.1","@lmnr-ai/types":"workspace:*","puppeteer-core":"^24.37.5","@langchain/core":"^1.1.36","@lmnr-ai/client":"workspace:*","@ai-sdk/provider":"^3.0.0","@playwright/test":"^1.54.2","@anthropic-ai/sdk":"^0.57.0","@langchain/classic":"^1.0.25","@ai-sdk/provider-v2":"npm:@ai-sdk/provider@2.0.0","@types/cli-progress":"^3.11.6","@google-cloud/vertexai":"^1.10.0","@qdrant/js-client-rest":"^1.17.0","@pinecone-database/pinecone":"^5.1.2","@aws-sdk/client-bedrock-runtime":"^3.1019.0"},"_npmOperationalInternal":{"tmp":"tmp/ams_0.1.1_1776261644922_0.9816861155126155","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@bentolabs/ams","version":"0.1.2","keywords":["bentolabs","ams","sdk","observability","llm","tracing"],"author":{"name":"BentoLabs"},"license":"Apache-2.0","_id":"@bentolabs/ams@0.1.2","maintainers":[{"name":"bentolabs-ai","email":"kaushik@bentolabs.ai"},{"name":"ronak-bento","email":"ronak@bentolabs.ai"}],"homepage":"https://github.com/BentoLabs-ai/ams#readme","bugs":{"url":"https://github.com/BentoLabs-ai/ams/issues"},"bin":{"ams":"dist/cli.cjs","ams-cli":"dist/cli-dev.cjs"},"dist":{"shasum":"8b29dd60048c9b2c5fe0d7cf15d0135ff62d5e3d","tarball":"https://registry.npmjs.org/@bentolabs/ams/-/ams-0.1.2.tgz","fileCount":60,"integrity":"sha512-3gP0EQcVBnew/nSdf8KRIOHsBOa5VsZ9bZarXAhwu5E9GmeAiJchqDtyWchNwV7vCwOD7Xp5kS6OvyBLK408gA==","signatures":[{"sig":"MEQCICCgWJYJEteLToCBo2WJALGLDUaVPFxlUr/7MdhY32XLAiAV9KalS/v8Tu2NVmjxIFEPrxzUuL+d3femhSVBOuhOeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44637600},"main":"dist/index.cjs","types":"dist/index.d.cts","module":"dist/index.mjs","exports":{".":{"types":{"import":"./dist/index.d.mts","require":"./dist/index.d.cts"},"import":"./dist/index.mjs","require":"./dist/index.cjs"},"./dist/cli/worker/build.cjs":"./dist/cli/worker/build.cjs","./dist/cli/worker/index.cjs":"./dist/cli/worker/index.cjs","./dist/cli/worker/ts-parser.cjs":"./dist/cli/worker/ts-parser.cjs"},"gitHead":"a20023b7f5f453c67f998ce16e096ede073a7b60","scripts":{"lint":"eslint","test":"tsx --test test/*.test.ts test/**/*.test.ts","build":"tsdown","prepare":"tsdown","lint:fix":"eslint --fix"},"_npmUser":{"name":"ronak-bento","email":"ronak@bentolabs.ai"},"repository":{"url":"git+https://github.com/BentoLabs-ai/ams.git","type":"git"},"_npmVersion":"10.9.4","description":"TypeScript SDK for BentoLabs AMS","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.25.0 || ^4","glob":"^13.0.6","pino":"9.12.0","uuid":"^11.1.0","dotenv":"^17.2.2","esbuild":"^0.25.8","chokidar":"^5.0.0","lmnr-cli":"^0.1.7","commander":"^14.0.2","csv-parser":"^3.2.0","pino-pretty":"^13.1.1","cli-progress":"^3.12.0","@grpc/grpc-js":"^1.13.4","export-to-csv":"^1.4.0","@opentelemetry/api":"^1.9.0","eventsource-parser":"^3.0.6","zod-to-json-schema":"^3.25.0","@opentelemetry/core":"^1.30.1 || ^2.0.0","@opentelemetry/sdk-node":"^0.200.0","@opentelemetry/resources":"^1.30.1 || ^2.0.0","@lmnr-ai/claude-code-proxy":"^0.1.17","@opentelemetry/sdk-trace-base":"^1.30.1 || ^2.0.0","@opentelemetry/sdk-trace-node":"^1.30.1 || ^2.0.0","@opentelemetry/instrumentation":"^0.57.0 || >=0.200.0","@traceloop/instrumentation-azure":"^0.12.0","@opentelemetry/otlp-exporter-base":"^0.57.0 || >=0.200.0","@traceloop/instrumentation-cohere":"^0.12.0","@traceloop/instrumentation-openai":"^0.12.0","@traceloop/instrumentation-qdrant":"^0.12.0","@opentelemetry/context-async-hooks":"^1.30.1 || ^2.0.0","@traceloop/instrumentation-bedrock":"^0.12.0","@opentelemetry/semantic-conventions":"^1.36.0","@traceloop/instrumentation-chromadb":"^0.12.0","@traceloop/instrumentation-pinecone":"^0.12.0","@traceloop/instrumentation-together":"^0.12.1","@traceloop/instrumentation-vertexai":"^0.12.0","@traceloop/instrumentation-anthropic":"^0.12.0","@traceloop/instrumentation-langchain":"^0.12.0","@traceloop/instrumentation-llamaindex":"^0.12.0","@opentelemetry/otlp-grpc-exporter-base":"^0.57.0 || >=0.208.0","@opentelemetry/exporter-trace-otlp-grpc":"^0.57.0 || >=0.200.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0 || >=0.200.0"},"_hasShrinkwrap":false,"devDependencies":{"ai":"^6.0.3","tsx":"^4.20.3","nock":"^14.0.8","ai-v5":"npm:ai@5.0.116","openai":"^6.9.1","chromadb":"^3.0.10","puppeteer":"^24.37.5","llamaindex":"^0.12.1","typescript":"^5.8.3","@types/node":"^24.12.0","@types/uuid":"^10.0.0","together-ai":"^0.30.0","@azure/openai":"^2.0.0","@google/genai":"^1.42.0","@onkernel/sdk":"^0.18.0","@types/semver":"^7.7.0","@ai-sdk/openai":"^3.0.1","@lmnr-ai/types":"workspace:*","puppeteer-core":"^24.37.5","@langchain/core":"^1.1.36","@lmnr-ai/client":"workspace:*","@ai-sdk/provider":"^3.0.0","@playwright/test":"^1.54.2","@anthropic-ai/sdk":"^0.57.0","@langchain/classic":"^1.0.25","@ai-sdk/provider-v2":"npm:@ai-sdk/provider@2.0.0","@types/cli-progress":"^3.11.6","@google-cloud/vertexai":"^1.10.0","@qdrant/js-client-rest":"^1.17.0","@pinecone-database/pinecone":"^5.1.2","@aws-sdk/client-bedrock-runtime":"^3.1019.0"},"_npmOperationalInternal":{"tmp":"tmp/ams_0.1.2_1776262018792_0.8936934846507896","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-15T13:53:28.823Z","modified":"2026-04-15T18:48:31.341Z","0.1.0":"2026-04-15T13:53:29.344Z","0.1.1":"2026-04-15T14:00:45.323Z","0.1.2":"2026-04-15T14:06:59.249Z"},"bugs":{"url":"https://github.com/BentoLabs-ai/ams/issues"},"author":{"name":"BentoLabs"},"license":"Apache-2.0","homepage":"https://github.com/BentoLabs-ai/ams#readme","keywords":["bentolabs","ams","sdk","observability","llm","tracing"],"repository":{"url":"git+https://github.com/BentoLabs-ai/ams.git","type":"git"},"description":"TypeScript SDK for BentoLabs AMS","maintainers":[{"email":"kaushik@bentolabs.ai","name":"bentolabs-ai"},{"email":"manas@bentolabs.ai","name":"manas-bento"},{"email":"ronak@bentolabs.ai","name":"ronak-bento"}],"readme":"# @bentolabs/ams\n\nJavaScript/TypeScript SDK for BentoLabs AMS — an open-source observability platform for AI agents.\n\nTrace, evaluate, annotate, and analyze LLM data. Bring LLM applications to production with confidence.\n\n## Quickstart\n\n```sh\nnpm install @bentolabs/ams\n```\n\nAnd then in the code:\n\n```typescript\nimport { AMS } from '@bentolabs/ams'\n\nAMS.initialize({ projectApiKey: '<PROJECT_API_KEY>' })\n```\n\nThis will automatically instrument most LLM, Vector DB, and related calls with OpenTelemetry-compatible instrumentation.\n\n### Where to place AMS.initialize()\n\n`AMS.initialize()` must be called:\n- once in your application\n- as early as possible, but after other instrumentation libraries\n\n## Instrumentation\n\nIn addition to automatic instrumentation, we provide a simple `observe()` wrapper for tracing individual functions.\n\n### Example\n\n```javascript\nimport { OpenAI } from 'openai';\nimport { AMS as L, observe } from '@bentolabs/ams';\n\nL.initialize({ projectApiKey: \"<AMS_PROJECT_API_KEY>\" });\n\nconst client = new OpenAI({ apiKey: '<OPENAI_API_KEY>' });\n\nconst poemWriter = async (topic = \"turbulence\") => {\n  const prompt = `write a poem about ${topic}`;\n  const response = await client.chat.completions.create({\n    model: \"gpt-4o\",\n    messages: [\n      { role: \"system\", content: \"You are a helpful assistant.\" },\n      { role: \"user\", content: prompt }\n    ]\n  });\n\n  return response.choices[0].message.content;\n}\n\nawait observe({ name: 'poemWriter' }, async () => await poemWriter('turbulence'))\n```\n\n## Evaluations\n\n```sh\nnpm install @bentolabs/ams\n```\n\n```javascript\nimport { evaluate } from '@bentolabs/ams';\n\nconst writePoem = ({ topic }: { topic: string }) => {\n  return `This is a good poem about ${topic}`;\n};\n\nevaluate({\n  data: [\n    { data: { topic: 'flowers' }, target: { poem: 'This is a good poem about flowers' } },\n    { data: { topic: 'cars' }, target: { poem: 'I like cars' } },\n  ],\n  executor: (data) => writePoem(data),\n  evaluators: {\n    containsPoem: (output, target) => target.poem.includes(output) ? 1 : 0,\n  },\n  groupId: 'my_first_feature',\n});\n```\n\nRun:\n```sh\nexport AMS_PROJECT_API_KEY=<AMS_PROJECT_API_KEY>\nnpx ams eval my-first-eval.ts\n```\n\n## Client\n\n```typescript\nimport { AMSClient } from '@bentolabs/ams';\n\nconst client = new AMSClient({ projectApiKey: '<AMS_PROJECT_API_KEY>' });\n```\n","readmeFilename":"README.md"}