diff --git a/packages/cloud-agents/src/server/__tests__/task-helper-subscription-transport.test.ts b/packages/cloud-agents/src/server/__tests__/task-helper-subscription-transport.test.ts index 30a295846..4e5cb542f 100644 --- a/packages/cloud-agents/src/server/__tests__/task-helper-subscription-transport.test.ts +++ b/packages/cloud-agents/src/server/__tests__/task-helper-subscription-transport.test.ts @@ -143,8 +143,10 @@ describe.skipIf(process.env.ROOMOTE_TEST_OPENCODE_SUBSCRIPTIONS !== '1')( expect(requests[0]).toMatchObject({ authorization: 'Bearer synthetic-run-token', }); - expect(requests[0]?.url).toContain( - `/api/inference/${provider === 'openai' ? 'openai-chatgpt' : provider}/`, + expect(requests[0]?.url).toBe( + provider === 'openai' + ? '/api/inference/openai-chatgpt/v1/responses' + : '/api/inference/github-copilot/responses', ); expect( isAgentSafetyStop(result.error ?? result.data?.info.error), diff --git a/packages/cloud-agents/src/server/opencode-runtime.ts b/packages/cloud-agents/src/server/opencode-runtime.ts index 224606be7..6a0489810 100644 --- a/packages/cloud-agents/src/server/opencode-runtime.ts +++ b/packages/cloud-agents/src/server/opencode-runtime.ts @@ -751,6 +751,11 @@ export function rebaseTaskHelperInference( const existing = asRecord(providers[id]) ?? {}; providers[id] = { ...existing, + // As in the sandbox provider config, activate Copilot before OpenCode's + // custom-loader pass so GPT-5+ models use /responses, not /chat/completions. + ...(id === 'github-copilot' + ? { env: ['ROOMOTE_TASK_INFERENCE_TOKEN'] } + : {}), options: { ...asRecord(existing.options), baseURL: buildInferenceGatewayOpenCodeBaseUrl(