@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.
- 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 +141 -0
- package/dist/ai/openai.api.plugin.js.map +1 -0
- package/dist/ai/openai.consumer.plugin.d.ts +10 -0
- package/dist/ai/openai.consumer.plugin.d.ts.map +1 -0
- package/dist/ai/openai.consumer.plugin.js +38 -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,228 @@
|
|
|
1
|
+
import { CodexAppServerWireBodySchema } from "../../../../schemas/codex-wire.js";
|
|
2
|
+
import * as z from 'zod/v4';
|
|
3
|
+
import { CaughtFailureSchema, isCapabilityError } from '@vibesdotdev/kernel';
|
|
4
|
+
import { isTextRequest, textResultEvent } from '@vibesdotdev/ai/specs/interfaces';
|
|
5
|
+
import descriptor from "./codex-app-server.spec.descriptor.js";
|
|
6
|
+
import { codexFailure } from "./codex-failure.js";
|
|
7
|
+
import { CodexAppServerRecordSchema, CodexDynamicToolCallParamsSchema, JsonObjectSchema } from "./protocol.js";
|
|
8
|
+
import { decodeCodexToolName, encodeCodexToolName } from "./tool-name.js";
|
|
9
|
+
import { createCodexAppServerSessionProgram } from "./session.js";
|
|
10
|
+
class CodexAppServerSpec {
|
|
11
|
+
descriptor = descriptor;
|
|
12
|
+
encodeRequest(request, context) {
|
|
13
|
+
if (!isTextRequest(request)) {
|
|
14
|
+
throw codexFailure('unsupported-modality', { details: { modality: request.modality ?? null } });
|
|
15
|
+
}
|
|
16
|
+
if (!context.wireModelId) {
|
|
17
|
+
throw codexFailure('unsupported-option', { details: { option: 'model' } });
|
|
18
|
+
}
|
|
19
|
+
const policy = context.executionPolicy;
|
|
20
|
+
if (!policy?.workspacePath || !policy.sandboxMode || !policy.approvalPolicy) {
|
|
21
|
+
throw codexFailure('unsupported-option', {
|
|
22
|
+
details: { option: 'executionPolicy', needs: 'workspacePath, sandboxMode, approvalPolicy' }
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const dynamicTools = (request.tools ?? []).map((tool) => ({
|
|
26
|
+
type: 'function',
|
|
27
|
+
name: encodeCodexToolName(tool.name),
|
|
28
|
+
description: tool.description,
|
|
29
|
+
inputSchema: toJsonObject(tool.inputSchema)
|
|
30
|
+
}));
|
|
31
|
+
const developerInstructions = encodeDeveloperInstructions(request, policy, dynamicTools.length > 0);
|
|
32
|
+
const body = {
|
|
33
|
+
model: context.wireModelId,
|
|
34
|
+
cwd: policy.workspacePath,
|
|
35
|
+
// The caller's `sandboxMode` and `approvalPolicy` are the policy of the guarded Vibes
|
|
36
|
+
// dynamic tools, which keep it; they must be explicit. Codex's own built-in tools are
|
|
37
|
+
// always read-only and never ask: a policy can only narrow what Codex itself may do,
|
|
38
|
+
// never widen it, so honouring it means clamping, whatever the caller asked for.
|
|
39
|
+
sandbox: 'read-only',
|
|
40
|
+
approvalPolicy: 'never',
|
|
41
|
+
input: encodeTurnInput(request),
|
|
42
|
+
dynamicTools
|
|
43
|
+
};
|
|
44
|
+
if (developerInstructions)
|
|
45
|
+
body.developerInstructions = developerInstructions;
|
|
46
|
+
if (request.reasoningEffort)
|
|
47
|
+
body.effort = request.reasoningEffort;
|
|
48
|
+
return {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
path: '',
|
|
51
|
+
headers: { 'content-type': 'application/jsonl' },
|
|
52
|
+
body: {
|
|
53
|
+
...body,
|
|
54
|
+
sessionProgram: createCodexAppServerSessionProgram(CodexAppServerWireBodySchema.parse(body))
|
|
55
|
+
},
|
|
56
|
+
streaming: true
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async *decodeResponse(chunks, request, context) {
|
|
60
|
+
for await (const chunk of chunks) {
|
|
61
|
+
if (chunk.kind === 'error') {
|
|
62
|
+
yield { kind: 'error', error: chunk.error };
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (chunk.kind !== 'ndjson-record')
|
|
66
|
+
continue;
|
|
67
|
+
let decoded;
|
|
68
|
+
try {
|
|
69
|
+
decoded = JSON.parse(chunk.data);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
yield {
|
|
73
|
+
kind: 'error',
|
|
74
|
+
error: codexFailure('invalid-transport-record', { details: { problem: 'not-json' }, cause: error })
|
|
75
|
+
};
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const parsed = CodexAppServerRecordSchema.safeParse(decoded);
|
|
79
|
+
if (!parsed.success) {
|
|
80
|
+
yield {
|
|
81
|
+
kind: 'error',
|
|
82
|
+
error: codexFailure('invalid-transport-record', { details: { problem: 'unrecognized-record' } })
|
|
83
|
+
};
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const record = parsed.data;
|
|
87
|
+
if (record.type === 'text-delta') {
|
|
88
|
+
yield { kind: 'text-delta', delta: record.delta };
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (record.type === 'tool-call') {
|
|
92
|
+
// A completed dynamic tool execution, in stream order. Emit the
|
|
93
|
+
// standard start/args/end triple so streaming consumers render
|
|
94
|
+
// the tool call where it happened, not after the final text.
|
|
95
|
+
const { execution } = record;
|
|
96
|
+
yield { kind: 'tool-call-start', id: execution.id, name: execution.name };
|
|
97
|
+
yield {
|
|
98
|
+
kind: 'tool-call-arg-delta',
|
|
99
|
+
id: execution.id,
|
|
100
|
+
delta: JSON.stringify(execution.arguments)
|
|
101
|
+
};
|
|
102
|
+
yield { kind: 'tool-call-end', id: execution.id };
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const result = {
|
|
106
|
+
id: `${context.providerId}.${record.threadId}.${record.turnId}`,
|
|
107
|
+
timestamp: new Date(),
|
|
108
|
+
content: record.content,
|
|
109
|
+
toolCalls: record.toolExecutions.map((tool) => ({
|
|
110
|
+
id: tool.id,
|
|
111
|
+
name: tool.name,
|
|
112
|
+
arguments: tool.arguments,
|
|
113
|
+
result: tool.result
|
|
114
|
+
})),
|
|
115
|
+
metadata: {
|
|
116
|
+
modelVersion: context.wireModelId,
|
|
117
|
+
finishReason: 'stop',
|
|
118
|
+
providerManagedToolLoop: true,
|
|
119
|
+
codexSandbox: 'read-only',
|
|
120
|
+
codexApprovalPolicy: 'never',
|
|
121
|
+
executedToolCount: record.toolExecutions.length,
|
|
122
|
+
executedTools: record.toolExecutions
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
yield textResultEvent(request, result);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async handleServerRequest(request, _context, toolCallHandler) {
|
|
130
|
+
if (request.method !== 'item/tool/call') {
|
|
131
|
+
return { error: { code: -32601, message: 'codex-app-server: unsupported server request' } };
|
|
132
|
+
}
|
|
133
|
+
const parsed = CodexDynamicToolCallParamsSchema.safeParse(request.params);
|
|
134
|
+
if (!parsed.success) {
|
|
135
|
+
return {
|
|
136
|
+
error: { code: -32602, message: 'codex-app-server: malformed dynamic tool call' }
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const params = parsed.data;
|
|
140
|
+
try {
|
|
141
|
+
const value = await toolCallHandler({
|
|
142
|
+
id: params.callId,
|
|
143
|
+
name: params.namespace
|
|
144
|
+
? `${params.namespace}.${decodeCodexToolName(params.tool)}`
|
|
145
|
+
: decodeCodexToolName(params.tool),
|
|
146
|
+
arguments: params.arguments
|
|
147
|
+
});
|
|
148
|
+
const text = z.string().safeParse(value);
|
|
149
|
+
const result = {
|
|
150
|
+
contentItems: [
|
|
151
|
+
{
|
|
152
|
+
type: 'inputText',
|
|
153
|
+
text: text.success ? text.data : value === undefined ? 'null' : JSON.stringify(value)
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
success: true
|
|
157
|
+
};
|
|
158
|
+
return { result };
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
// The model sees why a tool failed only when the failure is a typed one (its message is
|
|
162
|
+
// fixed, safe text); anything else is reported as a generic failure.
|
|
163
|
+
const failure = CaughtFailureSchema.parse(error);
|
|
164
|
+
const result = {
|
|
165
|
+
contentItems: [
|
|
166
|
+
{
|
|
167
|
+
type: 'inputText',
|
|
168
|
+
text: isCapabilityError(failure) ? failure.message : 'The tool call failed.'
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
success: false
|
|
172
|
+
};
|
|
173
|
+
return { result };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function encodeDeveloperInstructions(request, policy, hasDynamicTools) {
|
|
178
|
+
const systemParts = request.messages
|
|
179
|
+
.filter((message) => message.role === 'system')
|
|
180
|
+
.map((message) => message.content.trim())
|
|
181
|
+
.filter(Boolean);
|
|
182
|
+
const writablePolicy = hasDynamicTools && policy.sandboxMode !== 'read-only'
|
|
183
|
+
? `Governing Vibes execution policy for this session: sandboxMode="${policy.sandboxMode}", approvalPolicy="${policy.approvalPolicy}". Codex's built-in sandbox is clamped to "read-only" with escalation disabled solely because Codex built-in shell tools are disabled in favor of the guarded Vibes dynamic tools. That built-in read-only sandbox restriction does NOT apply to Vibes dynamic tools: you are explicitly authorized and expected to edit, write, delete, execute commands, and commit within the workspace using the registered Vibes dynamic tools.`
|
|
184
|
+
: undefined;
|
|
185
|
+
const combined = [writablePolicy, ...systemParts].filter(Boolean).join('\n\n');
|
|
186
|
+
return combined.length > 0 ? combined : undefined;
|
|
187
|
+
}
|
|
188
|
+
function encodePrompt(request) {
|
|
189
|
+
const encoded = request.messages
|
|
190
|
+
.map((message) => `<${message.role}>\n${message.content}\n</${message.role}>`)
|
|
191
|
+
.join('\n\n');
|
|
192
|
+
if (!request.jsonSchema)
|
|
193
|
+
return encoded;
|
|
194
|
+
const schemaText = JSON.stringify(request.jsonSchema);
|
|
195
|
+
if (encoded.includes(schemaText))
|
|
196
|
+
return encoded;
|
|
197
|
+
return `${encoded}\n\n<output_schema>\nReturn only a JSON value matching this JSON Schema (no markdown fences or surrounding prose):\n${schemaText}\n</output_schema>`;
|
|
198
|
+
}
|
|
199
|
+
function encodeTurnInput(request) {
|
|
200
|
+
return [
|
|
201
|
+
{ type: 'text', text: encodePrompt(request), text_elements: [] },
|
|
202
|
+
...request.messages.flatMap((message) => (message.images ?? []).map((image) => ({
|
|
203
|
+
type: 'image',
|
|
204
|
+
url: `data:${image.mimeType};base64,${image.data}`
|
|
205
|
+
})))
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* A tool's input schema crosses the wire as JSON. Serializing first drops
|
|
210
|
+
* members JSON cannot carry (an `undefined` property), then the result is
|
|
211
|
+
* validated as a JSON object.
|
|
212
|
+
*/
|
|
213
|
+
function toJsonObject(schema) {
|
|
214
|
+
let serialized;
|
|
215
|
+
try {
|
|
216
|
+
serialized = JSON.stringify(schema);
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
throw codexFailure('invalid-tool-arguments', { details: { problem: 'not-serializable' }, cause: error });
|
|
220
|
+
}
|
|
221
|
+
const parsed = JsonObjectSchema.safeParse(JSON.parse(serialized));
|
|
222
|
+
if (!parsed.success)
|
|
223
|
+
throw codexFailure('invalid-tool-arguments', { details: { problem: 'not-an-object' } });
|
|
224
|
+
return parsed.data;
|
|
225
|
+
}
|
|
226
|
+
const codexAppServerSpec = new CodexAppServerSpec();
|
|
227
|
+
export default codexAppServerSpec;
|
|
228
|
+
//# sourceMappingURL=codex-app-server.spec.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server.spec.impl.js","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/codex-app-server.spec.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
id: string;
|
|
3
|
+
kind: "ai/transport";
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
scopes: ("consumer" | "cloud")[];
|
|
7
|
+
bidirectional: boolean;
|
|
8
|
+
cancellable: boolean;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
tags?: string[] | undefined;
|
|
11
|
+
};
|
|
12
|
+
export default _default;
|
|
13
|
+
//# sourceMappingURL=codex-app-server.transport.descriptor.d.ts.map
|
package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server.transport.descriptor.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,wBASG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createAITransportDescriptor } from '@vibesdotdev/ai/transports/schemas/descriptor';
|
|
2
|
+
export default createAITransportDescriptor({
|
|
3
|
+
id: 'codex-app-server',
|
|
4
|
+
name: 'Codex App Server',
|
|
5
|
+
description: 'Subscription-authenticated Codex JSONL session, one child per call, with bidirectional dynamic tool requests.',
|
|
6
|
+
scopes: ['consumer'],
|
|
7
|
+
bidirectional: true,
|
|
8
|
+
cancellable: true,
|
|
9
|
+
tags: ['openai', 'codex', 'jsonl', 'chatgpt-managed-auth', 'consumer-only']
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=codex-app-server.transport.descriptor.js.map
|
package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server.transport.descriptor.js","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/codex-app-server.transport.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAE5F,eAAe,2BAA2B,CAAC;IAC1C,EAAE,EAAE,kBAAkB;IACtB,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACV,+GAA+G;IAChH,MAAM,EAAE,CAAC,UAAU,CAAC;IACpB,aAAa,EAAE,IAAI;IACnB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,eAAe,CAAC;CAC3E,CAAC,CAAC"}
|
package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AITransportInterface, TransportCallOptions } from '@vibesdotdev/ai/transports/interfaces';
|
|
2
|
+
import type { WireRequest, WireResponseChunk } from '@vibesdotdev/ai/specs/interfaces';
|
|
3
|
+
import { type CodexAppServerRuntime, type CodexAppServerClientOptions, type CodexAppServerSpawner } from './connection.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Process transport for Codex's JSONL JSON-RPC channel: one child per call.
|
|
6
|
+
*
|
|
7
|
+
* The transport owns process/session lifetime and moves framed records. Codex
|
|
8
|
+
* thread, turn, notification, and dynamic-tool semantics live in the
|
|
9
|
+
* provider-owned session program installed by the selected spec. Each call's
|
|
10
|
+
* session program starts its own thread, so each call gets its own
|
|
11
|
+
* `codex app-server` child, closed when the call ends. A connection failure
|
|
12
|
+
* (the child exited, its stream or the protocol failed, a line passed the cap)
|
|
13
|
+
* then ends only the call that owns it, never every concurrent call.
|
|
14
|
+
*/
|
|
15
|
+
export declare class CodexAppServerTransport implements AITransportInterface {
|
|
16
|
+
private readonly runtime;
|
|
17
|
+
private readonly spawn;
|
|
18
|
+
private readonly options?;
|
|
19
|
+
readonly descriptor: {
|
|
20
|
+
id: string;
|
|
21
|
+
kind: "ai/transport";
|
|
22
|
+
name: string;
|
|
23
|
+
description: string;
|
|
24
|
+
scopes: ("consumer" | "cloud")[];
|
|
25
|
+
bidirectional: boolean;
|
|
26
|
+
cancellable: boolean;
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
tags?: string[] | undefined;
|
|
29
|
+
};
|
|
30
|
+
/** The connections of calls in flight; `close()` stops what is still here. */
|
|
31
|
+
private readonly live;
|
|
32
|
+
private closed;
|
|
33
|
+
constructor(runtime: CodexAppServerRuntime, spawn: CodexAppServerSpawner, options?: CodexAppServerClientOptions | undefined);
|
|
34
|
+
send(request: WireRequest, options: TransportCallOptions): AsyncIterable<WireResponseChunk>;
|
|
35
|
+
/** Closes the connections of calls in flight; a failure to stop a child is raised to the caller. */
|
|
36
|
+
close(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Closes the connection a finished call owned. A child that could not be
|
|
39
|
+
* stopped stays tracked, so `close()` tries it again and raises the failure;
|
|
40
|
+
* the call's own outcome stands.
|
|
41
|
+
*/
|
|
42
|
+
private reap;
|
|
43
|
+
private run;
|
|
44
|
+
/** Connects this call's own child, then runs the session program; any failure here ends the call as an `error` chunk. */
|
|
45
|
+
private runProgram;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=codex-app-server.transport.impl.consumer.d.ts.map
|
package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server.transport.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAEvF,OAAO,EAEN,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,MAAM,iBAAiB,CAAC;AAQzB;;;;;;;;;;GAUG;AACH,qBAAa,uBAAwB,YAAW,oBAAoB;IAOlE,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAR1B,QAAQ,CAAC,UAAU;;;;;;;;;;MAAc;IACjC,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgD;IACrE,OAAO,CAAC,MAAM,CAAS;gBAGL,OAAO,EAAE,qBAAqB,EAC9B,KAAK,EAAE,qBAAqB,EAC5B,OAAO,CAAC,EAAE,2BAA2B,YAAA;IAGvD,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAAC,iBAAiB,CAAC;IAI3F,oGAAoG;IAC9F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B;;;;OAIG;YACW,IAAI;YAgBH,GAAG;IAclB,yHAAyH;YAC1G,UAAU;CAiBzB"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
2
|
+
import { CodexAppServerConnection } from "./connection.js";
|
|
3
|
+
import { codexFailure } from "./codex-failure.js";
|
|
4
|
+
import descriptor from "./codex-app-server.transport.descriptor.js";
|
|
5
|
+
import { failureAsChunk } from "./failure-chunk.js";
|
|
6
|
+
import * as z from 'zod/v4';
|
|
7
|
+
import { settle } from "../../../../failure-outcome.js";
|
|
8
|
+
/**
|
|
9
|
+
* Process transport for Codex's JSONL JSON-RPC channel: one child per call.
|
|
10
|
+
*
|
|
11
|
+
* The transport owns process/session lifetime and moves framed records. Codex
|
|
12
|
+
* thread, turn, notification, and dynamic-tool semantics live in the
|
|
13
|
+
* provider-owned session program installed by the selected spec. Each call's
|
|
14
|
+
* session program starts its own thread, so each call gets its own
|
|
15
|
+
* `codex app-server` child, closed when the call ends. A connection failure
|
|
16
|
+
* (the child exited, its stream or the protocol failed, a line passed the cap)
|
|
17
|
+
* then ends only the call that owns it, never every concurrent call.
|
|
18
|
+
*/
|
|
19
|
+
export class CodexAppServerTransport {
|
|
20
|
+
runtime;
|
|
21
|
+
spawn;
|
|
22
|
+
options;
|
|
23
|
+
descriptor = descriptor;
|
|
24
|
+
/** The connections of calls in flight; `close()` stops what is still here. */
|
|
25
|
+
live = new Set();
|
|
26
|
+
closed = false;
|
|
27
|
+
constructor(runtime, spawn, options) {
|
|
28
|
+
this.runtime = runtime;
|
|
29
|
+
this.spawn = spawn;
|
|
30
|
+
this.options = options;
|
|
31
|
+
}
|
|
32
|
+
send(request, options) {
|
|
33
|
+
return this.run(request, options);
|
|
34
|
+
}
|
|
35
|
+
/** Closes the connections of calls in flight; a failure to stop a child is raised to the caller. */
|
|
36
|
+
async close() {
|
|
37
|
+
this.closed = true;
|
|
38
|
+
const pending = [...this.live];
|
|
39
|
+
this.live.clear();
|
|
40
|
+
let failure;
|
|
41
|
+
for (const connecting of pending) {
|
|
42
|
+
// A connect that failed raised its failure to the caller of its call; it left no connection to close.
|
|
43
|
+
const connected = await settle(connecting);
|
|
44
|
+
if (connected.failed)
|
|
45
|
+
continue;
|
|
46
|
+
const stopped = await settle(connected.value.close());
|
|
47
|
+
if (stopped.failed)
|
|
48
|
+
failure ??= { cause: stopped.cause };
|
|
49
|
+
}
|
|
50
|
+
if (failure)
|
|
51
|
+
throw failure.cause;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Closes the connection a finished call owned. A child that could not be
|
|
55
|
+
* stopped stays tracked, so `close()` tries it again and raises the failure;
|
|
56
|
+
* the call's own outcome stands.
|
|
57
|
+
*/
|
|
58
|
+
async reap(owned) {
|
|
59
|
+
const connected = await settle(owned);
|
|
60
|
+
if (connected.failed) {
|
|
61
|
+
this.live.delete(owned);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const reaped = await settle(connected.value.close());
|
|
65
|
+
if (!reaped.failed) {
|
|
66
|
+
this.live.delete(owned);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
getLogger('integrations-openai', this.runtime).warn('codex-app-server connection could not be closed after its call', {
|
|
70
|
+
error: reaped.cause
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
async *run(request, options) {
|
|
74
|
+
const program = readSessionProgram(request.body);
|
|
75
|
+
if (!program) {
|
|
76
|
+
yield { kind: 'error', error: codexFailure('codex-session-program-missing') };
|
|
77
|
+
yield { kind: 'end' };
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
yield* failureAsChunk(this.runProgram(program, options));
|
|
81
|
+
}
|
|
82
|
+
/** Connects this call's own child, then runs the session program; any failure here ends the call as an `error` chunk. */
|
|
83
|
+
async *runProgram(program, options) {
|
|
84
|
+
if (this.closed)
|
|
85
|
+
throw codexFailure('codex-transport-closed');
|
|
86
|
+
if (options.signal?.aborted)
|
|
87
|
+
throw codexFailure('generation-cancelled');
|
|
88
|
+
const owned = CodexAppServerConnection.connect(this.runtime, this.spawn, this.options);
|
|
89
|
+
this.live.add(owned);
|
|
90
|
+
try {
|
|
91
|
+
const connection = await owned;
|
|
92
|
+
if (this.closed)
|
|
93
|
+
throw codexFailure('codex-transport-closed');
|
|
94
|
+
yield* program(connection, options);
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
// A `close()` that already took this connection stops it itself.
|
|
98
|
+
if (this.live.has(owned))
|
|
99
|
+
await this.reap(owned);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** The spec attaches its session program to the request body in process; it never crosses a wire. */
|
|
104
|
+
const SessionBodySchema = z.object({
|
|
105
|
+
sessionProgram: z.custom((program) => program instanceof Function)
|
|
106
|
+
});
|
|
107
|
+
function readSessionProgram(body) {
|
|
108
|
+
const parsed = SessionBodySchema.safeParse(body);
|
|
109
|
+
return parsed.success ? parsed.data.sessionProgram : null;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=codex-app-server.transport.impl.consumer.js.map
|
package/dist/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server.transport.impl.consumer.js","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/codex-app-server.transport.impl.consumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed failures of the Codex app-server integration.
|
|
3
|
+
*
|
|
4
|
+
* Every failure is a `CapabilityError` with a code and a `reason` from the table
|
|
5
|
+
* below, and a message that is fixed per reason. Text the child wrote (a JSON-RPC
|
|
6
|
+
* `error.message`, a turn's error, `additionalDetails`) never enters a message:
|
|
7
|
+
* it rides only in a bounded `cause` ({@link childTextCause}) the logger scrubs.
|
|
8
|
+
*/
|
|
9
|
+
import { CapabilityError, type CapabilityErrorDetails, type CaughtFailure } from '@vibesdotdev/kernel';
|
|
10
|
+
declare const FAILURES: {
|
|
11
|
+
readonly 'chatgpt-account-required': {
|
|
12
|
+
readonly code: "AUTH_REQUIRED";
|
|
13
|
+
readonly message: "A managed ChatGPT account and the OpenAI provider are required; sign in through Codex.";
|
|
14
|
+
readonly retryable: false;
|
|
15
|
+
};
|
|
16
|
+
readonly 'codex-transport-closed': {
|
|
17
|
+
readonly code: "UNAVAILABLE";
|
|
18
|
+
readonly message: "The Codex app-server connection is closed.";
|
|
19
|
+
readonly retryable: true;
|
|
20
|
+
};
|
|
21
|
+
readonly 'codex-process-exited': {
|
|
22
|
+
readonly code: "UNAVAILABLE";
|
|
23
|
+
readonly message: "The Codex app-server process ended.";
|
|
24
|
+
readonly retryable: true;
|
|
25
|
+
};
|
|
26
|
+
readonly 'codex-line-too-long': {
|
|
27
|
+
readonly code: "UNAVAILABLE";
|
|
28
|
+
readonly message: "The Codex app-server wrote a line longer than the declared maximum.";
|
|
29
|
+
readonly retryable: false;
|
|
30
|
+
};
|
|
31
|
+
readonly 'codex-envelope-unrecognized': {
|
|
32
|
+
readonly code: "UNAVAILABLE";
|
|
33
|
+
readonly message: "The Codex app-server wrote output that is not a JSON-RPC message.";
|
|
34
|
+
readonly retryable: false;
|
|
35
|
+
};
|
|
36
|
+
readonly 'codex-request-failed': {
|
|
37
|
+
readonly code: "UNAVAILABLE";
|
|
38
|
+
readonly message: "The Codex app-server answered a request with an error.";
|
|
39
|
+
readonly retryable: true;
|
|
40
|
+
};
|
|
41
|
+
readonly 'codex-request-invalid': {
|
|
42
|
+
readonly code: "INVALID_INPUT";
|
|
43
|
+
readonly message: "The Codex app-server refused the request parameters.";
|
|
44
|
+
readonly retryable: false;
|
|
45
|
+
};
|
|
46
|
+
readonly 'codex-request-timeout': {
|
|
47
|
+
readonly code: "TIMEOUT";
|
|
48
|
+
readonly message: "A Codex app-server request timed out.";
|
|
49
|
+
readonly retryable: true;
|
|
50
|
+
};
|
|
51
|
+
readonly 'codex-turn-failed': {
|
|
52
|
+
readonly code: "UNAVAILABLE";
|
|
53
|
+
readonly message: "The Codex turn did not complete.";
|
|
54
|
+
readonly retryable: true;
|
|
55
|
+
};
|
|
56
|
+
readonly 'codex-usage-limit': {
|
|
57
|
+
readonly code: "RATE_LIMITED";
|
|
58
|
+
readonly message: "The Codex account has reached its usage limit.";
|
|
59
|
+
readonly retryable: false;
|
|
60
|
+
};
|
|
61
|
+
readonly 'codex-model-unsupported': {
|
|
62
|
+
readonly code: "INVALID_INPUT";
|
|
63
|
+
readonly message: "The selected model is not available on this ChatGPT subscription. Choose another model.";
|
|
64
|
+
readonly retryable: false;
|
|
65
|
+
};
|
|
66
|
+
readonly 'codex-turn-timeout': {
|
|
67
|
+
readonly code: "TIMEOUT";
|
|
68
|
+
readonly message: "The Codex turn timed out before it completed.";
|
|
69
|
+
readonly retryable: true;
|
|
70
|
+
};
|
|
71
|
+
readonly 'generation-cancelled': {
|
|
72
|
+
readonly code: "CANCELLED";
|
|
73
|
+
readonly message: "The generation was cancelled.";
|
|
74
|
+
readonly retryable: false;
|
|
75
|
+
};
|
|
76
|
+
readonly 'codex-output-too-large': {
|
|
77
|
+
readonly code: "UNAVAILABLE";
|
|
78
|
+
readonly message: "The Codex turn produced more output than the declared bound.";
|
|
79
|
+
readonly retryable: false;
|
|
80
|
+
};
|
|
81
|
+
readonly 'codex-listener-failed': {
|
|
82
|
+
readonly code: "INTERNAL";
|
|
83
|
+
readonly message: "A listener of the Codex app-server connection failed.";
|
|
84
|
+
readonly retryable: false;
|
|
85
|
+
};
|
|
86
|
+
readonly 'codex-transport-close-failed': {
|
|
87
|
+
readonly code: "UNAVAILABLE";
|
|
88
|
+
readonly message: "A Codex app-server connection could not be closed.";
|
|
89
|
+
readonly retryable: false;
|
|
90
|
+
};
|
|
91
|
+
readonly 'codex-cli-unavailable': {
|
|
92
|
+
readonly code: "UNAVAILABLE";
|
|
93
|
+
readonly message: "The Codex CLI is unavailable in the runtime environment.";
|
|
94
|
+
readonly retryable: false;
|
|
95
|
+
};
|
|
96
|
+
readonly 'codex-consumer-host-required': {
|
|
97
|
+
readonly code: "UNAVAILABLE";
|
|
98
|
+
readonly message: "Subscription execution requires a connected consumer host.";
|
|
99
|
+
readonly retryable: false;
|
|
100
|
+
};
|
|
101
|
+
readonly 'codex-session-program-missing': {
|
|
102
|
+
readonly code: "INTERNAL";
|
|
103
|
+
readonly message: "The selected spec did not provide a Codex session program.";
|
|
104
|
+
readonly retryable: false;
|
|
105
|
+
};
|
|
106
|
+
readonly 'response-shape-mismatch': {
|
|
107
|
+
readonly code: "UNAVAILABLE";
|
|
108
|
+
readonly message: "The Codex app-server answered with a result of an unexpected shape.";
|
|
109
|
+
readonly retryable: false;
|
|
110
|
+
};
|
|
111
|
+
readonly 'unsupported-option': {
|
|
112
|
+
readonly code: "INVALID_INPUT";
|
|
113
|
+
readonly message: "The Codex app-server spec does not support this request option.";
|
|
114
|
+
readonly retryable: false;
|
|
115
|
+
};
|
|
116
|
+
readonly 'unsupported-modality': {
|
|
117
|
+
readonly code: "INVALID_INPUT";
|
|
118
|
+
readonly message: "The Codex app-server spec only supports text generation.";
|
|
119
|
+
readonly retryable: false;
|
|
120
|
+
};
|
|
121
|
+
readonly 'invalid-tool-arguments': {
|
|
122
|
+
readonly code: "INVALID_INPUT";
|
|
123
|
+
readonly message: "The dynamic tool schema is not a JSON object.";
|
|
124
|
+
readonly retryable: false;
|
|
125
|
+
};
|
|
126
|
+
readonly 'invalid-tool-id-encoding': {
|
|
127
|
+
readonly code: "INVALID_INPUT";
|
|
128
|
+
readonly message: "The dynamic tool id is not a Vibes-encoded tool id.";
|
|
129
|
+
readonly retryable: false;
|
|
130
|
+
};
|
|
131
|
+
readonly 'tool-id-too-long': {
|
|
132
|
+
readonly code: "INVALID_INPUT";
|
|
133
|
+
readonly message: "The tool id cannot be represented collision-safely within the Codex tool-name limit.";
|
|
134
|
+
readonly retryable: false;
|
|
135
|
+
};
|
|
136
|
+
readonly 'invalid-transport-record': {
|
|
137
|
+
readonly code: "UNAVAILABLE";
|
|
138
|
+
readonly message: "The transport delivered a record the Codex spec cannot read.";
|
|
139
|
+
readonly retryable: false;
|
|
140
|
+
};
|
|
141
|
+
};
|
|
142
|
+
export type CodexFailureReason = keyof typeof FAILURES;
|
|
143
|
+
/** The Codex account is not the managed ChatGPT sign-in this provider requires. */
|
|
144
|
+
export declare class CodexAppServerAuthError extends CapabilityError {
|
|
145
|
+
constructor();
|
|
146
|
+
}
|
|
147
|
+
/** A typed failure with its reason's fixed message; `details` and `cause` are the caller's bounded facts. */
|
|
148
|
+
export declare function codexFailure(reason: CodexFailureReason, extra?: {
|
|
149
|
+
readonly details?: CapabilityErrorDetails;
|
|
150
|
+
readonly cause?: unknown;
|
|
151
|
+
}): CapabilityError;
|
|
152
|
+
/**
|
|
153
|
+
* Text the child wrote, kept only as the `cause` of a typed failure: at most 200
|
|
154
|
+
* characters, with control, format and separator characters removed.
|
|
155
|
+
*/
|
|
156
|
+
export declare function childTextCause(text: string): Error;
|
|
157
|
+
/**
|
|
158
|
+
* A turn the child reported failed. The text is classified (a spent allowance and
|
|
159
|
+
* a model the account cannot use are their own reasons, so recovery and the user
|
|
160
|
+
* can act on them) and kept only as the bounded `cause`.
|
|
161
|
+
*/
|
|
162
|
+
export declare function turnFailure(childText: string): CapabilityError;
|
|
163
|
+
/** The failure of a JSON-RPC request or of the child, as the Codex reason that names it. */
|
|
164
|
+
export declare function codexFailureFrom(caught: CaughtFailure): CapabilityError;
|
|
165
|
+
export {};
|
|
166
|
+
//# sourceMappingURL=codex-failure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-failure.d.ts","sourceRoot":"","sources":["../../../../../src/ai/providers/openai/codex-app-server/codex-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,eAAe,EAKf,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,MAAM,qBAAqB,CAAC;AAW7B,QAAA,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmImC,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,QAAQ,CAAC;AAEvD,mFAAmF;AACnF,qBAAa,uBAAwB,SAAQ,eAAe;;CAM3D;AAED,6GAA6G;AAC7G,wBAAgB,YAAY,CAC3B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,GAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACjF,eAAe,CAMjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAElD;AAQD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAS9D;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAwCvE"}
|