{"_id":"@atla-ai/insights-sdk-js","_rev":"11-367658084e29aefd5794e7b096b997d1","name":"@atla-ai/insights-sdk-js","dist-tags":{"latest":"0.0.10"},"versions":{"0.0.0":{"name":"@atla-ai/insights-sdk-js","version":"0.0.0","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.0","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"5f94536da5dd8c79a350510be0c4ac2ccb437b0d","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.0.tgz","fileCount":16,"integrity":"sha512-0r1/R4CGo3INX4gaGWHGMg8bKcWHLVzDXLpanO0mYb6nDvp0UOMhhdcP0zgL5GTcAZZbKmNB/j+8zVWOvIbO9w==","signatures":[{"sig":"MEQCICtD5+3GznEutV+5q78gTcMvTTaK9kuarFfraI03eJo5AiAQF/vWlCSC5BRnnSi6rZqSukW30d4pl9gyaF82hMLwHg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49974},"main":"src/index.ts","_from":"file:atla-ai-insights-sdk-js-0.0.0.tgz","types":"src/index.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/private/var/folders/r_/18kp59591mx8v0ljrbq__bb00000gn/T/48098b310e362dc9a5f371acb0500938/atla-ai-insights-sdk-js-0.0.0.tgz","_integrity":"sha512-0r1/R4CGo3INX4gaGWHGMg8bKcWHLVzDXLpanO0mYb6nDvp0UOMhhdcP0zgL5GTcAZZbKmNB/j+8zVWOvIbO9w==","_npmVersion":"10.9.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"23.11.0","dependencies":{"ts-node":"^10.9.2","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-node":"^0.53.0","@opentelemetry/resources":"^2.0.1","@opentelemetry/sdk-trace-node":"^1.25.1","@opentelemetry/instrumentation":"^0.203.0","@opentelemetry/semantic-conventions":"^1.36.0","@opentelemetry/exporter-trace-otlp-http":"^0.52.1","@opentelemetry/auto-instrumentations-node":"^0.50.0","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^5.12.2"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.0_1755247189663_0.5525995993732837","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@atla-ai/insights-sdk-js","version":"0.0.1","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.1","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"091ab39b8bcd4f78b1cd45fd0bf6bcac3c90456b","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.1.tgz","fileCount":16,"integrity":"sha512-3dUfYvZt2LwUJLSxMsrY34erwzusLn3WicYroiB+Z2d7gouSJvxZGIlf41p2icmCH+U2A1C/ZK6ZKJw1P+NKKg==","signatures":[{"sig":"MEQCIHbi/zC/3VcwwsaQCST/j4Tjf6APlu3Is3+nzFDkbZ3gAiBe/ONPcSveo9uIFNhQ+JHzKjkEjmdac2ungJENEtEZFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49974},"main":"src/index.ts","_from":"file:atla-ai-insights-sdk-js-0.0.1.tgz","types":"src/index.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/da16d3d4d76c6c16d338dd858ed53833/atla-ai-insights-sdk-js-0.0.1.tgz","_integrity":"sha512-3dUfYvZt2LwUJLSxMsrY34erwzusLn3WicYroiB+Z2d7gouSJvxZGIlf41p2icmCH+U2A1C/ZK6ZKJw1P+NKKg==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"ts-node":"^10.9.2","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-node":"^0.53.0","@opentelemetry/resources":"^2.0.1","@opentelemetry/sdk-trace-node":"^1.25.1","@opentelemetry/instrumentation":"^0.203.0","@opentelemetry/semantic-conventions":"^1.36.0","@opentelemetry/exporter-trace-otlp-http":"^0.52.1","@opentelemetry/auto-instrumentations-node":"^0.50.0","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^5.12.2"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.1_1755255801153_0.04403303286765614","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@atla-ai/insights-sdk-js","version":"0.0.2","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.2","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"27a1f81980481b9af3c230a6da4d718bc05e0924","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.2.tgz","fileCount":17,"integrity":"sha512-31x3COxHUEUG86XBLETJzV0uttahvfGjne/GcGIL9gAtp3FGDN75Q2aUgJpL+KHeNWQ/TLuR+xZK89zcIkSmJQ==","signatures":[{"sig":"MEUCIGN0aDb5hiBnXGzUOrVaWVOskLtX53MDetHRtxhI3jPNAiEAy3nNFVJX8QlsImenDKhdFd6HIsGuMQGzCXU0NOduqV4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55849},"main":"src/index.ts","_from":"file:atla-ai-insights-sdk-js-0.0.2.tgz","types":"src/index.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/57944902d021a39eb3ae8db1b48e05a2/atla-ai-insights-sdk-js-0.0.2.tgz","_integrity":"sha512-31x3COxHUEUG86XBLETJzV0uttahvfGjne/GcGIL9gAtp3FGDN75Q2aUgJpL+KHeNWQ/TLuR+xZK89zcIkSmJQ==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^4.0.17","ts-node":"^10.9.2","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@opentelemetry/api":"^1.9.0","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@opentelemetry/sdk-node":"^0.53.0","@opentelemetry/resources":"^2.0.1","@opentelemetry/sdk-trace-node":"^1.25.1","@opentelemetry/instrumentation":"^0.203.0","@opentelemetry/semantic-conventions":"^1.36.0","@opentelemetry/exporter-trace-otlp-http":"^0.52.1","@opentelemetry/auto-instrumentations-node":"^0.50.0","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^5.12.2"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.2_1755783506647_0.7939063689899388","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@atla-ai/insights-sdk-js","version":"0.0.3","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.3","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"00b5c831adbf43e2b27644a54e8f3998bcf39dff","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.3.tgz","fileCount":19,"integrity":"sha512-9rE3kaC2B/2WfH9dNcCOHPTf8/a1WN7nvzEuPMzUdUHV9jmmIb6KT2ekoS4v1sYnpK0v00CjOQHbe/HrIGMIhw==","signatures":[{"sig":"MEYCIQDad5S4p/kGWQ53st+StvhnR+cDXJR/FblF5gFcEiPs1gIhAO6C7MFk2GQg1KmDLX2/83qqrv6yrBfCW+PlZbAJ54pR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88725},"main":"src/index.ts","_from":"file:atla-ai-insights-sdk-js-0.0.3.tgz","types":"src/index.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/dea8c5a5b2a254f71c645f2dd9440010/atla-ai-insights-sdk-js-0.0.3.tgz","_integrity":"sha512-9rE3kaC2B/2WfH9dNcCOHPTf8/a1WN7nvzEuPMzUdUHV9jmmIb6KT2ekoS4v1sYnpK0v00CjOQHbe/HrIGMIhw==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"zod":"^4.0.17","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@opentelemetry/api":"^1.9.0","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@opentelemetry/sdk-node":"^0.53.0","@opentelemetry/resources":"^2.0.1","@opentelemetry/sdk-trace-node":"^1.25.1","@opentelemetry/instrumentation":"^0.203.0","@opentelemetry/semantic-conventions":"^1.36.0","@opentelemetry/exporter-trace-otlp-http":"^0.52.1","@opentelemetry/auto-instrumentations-node":"^0.50.0","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^5.12.2"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.3_1756806707388_0.133907652895789","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@atla-ai/insights-sdk-js","version":"0.0.4","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.4","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"04c915c7c49591950868eca6903a37c82045ffac","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.4.tgz","fileCount":19,"integrity":"sha512-8RQocdcmqFHZVrQSs/ZBhURYsDIVoS5tgwCZooACQvushK7AlrNEzd2BSMSvYg8/IlddI1LuD1SMoyTm5vut9Q==","signatures":[{"sig":"MEQCIQDnqYKp882/omaGWLSLEmAQ+Ygr+zMnewuUL1cBfIMhnQIfPN49mfPZU/Wt0Z5wX8RbsymaDOZ9ZIpLG/ftx6fcLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89646},"main":"src/index.ts","_from":"file:atla-ai-insights-sdk-js-0.0.4.tgz","types":"src/index.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/0aa262e9c5fc6090b2af9c888ef23401/atla-ai-insights-sdk-js-0.0.4.tgz","_integrity":"sha512-8RQocdcmqFHZVrQSs/ZBhURYsDIVoS5tgwCZooACQvushK7AlrNEzd2BSMSvYg8/IlddI1LuD1SMoyTm5vut9Q==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^4.0.17","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/resources":">=1.30.0 <3","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/instrumentation":">=0.103.0 <1","@opentelemetry/semantic-conventions":">=1.30.0 <2","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.4_1757949095643_0.35871889381295197","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@atla-ai/insights-sdk-js","version":"0.0.5","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.5","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"ff046e92e169f9426775674e6bdf3b5799c7dbe0","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.5.tgz","fileCount":51,"integrity":"sha512-JyyN0rqZr7FAnZ/ESlLcIzyX9cvB12akI6kWEjT+FWzwzXOL53jpXFamxw0rhazJN0lQDuZ2SNkhSAmyPTG11Q==","signatures":[{"sig":"MEQCIF4XkMYz8VHXMgRc8kVVNKiPn0DrBXA1H5ldXnO4f++LAiBRHXO3sL4/1Z5V2Is2jakHZTeNw8GPBfJZl5dPaaT8+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137459},"main":"dist/index.js","_from":"file:atla-ai-insights-sdk-js-0.0.5.tgz","types":"dist/index.d.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/1cadeb1f1d9ed8f3198afd0938f6724c/atla-ai-insights-sdk-js-0.0.5.tgz","_integrity":"sha512-JyyN0rqZr7FAnZ/ESlLcIzyX9cvB12akI6kWEjT+FWzwzXOL53jpXFamxw0rhazJN0lQDuZ2SNkhSAmyPTG11Q==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^4.0.17","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/resources":">=1.30.0 <3","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/instrumentation":">=0.103.0 <1","@opentelemetry/semantic-conventions":">=1.30.0 <2","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.5_1758017546754_0.7731759667860405","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@atla-ai/insights-sdk-js","version":"0.0.6","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.6","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"2dc9c434cb0f7ef6f79ca2bf77fa8e0a741a1af6","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.6.tgz","fileCount":51,"integrity":"sha512-SYqN4HNaPXL6wXuNvAi3P8iNCpbkTFTja14DeGw8G2XRDoSWXLn45U1cTfI9sqoBnau7GndQjJfrNV7nHhfRAw==","signatures":[{"sig":"MEUCIFjWSx1NUBt7yQJWwHyvDYELLvJOkTTiA0oZaTh8wKGDAiEA961hgRM5mtdhN23Zjk/vBnktXpDkSEkxV0S1k7XYyw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137475},"main":"dist/index.js","_from":"file:atla-ai-insights-sdk-js-0.0.6.tgz","types":"dist/index.d.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/1bd43e9768f0ff435897eb473365f2cd/atla-ai-insights-sdk-js-0.0.6.tgz","_integrity":"sha512-SYqN4HNaPXL6wXuNvAi3P8iNCpbkTFTja14DeGw8G2XRDoSWXLn45U1cTfI9sqoBnau7GndQjJfrNV7nHhfRAw==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.40","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^4.62.1 || ^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/resources":">=1.30.0 <3","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/instrumentation":">=0.46.0 <0.58.0","@opentelemetry/semantic-conventions":">=1.30.0 <2","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.6_1758040655604_0.1475135918067909","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@atla-ai/insights-sdk-js","version":"0.0.7","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.7","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"cf995a21d2fbdf3726c228a74bd763e5039560cc","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.7.tgz","fileCount":51,"integrity":"sha512-l5htImCKlyQPGcyiGkhwETKXmIiJ6lcxE9PJrnD/OdmYkDi4g4w3/5SpBkTXpUSin8QLBFxcBpcbZ9gObRrT0Q==","signatures":[{"sig":"MEUCIQDqQQdWrnI4bLRL/Yd2V2ww0bWnIsaAo2zS3bWQxl2syAIgEeXvoZ5TAk+t+/yacVXhEIsbUrjpXWuMvboh7E5Ea4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137455},"main":"dist/index.js","_from":"file:atla-ai-insights-sdk-js-0.0.7.tgz","types":"dist/index.d.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/2cce441fac2de74ae459b8c1f3ef9250/atla-ai-insights-sdk-js-0.0.7.tgz","_integrity":"sha512-l5htImCKlyQPGcyiGkhwETKXmIiJ6lcxE9PJrnD/OdmYkDi4g4w3/5SpBkTXpUSin8QLBFxcBpcbZ9gObRrT0Q==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.40","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^4.62.1 || ^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/resources":">=1.30.0 <2","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/instrumentation":">=0.46.0 <0.58.0","@opentelemetry/semantic-conventions":">=1.30.0 <2","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.7_1758106687696_0.17692938814287107","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@atla-ai/insights-sdk-js","version":"0.0.8","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.8","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"fca66ae55bd0e47cfc42ecd65c57e84dbf5ed80a","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.8.tgz","fileCount":54,"integrity":"sha512-R3eixwotrKyqcmBuUg9VpwEEipmf+ifjJONOhovXFikwjYg/EEGc9mCNfw6tlZ3P3izRuivIjNnvix5b4LT7/Q==","signatures":[{"sig":"MEYCIQDKOVPS0DwucYf860MH7Y2c19P7lO81C395kQaF4G+TZAIhAMc12AAJn16+kjxC28VRpGF24uDm8RgqzszvbzIZCoQY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144407},"main":"dist/index.js","_from":"file:atla-ai-insights-sdk-js-0.0.8.tgz","types":"dist/index.d.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/f995b9fb9e6849de154570adeaf5d400/atla-ai-insights-sdk-js-0.0.8.tgz","_integrity":"sha512-R3eixwotrKyqcmBuUg9VpwEEipmf+ifjJONOhovXFikwjYg/EEGc9mCNfw6tlZ3P3izRuivIjNnvix5b4LT7/Q==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.40","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^4.62.1 || ^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/resources":">=1.30.0 <2","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/instrumentation":">=0.46.0 <0.58.0","@opentelemetry/semantic-conventions":">=1.30.0 <2","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.8_1758186361351_0.004247135279058067","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@atla-ai/insights-sdk-js","version":"0.0.9","keywords":[],"author":"","license":"ISC","_id":"@atla-ai/insights-sdk-js@0.0.9","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"dist":{"shasum":"49106e9692657d8928656dfa2b1d024e3756df36","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.9.tgz","fileCount":54,"integrity":"sha512-qQKrQ+Vrv9WNADVswmUQmeNFgOHFb+7SQoSVqsm0aYCtnSjj4b9KmHuEt5fQxQ4RosB4okvBM6MsvOup3RzlNg==","signatures":[{"sig":"MEYCIQDdR02mN+fI5FzN+COZ4A1HBgzodedgELaeL1EIhRHWwgIhAL7Zy4co/tlZ3wikaJELgmtaBG0YGyUSO0iDsGyWY86l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145432},"main":"dist/index.js","_from":"file:atla-ai-insights-sdk-js-0.0.9.tgz","types":"dist/index.d.ts","scripts":{"lint":"biome lint .","test":"jest","build":"tsc --project tsconfig.build.json","format":"biome format --write ."},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"_resolved":"/tmp/045773b4658d6fdc75d8cf48b01c89f1/atla-ai-insights-sdk-js-0.0.9.tgz","_integrity":"sha512-qQKrQ+Vrv9WNADVswmUQmeNFgOHFb+7SQoSVqsm0aYCtnSjj4b9KmHuEt5fQxQ4RosB4okvBM6MsvOup3RzlNg==","_npmVersion":"10.8.2","description":"JavaScript SDK for Atla Insights platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.40","ts-node":"^10.9.2","@openai/agents":"^0.0.17","@langchain/core":"^0.3.72","@langchain/openai":"^0.6.9","@langchain/community":"^0.3.53","@langchain/langgraph":"^0.4.5","@arizeai/openinference-semantic-conventions":"^2.1.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-instrumentation-langchain":"^3.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.4","jest":"^30.0.5","nock":"^14.0.10","husky":"^9.1.7","ts-jest":"^29.4.1","typescript":"^5.9.2","@types/jest":"^30.0.0","@types/nock":"^11.1.0","@jest/globals":"^30.0.5","@biomejs/biome":"2.1.4","@opentelemetry/sdk-trace-base":"^1.30.1"},"peerDependencies":{"openai":"^4.62.1 || ^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/resources":">=1.30.0 <2","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/instrumentation":">=0.46.0 <0.58.0","@opentelemetry/semantic-conventions":">=1.30.0 <2","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/insights-sdk-js_0.0.9_1761064513054_0.7113974812374866","host":"s3://npm-registry-packages-npm-production"}},"0.0.10":{"name":"@atla-ai/insights-sdk-js","version":"0.0.10","description":"JavaScript SDK for Atla Insights platform","main":"dist/index.js","types":"dist/index.d.ts","keywords":[],"author":"","license":"ISC","dependencies":{"@arizeai/openinference-instrumentation-langchain":"^3.2.1","@arizeai/openinference-instrumentation-openai":"^3.2.1","@arizeai/openinference-semantic-conventions":"^2.1.1","@langchain/community":"^0.3.53","@langchain/core":"^0.3.72","@langchain/langgraph":"^0.4.5","@langchain/openai":"^0.6.9","@openai/agents":"^0.0.17","human-id":"^4.1.2","ts-node":"^10.9.2","zod":"^3.25.40"},"devDependencies":{"@biomejs/biome":"2.1.4","@jest/globals":"^30.0.5","@opentelemetry/sdk-trace-base":"^1.30.1","@types/jest":"^30.0.0","@types/nock":"^11.1.0","husky":"^9.1.7","jest":"^30.0.5","nock":"^14.0.10","ts-jest":"^29.4.1","tsx":"^4.20.4","typescript":"^5.9.2"},"peerDependencies":{"openai":"^4.62.1 || ^5.12.2","@opentelemetry/api":">=1.4.0 <2","@opentelemetry/auto-instrumentations-node":">=0.50.0 <1","@opentelemetry/exporter-trace-otlp-http":">=0.52.0 <1","@opentelemetry/instrumentation":">=0.46.0 <0.58.0","@opentelemetry/resources":">=1.30.0 <2","@opentelemetry/sdk-node":">=0.53.0 <1","@opentelemetry/sdk-trace-node":">=1.25.0 <2","@opentelemetry/semantic-conventions":">=1.30.0 <2"},"scripts":{"test":"jest","lint":"biome lint .","format":"biome format --write .","build":"tsc --project tsconfig.build.json"},"_id":"@atla-ai/insights-sdk-js@0.0.10","_integrity":"sha512-oJ2JAqmqU9iIRcP+OeAmiH4QE4Y1fXQ8qsQ51yYqvWS8UDSTSXMqV5PJ8YrK6nsxi4/N4vgt8Q2uUo0ZgOB5BA==","_resolved":"/tmp/4c32817220aa69ff6d891a459ecedb79/atla-ai-insights-sdk-js-0.0.10.tgz","_from":"file:atla-ai-insights-sdk-js-0.0.10.tgz","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-oJ2JAqmqU9iIRcP+OeAmiH4QE4Y1fXQ8qsQ51yYqvWS8UDSTSXMqV5PJ8YrK6nsxi4/N4vgt8Q2uUo0ZgOB5BA==","shasum":"6e66c7fbfdef14e21a596a21064cb0b1bd18ee1e","tarball":"https://registry.npmjs.org/@atla-ai/insights-sdk-js/-/insights-sdk-js-0.0.10.tgz","fileCount":57,"unpackedSize":154116,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGMdZQJ8az9BPaCqiP6whgKCCdlgRBT6YDtsiv91ra2BAiEAwTMAP5PocimOlQrQCzysbucglPgldwtfzR5Nk/3Twqw="}]},"_npmUser":{"name":"atla-ai","email":"toby@atla-ai.com"},"directories":{},"maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/insights-sdk-js_0.0.10_1762256592713_0.8235997654874128"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-15T08:39:49.607Z","modified":"2025-11-04T11:43:13.107Z","0.0.0":"2025-08-15T08:39:49.830Z","0.0.1":"2025-08-15T11:03:21.334Z","0.0.2":"2025-08-21T13:38:26.826Z","0.0.3":"2025-09-02T09:51:47.575Z","0.0.4":"2025-09-15T15:11:35.812Z","0.0.5":"2025-09-16T10:12:26.955Z","0.0.6":"2025-09-16T16:37:35.817Z","0.0.7":"2025-09-17T10:58:07.882Z","0.0.8":"2025-09-18T09:06:01.537Z","0.0.9":"2025-10-21T16:35:13.243Z","0.0.10":"2025-11-04T11:43:12.913Z"},"license":"ISC","keywords":[],"description":"JavaScript SDK for Atla Insights platform","maintainers":[{"name":"atla-ai","email":"toby@atla-ai.com"}],"readme":"# Atla Insights SDK for JavaScript\n\nAtla Insights is a platform for monitoring and improving AI agents.\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@atla-ai/insights-sdk-js\"><img src=\"https://img.shields.io/npm/v/%40atla-ai%2Finsights-sdk-js\" alt=\"NPM version\"></a>\n  <a href=\"https://github.com/atla-ai/atla-insights-sdk/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square\" alt=\"license\" /></a>\n  <a href=\"https://app.atla-ai.com/auth/signup\"><img src=\"https://img.shields.io/badge/Atla_Insights_platform-white?logo=data:image/svg%2bxml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMjAwLjAwMDAwMHB0IiBoZWlnaHQ9IjIwMC4wMDAwMDBwdCIgdmlld0JveD0iMCAwIDIwMC4wMDAwMDAgMjAwLjAwMDAwMCIKIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMjAwLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIKZmlsbD0iIzAwMDAwMCIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTEyODUgMTQ1MCBjLTM2IC0zNyAtNDcgLTU0IC00MCAtNjMgNDAgLTU0IDc4IC0xMTkgOTYgLTE2NyAxNyAtNDYKMjAgLTcyIDE3IC0xNTUgLTMgLTg3IC04IC0xMDkgLTM1IC0xNjggLTQwIC04NCAtMTI1IC0xNzEgLTIwNSAtMjA5IC0xNTIgLTc0Ci0zMjcgLTU2IC00NjIgNDcgbC00OSAzNyAtNDggLTQ4IGMtMjcgLTI3IC00OSAtNTMgLTQ5IC01OSAwIC0xNyA5MCAtODIgMTYyCi0xMTUgMjM1IC0xMTAgNTA0IC01OSA2ODMgMTMxIDE1MCAxNjAgMjAyIDM4NyAxMzQgNTkzIC0yNCA3MyAtMTE1IDIxOSAtMTM5CjIyNCAtOSAxIC0zOCAtMjAgLTY1IC00OHoiLz4KPHBhdGggZD0iTTgxNSAxNDE5IGMtMjYwIC04NCAtMzMwIC00MTQgLTEyOCAtNTk5IDc2IC02OSAxNDQgLTkzIDI1MyAtODggMTQyCjcgMjQxIDcxIDMwMiAxOTYgMzAgNjEgMzMgNzUgMzMgMTU3IC0xIDc3IC01IDk4IC0yOCAxNDUgLTQ2IDk1IC0xMjEgMTYxCi0yMTggMTkxIC03NiAyNCAtMTM3IDIzIC0yMTQgLTJ6Ii8+CjwvZz4KPC9zdmc+Cg==\" alt=\"Atla Insights platform\"></a>\n  <a href=\"https://arxiv.org/abs/2501.17195\"><img src=\"https://img.shields.io/badge/ArXiv-Selene_Mini-darkred?logo=arxiv\" alt=\"ArXiv Selene Mini\"></a>\n  <a href=\"https://discord.com/invite/qFCMgkGwUK\"><img src=\"https://img.shields.io/badge/Discord-Join_Chat-7289DA.svg?logo=discord\" alt=\"Discord\"></a>\n  <a href=\"https://x.com/Atla_AI\"><img src=\"https://img.shields.io/twitter/follow/Atla_AI?style=social\" alt=\"Twitter Follow\"></a>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://www.producthunt.com/products/atla?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_source=badge-atla&#0045;2\" target=\"_blank\"><img src=\"https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=1018748&theme=light&period=daily&t=1758823519480\" alt=\"Atla - Automatically&#0032;detect&#0032;errors&#0032;in&#0032;your&#0032;AI&#0032;agents | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /></a>\n</p>\n\n## Getting started\n\nTo get started with Atla Insights, you can either follow the instructions below, or let an agent instrument your code for you.\n\n## Installation\n\n```bash\nnpm install @atla-ai/insights-sdk-js\n```\n\nOr with pnpm:\n\n```bash\npnpm add @atla-ai/insights-sdk-js\n```\n\nOr with yarn:\n\n```bash\nyarn add @atla-ai/insights-sdk-js\n```\n\n## Usage\n\n### Configuration\n\nBefore using Atla Insights, you need to configure it with your authentication token:\n\n```typescript\nimport { configure } from \"@atla-ai/insights-sdk-js\";\n\n// Run this command at the start of your application.\nconfigure({ \n  token: \"<MY_ATLA_INSIGHTS_TOKEN>\" \n});\n```\n\nYou can retrieve your authentication token from the [Atla Insights platform](https://app.atla-ai.com).\n\n### Instrumentation\n\nIn order for spans/traces to become available in your Atla Insights dashboard, you will need to add some form of instrumentation.\n\nAs a starting point, you will want to instrument your GenAI library of choice.\n\nSee the section below to find out which frameworks & providers we currently support.\n\nAll instrumentation methods share a common interface, which allows you to do the following:\n\n-   **Session-wide (un)instrumentation**:\n    You can manually enable/disable instrumentation throughout your application.\n\n```typescript\nimport { configure, instrumentOpenAI, uninstrumentOpenAI } from \"@atla-ai/insights-sdk-js\";\nimport OpenAI from \"openai\";\n\nconfigure({ token: \"...\" });\ninstrumentOpenAI();\n\n// All OpenAI calls from this point onwards will be instrumented\n\nuninstrumentOpenAI();\n\n// All OpenAI calls from this point onwards will **no longer** be instrumented\n```\n\n-   **Instrumented with disposable resources**:\n    All instrumentation methods also provide a disposable resource pattern that automatically handles (un)instrumentation.\n\n```typescript\nimport { configure, withInstrumentedOpenAI } from \"@atla-ai/insights-sdk-js\";\nimport OpenAI from \"openai\";\n\nconfigure({ token: \"...\" });\n\n// Using TypeScript 5.2+ using statement\n{\n  using instrumented = withInstrumentedOpenAI();\n  // All OpenAI calls inside this block will be instrumented\n}\n// OpenAI instrumentation automatically disabled here\n\n// Or manually manage lifecycle\nconst instrumented = withInstrumentedOpenAI();\ntry {\n  // All OpenAI calls here will be instrumented\n} finally {\n  instrumented[Symbol.dispose]();\n}\n```\n\n### Instrumentation Support\n\n#### Providers\n\nWe currently support the following LLM providers:\n\n| Provider     | Instrumentation Function  | Notes                        |\n| ------------ | ------------------------- | ---------------------------- |\n| **OpenAI**   | `instrumentOpenAI`        | Includes Azure OpenAI        |\n\n\n#### Frameworks\n\nWe currently support the following frameworks:\n\n| Framework    | Instrumentation Function  | Notes                        |\n| ------------ | ------------------------- | ---------------------------- |\n| **LangChain**   | `instrumentLangChain`        | Includes LangChain and LangGraph        |\n| **OpenAI Agents**   | `instrumentOpenAIAgents`        | |\n\n\n⚠️ Note that, by default, instrumented LLM calls will be treated independently from one another. In order to logically group LLM calls into a trace, you will need to group them as follows:\n\n```typescript\nimport { configure, instrument, instrumentOpenAI } from \"@atla-ai/insights-sdk-js\";\nimport OpenAI from \"openai\";\n\nconfigure({ token: \"...\" });\ninstrumentOpenAI();\n\nconst client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\n\n// The OpenAI calls below will belong to **separate traces**\nconst result1 = await client.chat.completions.create({ ... });\nconst result2 = await client.chat.completions.create({ ... });\n\nconst runMyAgent = instrument(\"My agent doing its thing\")(\n  async function(): Promise<void> {\n    // The OpenAI calls within this function will belong to the **same trace**\n    const result1 = await client.chat.completions.create({ ... });\n    const result2 = await client.chat.completions.create({ ... });\n    // ...\n  }\n);\n```\n\n#### Manual instrumentation\n\nIt is also possible to manually record LLM generations using the lower-level span SDK.\n\n```typescript\nimport { startAsCurrentSpan } from \"@atla-ai/insights-sdk-js\";\n\nconst { span, endSpan } = startAsCurrentSpan(\"my-llm-generation\");\ntry {\n  // Run my LLM generation via an unsupported framework.\n  const inputMessages = [{ role: \"user\", content: \"What is the capital of France?\" }];\n  const tools = [\n    {\n      type: \"function\",\n      function: {\n        name: \"get_capital\",\n        parameters: { type: \"object\", properties: { country: { type: \"string\" } } },\n      },\n    },\n  ];\n  const result = await myClient.chat.completions.create({ messages: inputMessages, tools });\n\n  // Manually record LLM generation.\n  span.recordGeneration({\n    inputMessages,\n    outputMessages: result.choices.map(choice => choice.message),\n    tools,\n  });\n} finally {\n  endSpan();\n}\n```\n\nNote that the expected data format are OpenAI Chat Completions compatible messages / tools.\n\n### Adding metadata\n\nYou can attach metadata to a run that provides additional information about the specs of that specific workflow. This can include various system settings, prompt versions, etc.\n\n```typescript\nimport { configure } from \"@atla-ai/insights-sdk-js\";\n\n// We can define some system settings, prompt versions, etc. we'd like to keep track of.\nconst metadata = {\n  environment: \"dev\",\n  \"prompt-version\": \"v1.4\",\n  model: \"gpt-4o-2024-08-06\",\n  \"run-id\": \"my-test\",\n};\n\n// Any subsequent generated traces will inherit the metadata specified here.\nconfigure({\n  token: \"<MY_ATLA_INSIGHTS_TOKEN>\",\n  metadata,\n});\n```\n\nYou can also set metadata dynamically within instrumented functions:\n\n```typescript\nimport { instrument, setMetadata } from \"@atla-ai/insights-sdk-js\";\n\nconst myFunction = instrument(\"My Function\")(\n  function(): void {\n    // Add metadata specific to this execution\n    setMetadata({ function: \"function1\", timestamp: new Date().toISOString() });\n    // Your function logic here\n  }\n);\n```\n\n### Marking trace success / failure\n\nThe logical notion of _success_ or _failure_ plays a prominent role in the observability of (agentic) GenAI applications.\n\nTherefore, the `@atla-ai/insights-sdk-js` package offers the functionality to mark a trace as a success or a failure like follows:\n\n```typescript\nimport {\n  configure,\n  instrument,\n  instrumentOpenAI,\n  markFailure,\n  markSuccess,\n} from \"@atla-ai/insights-sdk-js\";\nimport OpenAI from \"openai\";\n\nconfigure({ token: \"...\" });\ninstrumentOpenAI();\n\nconst client = new OpenAI();\n\nconst runMyAgent = instrument(\"My agent doing its thing\")(\n  async function(): Promise<void> {\n    const result = await client.chat.completions.create({\n      model: \"gpt-3.5-turbo\",\n      messages: [\n        {\n          role: \"user\",\n          content: \"What is 1 + 2? Reply with only the answer, nothing else.\",\n        }\n      ]\n    });\n    const response = result.choices[0].message.content;\n\n    // Note that you could have any arbitrary success condition, including LLMJ-based evaluations\n    if (response === \"3\") {\n      markSuccess();\n    } else {\n      markFailure();\n    }\n  }\n);\n```\n\n⚠️ Note that you should use this marking functionality within an instrumented function.\n\n### Experiments\n\nYou can group related traces into experiments for comparative analysis in the Atla Insights workbench. This is particularly useful when testing different prompts, models, or configurations.\n\n```typescript\nimport {\n  configure,\n  instrument,\n  instrumentOpenAI,\n  runExperiment,\n} from \"@atla-ai/insights-sdk-js\";\nimport OpenAI from \"openai\";\n\nconfigure({ token: \"...\" });\ninstrumentOpenAI();\n\nconst client = new OpenAI();\n\n// Run code within an experiment context\nawait runExperiment(\n\t{\n\t\texperimentName: \"my-experiment\",\n\t\tdescription: \"Testing out some experiment changes\",\n\t},\n\tasync () => {\n\t\t// Generate traces within this experiment\n\t\tconst runMyExperimentTrace = instrument(\"my-trace\")(async () => {\n\t\t\tconst completion = await client.chat.completions.create({\n\t\t\t\tmodel: \"gpt-4o\",\n\t\t\t\tmessages: [\n\t\t\t\t\t{\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: \"Hello world!\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t});\n\n\t\t\tconsole.log(\"Response:\", completion.choices[0].message.content);\n\t\t});\n\n\t\tawait runMyExperimentTrace();\n\t},\n);\n```\n\nIf you don't provide an experiment name, one will be auto-generated for you:\n\n```typescript\n// Auto-generated name like \"clever-fox-a3b4c5d6\"\nawait runExperiment({}, async () => {\n  // Your experiment code\n});\n```\n\nAll traces generated within an experiment will:\n- Be tagged with the experiment name and description\n- Appear in the \"dev\" environment in your dashboard\n- Be grouped together in the Atla Insights workbench for easy comparison\n\n### Compatibility with existing observability\n\nAs `@atla-ai/insights-sdk-js` provides its own instrumentation, we should note potential interactions with our instrumentation / observability providers.\n\n`@atla-ai/insights-sdk-js` instrumentation is generally compatible with most popular observability platforms.\n\n#### OpenTelemetry compatibility\n\nThe Atla Insights SDK is built on the OpenTelemetry standard and fully compatible with other OpenTelemetry services.\n\nIf you have an existing OpenTelemetry setup (e.g., by setting the relevant otel environment variables), Atla Insights will be _additive_ to this setup. I.e., it will add additional logging on top of what is already getting logged.\n\nIf you do not have an existing OpenTelemetry setup, Atla Insights will initialize a new (global) tracer provider.\n\n### More examples\n\nMore specific examples can be found in the `examples/` folder.\n\n## TypeScript Support\n\nThis SDK is written in TypeScript and provides full type definitions out of the box. No additional `@types` packages are required.\n\n## License\n\nThis project is licensed under the ISC License - see the [LICENSE](LICENSE) file for details.\n","readmeFilename":"README.md"}