{"_id":"@holokai/holo-provider-openai","_rev":"28-d11b7bdfa930f0641fb00252495593c0","name":"@holokai/holo-provider-openai","dist-tags":{"latest":"1.9.0"},"versions":{"0.1.0":{"name":"@holokai/holo-provider-openai","version":"0.1.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@0.1.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"5bf4e7835e4c38499fb9aefcba8ce0e2231795a7","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-0.1.0.tgz","fileCount":103,"integrity":"sha512-IbncAuI7AZcLik6+PC/tdwZhkAqd7xA42P9zIBccZnzVVDYBlZZCVmuOZxReB2CMJ4920lBjaetgpDKoPlQSOQ==","signatures":[{"sig":"MEUCIQDRBeUmJ+GOwK4btO29+HLlhlElULVK+cNcJJ8pLbzKqwIgau1IC4Dq3BhqdtWAU9hlVexbJz8PR4INM9jG9e4u0Lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218696},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4613bb02309cc54eef4585048ba95dd0c0f8ecee","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_0.1.0_1770155643350_0.18761529134873034","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@holokai/holo-provider-openai","version":"0.1.1","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@0.1.1","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"95d4f3526856f336053620e88acc2ee0df3dae2c","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-0.1.1.tgz","fileCount":103,"integrity":"sha512-s+k+t1aacMNTJ6mnofb0voQIJheO7loPLt+YqZgrM2kFyAbrgctow3I7TZ4qbmTl1alUqSfrjoHbalaR60gtxg==","signatures":[{"sig":"MEYCIQDgZ3fixNhU/C+6L8wyertGb4lrn4hvqIEldjv2VG6iPQIhAJWUpMWuSo3xydEsOTNM3FWw/qfWswvo0fx9DvUPw4vF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215970},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7bffbfb6fea6b4c644e142f71e3550b5b0d59da5","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_0.1.1_1770175869059_0.6397883547842713","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@holokai/holo-provider-openai","version":"0.1.3","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@0.1.3","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"f07c5e5adf95d7cdefe231fd7e3e0afdeded53d7","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-0.1.3.tgz","fileCount":103,"integrity":"sha512-dhKwsJsIC3EW0NNc3mpJqfeJIAM6mSg37EQ2XBUXwk95miRzVPkkK6KDu2WD/40uN9T8NV6wsaL2jCJlykaanA==","signatures":[{"sig":"MEQCIGG1AoID7O4/w2KmJJ7INqZ93UvHxmrXPhFzPfJ9+w4fAiBWhpWsKuy+8w5n1T4T7NAiKiy5n796Z+mB1IG9OpV3TA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":216459},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"612696fd5ce586f105b39b3c0db0fa71f962e901","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_0.1.3_1770222586303_0.5251826986995589","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@holokai/holo-provider-openai","version":"0.1.4","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@0.1.4","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"cd855b5cf6724e20cf75b624d6ce901dc3a1c0d3","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-0.1.4.tgz","fileCount":103,"integrity":"sha512-RzhpgkVtFj+lA5VSXrn59WKrxatZ/J0kbKnkKkMygEkYAJ+zLqglf1v6gYVov/KT0FZskfdSEATmIOg2HSBtLA==","signatures":[{"sig":"MEUCIQCMcNrbou8nG23Btgvb8draw1V4MifuF758FCG49hXYiwIgYxmn5LClasAshbWimp2LW4UTe0S9LKT9+AGOXatzRsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217249},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9e852cdb6f982a30842d0b69dff4e87d4e89fecb","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_0.1.4_1771886605808_0.4611209962087506","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@holokai/holo-provider-openai","version":"1.0.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.0.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"2dfaa25933bb62fb12d59b34ca9aea0621377c96","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.0.0.tgz","fileCount":103,"integrity":"sha512-xU5Mprq5Cn6U6OyrgcsyLfbr/w+mnEjf3ug3w6ABKQYBVLOwG8X1J8yz3RsGj4Fon8U5zcTnhu+CUPvccqYjZQ==","signatures":[{"sig":"MEUCIEIg+Nu1HZjbsMpFF9Y1F+VHm+NLDOhxs3j8e9pE1I+aAiEAn1j/du5V0Np4C7vOqlX50MWaCtqOHIkoTUw/g4ISVt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215177},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"23c2a28b0b51c934d0c3455155ad53a19aacbced","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.0.0_1772552442016_0.3983238697010829","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@holokai/holo-provider-openai","version":"1.1.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.1.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"891f2b7e55db5c55482bc12be69dd9bfb7d4bc94","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.1.0.tgz","fileCount":103,"integrity":"sha512-NwcgleNNV+tzqSq8CMnQBTf6YGcMz9pgmqBXQF87Zm0RcF2KSVxY66yd5yC6ZoEu3khiEfR0zrD9xikEVI9eSQ==","signatures":[{"sig":"MEUCIGPHsoFf2kUNz2NsmE4QA647ESRSAN85f67n/NXisX2yAiEA9pVZKd0ZYXk8o0oDOXql8IpRWD/myPkQu4A6HdReaOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223456},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fe6cad64e6d077b346429f22747ec6a2df6479b6","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.1.0_1773099814959_0.05377343440232196","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@holokai/holo-provider-openai","version":"1.2.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.2.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"91462e2316051a7d8832ba956126d15ce56e7c0e","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.2.0.tgz","fileCount":103,"integrity":"sha512-kdNekW5Yn8LH5WnlTwIGA5hVyNIRrMrhPqtGJ57WheTNAUM53ifHVOAdd98/wQGxAReqa2iTsf6/5OlOMjgZ9A==","signatures":[{"sig":"MEYCIQD+K2wO0bUxRLNKovPaRn8XMdYZfgr7ZBo93EhfxtJ9swIhANCFBqTvAOkVGof0X/eh/SBpy3YKynGPp3BYRZLzZehg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"0f5916bc2964e08afeee6e985b621cf574468640","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.2.0_1773296195773_0.8112950561374299","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@holokai/holo-provider-openai","version":"1.2.1","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.2.1","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"1f35c60a51f9659c4b140f01eae2755a27a0db72","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.2.1.tgz","fileCount":103,"integrity":"sha512-A6JuRGEhrV6D3++KX1N7xgzqk9s7hjkA8hl4mJlrHnGZsA90nUaYYW9lj1VcxntbmQv5r7YN1bwMo/njPyudvQ==","signatures":[{"sig":"MEUCIF1nX1Kcpl1O1Tc5RbG65yG6pFc3spimTwVvBcTlJJJbAiEA8kn2GkGFj/TAybpgHGAO0Sa8swWCnmdvZ9pB5RrrdKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"148a736f6bb4078eafdef71dff396444ac9ea688","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.2.1_1773323386562_0.9418368074365364","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@holokai/holo-provider-openai","version":"1.2.2","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.2.2","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"c9ae9bd0d00ec9e27516f5540a32d6e114dfacf6","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.2.2.tgz","fileCount":107,"integrity":"sha512-cOiugq+z2Gic7w65nVKg0Ls3NMe1CKsr5Rvu9hTQsUEZkuXLJ8WZXjY4ImVRuXnEGygrNHt0Wk0a+ipKYyTQ+g==","signatures":[{"sig":"MEQCIF6M+es5tP6zAh4rGM95In6/elcYFioJnqF3byx4RWWGAiBC9y67jjpp4IEIlfImL69PZPs1a737Cg31jepSqMJ7Zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275007},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"05abe80e882d85a92db4e814b9807a821789a1f6","scripts":{"lint":"eslint src","test":"jest","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","test:watch":"jest --watch","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build","test:integration":"jest tests/integration"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.11"},"peerDependencies":{"@holokai/sdk":"^1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.2.2_1773441690307_0.551979427315284","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@holokai/holo-provider-openai","version":"1.3.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.3.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holokai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holokai/holo-provider-openai/issues"},"dist":{"shasum":"092c2f575edcd9d347d51aff725adbf31ce1e128","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.3.0.tgz","fileCount":107,"integrity":"sha512-6hFgqGpupI6XgUIANZIe2sFXjd6+/X4BzG77+tOr/Ygl5MMF6LQFt+fY5oBgJXwqovjriKA4CVv2d0zlq9hQrg==","signatures":[{"sig":"MEUCIQC+t/n+xXzbeZAA3eA/eTAoit38jX9DTNDVjL9vNR1fpAIgP6hyesONQchrfvge6ZZS48wQ1BEwo62SNn4Db/2rx98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278633},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"056c6449f6d6add3ee5b761e0a7b62c9adc5e42b","scripts":{"lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holokai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/test-utils":"*"},"peerDependencies":{"@holokai/sdk":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.3.0_1773673035062_0.2529848700738051","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@holokai/holo-provider-openai","version":"1.3.1","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.3.1","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"0a94e2f03a171c24fb3a9d8da125e2f59f0da5b1","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.3.1.tgz","fileCount":103,"integrity":"sha512-DkQzIa34AJ4T0sGOHMvfottLXprZMbARA1SgEdraEv0uRpHzX2dbXECxNTrEaHuALBzQvpoJQ42m5pH2mvGO/w==","signatures":[{"sig":"MEUCIQCLBl9a+Cm1Qrdt7sxNLOnH4Nhxh3k3gDAM87VV0G80hAIgCZAhbHApTq+eK8osELW/9/W+qZthoigmpDrTqM/RlW4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":267570},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"ff7aa9e1881309c67b4ed102dd7ced08c2cf87b4","scripts":{"lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/test-utils":"*"},"peerDependencies":{"@holokai/sdk":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.3.1_1773945178119_0.5667925128095184","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@holokai/holo-provider-openai","version":"1.4.1","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.4.1","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"5d6e294ef26196691eb3789059559fdaa0c4199e","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.4.1.tgz","fileCount":103,"integrity":"sha512-diM53M9yFuUK1OaIsIeUxkP/QtrawRaw3EJLNjjmCCMRWa7W3IO30e/gBvzcS4B8BnpyXyX49zg72tmHanCMoA==","signatures":[{"sig":"MEUCIGaAaco3QBACCsfdm7bu5gb937xdkDubt12ZeSATJDvwAiEAm8GVHcVRa7zjdgoff+b/RREf8a3yiYEFcYIsQL+OoYY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"c3e718fc36e5740bcbdec3429cd631f8154f3497","scripts":{"lint":"eslint src","test":"vitest run","build":"tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/holo-test":"*"},"peerDependencies":{"@holokai/holo-sdk":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.4.1_1774972748972_0.8751597247020797","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@holokai/holo-provider-openai","version":"1.4.4","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.4.4","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"e647b6ed0c6647c05f6635061ba40ae33eef9832","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.4.4.tgz","fileCount":107,"integrity":"sha512-mkJ6nh2BN8aQZcCdSIagvvrmkVC+ul1mmBvr7ODt6XfEiPaWn8G3s0JikQvXi/PgLtEdzEZ5hyCvztAyTWpNxw==","signatures":[{"sig":"MEYCIQDX866iP0n6CNMcvTFdVBnqkAX+7uWE2mg4yXkVzeP4zgIhAITlsYNbOd1jaaDwodbbe8ArFW/1FUk4j8YGBtNPLIbj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277421},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d0e21656f278a44f9f49d066fd9510b2d3f95594","scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/holo-test":"*"},"peerDependencies":{"@holokai/holo-sdk":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.4.4_1775569954366_0.8465782368026586","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@holokai/holo-provider-openai","version":"1.4.5","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.4.5","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"9385a10ac7ca9f11e901a1acbac9f18002cb4022","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.4.5.tgz","fileCount":107,"integrity":"sha512-zhbGQddZis/lUHwlgK36usCTG7n2bYjqjhh5dvd1h+D9HsvA6ncqP0iL5Jrd/gZm/dhlM6wty4oJ1xHEPxrmqw==","signatures":[{"sig":"MEYCIQCzm6rf4yrSVqeF2YF3cE7zLuwubXM8OzmEovp0+EMXNAIhAJqkH3aIudiDDwJIBmhYcWNjzaPg7zGgsz8pjsn7KwC3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":280095},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f8c4867bf1589586c84b517991ed87c97c75c5e7","scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"holoPlugin":{"type":"PROVIDER"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.6.4","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/holo-test":"*"},"peerDependencies":{"@holokai/holo-sdk":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.4.5_1776985835746_0.26994983771444914","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@holokai/holo-provider-openai","version":"1.5.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.5.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"25a37c38209afe996fbd071162ffd41622c2c3af","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.5.0.tgz","fileCount":115,"integrity":"sha512-PjQWbms1lUxAY+Hm/YTQ7gPEFBQt1fIMOTrTxahyNWfnGQ1RCYUb/z1unl/eNd8RvpLnkt1FZIfb/Pt6DPQ28Q==","signatures":[{"sig":"MEUCIQDrq91CRw+r7tuFAMdOc1xdcWe4pS9l57o+YND/ZAAXVwIgfFGv0qnFNfEOKbZu/mkuwD5Z8iy2fUxetOWWz1/z2SY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363515},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6937c83e6b0e3e0615d3ff25925f84608e9a0db5","scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"holoPlugin":{"type":"PROVIDER"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.14.1","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/holo-test":"*"},"peerDependencies":{"@holokai/holo-sdk":"^1.2.2"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.5.0_1779201243229_0.24663818743215038","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"@holokai/holo-provider-openai","version":"1.5.1","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.5.1","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"enosar-holokai","email":"erik.nosar@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"1f8185fac8b80420ce5bb7ca7bcf6c013e6e6381","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.5.1.tgz","fileCount":115,"integrity":"sha512-PYaXlyFW5TkBxzaMTI89EB5493+zgDnhtvNlY85xmm7IO+c6FoG8aTaDIeBlY89OTYzqcg3SSeI2wvIMIim0bQ==","signatures":[{"sig":"MEUCIBy8V+1Ul2vNnSoVGyWZnCW4/w5uMohHHA1JAKSEHT5LAiEAk/lcE1UuVqS6mHg+G2tXADuuQgmeGY9tXzymaqMFB5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":368744},"main":"./dist/index.js","type":"module","_from":"file:holokai-holo-provider-openai-1.5.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build && tsc-alias --resolve-full-paths -p tsconfig.json","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"_resolved":"/private/var/folders/18/1tqkfg2n4tnc3ymg9y8nj1m00000gn/T/fd80422cc4e155263f1099bf056a3ac1/holokai-holo-provider-openai-1.5.1.tgz","_integrity":"sha512-PYaXlyFW5TkBxzaMTI89EB5493+zgDnhtvNlY85xmm7IO+c6FoG8aTaDIeBlY89OTYzqcg3SSeI2wvIMIim0bQ==","holoPlugin":{"type":"PROVIDER"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.14.1","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.17.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.11","@holokai/holo-test":"1.5.1"},"peerDependencies":{"@holokai/holo-sdk":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.5.1_1779236714217_0.6714398397678298","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@holokai/holo-provider-openai","version":"1.5.2","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.5.2","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"3baa7dc52ac827062f2cd4446da45d3e5b9de01f","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.5.2.tgz","fileCount":115,"integrity":"sha512-BOsaBxz6QND54NMiPpgAimS8AdXI9uFGgJcl1v6+8g9oOoMYiBhoCmlHxqDOOoPvmlgskt6IZ4mszkr4fnxcvw==","signatures":[{"sig":"MEUCIQCxj9YVAXmcgatRFAzaoMrRYTVeUGg//vw6nribCpJWwgIgctJROiygVeA9eaBTTzgO0Alcbb5tI/YebMH9GbMTvsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":371341},"main":"./dist/index.js","type":"module","_from":"file:holokai-holo-provider-openai-1.5.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build && tsc-alias --resolve-full-paths -p tsconfig.json","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"_resolved":"/private/var/folders/18/1tqkfg2n4tnc3ymg9y8nj1m00000gn/T/d7b9f2da402917e3c3bda86d1de2e6fd/holokai-holo-provider-openai-1.5.2.tgz","_integrity":"sha512-BOsaBxz6QND54NMiPpgAimS8AdXI9uFGgJcl1v6+8g9oOoMYiBhoCmlHxqDOOoPvmlgskt6IZ4mszkr4fnxcvw==","holoPlugin":{"type":"PROVIDER"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.16.0","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.41.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^24.0.11","@holokai/holo-test":"1.5.1"},"peerDependencies":{"@holokai/holo-sdk":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.5.2_1780955030550_0.4000058768653052","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@holokai/holo-provider-openai","version":"1.5.3","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.5.3","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"a5c9682896e29e832f7c129d29e95b1a8fae613d","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.5.3.tgz","fileCount":115,"integrity":"sha512-r9Ke7vwY5DAnOtEG5eXU2CFMnQpCzRbXEQd1Xe5yW3W74tPsSt/6gdIlKnA9+lp+QaqEKUeWXUWllSBUi+PjBw==","signatures":[{"sig":"MEYCIQDAXmcWIz4QSqEoNB4ijPrOHw2kM1vo8+Tttu57ahWRJgIhALqmojf6DrciXIuSar0gnvW1fqqKI7ZeaPTiviNlAQAK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385885},"main":"./dist/index.js","type":"module","_from":"file:holokai-holo-provider-openai-1.5.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build && tsc-alias --resolve-full-paths -p tsconfig.json","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch"},"_npmUser":{"name":"duanamo","email":"alex.duan@holokai.ai"},"_resolved":"/private/var/folders/18/1tqkfg2n4tnc3ymg9y8nj1m00000gn/T/8f0237c372b8854dd7a584c550986562/holokai-holo-provider-openai-1.5.3.tgz","_integrity":"sha512-r9Ke7vwY5DAnOtEG5eXU2CFMnQpCzRbXEQd1Xe5yW3W74tPsSt/6gdIlKnA9+lp+QaqEKUeWXUWllSBUi+PjBw==","holoPlugin":{"type":"PROVIDER"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.16.0","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.2.1","dependencies":{"openai":"^6.47.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.1","@holokai/holo-test":"1.5.3"},"peerDependencies":{"@holokai/holo-sdk":"^1.5.3"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.5.3_1784754022429_0.08086848696701332","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@holokai/holo-provider-openai","version":"1.6.0","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"author":{"name":"Holokai"},"license":"MIT","_id":"@holokai/holo-provider-openai@1.6.0","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"vcarr","email":"veronica.carr@holokai.ai"},{"name":"peeceebee","email":"peter.baxter@holokai.ai"},{"name":"jeromeajot","email":"jerome.ajot@holokai.ai"}],"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"dist":{"shasum":"9809b1e681fd011a8b5cd11dc116f9da16ef7b8d","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.6.0.tgz","fileCount":115,"integrity":"sha512-IsVQS2Ovxy5lFEfMlQ3YFZAEwsu8rJ0IClP5Ov4inwXt7IsYCWXwq1+5Yz0ojnonSYLc+6X9KcOhNhUGLrrgNQ==","signatures":[{"sig":"MEYCIQCXeS0vftixIW+93YoX1V1WUqKw9VHExVfMp68GNTpy+QIhANi4h3THQu5aE6kYkhr+FpORsYZhqx2EOAuzRJxqzcvt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404037},"main":"./dist/index.js","type":"module","_from":"file:holokai-holo-provider-openai-1.6.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint src","test":"vitest run","build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build && tsc-alias --resolve-full-paths -p tsconfig.json","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","build:watch":"tsc --build --watch"},"_npmUser":{"name":"davinion","email":"david.kang@holokai.ai"},"_resolved":"/private/var/folders/kf/63vb5v3j5cxfp1s5y2zcvkbc0000gp/T/6aa0a83caa1f5b7d3b2660bca2f6622d/holokai-holo-provider-openai-1.6.0.tgz","_integrity":"sha512-IsVQS2Ovxy5lFEfMlQ3YFZAEwsu8rJ0IClP5Ov4inwXt7IsYCWXwq1+5Yz0ojnonSYLc+6X9KcOhNhUGLrrgNQ==","holoPlugin":{"type":"PROVIDER"},"repository":{"url":"git+https://github.com/holok-ai/holo-provider-openai.git","type":"git"},"_npmVersion":"11.9.0","description":"OpenAI provider plugin for Holo LLM Gateway","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","dependencies":{"openai":"^6.47.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^26.1.1","@holokai/holo-test":"1.5.3"},"peerDependencies":{"@holokai/holo-sdk":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/holo-provider-openai_1.6.0_1786470128028_0.015389326738198816","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@holokai/holo-provider-openai","version":"1.9.0","type":"module","description":"OpenAI provider plugin for Holo LLM Gateway","author":{"name":"Holokai"},"license":"MIT","main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/holok-ai/holo-provider-openai.git"},"bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"homepage":"https://github.com/holok-ai/holo-provider-openai#readme","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"},"./package.json":"./package.json"},"sideEffects":false,"peerDependencies":{"@holokai/holo-sdk":"^1.9.0"},"dependencies":{"openai":"^6.47.0"},"devDependencies":{"@types/node":"^26.1.1","typescript":"^6.0.3","@holokai/holo-test":"1.9.0"},"holoPlugin":{"type":"PROVIDER"},"scripts":{"build":"node ../../scripts/generate-version.mjs src/version.ts && tsc --build && tsc-alias --resolve-full-paths -p tsconfig.json","build:watch":"tsc --build --watch","clean":"rm -rf dist tsconfig.tsbuildinfo","type-check":"tsc --noEmit","lint":"eslint src","test":"vitest run"},"_id":"@holokai/holo-provider-openai@1.9.0","_integrity":"sha512-79BeECC3heTxd8OQMDRPtwsqeXGakaPZVR9rhzA3dAn/WyEaR22KQMtaPSiM4cvmHOCYSzQiS2qfJj/Mko0sbA==","_resolved":"/tmp/cdaa2155d0fefe1066e73e26b7a6c077/holokai-holo-provider-openai-1.9.0.tgz","_from":"file:holokai-holo-provider-openai-1.9.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-79BeECC3heTxd8OQMDRPtwsqeXGakaPZVR9rhzA3dAn/WyEaR22KQMtaPSiM4cvmHOCYSzQiS2qfJj/Mko0sbA==","shasum":"977cb2e3e2d4966027a681743a5552b6ed44cb3c","tarball":"https://registry.npmjs.org/@holokai/holo-provider-openai/-/holo-provider-openai-1.9.0.tgz","fileCount":115,"unpackedSize":420675,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDbBy8oKFNLqE3UsYg/s4Ebdsv8A2R9GQyhVOLS5cfa0wIgLaAG76uuy6/crjZ5nk83YqGy4IzOjmzyAELbcfiJRwA="}]},"_npmUser":{"name":"davinion","email":"david.kang@holokai.ai"},"directories":{},"maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"gshuster","email":"gregory.shuster@holokai.ai"},{"name":"peterscott","email":"peter.scott@holokai.ai"},{"name":"vcarr","email":"veronica.carr@holokai.ai"},{"name":"peeceebee","email":"peter.baxter@holokai.ai"},{"name":"jeromeajot","email":"jerome.ajot@holokai.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/holo-provider-openai_1.9.0_1789257015217_0.6016876339768606"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-03T21:54:03.243Z","modified":"2026-09-12T23:50:15.522Z","0.1.0":"2026-02-03T21:54:03.497Z","0.1.1":"2026-02-04T03:31:09.221Z","0.1.3":"2026-02-04T16:29:46.440Z","0.1.4":"2026-02-23T22:43:25.949Z","1.0.0":"2026-03-03T15:40:42.186Z","1.1.0":"2026-03-09T23:43:35.185Z","1.2.0":"2026-03-12T06:16:35.951Z","1.2.1":"2026-03-12T13:49:46.799Z","1.2.2":"2026-03-13T22:41:30.456Z","1.3.0":"2026-03-16T14:57:15.216Z","1.3.1":"2026-03-19T18:32:58.284Z","1.4.1":"2026-03-31T15:59:09.132Z","1.4.4":"2026-04-07T13:52:34.527Z","1.4.5":"2026-04-23T23:10:35.894Z","1.5.0":"2026-05-19T14:34:03.365Z","1.5.1":"2026-05-20T00:25:14.481Z","1.5.2":"2026-06-08T21:43:50.709Z","1.5.3":"2026-07-22T21:00:22.653Z","1.6.0":"2026-08-11T17:42:08.199Z","1.9.0":"2026-09-12T23:50:15.356Z"},"bugs":{"url":"https://github.com/holok-ai/holo-provider-openai/issues"},"author":{"name":"Holokai"},"license":"MIT","homepage":"https://github.com/holok-ai/holo-provider-openai#readme","keywords":["holokai","holo","plugin","provider","openai","ai","llm"],"repository":{"type":"git","url":"git+https://github.com/holok-ai/holo-provider-openai.git"},"description":"OpenAI provider plugin for Holo LLM Gateway","maintainers":[{"name":"duanamo","email":"alex.duan@holokai.ai"},{"name":"davinion","email":"david.kang@holokai.ai"},{"name":"gshuster","email":"gregory.shuster@holokai.ai"},{"name":"peterscott","email":"peter.scott@holokai.ai"},{"name":"vcarr","email":"veronica.carr@holokai.ai"},{"name":"peeceebee","email":"peter.baxter@holokai.ai"},{"name":"jeromeajot","email":"jerome.ajot@holokai.ai"}],"readme":"# @holokai/holo-provider-openai\n\n> **Official OpenAI provider plugin for Holo LLM Gateway**\n\n[![npm version](https://img.shields.io/npm/v/@holokai/holo-provider-openai.svg)](https://www.npmjs.com/package/@holokai/holo-provider-openai)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## Overview\n\nThe OpenAI provider plugin enables Holo to communicate with OpenAI's Chat Completions and Responses APIs through the\nuniversal Holo format. This plugin is part of the migration from the monolithic provider architecture to a plugin-based\nsystem, providing complete bidirectional translation between OpenAI's native APIs and the portable Holo format.\n\n### Key Features\n\n- ✅ **Full Holo SDK Integration** - Uses `@holokai/holo-sdk` types for strict type safety\n- ✅ **Bidirectional Translation** - OpenAI ↔ Holo format with lossless core fields\n- ✅ **Dual API Support** - Both Chat Completions and Responses APIs\n- ✅ **Streaming Support** - Delta-based streaming with proper chunk handling\n- ✅ **Tool Calling** - Complete function calling support with direct mapping\n- ✅ **Vision/Multimodal** - Image support via URLs and base64 data URIs\n- ✅ **Structured Outputs** - JSON schema validation and JSON object mode\n- ✅ **Multi-Choice Support** - OpenAI-specific `n` parameter for multiple completions\n- ✅ **Plugin Architecture** - Auto-discovered, hot-reloadable, independently versioned\n\n---\n\n## Installation\n\n```bash\npnpm add @holokai/holo-provider-openai\n```\n\n### Peer Dependencies\n\nThis plugin requires:\n\n- `@holokai/holo-sdk` ^0.1.0 - Holo universal format types and plugin contracts\n- `openai` ^6.9.1 - Official OpenAI SDK\n\n---\n\n## Quick Start\n\n### Automatic Discovery\n\nWhen installed in a Holo worker environment, this plugin is automatically discovered and loaded by the plugin system. No\nmanual registration required.\n\n### Configuration\n\nAdd a provider configuration to your Holo deployment:\n\n```json\n{\n  \"id\": \"openai-primary\",\n  \"provider_type\": \"openai\",\n  \"plugin_id\": \"@holokai/holo-provider-openai\",\n  \"api_key\": \"${OPENAI_API_KEY}\",\n  \"model\": \"gpt-4o\",\n  \"config\": {\n    \"defaultModel\": \"gpt-4o\",\n    \"timeoutMs\": 60000,\n    \"maxRetries\": 2,\n    \"enableVision\": true\n  }\n}\n```\n\n### Usage in Code\n\n```typescript\nimport {HoloRequest, HoloResponse} from '@holokai/holo-sdk';\n\nconst request: HoloRequest = {\n    model: 'gpt-4o',\n    messages: [\n        {role: 'user', content: 'Explain quantum computing briefly.'}\n    ],\n    max_tokens: 1000,\n    temperature: 0.7\n};\n\n// Plugin handles translation automatically\nconst response: HoloResponse = await holoClient.chat(request);\n```\n\n---\n\n## Migration from Monolithic Architecture\n\n### What Changed\n\nThis plugin represents the extraction of OpenAI provider logic from the monolithic `src/providers/openai/` codebase into\na standalone, independently versioned package.\n\n**Before** (Monolithic):\n\n```\nsrc/providers/openai/\n├── openai.translator.ts\n├── translators/\n│   ├── chatcompletion/\n│   └── responses/\n├── services/\n├── streaming/\n└── types/\n```\n\n**After** (Plugin):\n\n```\n@holokai/holo-provider-openai\n├── src/\n│   ├── plugin.ts               # Plugin entrypoint\n│   ├── manifest.ts             # Plugin metadata\n│   ├── openai.provider.ts      # Provider implementation\n│   └── translators/            # Translation logic (preserved)\n└── package.json\n```\n\n### Migration Benefits\n\n1. **Independent Versioning** - Update OpenAI support without core releases\n2. **Hot Reload** - Deploy new OpenAI versions without downtime\n3. **Type Safety** - Strict SDK types eliminate `Record<string, unknown>`\n4. **Reduced Coupling** - Plugin contracts enforce clean boundaries\n5. **Marketplace Ready** - Can be published to NPM independently\n\n### Breaking Changes\n\n- **Import paths changed**: Use `@holokai/holo-sdk` for types instead of `../../types`\n- **Configuration schema**: Now validated via plugin manifest\n- **Dependency injection**: Uses plugin container instead of core DI\n\n---\n\n## Architecture\n\n### Plugin Structure\n\n```\n@holokai/holo-provider-openai/\n├── src/\n│   ├── plugin.ts                                   # ProviderPlugin implementation\n│   ├── manifest.ts                                 # Plugin metadata & config schema\n│   ├── openai.provider.ts                          # Core provider logic with routing\n│   ├── openai.translator.ts                        # Main translator facade\n│   ├── translators/\n│   │   ├── openai.chatcompletion.request.translator.ts\n│   │   ├── openai.chatcompletion.response.translator.ts\n│   │   ├── openai.responses.request.translator.ts\n│   │   ├── openai.message.translator.ts\n│   │   ├── openai.content.translator.ts\n│   │   ├── openai.tool.translator.ts\n│   │   └── openai.usage.translator.ts\n│   ├── streaming/\n│   │   ├── openai.stream.translator.ts             # Orchestrator\n│   │   ├── openai.message.start.translator.ts\n│   │   ├── openai.message.delta.translator.ts\n│   │   ├── openai.message.stop.translator.ts\n│   │   └── openai.content.delta.translator.ts\n│   ├── services/\n│   │   ├── openai.chatcompletions.service.ts       # Chat Completions logic\n│   │   └── openai.responses.service.ts             # Responses API logic\n│   ├── types/\n│   │   ├── chatcompletion.types.ts                 # 60 types\n│   │   └── responses.ts                            # 168 types\n│   └── validators/\n│       ├── openai.chatcompletion.validators.ts     # 50 validators\n│       └── openai.responses.validators.ts          # 150 validators\n└── package.json\n```\n\n### Translation Flow\n\n```\n┌─────────────────┐\n│  Holo Request   │\n│  (SDK types)    │\n└────────┬────────┘\n         │\n         ↓\n┌─────────────────────────┐\n│ OpenAIRequestTranslator │\n│  - Maps Holo → OpenAI   │\n│  - Wraps tool format    │\n│  - Renames fields       │\n└────────┬────────────────┘\n         │\n         ↓\n┌─────────────────┐\n│  OpenAI API     │\n│  (Chat/Response)│\n└────────┬────────┘\n         │\n         ↓\n┌──────────────────────────┐\n│ OpenAIResponseTranslator │\n│  - Maps OpenAI → Holo    │\n│  - Converts timestamps   │\n│  - Extracts from choices │\n└────────┬─────────────────┘\n         │\n         ↓\n┌─────────────────┐\n│  Holo Response  │\n│  (SDK types)    │\n└─────────────────┘\n```\n\n### Dual API Support\n\nThe provider intelligently routes requests based on structure:\n\n```typescript\nprivate\nisResponsesAPIRequest(payload\n:\nProviderRequest\n):\npayload\nis\nOpenAIResponseCreateParams\n{\n    return 'input' in payload && !('messages' in payload);\n}\n```\n\n- **Chat Completions API**: Has `messages` field (most common)\n- **Responses API**: Has `input` field instead of `messages`\n\n---\n\n## Holo Format Mapping\n\nThis plugin implements the official Holo format mappings as documented in the SDK.\n\n### Request Mapping: Holo → OpenAI (Chat Completions)\n\n| Holo Field                            | OpenAI Field                                | Transformation       | Notes             |\n|---------------------------------------|---------------------------------------------|----------------------|-------------------|\n| **Direct 1:1**                        |                                             |                      |                   |\n| `model`                               | `model`                                     | Direct               | Required          |\n| `temperature`                         | `temperature`                               | Direct               | 0-2 for OpenAI    |\n| `top_p`                               | `top_p`                                     | Direct               | Optional          |\n| `stream`                              | `stream`                                    | Direct               | Optional          |\n| `max_tokens`                          | `max_tokens`                                | Direct               | Optional          |\n| `stop_sequences`                      | `stop`                                      | Rename               | Array format      |\n| `frequency_penalty`                   | `frequency_penalty`                         | Direct               | Optional          |\n| `presence_penalty`                    | `presence_penalty`                          | Direct               | Optional          |\n| `seed`                                | `seed`                                      | Direct               | Optional          |\n| **Structure Transforms**              |                                             |                      |                   |\n| `system` (string)                     | First message with `role:'system'`          | Inject as message    | Optional          |\n| `messages`                            | `messages`                                  | Direct               | Array of messages |\n| `metadata.user_id`                    | `user`                                      | Promote to top-level | Optional          |\n| `tools[].parameters`                  | `tools[].function.parameters`               | Wrap in function     | JSON Schema       |\n| `tool_choice.type: 'specific'`        | `{type: 'function', function: {name}}`      | Wrap with name       | Specific tool     |\n| `tool_choice.type: 'required'`        | `'required'`                                | Map type             | Any tool required |\n| `tool_choice.type: 'auto'`            | `'auto'`                                    | Direct               | Default           |\n| `tool_choice.type: 'none'`            | `'none'`                                    | Direct               | Disable tools     |\n| `response_format.type: 'json_object'` | `{type: 'json_object'}`                     | Wrap                 | JSON mode         |\n| `response_format.type: 'json_schema'` | `{type: 'json_schema', json_schema: {...}}` | Nest schema          | Structured output |\n\n**OpenAI-Specific Fields** (not in Holo core):\n\n- `n` - Number of choices (handled via multi-choice streaming)\n- `logprobs` - Token probabilities (not in Holo spec)\n- `logit_bias` - Token bias (not in Holo spec)\n- `parallel_tool_calls` - Allow parallel execution (not in Holo spec)\n- `service_tier` - Priority tier (optional in Holo)\n\n### Request Mapping: Holo → OpenAI (Responses API)\n\n| Holo Field               | OpenAI Field                     | Transformation       | Notes                |\n|--------------------------|----------------------------------|----------------------|----------------------|\n| **Direct 1:1**           |                                  |                      |                      |\n| `model`                  | `model`                          | Direct               | Required             |\n| `temperature`            | `temperature`                    | Direct               | Optional             |\n| `top_p`                  | `top_p`                          | Direct               | Optional             |\n| `stream`                 | `stream`                         | Direct               | Optional             |\n| **Structure Transforms** |                                  |                      |                      |\n| `messages`               | `input`                          | Rename field         | Different field name |\n| `system` (string)        | `input[0]` with `role: 'system'` | Inject as first item | Optional             |\n| `max_tokens`             | `max_output_tokens`              | Rename               | Optional             |\n| `tools`                  | `tools`                          | Transform structure  | See Tool Mapping     |\n| `tool_choice`            | `tool_choice`                    | Similar to Chat      | Optional             |\n| `metadata.user_id`       | `metadata.user_id`               | Nest in metadata     | Optional             |\n\n**Note**: Responses API uses `input` instead of `messages` and `max_output_tokens` instead of `max_tokens`.\n\n### Response Mapping: OpenAI → Holo\n\n| OpenAI Field                                | Holo Field                | Transformation       | Notes                  |\n|---------------------------------------------|---------------------------|----------------------|------------------------|\n| **Direct 1:1**                              |                           |                      |                        |\n| `id`                                        | `id`                      | Direct               | Always present         |\n| `model`                                     | `model`                   | Direct               | Always present         |\n| `choices[0].message.role`                   | `messages[0].role`        | Extract from choices | Always 'assistant'     |\n| `choices[0].message.content`                | `messages[0].content`     | Extract from choices | Text content           |\n| `choices[0].message.tool_calls`             | `messages[0].tool_calls`  | Extract from choices | If present             |\n| **Structure Transforms**                    |                           |                      |                        |\n| `created`                                   | `created`                 | Multiply by 1000     | Seconds → milliseconds |\n| `choices[0].finish_reason`                  | `finish_reason`           | Map codes            | See table below        |\n| `usage.prompt_tokens`                       | `usage.input_tokens`      | Rename               | Optional               |\n| `usage.completion_tokens`                   | `usage.output_tokens`     | Rename               | Optional               |\n| `usage.prompt_tokens_details.cached_tokens` | `usage.cache_read_tokens` | Rename               | Optional               |\n| Computed                                    | `usage.total_tokens`      | `input + output`     | Derived                |\n| `service_tier`                              | `service_tier`            | Direct               | Top-level field        |\n\n**Timestamp Conversion**:\n\n- OpenAI: Unix timestamp in seconds (`number`)\n- Holo: Milliseconds since epoch (`number`)\n- Conversion: `created * 1000`\n\n**Finish Reason Mapping**:\n\n| OpenAI `finish_reason` | Holo `finish_reason` | Notes                   |\n|------------------------|----------------------|-------------------------|\n| `'stop'`               | `'stop'`             | Natural completion      |\n| `'length'`             | `'length'`           | Hit token limit         |\n| `'tool_calls'`         | `'tool_calls'`       | Model called tools      |\n| `'content_filter'`     | `'content_filter'`   | Content filtered        |\n| `'function_call'`      | `'tool_calls'`       | Legacy function calling |\n\n### Content Mapping\n\n#### Text Content\n\n```typescript\n// Holo\n{\n    type: 'text', text\n:\n    'Hello'\n}\n\n// OpenAI (direct)\n{\n    type: 'text', text\n:\n    'Hello'\n}\n```\n\n#### Image Content\n\n```typescript\n// Holo\n{ type: 'image', url: 'https://example.com/image.png' }\n\n// OpenAI\n{ type: 'image_url', image_url: { url: 'https://example.com/image.png' } }\n\n// Holo (base64)\n{ type: 'image', url: 'data:image/png;base64,iVBORw...' }\n\n// OpenAI (base64)\n{ type: 'image_url', image_url: { url: 'data:image/png;base64,iVBORw...' } }\n```\n\n#### Tool Calls (Direct Mapping)\n\n```typescript\n// OpenAI Response\n{\n    choices: [{\n        message: {\n            role: 'assistant',\n            content: '',\n            tool_calls: [{\n                id: 'call_abc',\n                type: 'function',\n                function: {name: 'get_weather', arguments: '{\"location\":\"SF\"}'}\n            }]\n        }\n    }]\n}\n\n// Holo Response (extracted)\n{\n    messages: [{\n        role: 'assistant',\n        content: '',\n        tool_calls: [{\n            id: 'call_abc',\n            type: 'function',\n            function: {name: 'get_weather', arguments: {location: 'SF'}}\n        }]\n    }]\n}\n```\n\n**Note**: OpenAI uses the same tool call format as Holo, so mapping is direct extraction from `choices[0].message`.\n\n---\n\n## Streaming\n\n### Delta-Based Streaming\n\nOpenAI uses incremental deltas for streaming:\n\n#### Chat Completions Streaming\n\n```typescript\n// Chunk 1: Role initialization\n{\n    id: 'chatcmpl-123',\n        model\n:\n    'gpt-4o',\n        created\n:\n    1234567890,\n        choices\n:\n    [{\n        index: 0,\n        delta: {role: 'assistant', content: ''},\n        finish_reason: null\n    }]\n}\n\n// Chunk 2: Content delta\n{\n    id: 'chatcmpl-123',\n        model\n:\n    'gpt-4o',\n        created\n:\n    1234567890,\n        choices\n:\n    [{\n        index: 0,\n        delta: {content: 'Hello'},\n        finish_reason: null\n    }]\n}\n\n// Chunk 3: Final chunk with usage\n{\n    id: 'chatcmpl-123',\n        model\n:\n    'gpt-4o',\n        created\n:\n    1234567890,\n        choices\n:\n    [{\n        index: 0,\n        delta: {},\n        finish_reason: 'stop'\n    }],\n        usage\n:\n    {\n        prompt_tokens: 10, completion_tokens\n    :\n        5, total_tokens\n    :\n        15\n    }\n}\n```\n\n#### Holo Mapping\n\nThe plugin translates OpenAI chunks to Holo streaming events:\n\n| OpenAI Chunk                          | Holo Event                   | Notes              |\n|---------------------------------------|------------------------------|--------------------|\n| First chunk (`delta.role`)            | `message_start`              | Initialize message |\n| Content chunks (`delta.content`)      | `content_delta`              | Incremental text   |\n| Tool call chunks (`delta.tool_calls`) | `message_delta` (with tools) | Tool accumulation  |\n| Final chunk (`finish_reason`)         | `message_stop`               | Completion + usage |\n\n### Streaming Example\n\n```typescript\nimport {HoloStreamChunk} from '@holokai/holo-sdk';\n\nconst stream = await openaiProvider.streamChat(request);\n\nfor await (const chunk: HoloStreamChunk of stream) {\n    switch (chunk.delta?.type) {\n        case 'message_start':\n            console.log('Message started:', chunk.id);\n            break;\n        case 'content_delta':\n            process.stdout.write(chunk.delta.delta.content ?? '');\n            break;\n        case 'message_delta':\n            console.log('Usage:', chunk.usage);\n            break;\n        case 'message_stop':\n            console.log('Complete. Reason:', chunk.finish_reason);\n            break;\n    }\n}\n```\n\n### Multi-Choice Streaming\n\nOpenAI supports multiple completions via the `n` parameter:\n\n```typescript\n// OpenAI request\n{\n    model: 'gpt-4o',\n        messages\n:\n    [...],\n        n\n:\n    3  // Generate 3 completions\n}\n\n// OpenAI response chunks include choice index\n{\n    choices: [{\n        index: 0,  // First completion\n        delta: {content: 'Option A'}\n    }]\n}\n{\n    choices: [{\n        index: 1,  // Second completion\n        delta: {content: 'Option B'}\n    }]\n}\n```\n\n**Note**: Multi-choice (`n > 1`) is OpenAI-specific and not part of portable Holo spec. Handled via streaming with\n`delta.choice` index.\n\n---\n\n## OpenAI-Specific Features\n\n### Structured Outputs\n\nEnable JSON schema validation:\n\n```typescript\nconst request: HoloRequest = {\n    model: 'gpt-4o',\n    messages: [{role: 'user', content: 'Generate a user profile'}],\n    response_format: {\n        type: 'json_schema',\n        schema: {\n            type: 'object',\n            properties: {\n                name: {type: 'string'},\n                age: {type: 'number'}\n            },\n            required: ['name', 'age']\n        }\n    }\n};\n```\n\n### JSON Object Mode\n\nForce JSON output without schema:\n\n```typescript\nconst request: HoloRequest = {\n    model: 'gpt-4o',\n    messages: [{role: 'user', content: 'Generate JSON'}],\n    response_format: {\n        type: 'json_object'\n    }\n};\n```\n\n### Prompt Caching\n\nOpenAI caches prompts automatically based on usage patterns. No explicit cache control needed.\n\n### Service Tier\n\nRequest priority tier:\n\n```typescript\nconst request: HoloRequest = {\n    model: 'gpt-4o',\n    messages: [{role: 'user', content: 'Urgent request'}],\n    service_tier: 'default'  // or 'auto'\n};\n```\n\n### Logprobs\n\n**Note**: Not part of Holo spec. Use provider-specific config:\n\n```typescript\nconst request: HoloRequest = {\n    model: 'gpt-4o',\n    messages: [{role: 'user', content: 'Hello'}],\n    provider_config: {\n        logprobs: true,\n        top_logprobs: 5\n    }\n};\n```\n\n---\n\n## Type Safety\n\n### SDK Integration\n\nThis plugin uses strict SDK types exclusively:\n\n```typescript\nimport type {\n    HoloRequest,\n    HoloResponse,\n    HoloMessage,\n    HoloTool,\n    HoloJsonSchema  // ✅ Proper JSON Schema types\n} from '@holokai/holo-sdk';\n\n// ❌ NO: Record<string, unknown>\n// ✅ YES: HoloJsonSchema\n```\n\n### Migration from Legacy Types\n\n**Before** (Legacy provider):\n\n```typescript\nimport { HoloTool } from '../../types/holo/requests';\n\ninterface HoloTool {\n  parameters?: Record<string, unknown>; // ❌ Loose typing\n}\n```\n\n**After** (Plugin SDK):\n\n```typescript\nimport type {HoloTool, HoloJsonSchema} from '@holokai/holo-sdk';\n\ninterface HoloTool {\n    parameters?: HoloJsonSchema; // ✅ Strict JSON Schema Draft 7\n}\n```\n\n### Type Safety\n\nAll interfaces use strict TypeScript types from `@holokai/holo-sdk` for compile-time validation.\n\n---\n\n## Configuration Schema\n\nThe plugin exposes a JSON Schema for configuration validation:\n\n```typescript\n{\n    apiKey: string;              // Required\n    organizationId ? : string;     // Optional organization ID\n    baseUrl ? : string;            // Optional custom endpoint\n    defaultModel ? : string;       // Fallback model\n    allowedModels ? : string[];    // Model allowlist\n    timeoutMs ? : number;          // Request timeout (default: 60000)\n    maxRetries ? : number;         // Retry attempts (default: 2)\n    enableVision ? : boolean;      // Vision support (default: true)\n    logRequests ? : boolean;       // Observability (default: false)\n    telemetrySampleRate ? : number;// Sampling rate (default: 1.0)\n}\n```\n\nSee [manifest.ts](./src/manifest.ts) for the complete schema.\n\n---\n\n## Development\n\n### Setup\n\n```bash\n# Install dependencies\npnpm install\n\n# Build\npnpm run build\n\n# Type checking\npnpm run type-check\n\n# Run tests\npnpm test\n```\n\n### Testing\n\n```bash\n# Unit tests\npnpm test\n\n# Integration tests (requires API key)\nOPENAI_API_KEY=sk-... pnpm run test:integration\n\n# Watch mode\npnpm run test:watch\n```\n\n### Building\n\n```bash\n# Production build\npnpm run build\n\n# Watch mode\npnpm run build:watch\n\n# Clean\npnpm run clean\n```\n\n---\n\n## Known Issues & Workarounds\n\n### Timestamp Format\n\n**Issue**: OpenAI returns timestamps as Unix seconds, not milliseconds.\n\n**Workaround**: Plugin automatically converts: `created * 1000`.\n\n### Multi-Choice Non-Portability\n\n**Issue**: `n` parameter for multiple completions is OpenAI-specific.\n\n**Behavior**: Not part of portable Holo spec. Use streaming with choice index tracking if needed.\n\n### Tool Call Arguments Parsing\n\n**Issue**: OpenAI returns `tool_calls[].function.arguments` as JSON string.\n\n**Workaround**: Plugin automatically parses to object for Holo format.\n\n### Empty Content in Tool Calls\n\n**Issue**: When model calls tools, `content` may be empty string.\n\n**Behavior**: Plugin preserves empty content as-is per OpenAI spec.\n\n### Service Tier Availability\n\n**Issue**: Service tier is only available for certain models/tiers.\n\n**Behavior**: Field is optional; omitted if not supported by model.\n\n---\n\n## Related Documentation\n\n### SDK Documentation\n\n- [SDK README](../holo-sdk/README.md) - Plugin development guide and templates\n\n### OpenAI Documentation\n\n- [Official API Reference](https://platform.openai.com/docs/api-reference)\n- [Chat Completions](https://platform.openai.com/docs/api-reference/chat)\n- [Responses API](https://platform.openai.com/docs/api-reference/responses)\n- [Streaming](https://platform.openai.com/docs/api-reference/streaming)\n- [Function Calling](https://platform.openai.com/docs/guides/function-calling)\n- [Vision](https://platform.openai.com/docs/guides/vision)\n- [Structured Outputs](https://platform.openai.com/docs/guides/structured-outputs)\n\n### Migration Notes\n\n- This plugin was extracted from the monolithic `src/providers/openai/` codebase\n- Migration to plugin architecture is complete\n\n---\n\n## Contributing\n\n### Adding Features\n\n1. Update types in `@holokai/holo-sdk` first (if needed)\n2. Implement translator logic\n3. Write tests (unit + integration)\n4. Update this README\n\n### Reporting Issues\n\nFound a bug or have a feature request?\n\n- GitHub Issues: https://github.com/holokai/holo-provider-openai/issues\n- Include: Holo version, OpenAI model, request/response samples\n\n---\n\n## License\n\nMIT © Holokai\n\n---\n\n## Changelog\n\n### v0.1.0 (Current)\n\n- ✅ Initial plugin release\n- ✅ Extracted from monolithic architecture\n- ✅ Migrated to SDK types\n- ✅ Validated against Holo format spec\n- ✅ Dual API support (Chat Completions + Responses)\n- ✅ Complete streaming orchestration\n- ✅ Tool calling support\n- ✅ Vision/multimodal support\n- ✅ Structured outputs support\n- ✅ 200/228 type validators (88% coverage)\n\n---\n\n**Last Updated**: 2025-12-18\n**Plugin Version**: 0.1.0\n**SDK Version**: ^0.1.0\n**OpenAI SDK**: ^6.9.1\n","readmeFilename":"README.md"}