@vibesdotdev/integrations-openai 0.0.0-stage → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/LICENSE +126 -0
  2. package/README.md +38 -2
  3. package/dist/ai/index.d.ts +4 -0
  4. package/dist/ai/index.d.ts.map +1 -0
  5. package/dist/ai/index.js +4 -0
  6. package/dist/ai/index.js.map +1 -0
  7. package/dist/ai/metadata/assets/logos/providers/openai-dark.svg +12 -0
  8. package/dist/ai/metadata/assets/logos/providers/openai.svg +12 -0
  9. package/dist/ai/metadata/provider-models/openai/openai-gpt-5-4-mini.json +41 -0
  10. package/dist/ai/metadata/provider-models/openai/openai-gpt-5-4.json +41 -0
  11. package/dist/ai/metadata/provider-models/openai/openai-gpt-5-5.json +41 -0
  12. package/dist/ai/metadata/provider-models/openai/openai-gpt-5-6-luna.json +7 -0
  13. package/dist/ai/metadata/provider-models/openai/openai-gpt-5-6-sol.json +7 -0
  14. package/dist/ai/metadata/provider-models/openai/openai-gpt-5-6-terra.json +7 -0
  15. package/dist/ai/metadata/provider-models/openai/openai-gpt-6-1-sol.json +41 -0
  16. package/dist/ai/metadata/provider-models/openai/openai-gpt-6-1-terra.json +40 -0
  17. package/dist/ai/metadata/provider-models/openai/openai-gpt-6-astra.json +41 -0
  18. package/dist/ai/metadata/provider-models/openai/openai-gpt-6-luna.json +41 -0
  19. package/dist/ai/metadata/provider-models/openai/openai-gpt-image-1.json +34 -0
  20. package/dist/ai/metadata/providers/openai.json +36 -0
  21. package/dist/ai/openai-api.d.ts +39 -0
  22. package/dist/ai/openai-api.d.ts.map +1 -0
  23. package/dist/ai/openai-api.js +94 -0
  24. package/dist/ai/openai-api.js.map +1 -0
  25. package/dist/ai/openai-client.d.ts +12 -0
  26. package/dist/ai/openai-client.d.ts.map +1 -0
  27. package/dist/ai/openai-client.js +37 -0
  28. package/dist/ai/openai-client.js.map +1 -0
  29. package/dist/ai/openai-router-codec.d.ts +32 -0
  30. package/dist/ai/openai-router-codec.d.ts.map +1 -0
  31. package/dist/ai/openai-router-codec.js +225 -0
  32. package/dist/ai/openai-router-codec.js.map +1 -0
  33. package/dist/ai/openai.api.plugin.d.ts +6 -0
  34. package/dist/ai/openai.api.plugin.d.ts.map +1 -0
  35. package/dist/ai/openai.api.plugin.js +141 -0
  36. package/dist/ai/openai.api.plugin.js.map +1 -0
  37. package/dist/ai/openai.consumer.plugin.d.ts +10 -0
  38. package/dist/ai/openai.consumer.plugin.d.ts.map +1 -0
  39. package/dist/ai/openai.consumer.plugin.js +38 -0
  40. package/dist/ai/openai.consumer.plugin.js.map +1 -0
  41. package/dist/ai/openai.plugin.d.ts +2 -0
  42. package/dist/ai/openai.plugin.d.ts.map +1 -0
  43. package/dist/ai/openai.plugin.js +2 -0
  44. package/dist/ai/openai.plugin.js.map +1 -0
  45. package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.d.ts +4194 -0
  46. package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.d.ts.map +1 -0
  47. package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.js +28 -0
  48. package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.js.map +1 -0
  49. package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.d.ts +26 -0
  50. package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.d.ts.map +1 -0
  51. package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.js +39 -0
  52. package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.js.map +1 -0
  53. package/dist/ai/providers/cloud/frontier/openai/index.d.ts +4 -0
  54. package/dist/ai/providers/cloud/frontier/openai/index.d.ts.map +1 -0
  55. package/dist/ai/providers/cloud/frontier/openai/index.js +4 -0
  56. package/dist/ai/providers/cloud/frontier/openai/index.js.map +1 -0
  57. package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.d.ts +183 -0
  58. package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.d.ts.map +1 -0
  59. package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.js +190 -0
  60. package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.js.map +1 -0
  61. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.d.ts +25 -0
  62. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.d.ts.map +1 -0
  63. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.js +20 -0
  64. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.js.map +1 -0
  65. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.d.ts +36 -0
  66. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.d.ts.map +1 -0
  67. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.js +228 -0
  68. package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.js.map +1 -0
  69. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.d.ts +13 -0
  70. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.d.ts.map +1 -0
  71. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.js +11 -0
  72. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.js.map +1 -0
  73. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.d.ts +47 -0
  74. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.d.ts.map +1 -0
  75. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.js +111 -0
  76. package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.js.map +1 -0
  77. package/dist/ai/providers/openai/codex-app-server/codex-failure.d.ts +166 -0
  78. package/dist/ai/providers/openai/codex-app-server/codex-failure.d.ts.map +1 -0
  79. package/dist/ai/providers/openai/codex-app-server/codex-failure.js +229 -0
  80. package/dist/ai/providers/openai/codex-app-server/codex-failure.js.map +1 -0
  81. package/dist/ai/providers/openai/codex-app-server/connection.d.ts +83 -0
  82. package/dist/ai/providers/openai/codex-app-server/connection.d.ts.map +1 -0
  83. package/dist/ai/providers/openai/codex-app-server/connection.js +222 -0
  84. package/dist/ai/providers/openai/codex-app-server/connection.js.map +1 -0
  85. package/dist/ai/providers/openai/codex-app-server/failure-chunk.d.ts +10 -0
  86. package/dist/ai/providers/openai/codex-app-server/failure-chunk.d.ts.map +1 -0
  87. package/dist/ai/providers/openai/codex-app-server/failure-chunk.js +33 -0
  88. package/dist/ai/providers/openai/codex-app-server/failure-chunk.js.map +1 -0
  89. package/dist/ai/providers/openai/codex-app-server/index.d.ts +10 -0
  90. package/dist/ai/providers/openai/codex-app-server/index.d.ts.map +1 -0
  91. package/dist/ai/providers/openai/codex-app-server/index.js +9 -0
  92. package/dist/ai/providers/openai/codex-app-server/index.js.map +1 -0
  93. package/dist/ai/providers/openai/codex-app-server/protocol.d.ts +162 -0
  94. package/dist/ai/providers/openai/codex-app-server/protocol.d.ts.map +1 -0
  95. package/dist/ai/providers/openai/codex-app-server/protocol.js +116 -0
  96. package/dist/ai/providers/openai/codex-app-server/protocol.js.map +1 -0
  97. package/dist/ai/providers/openai/codex-app-server/runtime-execution.d.ts +3 -0
  98. package/dist/ai/providers/openai/codex-app-server/runtime-execution.d.ts.map +1 -0
  99. package/dist/ai/providers/openai/codex-app-server/runtime-execution.js +3 -0
  100. package/dist/ai/providers/openai/codex-app-server/runtime-execution.js.map +1 -0
  101. package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.d.ts +5 -0
  102. package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.d.ts.map +1 -0
  103. package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.js +16 -0
  104. package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.js.map +1 -0
  105. package/dist/ai/providers/openai/codex-app-server/session.d.ts +24 -0
  106. package/dist/ai/providers/openai/codex-app-server/session.d.ts.map +1 -0
  107. package/dist/ai/providers/openai/codex-app-server/session.js +392 -0
  108. package/dist/ai/providers/openai/codex-app-server/session.js.map +1 -0
  109. package/dist/ai/providers/openai/codex-app-server/spawner.d.ts +9 -0
  110. package/dist/ai/providers/openai/codex-app-server/spawner.d.ts.map +1 -0
  111. package/dist/ai/providers/openai/codex-app-server/spawner.js +48 -0
  112. package/dist/ai/providers/openai/codex-app-server/spawner.js.map +1 -0
  113. package/dist/ai/providers/openai/codex-app-server/tool-name.d.ts +14 -0
  114. package/dist/ai/providers/openai/codex-app-server/tool-name.d.ts.map +1 -0
  115. package/dist/ai/providers/openai/codex-app-server/tool-name.js +45 -0
  116. package/dist/ai/providers/openai/codex-app-server/tool-name.js.map +1 -0
  117. package/dist/ai/providers/openai/codex-subscription.d.ts +48 -0
  118. package/dist/ai/providers/openai/codex-subscription.d.ts.map +1 -0
  119. package/dist/ai/providers/openai/codex-subscription.js +128 -0
  120. package/dist/ai/providers/openai/codex-subscription.js.map +1 -0
  121. package/dist/ai/providers/openai/detection/index.d.ts +2 -0
  122. package/dist/ai/providers/openai/detection/index.d.ts.map +1 -0
  123. package/dist/ai/providers/openai/detection/index.js +2 -0
  124. package/dist/ai/providers/openai/detection/index.js.map +1 -0
  125. package/dist/ai/providers/openai/detection/system.d.ts +5 -0
  126. package/dist/ai/providers/openai/detection/system.d.ts.map +1 -0
  127. package/dist/ai/providers/openai/detection/system.js +25 -0
  128. package/dist/ai/providers/openai/detection/system.js.map +1 -0
  129. package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.d.ts +4 -0
  130. package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.d.ts.map +1 -0
  131. package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.js +39 -0
  132. package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.js.map +1 -0
  133. package/dist/ai/providers/openai/index.d.ts +4 -0
  134. package/dist/ai/providers/openai/index.d.ts.map +1 -0
  135. package/dist/ai/providers/openai/index.js +4 -0
  136. package/dist/ai/providers/openai/index.js.map +1 -0
  137. package/dist/ai/providers/openai/openai.provider.impl.d.ts +50 -0
  138. package/dist/ai/providers/openai/openai.provider.impl.d.ts.map +1 -0
  139. package/dist/ai/providers/openai/openai.provider.impl.js +331 -0
  140. package/dist/ai/providers/openai/openai.provider.impl.js.map +1 -0
  141. package/dist/ai/providers/openai/recommendations.d.ts +25 -0
  142. package/dist/ai/providers/openai/recommendations.d.ts.map +1 -0
  143. package/dist/ai/providers/openai/recommendations.js +33 -0
  144. package/dist/ai/providers/openai/recommendations.js.map +1 -0
  145. package/dist/ai/transcription/index.d.ts +4 -0
  146. package/dist/ai/transcription/index.d.ts.map +1 -0
  147. package/dist/ai/transcription/index.js +4 -0
  148. package/dist/ai/transcription/index.js.map +1 -0
  149. package/dist/ai/transcription/metadata/assets/logos/providers/openai-dark.svg +12 -0
  150. package/dist/ai/transcription/metadata/assets/logos/providers/openai.svg +12 -0
  151. package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-gpt-4o-mini-transcribe-2025-12-15.json +20 -0
  152. package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-gpt-4o-mini-transcribe.json +17 -0
  153. package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-gpt-4o-transcribe.json +17 -0
  154. package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-whisper-1.json +16 -0
  155. package/dist/ai/transcription/metadata/providers/openai-transcription.json +30 -0
  156. package/dist/ai/transcription/provider.plugin.d.ts +6 -0
  157. package/dist/ai/transcription/provider.plugin.d.ts.map +1 -0
  158. package/dist/ai/transcription/provider.plugin.js +120 -0
  159. package/dist/ai/transcription/provider.plugin.js.map +1 -0
  160. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.d.ts +4194 -0
  161. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.d.ts.map +1 -0
  162. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.js +53 -0
  163. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.js.map +1 -0
  164. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.d.ts +17 -0
  165. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.d.ts.map +1 -0
  166. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.js +10 -0
  167. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.js.map +1 -0
  168. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.d.ts +5 -0
  169. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.d.ts.map +1 -0
  170. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.js +4 -0
  171. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.js.map +1 -0
  172. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.d.ts +183 -0
  173. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.d.ts.map +1 -0
  174. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.js +49 -0
  175. package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.js.map +1 -0
  176. package/dist/ai/transcription/providers/openai-transcription/detection/index.d.ts +2 -0
  177. package/dist/ai/transcription/providers/openai-transcription/detection/index.d.ts.map +1 -0
  178. package/dist/ai/transcription/providers/openai-transcription/detection/index.js +2 -0
  179. package/dist/ai/transcription/providers/openai-transcription/detection/index.js.map +1 -0
  180. package/dist/ai/transcription/providers/openai-transcription/detection/system.d.ts +4 -0
  181. package/dist/ai/transcription/providers/openai-transcription/detection/system.d.ts.map +1 -0
  182. package/dist/ai/transcription/providers/openai-transcription/detection/system.js +21 -0
  183. package/dist/ai/transcription/providers/openai-transcription/detection/system.js.map +1 -0
  184. package/dist/ai/transcription/providers/openai-transcription/index.d.ts +4 -0
  185. package/dist/ai/transcription/providers/openai-transcription/index.d.ts.map +1 -0
  186. package/dist/ai/transcription/providers/openai-transcription/index.js +4 -0
  187. package/dist/ai/transcription/providers/openai-transcription/index.js.map +1 -0
  188. package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.d.ts +20 -0
  189. package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.d.ts.map +1 -0
  190. package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.js +102 -0
  191. package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.js.map +1 -0
  192. package/dist/ai/transcription/providers/openai-transcription/recommendations.d.ts +24 -0
  193. package/dist/ai/transcription/providers/openai-transcription/recommendations.d.ts.map +1 -0
  194. package/dist/ai/transcription/providers/openai-transcription/recommendations.js +74 -0
  195. package/dist/ai/transcription/providers/openai-transcription/recommendations.js.map +1 -0
  196. package/dist/ai/tts/index.d.ts +4 -0
  197. package/dist/ai/tts/index.d.ts.map +1 -0
  198. package/dist/ai/tts/index.js +4 -0
  199. package/dist/ai/tts/index.js.map +1 -0
  200. package/dist/ai/tts/metadata/assets/logos/providers/openai-dark.svg +12 -0
  201. package/dist/ai/tts/metadata/assets/logos/providers/openai.svg +12 -0
  202. package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-gpt-4o-mini-tts-2025-12-15.json +17 -0
  203. package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-gpt-4o-mini-tts.json +17 -0
  204. package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-tts-1-hd.json +17 -0
  205. package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-tts-1.json +17 -0
  206. package/dist/ai/tts/metadata/providers/openai-tts.json +32 -0
  207. package/dist/ai/tts/provider.plugin.d.ts +6 -0
  208. package/dist/ai/tts/provider.plugin.d.ts.map +1 -0
  209. package/dist/ai/tts/provider.plugin.js +120 -0
  210. package/dist/ai/tts/provider.plugin.js.map +1 -0
  211. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.d.ts +4194 -0
  212. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.d.ts.map +1 -0
  213. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.js +53 -0
  214. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.js.map +1 -0
  215. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.d.ts +17 -0
  216. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.d.ts.map +1 -0
  217. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.js +10 -0
  218. package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.js.map +1 -0
  219. package/dist/ai/tts/providers/cloud/speech/openai-tts/index.d.ts +5 -0
  220. package/dist/ai/tts/providers/cloud/speech/openai-tts/index.d.ts.map +1 -0
  221. package/dist/ai/tts/providers/cloud/speech/openai-tts/index.js +4 -0
  222. package/dist/ai/tts/providers/cloud/speech/openai-tts/index.js.map +1 -0
  223. package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.d.ts +183 -0
  224. package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.d.ts.map +1 -0
  225. package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.js +49 -0
  226. package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.js.map +1 -0
  227. package/dist/ai/tts/providers/openai-tts/detection/index.d.ts +2 -0
  228. package/dist/ai/tts/providers/openai-tts/detection/index.d.ts.map +1 -0
  229. package/dist/ai/tts/providers/openai-tts/detection/index.js +2 -0
  230. package/dist/ai/tts/providers/openai-tts/detection/index.js.map +1 -0
  231. package/dist/ai/tts/providers/openai-tts/detection/system.d.ts +4 -0
  232. package/dist/ai/tts/providers/openai-tts/detection/system.d.ts.map +1 -0
  233. package/dist/ai/tts/providers/openai-tts/detection/system.js +21 -0
  234. package/dist/ai/tts/providers/openai-tts/detection/system.js.map +1 -0
  235. package/dist/ai/tts/providers/openai-tts/index.d.ts +4 -0
  236. package/dist/ai/tts/providers/openai-tts/index.d.ts.map +1 -0
  237. package/dist/ai/tts/providers/openai-tts/index.js +4 -0
  238. package/dist/ai/tts/providers/openai-tts/index.js.map +1 -0
  239. package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.d.ts +24 -0
  240. package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.d.ts.map +1 -0
  241. package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.js +120 -0
  242. package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.js.map +1 -0
  243. package/dist/ai/tts/providers/openai-tts/recommendations.d.ts +24 -0
  244. package/dist/ai/tts/providers/openai-tts/recommendations.d.ts.map +1 -0
  245. package/dist/ai/tts/providers/openai-tts/recommendations.js +74 -0
  246. package/dist/ai/tts/providers/openai-tts/recommendations.js.map +1 -0
  247. package/dist/external/codex/index.d.ts +162 -0
  248. package/dist/external/codex/index.d.ts.map +1 -0
  249. package/dist/external/codex/index.js +5 -0
  250. package/dist/external/codex/index.js.map +1 -0
  251. package/dist/external/codex/manifest.d.ts +9 -0
  252. package/dist/external/codex/manifest.d.ts.map +1 -0
  253. package/dist/external/codex/manifest.js +201 -0
  254. package/dist/external/codex/manifest.js.map +1 -0
  255. package/dist/external/codex-hooks.d.ts +39 -0
  256. package/dist/external/codex-hooks.d.ts.map +1 -0
  257. package/dist/external/codex-hooks.js +204 -0
  258. package/dist/external/codex-hooks.js.map +1 -0
  259. package/dist/external/codex-presets.d.ts +2033 -0
  260. package/dist/external/codex-presets.d.ts.map +1 -0
  261. package/dist/external/codex-presets.js +312 -0
  262. package/dist/external/codex-presets.js.map +1 -0
  263. package/dist/external/codex-subscription.operation.descriptors.d.ts +57 -0
  264. package/dist/external/codex-subscription.operation.descriptors.d.ts.map +1 -0
  265. package/dist/external/codex-subscription.operation.descriptors.js +22 -0
  266. package/dist/external/codex-subscription.operation.descriptors.js.map +1 -0
  267. package/dist/external/codex-subscription.operations.d.ts +4 -0
  268. package/dist/external/codex-subscription.operations.d.ts.map +1 -0
  269. package/dist/external/codex-subscription.operations.js +42 -0
  270. package/dist/external/codex-subscription.operations.js.map +1 -0
  271. package/dist/external/external.plugin.d.ts +3 -0
  272. package/dist/external/external.plugin.d.ts.map +1 -0
  273. package/dist/external/external.plugin.js +30 -0
  274. package/dist/external/external.plugin.js.map +1 -0
  275. package/dist/external/index.d.ts +4 -0
  276. package/dist/external/index.d.ts.map +1 -0
  277. package/dist/external/index.js +4 -0
  278. package/dist/external/index.js.map +1 -0
  279. package/dist/failure-outcome.d.ts +21 -0
  280. package/dist/failure-outcome.d.ts.map +1 -0
  281. package/dist/failure-outcome.js +22 -0
  282. package/dist/failure-outcome.js.map +1 -0
  283. package/dist/index.d.ts +3 -0
  284. package/dist/index.d.ts.map +1 -0
  285. package/dist/index.js +3 -0
  286. package/dist/index.js.map +1 -0
  287. package/dist/schemas/codex-models.d.ts +23 -0
  288. package/dist/schemas/codex-models.d.ts.map +1 -0
  289. package/dist/schemas/codex-models.js +15 -0
  290. package/dist/schemas/codex-models.js.map +1 -0
  291. package/dist/schemas/codex-wire.d.ts +108 -0
  292. package/dist/schemas/codex-wire.d.ts.map +1 -0
  293. package/dist/schemas/codex-wire.js +25 -0
  294. package/dist/schemas/codex-wire.js.map +1 -0
  295. package/package.json +142 -4
@@ -0,0 +1,39 @@
1
+ /**
2
+ * What the OpenAI provider types (the main provider and the TTS and
3
+ * transcription aliases) share: how the API credential is resolved, and the one
4
+ * bounded `GET {baseUrl}/models` health probe. The probe is `probeProviderHealth`
5
+ * (`@vibesdotdev/ai`): a result carries a status and a fixed message, never the
6
+ * reason phrase, the body, or a fetch error's text (which quotes the URL).
7
+ */
8
+ import type { VibesRuntime } from '@vibesdotdev/kernel';
9
+ import type { AIProviderTypeInterface, ProviderHealthCheckResult, ProviderOperationOptions } from '@vibesdotdev/ai/interfaces/provider-type';
10
+ import type { Modality } from '@vibesdotdev/ai/models/schemas';
11
+ export declare const OPENAI_DEFAULT_BASE_URL = "https://api.openai.com/v1";
12
+ /**
13
+ * The API key a connection's `apiKey` reference names, resolved through the
14
+ * caller's resolver or the runtime. A plaintext value is refused; an inline or
15
+ * unreadable reference resolves to nothing (the connection has no credential).
16
+ */
17
+ export declare function resolveOpenAIApiKey(runtime: VibesRuntime, config: OpenAIConnectionConfig, options?: ProviderOperationOptions): Promise<string | undefined>;
18
+ /** The connection configuration the provider-type interface hands to health, authentication and validation. */
19
+ export type OpenAIConnectionConfig = Parameters<AIProviderTypeInterface['checkHealth']>[0];
20
+ /**
21
+ * What is wrong with a connection's configured `baseUrl`, as fixed text (the value is never
22
+ * echoed), or nothing. The Bearer credential is sent to this URL, so it must be an http(s) URL
23
+ * that carries no userinfo; the probe additionally refuses plain http to a host that is not
24
+ * this machine.
25
+ */
26
+ export declare function baseUrlProblem(config: OpenAIConnectionConfig): string | undefined;
27
+ export interface OpenAIModelsProbe {
28
+ readonly runtime: VibesRuntime;
29
+ readonly apiKey: string;
30
+ /** The connection: its `baseUrl` and `organizationId` are read as configured, and anything that is not a string reads as absent. */
31
+ readonly config: OpenAIConnectionConfig;
32
+ readonly options?: ProviderOperationOptions;
33
+ /** What the success and the connection failure are called: `OpenAI`, `OpenAI TTS`. */
34
+ readonly subject: string;
35
+ readonly modalities: Modality[];
36
+ }
37
+ /** One bounded health probe of `{baseUrl}/models`, reported as a health result with only safe text. */
38
+ export declare function probeOpenAIModels(probe: OpenAIModelsProbe): Promise<ProviderHealthCheckResult>;
39
+ //# sourceMappingURL=openai-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-api.d.ts","sourceRoot":"","sources":["../../src/ai/openai-api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOxD,OAAO,KAAK,EACX,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AAOnE;;;;GAIG;AACH,wBAAsB,mBAAmB,CACxC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAM7B;AAED,+GAA+G;AAC/G,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,GAAG,SAAS,CAOjF;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oIAAoI;IACpI,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC;IAC5C,sFAAsF;IACtF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC;CAChC;AAED,uGAAuG;AACvG,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA4CpG"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * What the OpenAI provider types (the main provider and the TTS and
3
+ * transcription aliases) share: how the API credential is resolved, and the one
4
+ * bounded `GET {baseUrl}/models` health probe. The probe is `probeProviderHealth`
5
+ * (`@vibesdotdev/ai`): a result carries a status and a fixed message, never the
6
+ * reason phrase, the body, or a fetch error's text (which quotes the URL).
7
+ */
8
+ import * as z from 'zod/v4';
9
+ import { assertNoPlaintextCredentials, CredentialReferenceSchema, resolveSecretReference } from '@vibesdotdev/ai/providers-runtime';
10
+ import { PROVIDER_HEALTH_FAILURE_MESSAGES, probeProviderHealth } from '@vibesdotdev/ai/providers-runtime/client';
11
+ export const OPENAI_DEFAULT_BASE_URL = 'https://api.openai.com/v1';
12
+ const BaseUrlSchema = z.string();
13
+ const OrganizationIdSchema = z.string().trim().min(1);
14
+ const DEFAULT_HEALTH_TIMEOUT_MS = 5_000;
15
+ const MAX_HEALTH_TIMEOUT_MS = 600_000;
16
+ /**
17
+ * The API key a connection's `apiKey` reference names, resolved through the
18
+ * caller's resolver or the runtime. A plaintext value is refused; an inline or
19
+ * unreadable reference resolves to nothing (the connection has no credential).
20
+ */
21
+ export async function resolveOpenAIApiKey(runtime, config, options) {
22
+ assertNoPlaintextCredentials({ apiKey: config.apiKey });
23
+ const reference = CredentialReferenceSchema.safeParse(config.apiKey);
24
+ if (!reference.success || reference.data.source === 'inline')
25
+ return undefined;
26
+ if (options?.resolveCredential)
27
+ return options.resolveCredential(reference.data);
28
+ return resolveSecretReference(reference.data, runtime);
29
+ }
30
+ /**
31
+ * What is wrong with a connection's configured `baseUrl`, as fixed text (the value is never
32
+ * echoed), or nothing. The Bearer credential is sent to this URL, so it must be an http(s) URL
33
+ * that carries no userinfo; the probe additionally refuses plain http to a host that is not
34
+ * this machine.
35
+ */
36
+ export function baseUrlProblem(config) {
37
+ const text = z.string().max(2_048).safeParse(config.baseUrl);
38
+ if (!text.success || !URL.canParse(text.data))
39
+ return 'baseUrl must be a valid URL';
40
+ const url = new URL(text.data);
41
+ if (url.protocol !== 'https:' && url.protocol !== 'http:')
42
+ return 'baseUrl must be an http(s) URL';
43
+ if (url.username.length > 0 || url.password.length > 0)
44
+ return 'baseUrl must not carry credentials';
45
+ return undefined;
46
+ }
47
+ /** One bounded health probe of `{baseUrl}/models`, reported as a health result with only safe text. */
48
+ export async function probeOpenAIModels(probe) {
49
+ const startedAt = Date.now();
50
+ const configuredBaseUrl = BaseUrlSchema.safeParse(probe.config.baseUrl);
51
+ const baseUrl = configuredBaseUrl.success ? configuredBaseUrl.data.replace(/\/$/, '') : OPENAI_DEFAULT_BASE_URL;
52
+ const authorization = `Bearer ${probe.apiKey}`;
53
+ const organizationId = OrganizationIdSchema.safeParse(probe.config.organizationId);
54
+ const headers = new Headers({ authorization });
55
+ if (organizationId.success)
56
+ headers.set('OpenAI-Organization', organizationId.data);
57
+ const requested = probe.options?.timeout ?? DEFAULT_HEALTH_TIMEOUT_MS;
58
+ const result = await probeProviderHealth({
59
+ runtime: probe.runtime,
60
+ url: `${baseUrl}/models`,
61
+ headers: Object.fromEntries(headers),
62
+ timeoutMs: Math.min(Math.max(Math.ceil(requested), 1), MAX_HEALTH_TIMEOUT_MS),
63
+ signal: probe.options?.signal
64
+ });
65
+ const latencyMs = Date.now() - startedAt;
66
+ if (result.ok) {
67
+ return {
68
+ healthy: true,
69
+ latencyMs,
70
+ message: `${probe.subject} API connection successful`,
71
+ checkedAt: new Date(),
72
+ availableModalities: probe.modalities
73
+ };
74
+ }
75
+ // A provider that answered is an API error (its status is a number, safe to show); every other
76
+ // outcome is a connection problem with the probe's own fixed message.
77
+ if (result.status !== undefined) {
78
+ return {
79
+ healthy: false,
80
+ latencyMs,
81
+ message: `OpenAI API returned ${result.status}`,
82
+ error: { code: 'API_ERROR', message: result.message },
83
+ checkedAt: new Date()
84
+ };
85
+ }
86
+ return {
87
+ healthy: false,
88
+ latencyMs,
89
+ message: `${probe.subject} connection failed`,
90
+ error: { code: 'CONNECTION_ERROR', message: PROVIDER_HEALTH_FAILURE_MESSAGES[result.code] },
91
+ checkedAt: new Date()
92
+ };
93
+ }
94
+ //# sourceMappingURL=openai-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-api.js","sourceRoot":"","sources":["../../src/ai/openai-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { BaseRuntimeClient } from '@vibesdotdev/kernel/client';
2
+ import type { AITransportInterface } from '@vibesdotdev/ai/transports/interfaces';
3
+ import type { CodexListedModel } from '../schemas/codex-models.ts';
4
+ /** Account inventories and acquired transports belong to one resolving runtime. */
5
+ export declare class OpenAIClient extends BaseRuntimeClient {
6
+ private readonly modelLists;
7
+ private readonly transports;
8
+ listModels(connectionId: string, read: () => Promise<CodexListedModel[]>): Promise<CodexListedModel[]>;
9
+ ownTransport(transport: AITransportInterface): void;
10
+ protected onDispose(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=openai-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-client.d.ts","sourceRoot":"","sources":["../../src/ai/openai-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAInE,mFAAmF;AACnF,qBAAa,YAAa,SAAQ,iBAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0E;IACrG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAE9D,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAWtG,YAAY,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;cAI1B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;CAYnD"}
@@ -0,0 +1,37 @@
1
+ import { BaseRuntimeClient } from '@vibesdotdev/kernel/client';
2
+ import { settle } from "../failure-outcome.js";
3
+ import { codexFailure } from "./providers/openai/codex-app-server/codex-failure.js";
4
+ /** Account inventories and acquired transports belong to one resolving runtime. */
5
+ export class OpenAIClient extends BaseRuntimeClient {
6
+ modelLists = new Map();
7
+ transports = new Set();
8
+ listModels(connectionId, read) {
9
+ const kept = this.modelLists.get(connectionId);
10
+ if (kept && Date.now() - kept.at < 5 * 60_000)
11
+ return kept.models;
12
+ const models = read();
13
+ this.modelLists.set(connectionId, { at: Date.now(), models });
14
+ void settle(models).then(result => {
15
+ if (result.failed && this.modelLists.get(connectionId)?.models === models)
16
+ this.modelLists.delete(connectionId);
17
+ });
18
+ return models;
19
+ }
20
+ ownTransport(transport) {
21
+ this.transports.add(transport);
22
+ }
23
+ async onDispose() {
24
+ const pending = [...this.modelLists.values()].map(entry => settle(entry.models));
25
+ this.modelLists.clear();
26
+ await Promise.all(pending);
27
+ const closing = [...this.transports];
28
+ this.transports.clear();
29
+ const closed = await Promise.all(closing.map(transport => settle(Promise.resolve().then(() => transport.close?.()))));
30
+ const failures = closed.flatMap(result => result.failed ? [result.cause] : []);
31
+ if (failures.length)
32
+ throw codexFailure('codex-transport-close-failed', {
33
+ details: { failed: failures.length, of: closing.length }, cause: new AggregateError(failures)
34
+ });
35
+ }
36
+ }
37
+ //# sourceMappingURL=openai-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-client.js","sourceRoot":"","sources":["../../src/ai/openai-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AAEpF,mFAAmF;AACnF,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IACjC,UAAU,GAAG,IAAI,GAAG,EAA+D,CAAC;IACpF,UAAU,GAAG,IAAI,GAAG,EAAwB,CAAC;IAE9D,UAAU,CAAC,YAAoB,EAAE,IAAuC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM;gBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACjH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;IAED,YAAY,CAAC,SAA+B;QAC3C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAEkB,KAAK,CAAC,SAAS;QACjC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtH,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,QAAQ,CAAC,MAAM;YAAE,MAAM,YAAY,CAAC,8BAA8B,EAAE;gBACvE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC;aAC7F,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1,32 @@
1
+ import { type AIRouterCodec } from '@vibesdotdev/ai/router';
2
+ export declare const openAIRouterCodecDescriptor: {
3
+ id: string;
4
+ kind: "ai/router-codec";
5
+ routes: {
6
+ method: string;
7
+ path: string;
8
+ }[];
9
+ name?: string | undefined;
10
+ description?: string | undefined;
11
+ tags?: string[] | undefined;
12
+ hardware?: string[] | undefined;
13
+ enabled?: boolean | undefined;
14
+ priority?: number | undefined;
15
+ capabilityId?: string | undefined;
16
+ requiredContext?: string[] | undefined;
17
+ optionalContext?: string[] | undefined;
18
+ config?: unknown;
19
+ retention?: string | {
20
+ reason: string;
21
+ maxAgeDays?: number | undefined;
22
+ maxEntries?: number | undefined;
23
+ maxBytes?: number | undefined;
24
+ cascadeFrom?: string | undefined;
25
+ ageField?: string | undefined;
26
+ enforcedBy?: string | undefined;
27
+ } | undefined;
28
+ contentTypes?: string[] | undefined;
29
+ surfaces?: string[] | undefined;
30
+ };
31
+ export declare const openAIRouterCodec: AIRouterCodec;
32
+ //# sourceMappingURL=openai-router-codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-router-codec.d.ts","sourceRoot":"","sources":["../../src/ai/openai-router-codec.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,aAAa,EAGlB,MAAM,wBAAwB,CAAC;AAQhC,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWtC,CAAC;AAkJH,eAAO,MAAM,iBAAiB,EAAE,aAmG/B,CAAC"}
@@ -0,0 +1,225 @@
1
+ import * as z from 'zod/v4';
2
+ import { CapabilityError } from '@vibesdotdev/kernel';
3
+ import { attempt } from "../failure-outcome.js";
4
+ import { buildInternalRouterRequest, createAIRouterCodecDescriptor } from '@vibesdotdev/ai/router';
5
+ export const openAIRouterCodecDescriptor = createAIRouterCodecDescriptor({
6
+ id: 'openai-chat',
7
+ name: 'OpenAI Chat Completions router codec',
8
+ description: 'Projects /v1/chat/completions onto the neutral AI router request and event contracts',
9
+ routes: [{ method: 'POST', path: '/v1/chat/completions' }],
10
+ contentTypes: ['application/json'],
11
+ surfaces: ['server'],
12
+ priority: 100,
13
+ hardware: ['consumer', 'cloud'],
14
+ tags: ['openai', 'router', 'chat-completions']
15
+ });
16
+ // Members of an unexpected type read as absent, as an absent member does: the
17
+ // router answers a malformed request body by projecting what it can read.
18
+ const optionalString = z.string().optional().catch(undefined);
19
+ const ChatCompletionsRequestSchema = z.looseObject({
20
+ messages: z
21
+ .array(z.looseObject({ role: optionalString, content: z.unknown().optional() }).catch({}))
22
+ .optional()
23
+ .catch(undefined),
24
+ tools: z
25
+ .array(z
26
+ .looseObject({ function: z.record(z.string(), z.unknown()).optional().catch(undefined) })
27
+ .catch({}))
28
+ .optional()
29
+ .catch(undefined),
30
+ chat_template_kwargs: z.record(z.string(), z.unknown()).optional().catch(undefined),
31
+ model: z.unknown().optional(),
32
+ stream: z.unknown().optional(),
33
+ temperature: z.unknown().optional(),
34
+ max_tokens: z.unknown().optional(),
35
+ top_p: z.unknown().optional(),
36
+ tool_choice: z.unknown().optional(),
37
+ stop: z.unknown().optional()
38
+ });
39
+ /**
40
+ * The request as the dialect reads it. A body that does not match is read as what can be read of
41
+ * it; a body that cannot be read at all (a throwing getter, a revoked Proxy) is a typed refusal
42
+ * with the failure as its cause, never a raw throw out of the router.
43
+ */
44
+ function readRequest(input) {
45
+ const read = attempt(() => ChatCompletionsRequestSchema.safeParse(input.body));
46
+ if (read.failed) {
47
+ throw new CapabilityError('The chat completions request body could not be read.', 'INVALID_INPUT', {
48
+ reason: 'invalid-request-body',
49
+ retryable: false,
50
+ details: { codec: 'openai-chat' },
51
+ cause: read.cause
52
+ });
53
+ }
54
+ return read.value.success ? read.value.data : ChatCompletionsRequestSchema.parse({});
55
+ }
56
+ /** The model that answered, as the `result` event's metadata names it; the model the request asked for when it does not. */
57
+ const ResultModelSchema = z.looseObject({ metadata: z.looseObject({ modelVersion: z.string().min(1) }) });
58
+ function modelOf(events, requestedModel) {
59
+ for (const event of events) {
60
+ if (event.kind !== 'result')
61
+ continue;
62
+ const named = ResultModelSchema.safeParse(event.result);
63
+ if (named.success)
64
+ return named.data.metadata.modelVersion;
65
+ }
66
+ return requestedModel;
67
+ }
68
+ /** A tool-call event that names a call no `tool-call-start` opened: the stream is malformed, and says so. */
69
+ function unopenedToolCall() {
70
+ return new CapabilityError('A tool call was continued before it was started.', 'UNAVAILABLE', {
71
+ reason: 'response-shape-mismatch',
72
+ retryable: false,
73
+ details: { codec: 'openai-chat', problem: 'tool-call-without-start' }
74
+ });
75
+ }
76
+ function collect(events) {
77
+ let text = '';
78
+ let finishReason;
79
+ let promptTokens = 0;
80
+ let completionTokens = 0;
81
+ // Every started call, in start order, keyed by id: calls may interleave, and none is dropped for lacking an end.
82
+ const calls = new Map();
83
+ for (const event of events) {
84
+ if (event.kind === 'text-delta')
85
+ text += event.delta ?? '';
86
+ if (event.kind === 'tool-call-start') {
87
+ const id = event.id ?? '';
88
+ calls.set(id, { id, type: 'function', function: { name: event.name ?? '', arguments: '' } });
89
+ }
90
+ if (event.kind === 'tool-call-arg-delta') {
91
+ const call = calls.get(event.id ?? '');
92
+ if (!call)
93
+ throw unopenedToolCall();
94
+ call.function.arguments += event.delta ?? '';
95
+ }
96
+ if (event.kind === 'usage') {
97
+ finishReason = event.finishReason ?? finishReason;
98
+ promptTokens = event.tokensPrompt ?? promptTokens;
99
+ completionTokens = event.tokensCompletion ?? completionTokens;
100
+ }
101
+ }
102
+ const toolCalls = [...calls.values()];
103
+ return {
104
+ text,
105
+ finishReason: finishReason ?? (toolCalls.length > 0 ? 'tool_calls' : 'stop'),
106
+ promptTokens,
107
+ completionTokens,
108
+ toolCalls
109
+ };
110
+ }
111
+ function errorBody(error) {
112
+ return {
113
+ error: {
114
+ message: error.message,
115
+ type: error.type === 'internal_error' ? 'server_error' : error.type,
116
+ code: error.code,
117
+ // JSON.stringify omits an undefined `details`, as the dialect expects.
118
+ details: error.details
119
+ }
120
+ };
121
+ }
122
+ export const openAIRouterCodec = {
123
+ detect(input) {
124
+ if (input.headers['x-vibes-spec-id'] === 'openai-chat')
125
+ return 100;
126
+ // A body that cannot be read is not this dialect's to claim: decode raises the refusal if it is ever asked.
127
+ const read = attempt(() => readRequest(input));
128
+ if (read.failed)
129
+ return false;
130
+ return Array.isArray(read.value.messages) && !('system' in read.value) ? 25 : false;
131
+ },
132
+ decode(input) {
133
+ const value = readRequest(input);
134
+ const tools = value.tools?.map((tool) => tool.function ?? {});
135
+ // Provider chat-template kwargs (e.g. Qwen enable_thinking:false).
136
+ // oMLX accepts response_format without enforcing it, so callers rely
137
+ // on this field to keep thinking-capable models on the JSON rail.
138
+ const templateKwargs = value.chat_template_kwargs;
139
+ const body = {
140
+ messages: (value.messages ?? []).map((message) => ({
141
+ role: message.role ?? 'user',
142
+ content: message.content ?? ''
143
+ })),
144
+ model: value.model,
145
+ stream: value.stream === true,
146
+ temperature: value.temperature,
147
+ maxTokens: value.max_tokens,
148
+ topP: value.top_p,
149
+ tools,
150
+ toolChoice: value.tool_choice,
151
+ stop: value.stop
152
+ };
153
+ if (templateKwargs && Object.keys(templateKwargs).length > 0)
154
+ body.chatTemplateKwargs = templateKwargs;
155
+ return buildInternalRouterRequest({
156
+ specId: 'openai-chat',
157
+ rawBody: value,
158
+ body,
159
+ headers: input.headers
160
+ });
161
+ },
162
+ encode(events, { streaming, model: requestedModel }) {
163
+ // Read first: a malformed event stream fails the encode before any byte is sent, streaming or not.
164
+ const result = collect(events);
165
+ const model = modelOf(events, requestedModel);
166
+ if (!streaming) {
167
+ const message = { role: 'assistant', content: result.text };
168
+ if (result.toolCalls.length)
169
+ message.tool_calls = result.toolCalls;
170
+ return {
171
+ headers: { 'Content-Type': 'application/json' },
172
+ contentType: 'application/json',
173
+ body: JSON.stringify({
174
+ id: `chatcmpl-${Date.now()}`,
175
+ object: 'chat.completion',
176
+ created: Math.floor(Date.now() / 1000),
177
+ model,
178
+ choices: [{ index: 0, message, finish_reason: result.finishReason }],
179
+ usage: {
180
+ prompt_tokens: result.promptTokens,
181
+ completion_tokens: result.completionTokens,
182
+ total_tokens: result.promptTokens + result.completionTokens
183
+ }
184
+ })
185
+ };
186
+ }
187
+ const chunk = (delta, finishReason, usage) => `data: ${JSON.stringify({ object: 'chat.completion.chunk', model, choices: [{ index: 0, delta, finish_reason: finishReason }], usage })}\n\n`;
188
+ async function* stream() {
189
+ // Tool calls stream by position: the index a call was started at, which the client correlates fragments by.
190
+ const indexes = new Map();
191
+ for (const event of events) {
192
+ if (event.kind === 'text-delta')
193
+ yield chunk({ content: event.delta ?? '' }, null);
194
+ if (event.kind === 'tool-call-start') {
195
+ const id = event.id ?? '';
196
+ const index = indexes.size;
197
+ indexes.set(id, index);
198
+ yield chunk({ tool_calls: [{ index, id, type: 'function', function: { name: event.name ?? '', arguments: '' } }] }, null);
199
+ }
200
+ if (event.kind === 'tool-call-arg-delta') {
201
+ yield chunk({ tool_calls: [{ index: indexes.get(event.id ?? ''), function: { arguments: event.delta ?? '' } }] }, null);
202
+ }
203
+ if (event.kind === 'usage') {
204
+ const prompt = event.tokensPrompt ?? 0;
205
+ const completion = event.tokensCompletion ?? 0;
206
+ yield chunk({}, event.finishReason ?? result.finishReason, {
207
+ prompt_tokens: prompt,
208
+ completion_tokens: completion,
209
+ total_tokens: prompt + completion
210
+ });
211
+ }
212
+ }
213
+ yield 'data: [DONE]\n\n';
214
+ }
215
+ return {
216
+ headers: { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache' },
217
+ contentType: 'text/event-stream',
218
+ body: stream()
219
+ };
220
+ },
221
+ encodeError(error) {
222
+ return Response.json(errorBody(error), { status: error.status });
223
+ }
224
+ };
225
+ //# sourceMappingURL=openai-router-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-router-codec.js","sourceRoot":"","sources":["../../src/ai/openai-router-codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type RuntimePlugin } from '@vibesdotdev/kernel';
2
+ /** Complete runtime boundary for OpenAI-owned AI capabilities. */
3
+ export declare function createOpenAIAPIPlugin(): RuntimePlugin;
4
+ export declare const openAIAPIPlugin: RuntimePlugin;
5
+ export default openAIAPIPlugin;
6
+ //# sourceMappingURL=openai.api.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.api.plugin.d.ts","sourceRoot":"","sources":["../../src/ai/openai.api.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAgH9E,kEAAkE;AAClE,wBAAgB,qBAAqB,IAAI,aAAa,CA8ErD;AAED,eAAO,MAAM,eAAe,eAA0B,CAAC;AACvD,eAAe,eAAe,CAAC"}