{"_id":"@ai-flight-recorder/sdk","_rev":"4-93261c77067a40ac741e52009ae7ea83","name":"@ai-flight-recorder/sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@ai-flight-recorder/sdk","version":"0.1.0","keywords":["ai","llm","observability","debugging","recording","sdk","adapter","openai","anthropic","gemini","mcp","flight-recorder"],"author":{"name":"Matt Smith"},"license":"MIT","_id":"@ai-flight-recorder/sdk@0.1.0","maintainers":[{"name":"allthingssmitty","email":"runner_28@hotmail.com"}],"homepage":"https://github.com/AllThingsSmitty/ai-flight-recorder#readme","bugs":{"url":"https://github.com/AllThingsSmitty/ai-flight-recorder/issues"},"dist":{"shasum":"5a1900f17c4b0b3269ece7a7e32902dc078db76e","tarball":"https://registry.npmjs.org/@ai-flight-recorder/sdk/-/sdk-0.1.0.tgz","fileCount":66,"integrity":"sha512-QRAClUQJIIqirFv8V0sBT6xvtNBz2ADCWFSQZ5SDOMzCOlK3B9Y9Je36k+NkSw8Npa/UJanZbctwiSjCDqmQXg==","signatures":[{"sig":"MEYCIQCy5Np5EXllQOC7n15vNj3IeFwORvvwayDRi9pcu7rcNgIhANqTf8dII8zcvP6Vx75vbvnUOl5M8YNsAmPhqbQ09Boj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111894},"main":"./dist/index.js","type":"module","_from":"file:ai-flight-recorder-sdk-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"}},"scripts":{"dev":"tsc --build --watch","lint":"eslint src","build":"tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"allthingssmitty","email":"runner_28@hotmail.com"},"_resolved":"C:\\Users\\C8M9S\\AppData\\Local\\Temp\\4fbaa27ae183babaeb9848902f726e9b\\ai-flight-recorder-sdk-0.1.0.tgz","_integrity":"sha512-QRAClUQJIIqirFv8V0sBT6xvtNBz2ADCWFSQZ5SDOMzCOlK3B9Y9Je36k+NkSw8Npa/UJanZbctwiSjCDqmQXg==","repository":{"url":"git+https://github.com/AllThingsSmitty/ai-flight-recorder.git","type":"git","directory":"packages/sdk"},"_npmVersion":"11.3.0","description":"SDK and provider adapters for AI Flight Recorder — wrap OpenAI, Anthropic, and Gemini clients to record AI sessions","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@ai-flight-recorder/core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1785161349444_0.6332335663840174","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ai-flight-recorder/sdk","version":"0.1.1","keywords":["ai","llm","observability","debugging","recording","sdk","adapter","openai","anthropic","gemini","mcp","flight-recorder"],"author":{"name":"Matt Smith"},"license":"MIT","_id":"@ai-flight-recorder/sdk@0.1.1","maintainers":[{"name":"allthingssmitty","email":"runner_28@hotmail.com"}],"homepage":"https://github.com/AllThingsSmitty/ai-flight-recorder#readme","bugs":{"url":"https://github.com/AllThingsSmitty/ai-flight-recorder/issues"},"dist":{"shasum":"8f94f8ba013de92b3ec843c443ed34ac15cd7ccb","tarball":"https://registry.npmjs.org/@ai-flight-recorder/sdk/-/sdk-0.1.1.tgz","fileCount":67,"integrity":"sha512-2Oy1QlfKgSmCrAsPDMw0dH6hLDPih7ry3bN/dCWWbVLHN6JvN2ZhSMJRcYLY5/ycrXAY8MoqDnc7Lav+zsJ6qg==","signatures":[{"sig":"MEUCIQDJYsdKWvS/gTyi24Lc7+OHZE4rzp9mYIJqYlZvjI3f8gIgCJcKAzhXf6QWk7nxyrSIqCNaQ4/nV7PbDjYbt6Y0GhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115819},"main":"./dist/index.js","type":"module","_from":"file:ai-flight-recorder-sdk-0.1.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"}},"scripts":{"dev":"tsc --build --watch","lint":"eslint src","build":"tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"allthingssmitty","email":"runner_28@hotmail.com"},"_resolved":"/tmp/0c7ff54749422e0b21f9a0c2e2a2c8d8/ai-flight-recorder-sdk-0.1.1.tgz","_integrity":"sha512-2Oy1QlfKgSmCrAsPDMw0dH6hLDPih7ry3bN/dCWWbVLHN6JvN2ZhSMJRcYLY5/ycrXAY8MoqDnc7Lav+zsJ6qg==","repository":{"url":"git+https://github.com/AllThingsSmitty/ai-flight-recorder.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"SDK and provider adapters for AI Flight Recorder — wrap OpenAI, Anthropic, and Gemini clients to record AI sessions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@ai-flight-recorder/core":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1785162808820_0.1120901532030083","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ai-flight-recorder/sdk","version":"0.1.2","keywords":["ai","llm","observability","debugging","recording","sdk","adapter","openai","anthropic","gemini","mcp","flight-recorder"],"author":{"name":"Matt Smith"},"license":"MIT","_id":"@ai-flight-recorder/sdk@0.1.2","maintainers":[{"name":"allthingssmitty","email":"runner_28@hotmail.com"}],"homepage":"https://ai-flight-recorder.vercel.app","bugs":{"url":"https://github.com/AllThingsSmitty/ai-flight-recorder/issues"},"dist":{"shasum":"6c778f76d7dbe4c640d60ed65c38f3c5fc9c664c","tarball":"https://registry.npmjs.org/@ai-flight-recorder/sdk/-/sdk-0.1.2.tgz","fileCount":91,"integrity":"sha512-PnZSDVM2rcIP34klFeBeYYTR0pmIOd+h8duruMe6+YKqIY2gzJZuYQ7dERD6W1xAFg4Ypmo8IjkERQSKxHGVCQ==","signatures":[{"sig":"MEUCIFBjKqoAWkDxSQ9TVhAA8YnYhMY4d6Ut/I8LpKbuinOEAiEAlnRnpz9LWNAWmycf/fJPeRgzbT71JrbtvW+o9g79gxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":199449},"main":"./dist/index.js","type":"module","_from":"file:ai-flight-recorder-sdk-0.1.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"}},"scripts":{"dev":"tsc --build --watch","lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"allthingssmitty","email":"runner_28@hotmail.com"},"_resolved":"/tmp/d41bd37eab7556056a5e4a030296d138/ai-flight-recorder-sdk-0.1.2.tgz","_integrity":"sha512-PnZSDVM2rcIP34klFeBeYYTR0pmIOd+h8duruMe6+YKqIY2gzJZuYQ7dERD6W1xAFg4Ypmo8IjkERQSKxHGVCQ==","repository":{"url":"git+https://github.com/AllThingsSmitty/ai-flight-recorder.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"SDK and provider adapters for AI Flight Recorder — wrap OpenAI, Anthropic, and Gemini clients to record AI sessions","directories":{},"_nodeVersion":"22.23.1","dependencies":{"@ai-flight-recorder/core":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1785766184583_0.6351487906889255","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@ai-flight-recorder/sdk@0.2.0","bugs":{"url":"https://github.com/AllThingsSmitty/ai-flight-recorder/issues"},"dist":{"shasum":"a61304e0f81509678e7b4d9abf90e8c30d916d8e","tarball":"https://registry.npmjs.org/@ai-flight-recorder/sdk/-/sdk-0.2.0.tgz","fileCount":95,"integrity":"sha512-HFMYqGt5gqhKVM9g4Qk1IK7RmR3vs6S6ws+FfAySqfiMSzMgMW96DAE5GEzElZPbTWVz5Afdc3pvio9Jlz1nuw==","signatures":[{"sig":"MEUCIGaet/rI6535qwdMLy/rUcUh3pDRkd+ggd/6uKJKhuMuAiEAqjACJXAXTi1onbDjcWRuZqz+cpPH4TW1yFyTNdzHoIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID9VJF//HD3MkCI0EKaHzrOUkbDk9N17CEA9rY43s1ayAiEA3jQEs6mhuXJyDQ4mT/CJC0DMQryqeKaoEHCOYMsbj8c="}],"unpackedSize":233342},"main":"./dist/index.js","name":"@ai-flight-recorder/sdk","type":"module","_from":"file:ai-flight-recorder-sdk-0.2.0.tgz","types":"./dist/index.d.ts","author":{"name":"Matt Smith"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","import":"./dist/node.js"}},"license":"MIT","scripts":{"dev":"tsc --build --watch","lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"version":"0.2.0","_npmUser":{"name":"allthingssmitty","email":"runner_28@hotmail.com"},"homepage":"https://ai-flight-recorder.vercel.app","keywords":["ai","llm","observability","debugging","recording","sdk","adapter","openai","anthropic","gemini","mcp","flight-recorder"],"_resolved":"/tmp/0c190da68b76b7d9426cf40d1ad1b17a/ai-flight-recorder-sdk-0.2.0.tgz","_integrity":"sha512-HFMYqGt5gqhKVM9g4Qk1IK7RmR3vs6S6ws+FfAySqfiMSzMgMW96DAE5GEzElZPbTWVz5Afdc3pvio9Jlz1nuw==","repository":{"url":"git+https://github.com/AllThingsSmitty/ai-flight-recorder.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"SDK and provider adapters for AI Flight Recorder — wrap OpenAI, Anthropic, and Gemini clients to record AI sessions","directories":{},"maintainers":[{"name":"allthingssmitty","email":"runner_28@hotmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"@ai-flight-recorder/core":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5","@types/node":"^22"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.2.0_1788889884826_0.7338955776287097"}}},"time":{"created":"2026-07-27T14:09:09.243Z","modified":"2026-09-08T17:51:25.104Z","0.1.0":"2026-07-27T14:09:09.574Z","0.1.1":"2026-07-27T14:33:29.008Z","0.1.2":"2026-08-03T14:09:44.754Z","0.2.0":"2026-09-08T17:51:24.922Z"},"bugs":{"url":"https://github.com/AllThingsSmitty/ai-flight-recorder/issues"},"author":{"name":"Matt Smith"},"license":"MIT","homepage":"https://ai-flight-recorder.vercel.app","keywords":["ai","llm","observability","debugging","recording","sdk","adapter","openai","anthropic","gemini","mcp","flight-recorder"],"repository":{"url":"git+https://github.com/AllThingsSmitty/ai-flight-recorder.git","type":"git","directory":"packages/sdk"},"description":"SDK and provider adapters for AI Flight Recorder — wrap OpenAI, Anthropic, and Gemini clients to record AI sessions","maintainers":[{"name":"allthingssmitty","email":"runner_28@hotmail.com"}],"readme":"# @ai-flight-recorder/sdk\n\n[![npm](https://img.shields.io/npm/v/@ai-flight-recorder/sdk.svg)](https://www.npmjs.com/package/@ai-flight-recorder/sdk)\n\nDeveloper SDK for [AI Flight Recorder](https://github.com/AllThingsSmitty/ai-flight-recorder) — record, replay, and inspect every interaction in an AI application.\n\nDrop in a one-line wrapper around your existing OpenAI, Anthropic, or Gemini client and get a full structured event stream you can replay, export, and hand off as a `.flight` file.\n\n## Install\n\n```bash\nnpm install @ai-flight-recorder/sdk\n```\n\n## Quick start\n\n```ts\nimport { FlightRecorder } from \"@ai-flight-recorder/sdk\";\n\nconst fr = new FlightRecorder();\nfr.startSession({ label: \"my-chat\" });\n\nfr.record({ type: \"prompt\", model: \"gpt-4o\", prompt: \"Hello\" });\nfr.record({ type: \"completion\", response: \"Hi!\", finishReason: \"stop\", totalTokens: 10 });\n\nconst session = fr.endSession();\n```\n\n## Provider adapters\n\nOne-line wrappers that intercept your provider client and record every call automatically.\n\n**OpenAI**\n\n```ts\nimport OpenAI from \"openai\";\nimport { FlightRecorder, wrapOpenAI } from \"@ai-flight-recorder/sdk\";\n\nconst fr = new FlightRecorder();\nconst openai = wrapOpenAI(new OpenAI(), fr.recorder);\n\nfr.startSession({ label: \"chat\" });\nawait openai.chat.completions.create({ model: \"gpt-4o\", messages: [{ role: \"user\", content: \"Hello\" }] });\nfr.endSession();\n```\n\n**Anthropic**\n\n```ts\nimport Anthropic from \"@anthropic-ai/sdk\";\nimport { FlightRecorder, wrapAnthropic, AnthropicClientLike } from \"@ai-flight-recorder/sdk\";\n\nconst fr = new FlightRecorder();\nconst client = wrapAnthropic(new Anthropic() as unknown as AnthropicClientLike, fr.recorder);\n\nfr.startSession({ label: \"claude-chat\" });\nawait client.messages.create({ model: \"claude-sonnet-4-5\", max_tokens: 1024, messages: [{ role: \"user\", content: \"Hello\" }] });\nfr.endSession();\n```\n\n**Google Gemini**\n\n```ts\nimport { GoogleGenerativeAI } from \"@google/generative-ai\";\nimport { FlightRecorder, wrapGeminiModel } from \"@ai-flight-recorder/sdk\";\n\nconst fr = new FlightRecorder();\nconst model = wrapGeminiModel(\n  new GoogleGenerativeAI(process.env.GOOGLE_API_KEY!).getGenerativeModel({ model: \"gemini-1.5-pro\" }),\n  fr.recorder,\n);\n\nfr.startSession({ label: \"gemini-chat\" });\nawait model.generateContent(\"Hello\");\nfr.endSession();\n```\n\nAll three adapters support streaming.\n\n## Plugins\n\n```ts\nimport { FlightRecorder, ConsoleLogPlugin } from \"@ai-flight-recorder/sdk\";\n\nconst fr = new FlightRecorder({\n  plugins: [\n    new ConsoleLogPlugin({ logEvents: true, logSummary: true }),\n    {\n      name: \"my-plugin\",\n      onSessionStart: (session) => console.log(\"Started:\", session.id),\n      onEvent: (event) => myMetrics.record(event),\n      onSessionEnd: (session) => alerting.flush(session),\n    },\n  ],\n});\n```\n\n## Transports\n\n```ts\nimport { FlightRecorder, InMemoryTransport } from \"@ai-flight-recorder/sdk\";\n\nconst transport = new InMemoryTransport();\nconst fr = new FlightRecorder({ transport });\n\nfr.startSession();\nfr.endSession(); // saves to transport\n\nconst sessions = transport.getAll();\n```\n\n**Filesystem (Node.js):**\n\n```ts\nimport { FlightRecorder } from \"@ai-flight-recorder/sdk\";\nimport { FileTransport } from \"@ai-flight-recorder/sdk/node\";\n\nconst fr = new FlightRecorder({ transport: new FileTransport(\"./recordings\") });\nfr.startSession({ label: \"my-session\" });\nfr.endSession();\n// saves to ./recordings/<sessionId>.flight\n```\n\n## `.flight` export / import\n\n```ts\nimport { serializeSession, deserializeSession } from \"@ai-flight-recorder/sdk\";\nimport { writeFileSync, readFileSync } from \"node:fs\";\n\nwriteFileSync(\"session.flight\", serializeSession(endedSession));\nconst session = deserializeSession(readFileSync(\"session.flight\", \"utf-8\"));\n```\n\n## Full documentation\n\nSee the [AI Flight Recorder repository](https://github.com/AllThingsSmitty/ai-flight-recorder) for the DevTools app, the Next.js example, and the full development guide.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}