@vibesdotdev/integrations-openai 0.0.0-stage → 1.0.0-rc.0
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.
- package/LICENSE +126 -0
- package/README.md +38 -2
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +4 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/metadata/assets/logos/providers/openai-dark.svg +12 -0
- package/dist/ai/metadata/assets/logos/providers/openai.svg +12 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-5-4-mini.json +41 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-5-4.json +41 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-5-5.json +41 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-5-6-luna.json +7 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-5-6-sol.json +7 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-5-6-terra.json +7 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-6-1-sol.json +41 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-6-1-terra.json +40 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-6-astra.json +41 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-6-luna.json +41 -0
- package/dist/ai/metadata/provider-models/openai/openai-gpt-image-1.json +34 -0
- package/dist/ai/metadata/providers/openai.json +36 -0
- package/dist/ai/openai-api.d.ts +39 -0
- package/dist/ai/openai-api.d.ts.map +1 -0
- package/dist/ai/openai-api.js +94 -0
- package/dist/ai/openai-api.js.map +1 -0
- package/dist/ai/openai-client.d.ts +12 -0
- package/dist/ai/openai-client.d.ts.map +1 -0
- package/dist/ai/openai-client.js +37 -0
- package/dist/ai/openai-client.js.map +1 -0
- package/dist/ai/openai-router-codec.d.ts +32 -0
- package/dist/ai/openai-router-codec.d.ts.map +1 -0
- package/dist/ai/openai-router-codec.js +225 -0
- package/dist/ai/openai-router-codec.js.map +1 -0
- package/dist/ai/openai.api.plugin.d.ts +6 -0
- package/dist/ai/openai.api.plugin.d.ts.map +1 -0
- package/dist/ai/openai.api.plugin.js +147 -0
- package/dist/ai/openai.api.plugin.js.map +1 -0
- package/dist/ai/openai.consumer.plugin.d.ts +6 -0
- package/dist/ai/openai.consumer.plugin.d.ts.map +1 -0
- package/dist/ai/openai.consumer.plugin.js +28 -0
- package/dist/ai/openai.consumer.plugin.js.map +1 -0
- package/dist/ai/openai.plugin.d.ts +2 -0
- package/dist/ai/openai.plugin.d.ts.map +1 -0
- package/dist/ai/openai.plugin.js +2 -0
- package/dist/ai/openai.plugin.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.d.ts +4194 -0
- package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.js +28 -0
- package/dist/ai/providers/cloud/frontier/openai/config/config.openai.descriptor.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.d.ts +26 -0
- package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.js +39 -0
- package/dist/ai/providers/cloud/frontier/openai/config/schemas/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/index.d.ts +4 -0
- package/dist/ai/providers/cloud/frontier/openai/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/index.js +4 -0
- package/dist/ai/providers/cloud/frontier/openai/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.d.ts +183 -0
- package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.js +190 -0
- package/dist/ai/providers/cloud/frontier/openai/provider.openai.descriptor.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.d.ts +25 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.js +20 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.descriptor.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.d.ts +36 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.js +228 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.d.ts +13 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.js +11 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.d.ts +47 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.js +111 -0
- package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-failure.d.ts +166 -0
- package/dist/ai/providers/openai/codex-app-server/codex-failure.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/codex-failure.js +229 -0
- package/dist/ai/providers/openai/codex-app-server/codex-failure.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/connection.d.ts +83 -0
- package/dist/ai/providers/openai/codex-app-server/connection.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/connection.js +222 -0
- package/dist/ai/providers/openai/codex-app-server/connection.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/failure-chunk.d.ts +10 -0
- package/dist/ai/providers/openai/codex-app-server/failure-chunk.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/failure-chunk.js +33 -0
- package/dist/ai/providers/openai/codex-app-server/failure-chunk.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/index.d.ts +10 -0
- package/dist/ai/providers/openai/codex-app-server/index.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/index.js +9 -0
- package/dist/ai/providers/openai/codex-app-server/index.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/protocol.d.ts +162 -0
- package/dist/ai/providers/openai/codex-app-server/protocol.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/protocol.js +116 -0
- package/dist/ai/providers/openai/codex-app-server/protocol.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-execution.d.ts +3 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-execution.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-execution.js +3 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-execution.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.d.ts +5 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.js +16 -0
- package/dist/ai/providers/openai/codex-app-server/runtime-transport.consumer.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/session.d.ts +24 -0
- package/dist/ai/providers/openai/codex-app-server/session.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/session.js +392 -0
- package/dist/ai/providers/openai/codex-app-server/session.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/spawner.d.ts +9 -0
- package/dist/ai/providers/openai/codex-app-server/spawner.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/spawner.js +48 -0
- package/dist/ai/providers/openai/codex-app-server/spawner.js.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/tool-name.d.ts +14 -0
- package/dist/ai/providers/openai/codex-app-server/tool-name.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-app-server/tool-name.js +45 -0
- package/dist/ai/providers/openai/codex-app-server/tool-name.js.map +1 -0
- package/dist/ai/providers/openai/codex-subscription.d.ts +48 -0
- package/dist/ai/providers/openai/codex-subscription.d.ts.map +1 -0
- package/dist/ai/providers/openai/codex-subscription.js +128 -0
- package/dist/ai/providers/openai/codex-subscription.js.map +1 -0
- package/dist/ai/providers/openai/detection/index.d.ts +2 -0
- package/dist/ai/providers/openai/detection/index.d.ts.map +1 -0
- package/dist/ai/providers/openai/detection/index.js +2 -0
- package/dist/ai/providers/openai/detection/index.js.map +1 -0
- package/dist/ai/providers/openai/detection/system.d.ts +5 -0
- package/dist/ai/providers/openai/detection/system.d.ts.map +1 -0
- package/dist/ai/providers/openai/detection/system.js +25 -0
- package/dist/ai/providers/openai/detection/system.js.map +1 -0
- package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.d.ts +4 -0
- package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.js +39 -0
- package/dist/ai/providers/openai/docs/ai.providers.openai.docs.descriptor.js.map +1 -0
- package/dist/ai/providers/openai/index.d.ts +4 -0
- package/dist/ai/providers/openai/index.d.ts.map +1 -0
- package/dist/ai/providers/openai/index.js +4 -0
- package/dist/ai/providers/openai/index.js.map +1 -0
- package/dist/ai/providers/openai/openai.provider.impl.d.ts +50 -0
- package/dist/ai/providers/openai/openai.provider.impl.d.ts.map +1 -0
- package/dist/ai/providers/openai/openai.provider.impl.js +331 -0
- package/dist/ai/providers/openai/openai.provider.impl.js.map +1 -0
- package/dist/ai/providers/openai/recommendations.d.ts +25 -0
- package/dist/ai/providers/openai/recommendations.d.ts.map +1 -0
- package/dist/ai/providers/openai/recommendations.js +33 -0
- package/dist/ai/providers/openai/recommendations.js.map +1 -0
- package/dist/ai/transcription/index.d.ts +4 -0
- package/dist/ai/transcription/index.d.ts.map +1 -0
- package/dist/ai/transcription/index.js +4 -0
- package/dist/ai/transcription/index.js.map +1 -0
- package/dist/ai/transcription/metadata/assets/logos/providers/openai-dark.svg +12 -0
- package/dist/ai/transcription/metadata/assets/logos/providers/openai.svg +12 -0
- package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-gpt-4o-mini-transcribe-2025-12-15.json +20 -0
- package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-gpt-4o-mini-transcribe.json +17 -0
- package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-gpt-4o-transcribe.json +17 -0
- package/dist/ai/transcription/metadata/provider-models/openai-transcription/openai-transcription-whisper-1.json +16 -0
- package/dist/ai/transcription/metadata/providers/openai-transcription.json +30 -0
- package/dist/ai/transcription/provider.plugin.d.ts +6 -0
- package/dist/ai/transcription/provider.plugin.d.ts.map +1 -0
- package/dist/ai/transcription/provider.plugin.js +120 -0
- package/dist/ai/transcription/provider.plugin.js.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.d.ts +4194 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.d.ts.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.js +53 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/config.openai-transcription.descriptor.js.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.d.ts +17 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.js +10 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/config/schemas/index.js.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.d.ts +5 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.d.ts.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.js +4 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/index.js.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.d.ts +183 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.d.ts.map +1 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.js +49 -0
- package/dist/ai/transcription/providers/cloud/speech/openai-transcription/provider.openai-transcription.descriptor.js.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/index.d.ts +2 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/index.d.ts.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/index.js +2 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/index.js.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/system.d.ts +4 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/system.d.ts.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/system.js +21 -0
- package/dist/ai/transcription/providers/openai-transcription/detection/system.js.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/index.d.ts +4 -0
- package/dist/ai/transcription/providers/openai-transcription/index.d.ts.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/index.js +4 -0
- package/dist/ai/transcription/providers/openai-transcription/index.js.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.d.ts +20 -0
- package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.d.ts.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.js +102 -0
- package/dist/ai/transcription/providers/openai-transcription/openai-transcription.provider.impl.js.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/recommendations.d.ts +24 -0
- package/dist/ai/transcription/providers/openai-transcription/recommendations.d.ts.map +1 -0
- package/dist/ai/transcription/providers/openai-transcription/recommendations.js +74 -0
- package/dist/ai/transcription/providers/openai-transcription/recommendations.js.map +1 -0
- package/dist/ai/tts/index.d.ts +4 -0
- package/dist/ai/tts/index.d.ts.map +1 -0
- package/dist/ai/tts/index.js +4 -0
- package/dist/ai/tts/index.js.map +1 -0
- package/dist/ai/tts/metadata/assets/logos/providers/openai-dark.svg +12 -0
- package/dist/ai/tts/metadata/assets/logos/providers/openai.svg +12 -0
- package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-gpt-4o-mini-tts-2025-12-15.json +17 -0
- package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-gpt-4o-mini-tts.json +17 -0
- package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-tts-1-hd.json +17 -0
- package/dist/ai/tts/metadata/provider-models/openai-tts/openai-tts-tts-1.json +17 -0
- package/dist/ai/tts/metadata/providers/openai-tts.json +32 -0
- package/dist/ai/tts/provider.plugin.d.ts +6 -0
- package/dist/ai/tts/provider.plugin.d.ts.map +1 -0
- package/dist/ai/tts/provider.plugin.js +120 -0
- package/dist/ai/tts/provider.plugin.js.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.d.ts +4194 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.d.ts.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.js +53 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/config.openai-tts.descriptor.js.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.d.ts +17 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.js +10 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/config/schemas/index.js.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/index.d.ts +5 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/index.d.ts.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/index.js +4 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/index.js.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.d.ts +183 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.d.ts.map +1 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.js +49 -0
- package/dist/ai/tts/providers/cloud/speech/openai-tts/provider.openai-tts.descriptor.js.map +1 -0
- package/dist/ai/tts/providers/openai-tts/detection/index.d.ts +2 -0
- package/dist/ai/tts/providers/openai-tts/detection/index.d.ts.map +1 -0
- package/dist/ai/tts/providers/openai-tts/detection/index.js +2 -0
- package/dist/ai/tts/providers/openai-tts/detection/index.js.map +1 -0
- package/dist/ai/tts/providers/openai-tts/detection/system.d.ts +4 -0
- package/dist/ai/tts/providers/openai-tts/detection/system.d.ts.map +1 -0
- package/dist/ai/tts/providers/openai-tts/detection/system.js +21 -0
- package/dist/ai/tts/providers/openai-tts/detection/system.js.map +1 -0
- package/dist/ai/tts/providers/openai-tts/index.d.ts +4 -0
- package/dist/ai/tts/providers/openai-tts/index.d.ts.map +1 -0
- package/dist/ai/tts/providers/openai-tts/index.js +4 -0
- package/dist/ai/tts/providers/openai-tts/index.js.map +1 -0
- package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.d.ts +24 -0
- package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.d.ts.map +1 -0
- package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.js +120 -0
- package/dist/ai/tts/providers/openai-tts/openai-tts.provider.impl.js.map +1 -0
- package/dist/ai/tts/providers/openai-tts/recommendations.d.ts +24 -0
- package/dist/ai/tts/providers/openai-tts/recommendations.d.ts.map +1 -0
- package/dist/ai/tts/providers/openai-tts/recommendations.js +74 -0
- package/dist/ai/tts/providers/openai-tts/recommendations.js.map +1 -0
- package/dist/external/codex/index.d.ts +162 -0
- package/dist/external/codex/index.d.ts.map +1 -0
- package/dist/external/codex/index.js +5 -0
- package/dist/external/codex/index.js.map +1 -0
- package/dist/external/codex/manifest.d.ts +9 -0
- package/dist/external/codex/manifest.d.ts.map +1 -0
- package/dist/external/codex/manifest.js +201 -0
- package/dist/external/codex/manifest.js.map +1 -0
- package/dist/external/codex-hooks.d.ts +39 -0
- package/dist/external/codex-hooks.d.ts.map +1 -0
- package/dist/external/codex-hooks.js +204 -0
- package/dist/external/codex-hooks.js.map +1 -0
- package/dist/external/codex-presets.d.ts +2033 -0
- package/dist/external/codex-presets.d.ts.map +1 -0
- package/dist/external/codex-presets.js +312 -0
- package/dist/external/codex-presets.js.map +1 -0
- package/dist/external/codex-subscription.operation.descriptors.d.ts +57 -0
- package/dist/external/codex-subscription.operation.descriptors.d.ts.map +1 -0
- package/dist/external/codex-subscription.operation.descriptors.js +22 -0
- package/dist/external/codex-subscription.operation.descriptors.js.map +1 -0
- package/dist/external/codex-subscription.operations.d.ts +4 -0
- package/dist/external/codex-subscription.operations.d.ts.map +1 -0
- package/dist/external/codex-subscription.operations.js +42 -0
- package/dist/external/codex-subscription.operations.js.map +1 -0
- package/dist/external/external.plugin.d.ts +3 -0
- package/dist/external/external.plugin.d.ts.map +1 -0
- package/dist/external/external.plugin.js +30 -0
- package/dist/external/external.plugin.js.map +1 -0
- package/dist/external/index.d.ts +4 -0
- package/dist/external/index.d.ts.map +1 -0
- package/dist/external/index.js +4 -0
- package/dist/external/index.js.map +1 -0
- package/dist/failure-outcome.d.ts +21 -0
- package/dist/failure-outcome.d.ts.map +1 -0
- package/dist/failure-outcome.js +22 -0
- package/dist/failure-outcome.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/codex-models.d.ts +23 -0
- package/dist/schemas/codex-models.d.ts.map +1 -0
- package/dist/schemas/codex-models.js +15 -0
- package/dist/schemas/codex-models.js.map +1 -0
- package/dist/schemas/codex-wire.d.ts +108 -0
- package/dist/schemas/codex-wire.d.ts.map +1 -0
- package/dist/schemas/codex-wire.js +25 -0
- package/dist/schemas/codex-wire.js.map +1 -0
- 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"}
|