{"_id":"@artanis-ai/sdk","_rev":"8-2bb00fcb4d1115bc9512c7852a6d1bed","name":"@artanis-ai/sdk","dist-tags":{"latest":"0.17.0"},"versions":{"0.5.0":{"name":"@artanis-ai/sdk","version":"0.5.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.5.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"24748f0843784d6257b83ff4727c77f750d50e39","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.5.0.tgz","fileCount":6,"integrity":"sha512-6vzMSBiM6YR/4OWj5xDNQjusmiZY0VPB5RwHAe1le+c8VMTZdxlPNFsNPvrZCM+ojX6gzOKNUndBbSASCBp3RQ==","signatures":[{"sig":"MEUCIQDZhilYejVTuUFib+9ng8FBxYyPQkpyS1paNmlhmmYaYgIgScMjwRnCz/J6k8B4ayA7s3t3kOUg3NLo7PDxcT2Mj5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48838},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"944db164b40cd8c0c771e73e83df1850ca5285af","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"amar","email":"yousef@amar.io"},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"10.9.3","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.5.0_1766012943159_0.7815976873300847","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@artanis-ai/sdk","version":"0.11.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.11.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"a9a17ac988102e7b362b421f15e116dc2dda6165","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.11.0.tgz","fileCount":6,"integrity":"sha512-heBlRIreit+bJB3Pn6Ieha9JZlNMxwrmFX/sKdUHpx3xs9xizkLfPkE3LOXChPzYyHg3bcTYP1m24o1Yn+z1Og==","signatures":[{"sig":"MEUCIQCUZlDqHym6aUkbRTzVVkVq2ykPPt2TocxASyhAEvC+FAIgbx6nK2oBF9JlLFifSbIc7iI44z+v+xML4UzVb5HMfXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48839},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"78b38bf7826147f01a75359c4e41fd9ab858ed64","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.11.0_1766015444026_0.14949436643039182","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@artanis-ai/sdk","version":"0.12.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.12.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"1e66762195728a985324f1a0e14c543d6a8faf8f","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.12.0.tgz","fileCount":6,"integrity":"sha512-35Bb3evp+ZNZpYvAThFBuR+aUcNIdaAIVqCQxz/wVNXcD7KpJns8DIpsKQTJ9i2xh25Yd3mDumGzPsDWhrCFCQ==","signatures":[{"sig":"MEYCIQDQ8ilFD7tYyES5rs2jgI6YTS2ZGVatBfutRFLvBDJ3xAIhAO7uhz98fPuzci8fsEAlByPso5UUxhbo3ukTOA4Ck2cX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48915},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"6ff2da86ab5af07f085b43558480bc9d33548ecd","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.12.0_1766100247283_0.8503472076253213","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@artanis-ai/sdk","version":"0.13.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.13.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"618cc5fc2283226effd877e3a3bcfd964480f71b","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.13.0.tgz","fileCount":6,"integrity":"sha512-wUQ07xaettFPP66rdkabWImp+12O5V73kdZjye3CD2ktMBrTNd/IhM4pw/Whkukd4jMAm08nQfj9/Bg6MViKoA==","signatures":[{"sig":"MEUCIBd0CM+XDwX+isRDg5bNVGrnORoa9zHJMKL6P6UJ/RJSAiEA0bQKIsKzAbnRhkeiLZTEv9fRW3DECfTji1SPmBpmw/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47821},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b573cde6c90435c6183531da354f36e46ac447c4","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.13.0_1766152058762_0.6563105805374494","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@artanis-ai/sdk","version":"0.14.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.14.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"d07175dcb3405b56a630ccb2c2cb4e32d0babc01","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.14.0.tgz","fileCount":6,"integrity":"sha512-N3H7d0mQ9DIy2kYkbDzScfgeSHkw4Rk+8xbDxTRIeyGHIvQmvHIoM4357sw5rUwvyY/s4yzeQSMSm+KRIVfA+w==","signatures":[{"sig":"MEUCIQDpCmeuB71iKKuIappL3KgbpiPzqGFnjWbNgcJ/I+bWOQIgHinQULMLTXHpsRqsolmO9TASG7AncwGByTm1/jRZMhA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47821},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"abddf90fad44bab17737ed7b139266b1e2d04bfd","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.14.0_1766155289545_0.23151453397237431","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@artanis-ai/sdk","version":"0.15.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.15.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"58b77b32944eb28cf5363381587f4b994513b099","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.15.0.tgz","fileCount":6,"integrity":"sha512-ZQFBP/Lq9+FQBvxI1rnQVl9yLA3WrCgbqBiRmn/5LL0nQjdCMrZuwi9njc521FJXGHqtaDKl8dGrWs8NIgsPPw==","signatures":[{"sig":"MEQCIEsdkKIhkqca0wMiMk/Ofo0V5JwZ6aEvulH7N9sJJq/9AiB6us3E3/6le4EmRvSOwMfBITM7pl3s3baAo7L/xbMisQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47821},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"a4cc289d902eaf6b0c23eceb444ca8cf581b5fb8","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.15.0_1766427509100_0.5339227162909257","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@artanis-ai/sdk","version":"0.16.0","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","_id":"@artanis-ai/sdk@0.16.0","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"dist":{"shasum":"40a077426f84d6aa2752d2ed49a7badbbf4d631c","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.16.0.tgz","fileCount":6,"integrity":"sha512-J+qeqHHe9+Y0QsDEdq0nrDeR1LdIJOodW2cXqvsl/IgXZDHE9GhAtOW4OAY2OwPcB0/3ZrqDZsI0KhqEXncKKw==","signatures":[{"sig":"MEQCIHvSY07WbULuvstPRKWTvF8jZrnA0FoGJJPZEj+6cuTiAiA9+B1O9Lonks4GMHTTxqQexfTojTSBDLSg5tAz56BDJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49769},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"9d5d45d76ed5d0731c52d985f22680e233c6a4a1","scripts":{"lint":"eslint src tests --ext .ts","test":"jest","build":"tsup src/index.ts --format cjs,esm --dts","typecheck":"tsc --noEmit","test:watch":"jest --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"repository":{"url":"git+https://github.com/artanis-ai/sdk.git","type":"git","directory":"typescript"},"_npmVersion":"11.6.2","description":"Artanis SDK for AI application observability","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","tsup":"^8.0.0","eslint":"^8.0.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/parser":"^6.0.0","@typescript-eslint/eslint-plugin":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.16.0_1769202843876_0.7920502506263316","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@artanis-ai/sdk","version":"0.17.0","description":"Artanis SDK for AI application observability","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","import":"./dist/index.mjs"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src tests --ext .ts","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"keywords":["artanis","observability","ai","tracing","monitoring","llm"],"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/artanis-ai/sdk.git","directory":"typescript"},"homepage":"https://artanis.ai","bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^24.0.0","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","jest":"^29.5.0","ts-jest":"^29.1.0","tsup":"^8.0.0","typescript":"^5.0.0"},"engines":{"node":">=18"},"gitHead":"e1adb489ca81344eb2951b144190077eaba14c2d","_id":"@artanis-ai/sdk@0.17.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-DJZBNyEfxBmakUrgzuv2pxrbHyEbXvibgpH76ihvDa4ded7oeCasWK/O321cqm7w/HfenndfHgCLkUY233Qh+A==","shasum":"4e9b56f1b4c82a3b3650b7184cf9b964e175bafa","tarball":"https://registry.npmjs.org/@artanis-ai/sdk/-/sdk-0.17.0.tgz","fileCount":6,"unpackedSize":49769,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC/0+4q+4YwBKrMhUUMpLNi6SQLBWiNK1YCxWsbXnj/9AIgdNxppdgBAUWNqmdZfB4KMXS20pjLtmUJKdTVTe1Mmek="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f70f2e8-9415-4cc5-862c-2f4865210ed2"}},"directories":{},"maintainers":[{"name":"amar","email":"yousef@amar.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.17.0_1769220456279_0.03529340337095288"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-17T23:09:03.067Z","modified":"2026-01-24T02:07:36.556Z","0.5.0":"2025-12-17T23:09:03.302Z","0.11.0":"2025-12-17T23:50:44.181Z","0.12.0":"2025-12-18T23:24:07.415Z","0.13.0":"2025-12-19T13:47:38.910Z","0.14.0":"2025-12-19T14:41:29.678Z","0.15.0":"2025-12-22T18:18:29.258Z","0.16.0":"2026-01-23T21:14:04.086Z","0.17.0":"2026-01-24T02:07:36.437Z"},"bugs":{"url":"https://github.com/artanis-ai/sdk/issues"},"author":{"name":"Artanis","email":"team@artanis.ai"},"license":"MIT","homepage":"https://artanis.ai","keywords":["artanis","observability","ai","tracing","monitoring","llm"],"repository":{"type":"git","url":"git+https://github.com/artanis-ai/sdk.git","directory":"typescript"},"description":"Artanis SDK for AI application observability","maintainers":[{"name":"amar","email":"yousef@amar.io"}],"readme":"# Artanis TypeScript SDK\n\nArtanis SDK for AI application observability - understand failures, build evaluation sets, and act on user feedback.\n\n## Installation\n\n```bash\nnpm install @artanis-ai/sdk\n# or\nyarn add @artanis-ai/sdk\n# or\npnpm add @artanis-ai/sdk\n```\n\n## Quick Start\n\n```typescript\nimport { Artanis } from \"@artanis-ai/sdk\";\n\n// Initialize client\nconst artanis = new Artanis({ apiKey: \"sk_...\" });\n\n// Create a trace\nconst trace = artanis.trace(\"answer-question\");\ntrace.input({ question: \"What is AI?\", model: \"gpt-4\" });\ntrace.output(\"AI stands for Artificial Intelligence\");\n\n// Record feedback\nartanis.feedback(trace.id, \"positive\");\n```\n\n## Configuration\n\n### API Key\n\nProvide your API key either explicitly or via environment variable:\n\n```typescript\n// Explicit\nconst artanis = new Artanis({ apiKey: \"sk_...\" });\n\n// Environment variable\nprocess.env.ARTANIS_API_KEY = \"sk_...\";\nconst artanis = new Artanis();\n```\n\n### Options\n\n```typescript\nconst artanis = new Artanis({\n  apiKey: \"sk_...\", // Required (or ARTANIS_API_KEY env var)\n  baseUrl: \"https://app.artanis.ai\", // Optional: custom API endpoint\n  enabled: true, // Optional: enable/disable tracing\n  debug: false, // Optional: enable debug logging\n  onError: (error) => console.log(error), // Optional: error callback\n});\n```\n\n### Environment Variables\n\n| Variable           | Default                  | Description            |\n| ------------------ | ------------------------ | ---------------------- |\n| `ARTANIS_API_KEY`  | Required                 | Your API key           |\n| `ARTANIS_BASE_URL` | `https://app.artanis.ai` | API endpoint           |\n| `ARTANIS_ENABLED`  | `true`                   | Enable/disable tracing |\n| `ARTANIS_DEBUG`    | `false`                  | Enable debug logging   |\n\n## Usage\n\n### Basic Tracing\n\n```typescript\nconst trace = artanis.trace(\"operation-name\");\ntrace.input({ question: \"...\", context: \"...\" });\n// ... perform operation ...\ntrace.output(result);\n```\n\n### With Metadata\n\n```typescript\nconst trace = artanis.trace(\"answer-question\", {\n  user_id: \"user-123\",\n  session_id: \"session-456\",\n});\n```\n\n### Capturing State for Replay\n\n```typescript\nconst trace = artanis.trace(\"rag-query\");\n\n// Capture document state\ntrace.state(\"documents\", [{ id: \"doc1\", score: 0.95 }]);\n\n// Capture configuration\ntrace.state(\"config\", { model: \"gpt-4\", temperature: 0.7 });\n\n// Record inputs and output\ntrace.input({ query: \"...\", prompt: \"...\" });\ntrace.output(response);\n```\n\n### Error Handling\n\n```typescript\nconst trace = artanis.trace(\"risky-operation\");\ntrace.input({ data: inputData });\n\ntry {\n  const result = process(inputData);\n  trace.output(result);\n} catch (e) {\n  trace.error(String(e));\n  throw e;\n}\n```\n\n### Method Chaining\n\n```typescript\nartanis\n  .trace(\"operation\")\n  .input({ question: \"What is AI?\" })\n  .state(\"config\", { model: \"gpt-4\" })\n  .output(\"AI stands for Artificial Intelligence\");\n```\n\n### Feedback\n\n```typescript\n// Binary feedback\nartanis.feedback(trace.id, \"positive\");\nartanis.feedback(trace.id, \"negative\");\n\n// Numeric rating (0.0-1.0)\nartanis.feedback(trace.id, 0.85);\n\n// With comment\nartanis.feedback(trace.id, \"negative\", \"The answer was incorrect\");\n\n// With correction\nartanis.feedback(trace.id, \"negative\", undefined, {\n  answer: \"The correct answer is...\",\n});\n```\n\n## Complete Example: RAG Pipeline\n\n```typescript\nimport { Artanis } from \"@artanis-ai/sdk\";\n\nconst artanis = new Artanis();\n\nasync function answerQuestion(question: string, userId: string) {\n  // Create trace with metadata\n  const trace = artanis.trace(\"rag-answer\", {\n    user_id: userId,\n  });\n\n  // Capture document corpus state\n  const corpus = await loadDocuments();\n  trace.state(\n    \"corpus\",\n    corpus.map((doc) => doc.id),\n  );\n\n  // Retrieve relevant chunks\n  const chunks = await retriever.search(question);\n  trace.state(\n    \"chunks\",\n    chunks.map((c) => ({\n      id: c.id,\n      score: c.score,\n    })),\n  );\n\n  // Generate response\n  const prompt = buildPrompt(question, chunks);\n  trace.input({\n    question,\n    prompt,\n    model: \"gpt-4\",\n  });\n\n  const response = await llm.generate(prompt);\n  trace.output(response);\n\n  return { answer: response, traceId: trace.id };\n}\n\n// Later, collect feedback\nconst { answer, traceId } = await answerQuestion(\"What is AI?\", \"user-123\");\nconsole.log(answer);\n\n// User provides feedback\nartanis.feedback(traceId, \"positive\");\n```\n\n## Next.js Example\n\n### API Route\n\n```typescript\n// app/api/ask/route.ts\nimport { Artanis } from \"@artanis-ai/sdk\";\nimport { NextResponse } from \"next/server\";\n\nconst artanis = new Artanis();\n\nexport async function POST(request: Request) {\n  const { question, userId } = await request.json();\n\n  const trace = artanis.trace(\"ask-question\", { user_id: userId });\n  trace.input({ question });\n\n  const answer = await processQuestion(question);\n  trace.output(answer);\n\n  return NextResponse.json({\n    answer,\n    traceId: trace.id,\n  });\n}\n```\n\n### Client Component\n\n```typescript\n'use client';\n\nimport { useState } from 'react';\n\nexport default function ChatInterface() {\n  const [messages, setMessages] = useState<Array<{\n    text: string;\n    traceId: string;\n  }>>([]);\n\n  async function askQuestion(question: string) {\n    const response = await fetch('/api/ask', {\n      method: 'POST',\n      body: JSON.stringify({ question, userId: 'user-123' })\n    });\n\n    const { answer, traceId } = await response.json();\n    setMessages(prev => [...prev, { text: answer, traceId }]);\n  }\n\n  async function submitFeedback(traceId: string, isPositive: boolean) {\n    await fetch('/api/feedback', {\n      method: 'POST',\n      body: JSON.stringify({\n        traceId,\n        rating: isPositive ? 'positive' : 'negative'\n      })\n    });\n  }\n\n  return (\n    <div>\n      {messages.map((msg, i) => (\n        <div key={i}>\n          <p>{msg.text}</p>\n          <button onClick={() => submitFeedback(msg.traceId, true)}>👍</button>\n          <button onClick={() => submitFeedback(msg.traceId, false)}>👎</button>\n        </div>\n      ))}\n    </div>\n  );\n}\n```\n\n## Testing\n\nDisable tracing in tests:\n\n```typescript\n// Option 1: Environment variable\nprocess.env.ARTANIS_ENABLED = \"false\";\n\n// Option 2: Explicit configuration\nconst artanis = new Artanis({ enabled: false });\n```\n\n## Performance\n\n- **P50 overhead**: < 0.05ms per operation\n- **P99 overhead**: < 0.5ms per operation\n- All network operations are non-blocking (fire-and-forget)\n- No retries or queueing to prevent memory leaks\n\n## Error Handling Philosophy\n\nThe SDK never throws exceptions. All errors are handled silently to ensure observability never breaks production:\n\n- Invalid API key → traces dropped, error logged (if debug)\n- Network failure → traces dropped silently\n- Payload too large → trace dropped, error logged\n\nUse the `onError` callback to monitor SDK errors:\n\n```typescript\nconst artanis = new Artanis({\n  onError: (error) => logger.warn(\"Artanis error:\", error),\n});\n```\n\n## Development\n\n### Setup\n\n```bash\ncd typescript\nnpm install\n```\n\n### Build\n\n```bash\nnpm run build\n```\n\n### Run Tests\n\n```bash\nnpm test\nnpm run test:watch      # Watch mode\nnpm run test:coverage   # With coverage\n```\n\n### Type Checking\n\n```bash\nnpm run typecheck\n```\n\n### Linting\n\n```bash\nnpm run lint\n```\n\n## Support\n\n- Documentation: https://docs.artanis.ai\n- GitHub: https://github.com/artanis-ai/sdk\n- Email: team@artanis.ai\n\n## License\n\nMIT License - see LICENSE file for details.\n","readmeFilename":"README.md"}