{"_id":"@aivoralabs/agenttrail-openai","_rev":"2-f54c45b34ac5b5da24233b9001cf7375","name":"@aivoralabs/agenttrail-openai","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aivoralabs/agenttrail-openai","version":"0.1.0","keywords":["ai-compliance","eu-ai-act","audit-trail","ai-agents","article-12","hash-chain","cryptographic-receipts","compliance","ai-governance","audit","llm","openai","openai-sdk","gpt","chat-completions"],"author":{"name":"AivoraLabs","email":"hello@aivoralabs.org"},"license":"MIT","_id":"@aivoralabs/agenttrail-openai@0.1.0","maintainers":[{"name":"user_aivoralabs","email":"aivoralabs@aivoralabs.org"}],"homepage":"https://agenttrail.aivoralabs.org","bugs":{"url":"https://github.com/AiVoraLabs/agenttrail/issues"},"dist":{"shasum":"a0fe3cbc4535e4abf8afd186dc54f481ad39fba2","tarball":"https://registry.npmjs.org/@aivoralabs/agenttrail-openai/-/agenttrail-openai-0.1.0.tgz","fileCount":3,"integrity":"sha512-SMAGXBC8l0yHZyZowdiGlSNn7Dm2R/Q9xoyDL4DboyGnOne6aecpt/TOoosOcIqhhUPJEl1KVx/rhscXesds/Q==","signatures":[{"sig":"MEUCIChY/OFIbX0gke0oRkyM2oUgbRbgt1mUR8Gc7aDZpflpAiEAyeY6Pjhx+AACXT3BEmkzS7t9Q2B49ybOanadlrGEnI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9211},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1877bded265a5a7215d618e3787b6a65fed7ec7f","scripts":{"dev":"tsup src/index.ts --format esm --dts --watch","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean","clean":"rm -rf dist","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"user_aivoralabs","email":"aivoralabs@aivoralabs.org"},"repository":{"url":"git+https://github.com/AiVoraLabs/agenttrail.git","type":"git"},"_npmVersion":"11.13.0","description":"OpenAI SDK wrapper for AgentTrail audit receipts","directories":{},"_nodeVersion":"26.2.0","dependencies":{"openai":"^4.0.0","@aivoralabs/agenttrail":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/agenttrail-openai_0.1.0_1781286790483_0.4121316977840106","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aivoralabs/agenttrail-openai","version":"0.1.1","description":"OpenAI SDK wrapper for AgentTrail audit receipts","license":"MIT","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsup src/index.ts --format esm --dts --clean","test":"vitest run","test:watch":"vitest","dev":"tsup src/index.ts --format esm --dts --watch","clean":"rm -rf dist","test:coverage":"vitest run --coverage"},"dependencies":{"@aivoralabs/agenttrail":"workspace:*","openai":"^4.0.0"},"devDependencies":{"@types/node":"^22.0.0","tsup":"^8.0.0","vitest":"^2.0.0","typescript":"^5.5.0"},"publishConfig":{"access":"public"},"engines":{"node":">=22.0.0"},"homepage":"https://agenttrail.aivoralabs.org","repository":{"type":"git","url":"git+https://github.com/AiVoraLabs/agenttrail.git"},"author":{"name":"AivoraLabs","email":"hello@aivoralabs.org"},"keywords":["ai-compliance","eu-ai-act","audit-trail","ai-agents","article-12","hash-chain","cryptographic-receipts","compliance","ai-governance","audit","llm","openai","openai-sdk","gpt","chat-completions"],"gitHead":"ee83022922dd905b9c8c653845198f7c5b1af6b6","_id":"@aivoralabs/agenttrail-openai@0.1.1","bugs":{"url":"https://github.com/AiVoraLabs/agenttrail/issues"},"_nodeVersion":"26.2.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-bsRT6Gv7MQ/SK9PofsiAehkRFhfJCnLJLhp/lNpXV33dqnM4xvi4Sw4qTfiYmHqI+ZlBMR0tUiGPfBaLZMPq7A==","shasum":"cbe8a7be2aefc4ca73e0c0d5ee4ddceea6d4a077","tarball":"https://registry.npmjs.org/@aivoralabs/agenttrail-openai/-/agenttrail-openai-0.1.1.tgz","fileCount":4,"unpackedSize":14143,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCfwKviEU15Oj1YG801fJaV+1ATVx8VA1kUT1zk9QYdHQIhALW7nuV9gbNdBkXBgHFGB3OmeLcLS6vhYGTaF7O1PxuS"}]},"_npmUser":{"name":"user_aivoralabs","email":"aivoralabs@aivoralabs.org"},"directories":{},"maintainers":[{"name":"user_aivoralabs","email":"aivoralabs@aivoralabs.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agenttrail-openai_0.1.1_1781289072155_0.627898533464448"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-12T17:53:10.328Z","modified":"2026-06-12T18:31:12.437Z","0.1.0":"2026-06-12T17:53:10.611Z","0.1.1":"2026-06-12T18:31:12.296Z"},"bugs":{"url":"https://github.com/AiVoraLabs/agenttrail/issues"},"author":{"name":"AivoraLabs","email":"hello@aivoralabs.org"},"license":"MIT","homepage":"https://agenttrail.aivoralabs.org","keywords":["ai-compliance","eu-ai-act","audit-trail","ai-agents","article-12","hash-chain","cryptographic-receipts","compliance","ai-governance","audit","llm","openai","openai-sdk","gpt","chat-completions"],"repository":{"type":"git","url":"git+https://github.com/AiVoraLabs/agenttrail.git"},"description":"OpenAI SDK wrapper for AgentTrail audit receipts","maintainers":[{"name":"user_aivoralabs","email":"aivoralabs@aivoralabs.org"}],"readme":"# @aivoralabs/agenttrail-openai\n\n[![npm version](https://img.shields.io/npm/v/@aivoralabs/agenttrail-openai?color=CB3837&logo=npm)](https://www.npmjs.com/package/@aivoralabs/agenttrail-openai)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![EU AI Act](https://img.shields.io/badge/EU_AI_Act-Art._12-003399)](https://artificialintelligenceact.eu/article/12/)\n\n**Drop-in OpenAI SDK wrapper for EU AI Act Article 12 compliance. Zero code changes.**\n\nAutomatically generates tamper-proof audit receipts for every `chat.completions.create` call — non-streaming, streaming, and tool calls.\n\nPart of the [AgentTrail monorepo](https://github.com/AIvoraLabs/agenttrail). Requires [`@aivoralabs/agenttrail`](https://www.npmjs.com/package/@aivoralabs/agenttrail) as a peer dependency.\n\n---\n\n## Features\n\n- ✅ Non-streaming completions (`stream: false`)\n- ✅ Streaming completions (`stream: true`)\n- ✅ Tool calls / function calling\n- ✅ Compliance modes: `strict` (fail-closed) and `permissive`\n- ✅ Pre-flight compliance gate in strict mode\n- ✅ PII redaction before storage\n- ✅ Works with any OpenAI-compatible API (Groq, Cerebras, Gemini)\n\n---\n\n## Installation\n\n```bash\nnpm install @aivoralabs/agenttrail-openai @aivoralabs/agenttrail\n```\n\n---\n\n## Quick Start\n\n```typescript\nimport OpenAI from 'openai';\nimport { wrapOpenAI } from '@aivoralabs/agenttrail-openai';\nimport { JSONLFileWriter } from '@aivoralabs/agenttrail';\n\nconst originalClient = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });\n\nconst client = wrapOpenAI(originalClient, {\n  agentId: 'legal-ai',\n  storage: new JSONLFileWriter('./audit-logs'),\n  complianceConfig: { mode: 'strict' },\n});\n\n// Every call automatically generates a tamper-proof receipt\nconst result = await client.chat.completions.create({\n  model: 'gpt-4o',\n  messages: [{ role: 'user', content: 'Review contract clause 3.2' }],\n});\n\n// Receipt is already written to ./audit-logs/audit-log-legal-ai-2026-06.jsonl\nconsole.log(result.choices[0].message.content);\n```\n\n---\n\n## Compliance Modes\n\n### `strict` (default — production)\n\nFail-closed: if receipt generation fails, the agent does NOT respond.\n\n```typescript\nconst client = wrapOpenAI(openai, {\n  agentId: 'production-agent',\n  storage: new JSONLFileWriter('./audit-logs'),\n  complianceConfig: { mode: 'strict' },\n});\n```\n\n### `permissive` (development / QA)\n\nLogs warnings but allows the agent to respond even if receipt generation fails.\n\n```typescript\nconst client = wrapOpenAI(openai, {\n  agentId: 'dev-agent',\n  storage: new JSONLFileWriter('./audit-logs'),\n  complianceConfig: { mode: 'permissive' },\n});\n```\n\n---\n\n## Pre-flight Compliance Gate (Strict Mode)\n\nIn `strict` mode, AgentTrail performs a dry-run before calling the LLM:\n\n1. Validates the interaction structure\n2. Verifies the storage backend is writable\n3. Checks Ed25519 key availability\n\nIf the pre-flight fails, the agent call is blocked entirely — no request is sent to the LLM.\n\n---\n\n## Streaming Support\n\n```typescript\nconst stream = await client.chat.completions.create({\n  model: 'gpt-4o',\n  messages: [{ role: 'user', content: 'Summarize Article 12' }],\n  stream: true,\n});\n\nlet fullResponse = '';\nfor await (const chunk of stream) {\n  fullResponse += chunk.choices[0]?.delta?.content || '';\n  process.stdout.write(chunk.choices[0]?.delta?.content || '');\n}\n\n// When the stream completes, a receipt is automatically generated\n// with the full accumulated response.\n```\n\n---\n\n## OpenAI-Compatible APIs\n\nWorks with any provider that implements the OpenAI `/v1/chat/completions` endpoint:\n\n| Provider | Base URL | Status |\n|----------|----------|--------|\n| **OpenAI** | (default) | Fully supported |\n| **Groq** | `https://api.groq.com/openai/v1` | Tested in E2E suite |\n| **Cerebras** | `https://api.cerebras.ai/v1` | Compatible |\n| **Gemini** | Via OpenAI-compatible endpoint | Compatible |\n\n```typescript\nconst groqClient = wrapOpenAI(\n  new OpenAI({ baseURL: 'https://api.groq.com/openai/v1', apiKey: process.env.GROQ_API_KEY }),\n  { agentId: 'groq-agent', storage: new JSONLFileWriter('./audit-logs') }\n);\n```\n\n---\n\n## API Reference\n\n### `wrapOpenAI(client, options)`\n\n| Option | Type | Required | Description |\n|--------|------|----------|-------------|\n| `agentId` | `string` | Yes | Agent identifier |\n| `storage` | `IReceiptStorage` | Yes | Receipt storage backend |\n| `complianceConfig.mode` | `'strict' \\| 'permissive'` | No | Default: `'strict'` |\n| `complianceConfig.redactPII` | `boolean` | No | Enable PII redaction |\n| `keyStore` | `IKeyStore` | No | Ed25519 key management |\n\nReturns a proxy of the original OpenAI client with the same interface.\n\n---\n\n## Links\n\n- 🌐 [agenttrail.aivoralabs.org](https://agenttrail.aivoralabs.org)\n- 🐙 [GitHub: AiVoraLabs/agenttrail](https://github.com/AiVoraLabs/agenttrail)\n- 📄 [EU AI Act Article 12](https://artificialintelligenceact.eu/article/12/)\n\n**License:** MIT\n","readmeFilename":"README.md"}