Skip to content
This repository was archived by the owner on Oct 16, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions apps/web/src/content/docs/docs/targets/coding-agents.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ targets:
| `api_key` | No | Provider API key. Prefer `${{ ENV_VAR }}` references. |
| `bearer_token` | No | Provider bearer token. Prefer `${{ ENV_VAR }}` references. Takes precedence over `api_key` when set. |
| `api_version` | No | Provider API version, primarily for Azure endpoints |
| `wire_api` | No | Provider wire API format, such as `responses` |
| `api_format` | No | Provider API format, such as `responses` |
| `grader_target` | Yes | LLM target for evaluation |

Route Copilot through an OpenAI-compatible endpoint:
Expand All @@ -157,7 +157,7 @@ targets:
subprovider: openai
base_url: ${{ OPENAI_ENDPOINT }}
api_key: ${{ OPENAI_API_KEY }}
wire_api: ${{ COPILOT_PROVIDER_WIRE_API }}
api_format: responses
grader_target: azure-base
```

Expand Down
15 changes: 10 additions & 5 deletions packages/core/src/evaluation/providers/targets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1565,18 +1565,23 @@ function resolveCopilotFlatProviderConfig(
optionalEnv: true,
},
);
const wireApi = resolveOptionalString(target.wire_api, env, `${target.name} copilot wire API`, {
allowLiteral: true,
optionalEnv: true,
});
const apiFormat = resolveOptionalString(
target.api_format,
env,
`${target.name} copilot API format`,
{
allowLiteral: true,
optionalEnv: true,
},
);

return {
...(type ? { type } : {}),
baseUrl,
...(apiKey ? { apiKey } : {}),
...(bearerToken ? { bearerToken } : {}),
...(apiVersion ? { apiVersion } : {}),
...(wireApi ? { wireApi } : {}),
...(apiFormat ? { wireApi: apiFormat } : {}),
};
}

Expand Down
1 change: 1 addition & 0 deletions packages/core/src/evaluation/providers/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,7 @@ export interface TargetDefinition {
readonly model?: string | unknown | undefined;
readonly version?: string | unknown | undefined;
readonly api_version?: string | unknown | undefined;
readonly api_format?: string | unknown | undefined;
// Anthropic fields
readonly variant?: string | unknown | undefined;
readonly thinking_budget?: number | unknown | undefined;
Expand Down
4 changes: 2 additions & 2 deletions packages/core/src/evaluation/validation/targets-validator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ const COPILOT_SDK_SETTINGS = new Set([
'api_key',
'bearer_token',
'api_version',
'wire_api',
'api_format',
]);

const COPILOT_CLI_SETTINGS = new Set([
Expand All @@ -155,7 +155,7 @@ const COPILOT_CLI_SETTINGS = new Set([
'api_key',
'bearer_token',
'api_version',
'wire_api',
'api_format',
]);

const VSCODE_SETTINGS = new Set([
Expand Down
8 changes: 4 additions & 4 deletions packages/core/test/evaluation/providers/targets.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -799,7 +799,7 @@ describe('resolveTargetDefinition', () => {
base_url: '${{ OPENAI_ENDPOINT }}',
api_key: '${{ OPENAI_API_KEY }}',
bearer_token: '${{ OPTIONAL_BEARER_TOKEN }}',
wire_api: 'responses',
api_format: 'responses',
api_version: '2024-10-21',
},
env,
Expand Down Expand Up @@ -834,7 +834,7 @@ describe('resolveTargetDefinition', () => {
subprovider: 'openai',
base_url: '${{ OPENAI_ENDPOINT }}',
api_key: '${{ OPENAI_API_KEY }}',
wire_api: 'responses',
api_format: 'responses',
},
env,
);
Expand Down Expand Up @@ -922,7 +922,7 @@ describe('resolveTargetDefinition', () => {
expect(target.config.customProvider?.apiKey).toBeUndefined();
});

it('copilot-sdk flat config supports wire_api', () => {
it('copilot-sdk flat config supports api_format', () => {
const env = {
FOUNDRY_KEY: 'foundry-secret',
} satisfies Record<string, string>;
Expand All @@ -935,7 +935,7 @@ describe('resolveTargetDefinition', () => {
subprovider: 'openai',
base_url: 'https://resource.openai.azure.com/openai/v1/',
api_key: '${{ FOUNDRY_KEY }}',
wire_api: 'responses',
api_format: 'responses',
},
env,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,13 +132,13 @@ describe('validateTargetsFile', () => {
subprovider: openai
base_url: \${{ OPENAI_ENDPOINT }}
api_key: \${{ OPENAI_API_KEY }}
wire_api: responses
api_format: responses
- name: copilot-cli-custom-provider
provider: copilot-cli
subprovider: openai
base_url: \${{ OPENAI_ENDPOINT }}
api_key: \${{ OPENAI_API_KEY }}
wire_api: responses
api_format: responses
`,
);

Expand Down
Loading