@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,392 @@
1
+ import { CaughtFailureSchema, isCapabilityError } from '@vibesdotdev/kernel';
2
+ import { AsyncQueue } from '@vibesdotdev/external/jsonrpc';
3
+ import { getLogger } from '@vibesdotdev/logging';
4
+ import { attempt, settle } from "../../../../failure-outcome.js";
5
+ import { codexFailure, turnFailure } from "./codex-failure.js";
6
+ import { failureAsChunk } from "./failure-chunk.js";
7
+ import { CodexAgentMessageItemSchema, CodexDynamicToolItemSchema, CodexErrorNotificationSchema, CodexIgnoredResultSchema, CodexNotificationParamsSchema, CodexThreadStartResultSchema, CodexTurnStartResultSchema } from "./protocol.js";
8
+ import { decodeCodexToolName } from "./tool-name.js";
9
+ import { CODEX_SUBSCRIPTION_CONFIG } from "../codex-subscription.js";
10
+ /**
11
+ * What one turn may hold in memory, declared: the records waiting for the
12
+ * consumer, each accumulated text, the tool executions it remembers, and the
13
+ * message items it tracks. Past a bound the turn fails `codex-output-too-large`.
14
+ */
15
+ export const CODEX_TURN_LIMITS = {
16
+ recordQueueCapacity: 4_096,
17
+ maxTextChars: 8 * 1024 * 1024,
18
+ maxToolExecutions: 1_024,
19
+ maxTrackedItems: 4_096,
20
+ maxEarlyNotifications: 1_024
21
+ };
22
+ /**
23
+ * Build the provider-owned Codex session program carried by the spec's wire
24
+ * request. The paired transport supplies a connected Codex connection but does
25
+ * not know what a Codex thread, turn, notification, or tool item means.
26
+ */
27
+ export function createCodexAppServerSessionProgram(body) {
28
+ return (connection, options) => runCodexAppServerSession(connection, body, options);
29
+ }
30
+ async function* runCodexAppServerSession(connection, body, options) {
31
+ if (body.dynamicTools.length > 0 && !options.serverRequestHandler) {
32
+ yield {
33
+ kind: 'error',
34
+ error: codexFailure('unsupported-option', { details: { option: 'serverRequestHandler', needed: 'dynamic-tools' } })
35
+ };
36
+ yield { kind: 'end' };
37
+ return;
38
+ }
39
+ const queue = new AsyncQueue(CODEX_TURN_LIMITS.recordQueueCapacity);
40
+ const toolExecutions = [];
41
+ const turnOutput = new CodexTurnOutput();
42
+ const turnAbort = new AbortController();
43
+ let threadId;
44
+ let turnId;
45
+ let disposeThreadHandler;
46
+ let disposeSubscription;
47
+ let cancelled = false;
48
+ let interruptSent = false;
49
+ let turnEnded = false;
50
+ let cancellationError = cancelledFailure(options.signal?.reason);
51
+ /** Fails the turn's record queue; the first failure is the one the consumer sees. */
52
+ const failTurn = (failure) => {
53
+ turnEnded = true;
54
+ queue.fail(failure);
55
+ };
56
+ const push = (record) => {
57
+ if (queue.push(record) === 'full')
58
+ failTurn(codexFailure('codex-output-too-large', { details: { bound: 'records' } }));
59
+ };
60
+ /**
61
+ * Notifications that arrive before the answer to `turn/start` has named the turn. The
62
+ * child may write them right behind the answer, and nothing orders their delivery against
63
+ * the continuation that learns the ids, so they wait here (bounded) and are replayed.
64
+ */
65
+ const early = [];
66
+ const applyNotification = (notification) => {
67
+ if (!threadId || !turnId) {
68
+ if (early.length >= CODEX_TURN_LIMITS.maxEarlyNotifications) {
69
+ throw codexFailure('codex-output-too-large', { details: { bound: 'early-notifications' } });
70
+ }
71
+ early.push(notification);
72
+ return;
73
+ }
74
+ if (notification.method === 'error') {
75
+ const parsed = CodexErrorNotificationSchema.safeParse(notification.params);
76
+ const params = parsed.success ? parsed.data : CodexErrorNotificationSchema.parse({});
77
+ if ((params.threadId && params.threadId !== threadId) ||
78
+ (params.turnId && params.turnId !== turnId)) {
79
+ return;
80
+ }
81
+ // The turn is not known to have ended: the interrupt below stops it.
82
+ queue.fail(turnFailure(readErrorText(params)));
83
+ return;
84
+ }
85
+ handleNotification(notification, threadId, turnId, toolExecutions, turnOutput, push, {
86
+ markTurnEnded: () => {
87
+ turnEnded = true;
88
+ },
89
+ endRecords: () => queue.end(),
90
+ failTurn
91
+ });
92
+ };
93
+ /** Applies one notification; a failure of applying it ends the turn typed, never the connection. */
94
+ const deliver = (notification) => {
95
+ const applied = attempt(() => applyNotification(notification));
96
+ if (applied.failed) {
97
+ const caught = CaughtFailureSchema.parse(applied.cause);
98
+ failTurn(isCapabilityError(caught) ? caught : codexFailure('codex-listener-failed', { cause: caught }));
99
+ }
100
+ };
101
+ const interruptTurn = async () => {
102
+ if (!threadId || !turnId || interruptSent || connection.closed)
103
+ return;
104
+ interruptSent = true;
105
+ const interrupted = await settle(connection.request('turn/interrupt', { threadId, turnId }, CodexIgnoredResultSchema));
106
+ // The caller gets its answer either way; a failed interrupt means the turn may keep running.
107
+ if (interrupted.failed) {
108
+ getLogger('integrations-openai', connection.runtime).warn('codex-app-server turn interrupt failed', {
109
+ error: interrupted.cause
110
+ });
111
+ }
112
+ };
113
+ const cancel = (error) => {
114
+ if (cancelled)
115
+ return;
116
+ cancelled = true;
117
+ cancellationError = error;
118
+ turnAbort.abort();
119
+ if (!threadId || !turnId)
120
+ return;
121
+ void interruptTurn().then(() => queue.fail(cancellationError));
122
+ };
123
+ const abortFromSignal = () => cancel(cancelledFailure(options.signal?.reason));
124
+ const timeoutMs = options.timeoutMs;
125
+ const cancelTimeout = timeoutMs
126
+ ? connection.runtime.lifecycle.timeout(() => cancel(codexFailure('codex-turn-timeout', { details: { timeoutMs } })), timeoutMs)
127
+ : undefined;
128
+ options.signal?.addEventListener('abort', abortFromSignal, { once: true });
129
+ const assertActive = () => {
130
+ if (options.signal?.aborted)
131
+ abortFromSignal();
132
+ if (cancelled)
133
+ throw cancellationError;
134
+ };
135
+ /**
136
+ * One request of the turn. A request that can still be abandoned stops with the
137
+ * caller's cancellation; `turn/start` is never abandoned, because its answer
138
+ * names the turn that a cancellation must then interrupt.
139
+ */
140
+ const call = async (method, params, schema, abandonable) => {
141
+ const settled = await settle(connection.request(method, params, schema, abandonable ? { signal: turnAbort.signal } : {}));
142
+ if (abandonable)
143
+ assertActive();
144
+ if (settled.failed)
145
+ throw settled.cause;
146
+ return settled.value;
147
+ };
148
+ /** The turn's records; a failure raised here ends the call as an `error` chunk (`failureAsChunk`). */
149
+ const turnChunks = async function* () {
150
+ assertActive();
151
+ disposeSubscription = connection.subscribe({ notification: deliver, closed: (failure) => failTurn(failure) });
152
+ await connection.assertManagedChatGptAccount();
153
+ assertActive();
154
+ const threadParams = {
155
+ model: body.model,
156
+ modelProvider: 'openai',
157
+ config: { ...CODEX_SUBSCRIPTION_CONFIG },
158
+ cwd: body.cwd,
159
+ ephemeral: true,
160
+ approvalPolicy: body.approvalPolicy,
161
+ sandbox: body.sandbox,
162
+ serviceName: 'vibes_ai_runtime',
163
+ dynamicTools: body.dynamicTools
164
+ };
165
+ const threadRequest = threadParams;
166
+ if (body.developerInstructions)
167
+ threadRequest.developerInstructions = body.developerInstructions;
168
+ const thread = await call('thread/start', threadRequest, CodexThreadStartResultSchema, true);
169
+ threadId = thread.thread.id;
170
+ assertActive();
171
+ if (options.serverRequestHandler) {
172
+ disposeThreadHandler = connection.registerThreadHandler(threadId, options.serverRequestHandler);
173
+ }
174
+ const turnParams = {
175
+ threadId,
176
+ input: body.input,
177
+ model: body.model,
178
+ cwd: body.cwd,
179
+ approvalPolicy: body.approvalPolicy
180
+ };
181
+ if (body.effort)
182
+ turnParams.effort = body.effort;
183
+ const turn = await call('turn/start', turnParams, CodexTurnStartResultSchema, false);
184
+ turnId = turn.turn.id;
185
+ for (const waiting of early.splice(0))
186
+ deliver(waiting);
187
+ if (cancelled) {
188
+ void interruptTurn().then(() => queue.fail(cancellationError));
189
+ }
190
+ yield {
191
+ kind: 'headers',
192
+ status: 200,
193
+ headers: { 'content-type': 'application/x-ndjson' }
194
+ };
195
+ for await (const record of queue) {
196
+ yield { kind: 'ndjson-record', data: JSON.stringify(record) };
197
+ }
198
+ yield { kind: 'end' };
199
+ };
200
+ try {
201
+ yield* failureAsChunk(turnChunks());
202
+ }
203
+ finally {
204
+ cancelTimeout?.();
205
+ options.signal?.removeEventListener('abort', abortFromSignal);
206
+ // A consumer that stopped early, or a turn that failed on the child's own report, leaves
207
+ // the turn running (and spending the account's allowance) until it is interrupted.
208
+ if (!turnEnded)
209
+ await interruptTurn();
210
+ disposeThreadHandler?.();
211
+ disposeSubscription?.();
212
+ }
213
+ }
214
+ function readErrorText(params) {
215
+ const message = params.error?.message ?? params.message ?? 'server error';
216
+ const details = params.error?.additionalDetails;
217
+ return details ? `${message}: ${details}` : message;
218
+ }
219
+ function handleNotification(notification, threadId, turnId, toolExecutions, turnOutput, push, turn) {
220
+ const { markTurnEnded, endRecords, failTurn } = turn;
221
+ const parsed = CodexNotificationParamsSchema.safeParse(notification.params);
222
+ if (!parsed.success || parsed.data.threadId !== threadId)
223
+ return;
224
+ const params = parsed.data;
225
+ if (notification.method === 'item/started' && params.turnId === turnId) {
226
+ const item = CodexAgentMessageItemSchema.safeParse(params.item);
227
+ if (item.success)
228
+ turnOutput.rememberPhase(item.data);
229
+ return;
230
+ }
231
+ if (notification.method === 'item/agentMessage/delta' && params.turnId === turnId) {
232
+ if (params.delta !== undefined) {
233
+ const itemId = params.itemId;
234
+ const phase = itemId ? turnOutput.phaseOf(itemId) : undefined;
235
+ if (phase !== 'commentary') {
236
+ turnOutput.appendStreamed(params.delta, phase === 'final_answer');
237
+ if (itemId)
238
+ turnOutput.markStreamed(itemId);
239
+ push({ type: 'text-delta', delta: params.delta });
240
+ }
241
+ }
242
+ return;
243
+ }
244
+ if (notification.method === 'item/completed' && params.turnId === turnId) {
245
+ const message = CodexAgentMessageItemSchema.safeParse(params.item);
246
+ if (message.success)
247
+ turnOutput.rememberCompleted(message.data, push);
248
+ const evidence = readToolEvidence(params.item);
249
+ if (evidence) {
250
+ if (toolExecutions.length >= CODEX_TURN_LIMITS.maxToolExecutions) {
251
+ throw codexFailure('codex-output-too-large', { details: { bound: 'tool-executions' } });
252
+ }
253
+ toolExecutions.push(evidence);
254
+ // Stream it now, in notification order: the final result still
255
+ // carries every execution as evidence, but live consumers must not
256
+ // receive the whole answer text before the tools that produced it.
257
+ push({ type: 'tool-call', execution: evidence });
258
+ }
259
+ return;
260
+ }
261
+ if (notification.method !== 'turn/completed')
262
+ return;
263
+ const completed = params.turn;
264
+ if (!completed) {
265
+ failTurn(codexFailure('codex-turn-failed', { details: { problem: 'turn-completed-without-turn' } }));
266
+ return;
267
+ }
268
+ if (completed.id !== turnId)
269
+ return;
270
+ markTurnEnded();
271
+ if (completed.status !== 'completed') {
272
+ failTurn(turnFailure(`${completed.status}${completed.error?.message ? `: ${completed.error.message}` : ''}`));
273
+ return;
274
+ }
275
+ push({
276
+ type: 'result',
277
+ threadId,
278
+ turnId,
279
+ content: turnOutput.finalAssistantMessage(completed.items ?? []),
280
+ toolExecutions
281
+ });
282
+ endRecords();
283
+ }
284
+ /** What a turn has said so far; every text and every tracked item is bounded. */
285
+ class CodexTurnOutput {
286
+ fallbackContent = '';
287
+ finalContent = '';
288
+ unknownCompletedContent = '';
289
+ messagePhases = new Map();
290
+ streamedItemIds = new Set();
291
+ phaseOf(itemId) {
292
+ return this.messagePhases.get(itemId);
293
+ }
294
+ rememberPhase(item) {
295
+ if (!item.id)
296
+ return;
297
+ this.trackPhase(item.id, item.phase);
298
+ }
299
+ markStreamed(itemId) {
300
+ if (!this.streamedItemIds.has(itemId) && this.streamedItemIds.size >= CODEX_TURN_LIMITS.maxTrackedItems) {
301
+ throw codexFailure('codex-output-too-large', { details: { bound: 'streamed-items' } });
302
+ }
303
+ this.streamedItemIds.add(itemId);
304
+ }
305
+ appendStreamed(delta, isFinalAnswer) {
306
+ this.fallbackContent = this.bounded(this.fallbackContent, delta);
307
+ if (isFinalAnswer)
308
+ this.finalContent = this.bounded(this.finalContent, delta);
309
+ }
310
+ rememberCompleted(item, push) {
311
+ if (item.text === undefined)
312
+ return;
313
+ const itemId = item.id;
314
+ const phase = item.phase;
315
+ if (itemId)
316
+ this.trackPhase(itemId, phase);
317
+ if (phase === 'commentary')
318
+ return;
319
+ if (item.text.length > CODEX_TURN_LIMITS.maxTextChars) {
320
+ throw codexFailure('codex-output-too-large', { details: { bound: 'text' } });
321
+ }
322
+ if (phase === 'final_answer') {
323
+ this.finalContent = item.text;
324
+ }
325
+ else {
326
+ this.unknownCompletedContent = item.text;
327
+ }
328
+ if (item.text.length > 0 && (!itemId || !this.streamedItemIds.has(itemId))) {
329
+ push({ type: 'text-delta', delta: item.text });
330
+ }
331
+ }
332
+ finalAssistantMessage(items) {
333
+ for (let index = items.length - 1; index >= 0; index--) {
334
+ const item = CodexAgentMessageItemSchema.safeParse(items[index]);
335
+ if (item.success && item.data.phase === 'final_answer' && item.data.text !== undefined) {
336
+ return item.data.text;
337
+ }
338
+ }
339
+ if (this.finalContent.length > 0)
340
+ return this.finalContent;
341
+ for (let index = items.length - 1; index >= 0; index--) {
342
+ const item = CodexAgentMessageItemSchema.safeParse(items[index]);
343
+ if (item.success && item.data.phase !== 'commentary' && item.data.text !== undefined) {
344
+ return item.data.text;
345
+ }
346
+ }
347
+ if (this.unknownCompletedContent.length > 0)
348
+ return this.unknownCompletedContent;
349
+ if (this.fallbackContent.length > 0)
350
+ return this.fallbackContent;
351
+ throw codexFailure('codex-turn-failed', { details: { problem: 'no-final-assistant-message' } });
352
+ }
353
+ trackPhase(itemId, phase) {
354
+ if (!this.messagePhases.has(itemId) && this.messagePhases.size >= CODEX_TURN_LIMITS.maxTrackedItems) {
355
+ throw codexFailure('codex-output-too-large', { details: { bound: 'message-items' } });
356
+ }
357
+ this.messagePhases.set(itemId, phase);
358
+ }
359
+ /** `current` with `addition` appended, or a refusal when the text would pass the bound. */
360
+ bounded(current, addition) {
361
+ if (current.length + addition.length > CODEX_TURN_LIMITS.maxTextChars) {
362
+ throw codexFailure('codex-output-too-large', { details: { bound: 'text' } });
363
+ }
364
+ return current + addition;
365
+ }
366
+ }
367
+ function readToolEvidence(value) {
368
+ const parsed = CodexDynamicToolItemSchema.safeParse(value);
369
+ if (!parsed.success)
370
+ return null;
371
+ const item = parsed.data;
372
+ const id = item.callId ?? item.id ?? '';
373
+ const name = item.tool ?? '';
374
+ if (!id || !name)
375
+ return null;
376
+ const evidence = {
377
+ id,
378
+ name: item.namespace !== undefined
379
+ ? `${item.namespace}.${decodeCodexToolName(name)}`
380
+ : decodeCodexToolName(name),
381
+ arguments: item.arguments ?? {},
382
+ success: item.success !== false && item.status !== 'failed'
383
+ };
384
+ if (item.contentItems !== undefined)
385
+ evidence.result = item.contentItems;
386
+ return evidence;
387
+ }
388
+ /** The caller's cancellation as a typed failure; the caller's reason, if any, is only its cause. */
389
+ function cancelledFailure(reason) {
390
+ return codexFailure('generation-cancelled', reason === undefined ? {} : { cause: reason });
391
+ }
392
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type RuntimeExecution } from '@vibesdotdev/kernel/execution';
2
+ import type { CodexAppServerSpawner } from './connection.ts';
3
+ import { type CodexChildEnvRuntime } from '../codex-subscription.ts';
4
+ /**
5
+ * Resolve and spawn Codex through the environment-owned execution runtime. Vibes
6
+ * stays the sole tool host: Codex-configured MCP servers are disabled.
7
+ */
8
+ export declare function createCodexAppServerSpawner(runtime: CodexChildEnvRuntime, execution: Pick<RuntimeExecution, 'environmentId' | 'resolveCommand' | 'spawn'>): CodexAppServerSpawner;
9
+ //# sourceMappingURL=spawner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawner.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/spawner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAIN,KAAK,oBAAoB,EACzB,MAAM,0BAA0B,CAAC;AAIlC;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,eAAe,GAAG,gBAAgB,GAAG,OAAO,CAAC,GAC7E,qBAAqB,CAsCvB"}
@@ -0,0 +1,48 @@
1
+ import {} from '@vibesdotdev/kernel/execution';
2
+ import { codexFailure } from "./codex-failure.js";
3
+ import { CODEX_SUBSCRIPTION_CONFIG_ARGS, CODEX_SUBSCRIPTION_UNSET_ENV, codexSubscriptionEnv } from "../codex-subscription.js";
4
+ const CODEX_COMMAND = 'codex';
5
+ /**
6
+ * Resolve and spawn Codex through the environment-owned execution runtime. Vibes
7
+ * stays the sole tool host: Codex-configured MCP servers are disabled.
8
+ */
9
+ export function createCodexAppServerSpawner(runtime, execution) {
10
+ return async () => {
11
+ const resolved = await execution.resolveCommand(CODEX_COMMAND);
12
+ if (!resolved) {
13
+ throw codexFailure('codex-cli-unavailable', { details: { environmentId: execution.environmentId } });
14
+ }
15
+ return execution.spawn({
16
+ command: resolved,
17
+ args: [
18
+ 'app-server',
19
+ ...CODEX_SUBSCRIPTION_CONFIG_ARGS,
20
+ '--config',
21
+ 'mcp_servers={}',
22
+ '--config',
23
+ 'mcp_servers.vibes.enabled=false',
24
+ '--config',
25
+ 'mcp_servers.node_repl.enabled=false',
26
+ '--config',
27
+ 'features.computer_use=false',
28
+ '--config',
29
+ 'features.browser_use=false',
30
+ '--config',
31
+ 'features.shell_tool=false',
32
+ '--config',
33
+ 'features.apps=false',
34
+ '--config',
35
+ 'features.plugins=false',
36
+ '--stdio'
37
+ ],
38
+ // Codex spawns any inherited MCP server with its own configured env, not this one's.
39
+ env: codexSubscriptionEnv(runtime),
40
+ envMode: 'replace',
41
+ unsetEnv: [...CODEX_SUBSCRIPTION_UNSET_ENV],
42
+ stdin: 'pipe',
43
+ stdout: 'pipe',
44
+ stderr: 'pipe'
45
+ });
46
+ };
47
+ }
48
+ //# sourceMappingURL=spawner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawner.js","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/spawner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACN,8BAA8B,EAC9B,4BAA4B,EAC5B,oBAAoB,EAEpB,MAAM,0BAA0B,CAAC;AAElC,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAC1C,OAA6B,EAC7B,SAA+E;IAE/E,OAAO,KAAK,IAAI,EAAE;QACjB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,YAAY,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACtG,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,CAAC;YACtB,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE;gBACL,YAAY;gBACZ,GAAG,8BAA8B;gBACjC,UAAU;gBACV,gBAAgB;gBAChB,UAAU;gBACV,iCAAiC;gBACjC,UAAU;gBACV,qCAAqC;gBACrC,UAAU;gBACV,6BAA6B;gBAC7B,UAAU;gBACV,4BAA4B;gBAC5B,UAAU;gBACV,2BAA2B;gBAC3B,UAAU;gBACV,qBAAqB;gBACrB,UAAU;gBACV,wBAAwB;gBACxB,SAAS;aACT;YACD,qFAAqF;YACrF,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC;YAClC,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,CAAC,GAAG,4BAA4B,CAAC;YAC3C,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;SACd,CAAC,CAAC;IACJ,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Encode arbitrary Vibes tool ids into Codex's restricted function-name
3
+ * alphabet. Every name is encoded, so a raw id can never collide with an
4
+ * encoded dotted/slashed id. The transform is deterministic and reversible.
5
+ */
6
+ export declare function encodeCodexToolName(name: string): string;
7
+ /**
8
+ * The Vibes tool id behind a Codex function name. The name comes from the
9
+ * child, so every way it can be wrong ends as the same typed refusal
10
+ * (`invalid-tool-id-encoding`), never a raw `TypeError` or `DOMException`, and
11
+ * the value is never echoed into the message.
12
+ */
13
+ export declare function decodeCodexToolName(name: string): string;
14
+ //# sourceMappingURL=tool-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-name.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/tool-name.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASxD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBxD"}
@@ -0,0 +1,45 @@
1
+ import { attempt } from "../../../../failure-outcome.js";
2
+ import { codexFailure } from "./codex-failure.js";
3
+ const CODEX_TOOL_NAME = /^[a-zA-Z0-9_-]{1,128}$/;
4
+ const PREFIX = 'v_';
5
+ /**
6
+ * Encode arbitrary Vibes tool ids into Codex's restricted function-name
7
+ * alphabet. Every name is encoded, so a raw id can never collide with an
8
+ * encoded dotted/slashed id. The transform is deterministic and reversible.
9
+ */
10
+ export function encodeCodexToolName(name) {
11
+ const bytes = new TextEncoder().encode(name);
12
+ let binary = '';
13
+ for (const byte of bytes)
14
+ binary += String.fromCharCode(byte);
15
+ const encoded = `${PREFIX}${btoa(binary).replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/u, '')}`;
16
+ if (!CODEX_TOOL_NAME.test(encoded)) {
17
+ throw codexFailure('tool-id-too-long', { details: { idLength: name.length } });
18
+ }
19
+ return encoded;
20
+ }
21
+ /**
22
+ * The Vibes tool id behind a Codex function name. The name comes from the
23
+ * child, so every way it can be wrong ends as the same typed refusal
24
+ * (`invalid-tool-id-encoding`), never a raw `TypeError` or `DOMException`, and
25
+ * the value is never echoed into the message.
26
+ */
27
+ export function decodeCodexToolName(name) {
28
+ if (!name.startsWith(PREFIX) || !CODEX_TOOL_NAME.test(name)) {
29
+ throw codexFailure('invalid-tool-id-encoding', { details: { problem: 'not-encoded' } });
30
+ }
31
+ const base64 = name.slice(PREFIX.length).replaceAll('-', '+').replaceAll('_', '/');
32
+ const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, '=');
33
+ const binary = attempt(() => atob(padded));
34
+ if (binary.failed) {
35
+ throw codexFailure('invalid-tool-id-encoding', { details: { problem: 'not-base64' }, cause: binary.cause });
36
+ }
37
+ const decoded = attempt(() => new TextDecoder('utf-8', { fatal: true }).decode(Uint8Array.from(binary.value, (character) => character.charCodeAt(0))));
38
+ if (decoded.failed) {
39
+ throw codexFailure('invalid-tool-id-encoding', { details: { problem: 'not-utf8' }, cause: decoded.cause });
40
+ }
41
+ if (decoded.value.length === 0)
42
+ throw codexFailure('invalid-tool-id-encoding', { details: { problem: 'empty' } });
43
+ return decoded.value;
44
+ }
45
+ //# sourceMappingURL=tool-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-name.js","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/tool-name.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { composeChildEnv, type RuntimeRef } from '@vibesdotdev/kernel';
2
+ import type { RuntimeExecution } from '@vibesdotdev/kernel/execution';
3
+ /** The runtime a Codex child's environment is composed from (`composeChildEnv`). */
4
+ export type CodexChildEnvRuntime = Parameters<typeof composeChildEnv>[0];
5
+ /** The login flow also owns its timers and reports a failed output stream, so it needs the whole runtime. */
6
+ export type CodexLoginRuntime = RuntimeRef;
7
+ /**
8
+ * Every Codex child runs with `envMode: 'replace'` and the kernel's composed
9
+ * environment (rc02-rc03 C22): the host base set, plus the host variables
10
+ * named here. Codex reads its own config and login from `CODEX_HOME` (default
11
+ * `~/.codex`, under the base set's HOME); its HTTPS calls honour the proxy and
12
+ * CA settings. `OPENAI_API_KEY`, `CODEX_API_KEY` and `OPENAI_BASE_URL` are not
13
+ * among its names and are also stripped (`CODEX_SUBSCRIPTION_UNSET_ENV`).
14
+ */
15
+ export declare const CODEX_SUBSCRIPTION_INHERIT_ENV: readonly ["CODEX_HOME", "HTTPS_PROXY", "HTTP_PROXY", "NO_PROXY", "SSL_CERT_FILE"];
16
+ /** The browser sign-in also opens a browser: the selected one and the desktop session it opens in. */
17
+ export declare const CODEX_SUBSCRIPTION_LOGIN_INHERIT_ENV: readonly ["CODEX_HOME", "HTTPS_PROXY", "HTTP_PROXY", "NO_PROXY", "SSL_CERT_FILE", "BROWSER", "DISPLAY", "WAYLAND_DISPLAY", "XDG_RUNTIME_DIR", "DBUS_SESSION_BUS_ADDRESS"];
18
+ /** A Codex child's environment on `runtime`. */
19
+ export declare function codexSubscriptionEnv(runtime: CodexChildEnvRuntime, inheritEnv?: readonly string[]): Record<string, string>;
20
+ /** API billing is a separate connection, never a fallback for a Codex subscription. */
21
+ export declare const CODEX_SUBSCRIPTION_UNSET_ENV: readonly ["OPENAI_API_KEY", "CODEX_API_KEY", "OPENAI_BASE_URL"];
22
+ /** Official Codex defaults, pinned per invocation without rewriting user config. */
23
+ export declare const CODEX_SUBSCRIPTION_CONFIG: {
24
+ readonly forced_login_method: "chatgpt";
25
+ readonly model_provider: "openai";
26
+ readonly openai_base_url: "https://chatgpt.com/backend-api/codex";
27
+ readonly chatgpt_base_url: "https://chatgpt.com/backend-api/";
28
+ };
29
+ export declare const CODEX_SUBSCRIPTION_CONFIG_ARGS: string[];
30
+ /** Terminal sign-in. The external projector owns the command name. */
31
+ export declare const CODEX_SUBSCRIPTION_LOGIN_COMMAND = "vibes dev external codex login";
32
+ /** Read-only ChatGPT account check. */
33
+ export declare const CODEX_SUBSCRIPTION_STATUS_COMMAND = "vibes dev external codex status";
34
+ export interface CodexSubscriptionStatus {
35
+ authenticated: boolean;
36
+ timedOut: boolean;
37
+ }
38
+ /** `codex login status` must report a managed ChatGPT account. Output values are not returned. */
39
+ export declare function readCodexSubscriptionStatus(runtime: CodexChildEnvRuntime, execution: RuntimeExecution, timeout: number): Promise<CodexSubscriptionStatus>;
40
+ /** The browser login belongs to this invocation, including cancellation/teardown. */
41
+ export declare function runCodexSubscriptionLogin(runtime: CodexLoginRuntime, execution: RuntimeExecution, options?: {
42
+ timeout?: number;
43
+ signal?: AbortSignal;
44
+ }): Promise<{
45
+ exitCode: number | null;
46
+ timedOut: boolean;
47
+ }>;
48
+ //# sourceMappingURL=codex-subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-subscription.d.ts","sourceRoot":"","sources":["../../../../src/ai/providers/openai/codex-subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAItE,oFAAoF;AACpF,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAEzE,6GAA6G;AAC7G,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,8BAA8B,mFAMjC,CAAC;AAEX,sGAAsG;AACtG,eAAO,MAAM,oCAAoC,2KAOvC,CAAC;AAEX,gDAAgD;AAChD,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,GAAE,SAAS,MAAM,EAAmC,GAC5D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAExB;AAED,uFAAuF;AACvF,eAAO,MAAM,4BAA4B,iEAI/B,CAAC;AAEX,oFAAoF;AACpF,eAAO,MAAM,yBAAyB;;;;;CAK5B,CAAC;AACX,eAAO,MAAM,8BAA8B,UAE1C,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,gCAAgC,mCAAmC,CAAC;AAEjF,uCAAuC;AACvC,eAAO,MAAM,iCAAiC,oCAAoC,CAAC;AAEnF,MAAM,WAAW,uBAAuB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAKD,kGAAkG;AAClG,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,gBAAgB,EAC3B,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC,CAgBlC;AAsBD,qFAAqF;AACrF,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,gBAAgB,EAC3B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAClD,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAyCzD"}