{"_id":"@agentmark-ai/otel","name":"@agentmark-ai/otel","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@agentmark-ai/otel","version":"0.2.0","description":"Group AgentMark traces by session, user, and metadata via OpenTelemetry context. Works with the Vercel AI SDK (v7) and any OTel-instrumented spans.","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"build":"tsup","lint":"eslint .","test":"vitest run","test:coverage":"vitest run --coverage"},"dependencies":{"@opentelemetry/exporter-trace-otlp-http":"^0.217.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"devDependencies":{"@agentmark-ai/eslint-config":"*","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.2.0","@opentelemetry/sdk-trace-node":"^2.2.0","tsup":"^8.5.1","typescript":"^5","vitest":"^4.1.8"},"license":"AGPL-3.0-or-later","publishConfig":{"access":"public"},"_id":"@agentmark-ai/otel@0.2.0","gitHead":"79faae6d44b1e64c09217731adc2e5a3f3cffcb4","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-THHSYNSRrv+S9EkoGUoVDiWcdatzikOdH+ff2lx2DRhNrtizxD1UAP12vZKKdt+LYyXrPQFAE3sJNjNJ/4eEiw==","shasum":"e8f4d756cbbdcc34f92214328e3a7e27151a1082","tarball":"https://registry.npmjs.org/@agentmark-ai/otel/-/otel-0.2.0.tgz","fileCount":8,"unpackedSize":27731,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDjB9wW8m7GMlQSTNFZrNWLr4clnJwX93ZlanjYg2uBigIgO/49YCH68SUZVdSamo/ek0CHNa3kfJit1qDvaEQvTn8="}]},"_npmUser":{"name":"kashi11","email":"kashif.ali@carbonteq.com"},"directories":{},"maintainers":[{"name":"rrandall","email":"ryan@agentmark.co"},{"name":"kashi11","email":"kashif.ali@carbonteq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/otel_0.2.0_1782162047666_0.8211328356664951"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T21:00:47.388Z","0.2.0":"2026-06-22T21:00:47.872Z","modified":"2026-06-22T21:00:48.121Z"},"maintainers":[{"name":"rrandall","email":"ryan@agentmark.co"},{"name":"kashi11","email":"kashif.ali@carbonteq.com"}],"description":"Group AgentMark traces by session, user, and metadata via OpenTelemetry context. Works with the Vercel AI SDK (v7) and any OTel-instrumented spans.","license":"AGPL-3.0-or-later","readme":"# @agentmark-ai/otel\n\nGroup [AgentMark](https://agentmark.co) traces by **session**, **user**, **tags**, and custom **metadata** using OpenTelemetry context.\n\nIt pairs a small wrapper with a span processor:\n\n- `withAgentMark(grouping, fn)` — stashes grouping in the active OpenTelemetry context.\n- `AgentMarkSpanProcessor` — stamps that grouping onto every span started in the scope (using the attribute keys AgentMark reads) and batches them to AgentMark's OTLP endpoint.\n\nIt is framework-agnostic: any OpenTelemetry span created in the wrapped scope — Vercel AI SDK calls, HTTP requests, DB queries, custom spans — is grouped. It is especially useful with the **Vercel AI SDK v7**, where `telemetry.metadata` no longer reaches spans, so session/user/metadata grouping can't ride it.\n\n## Install\n\n```bash\nnpm install @agentmark-ai/otel @opentelemetry/sdk-trace-node\n```\n\n## Usage\n\n```ts\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { AgentMarkSpanProcessor, withAgentMark } from '@agentmark-ai/otel';\n\n// Once, at startup:\nconst provider = new NodeTracerProvider({\n  spanProcessors: [\n    new AgentMarkSpanProcessor({\n      apiKey: process.env.AGENTMARK_API_KEY!, // raw key, no \"Bearer\" prefix\n      appId: process.env.AGENTMARK_APP_ID!,\n    }),\n  ],\n});\nprovider.register();\n\n// Per request — wrap your work:\nawait withAgentMark(\n  { sessionId, userId, tags: ['prod'], metadata: { feature: 'chat' } },\n  () => generateText({ model, prompt }), // or any traced work\n);\n```\n\n`withAgentMark` requires an OpenTelemetry context manager to be registered (both `NodeTracerProvider#register()` and `@vercel/otel` do this) so the grouping propagates across `await`.\n\n## License\n\nAGPL-3.0-or-later\n","readmeFilename":"README.md","_rev":"1-dc21e85dffb5e7f52e0fcc78e7d9b13a"}