diff --git a/.agentv/targets.yaml b/.agentv/targets.yaml index 09b9fc8fe..4a9bef22d 100644 --- a/.agentv/targets.yaml +++ b/.agentv/targets.yaml @@ -5,7 +5,7 @@ targets: - name: default provider: pi-coding-agent executable: ${{ PI_CLI_PATH }} - pi_provider: openrouter + subprovider: openrouter model: z-ai/glm-4.7 api_key: ${{ OPENROUTER_API_KEY }} system_prompt: "Answer directly based on the information provided." diff --git a/examples/features/.agentv/targets.yaml b/examples/features/.agentv/targets.yaml index 091b3fe7e..b08f85657 100644 --- a/examples/features/.agentv/targets.yaml +++ b/examples/features/.agentv/targets.yaml @@ -53,7 +53,7 @@ targets: - name: pi provider: pi-coding-agent executable: ${{ PI_CLI_PATH }} # Optional: defaults to `pi` if omitted - pi_provider: openrouter + subprovider: openrouter model: openai/gpt-5.4 api_key: ${{ OPENROUTER_API_KEY }} grader_target: gemini-llm diff --git a/packages/core/src/evaluation/providers/pi-agent-sdk.ts b/packages/core/src/evaluation/providers/pi-agent-sdk.ts index b36384908..e689231cc 100644 --- a/packages/core/src/evaluation/providers/pi-agent-sdk.ts +++ b/packages/core/src/evaluation/providers/pi-agent-sdk.ts @@ -98,7 +98,7 @@ export class PiAgentSdkProvider implements Provider { const startTimeIso = new Date().toISOString(); const startMs = Date.now(); - const providerName = this.config.provider ?? 'anthropic'; + const providerName = this.config.subprovider ?? 'anthropic'; const modelId = this.config.model ?? 'claude-sonnet-4-20250514'; // Use type assertion since getModel has strict generic constraints for compile-time known values // but we're working with runtime configuration strings @@ -248,7 +248,7 @@ export class PiAgentSdkProvider implements Provider { messages: agentMessages, systemPrompt, model: this.config.model, - provider: this.config.provider, + subprovider: this.config.subprovider, }, output, tokenUsage, diff --git a/packages/core/src/evaluation/providers/pi-coding-agent.ts b/packages/core/src/evaluation/providers/pi-coding-agent.ts index 6438af0b6..892ab80f9 100644 --- a/packages/core/src/evaluation/providers/pi-coding-agent.ts +++ b/packages/core/src/evaluation/providers/pi-coding-agent.ts @@ -165,8 +165,8 @@ export class PiCodingAgentProvider implements Provider { const args: string[] = []; // Provider and model configuration - if (this.config.provider) { - args.push('--provider', this.config.provider); + if (this.config.subprovider) { + args.push('--provider', this.config.subprovider); } if (this.config.model) { args.push('--model', this.config.model); @@ -252,7 +252,7 @@ export class PiCodingAgentProvider implements Provider { // Map provider-specific API key to the correct env var if (this.config.apiKey) { - const provider = this.config.provider?.toLowerCase() ?? 'google'; + const provider = this.config.subprovider?.toLowerCase() ?? 'google'; switch (provider) { case 'google': case 'gemini': diff --git a/packages/core/src/evaluation/providers/targets.ts b/packages/core/src/evaluation/providers/targets.ts index ae7e424b7..e73fb4bb7 100644 --- a/packages/core/src/evaluation/providers/targets.ts +++ b/packages/core/src/evaluation/providers/targets.ts @@ -487,7 +487,7 @@ export interface CopilotSdkResolvedConfig { export interface PiCodingAgentResolvedConfig { readonly executable: string; - readonly provider?: string; + readonly subprovider?: string; readonly model?: string; readonly apiKey?: string; readonly tools?: string; @@ -502,7 +502,7 @@ export interface PiCodingAgentResolvedConfig { } export interface PiAgentSdkResolvedConfig { - readonly provider?: string; + readonly subprovider?: string; readonly model?: string; readonly apiKey?: string; readonly timeoutMs?: number; @@ -1416,7 +1416,9 @@ function resolvePiCodingAgentConfig( evalFilePath?: string, ): PiCodingAgentResolvedConfig { const executableSource = target.executable ?? target.command ?? target.binary; - const providerSource = target.pi_provider ?? target.piProvider ?? target.llm_provider; + // subprovider is canonical; pi_provider, piProvider, llm_provider are deprecated aliases + const subproviderSource = + target.subprovider ?? target.pi_provider ?? target.piProvider ?? target.llm_provider; const modelSource = target.model ?? target.pi_model ?? target.piModel; const apiKeySource = target.api_key ?? target.apiKey; const toolsSource = target.tools ?? target.pi_tools ?? target.piTools; @@ -1436,10 +1438,15 @@ function resolvePiCodingAgentConfig( optionalEnv: true, }) ?? 'pi'; - const provider = resolveOptionalString(providerSource, env, `${target.name} pi provider`, { - allowLiteral: true, - optionalEnv: true, - }); + const subprovider = resolveOptionalString( + subproviderSource, + env, + `${target.name} pi subprovider`, + { + allowLiteral: true, + optionalEnv: true, + }, + ); const model = resolveOptionalString(modelSource, env, `${target.name} pi model`, { allowLiteral: true, @@ -1507,7 +1514,7 @@ function resolvePiCodingAgentConfig( return { executable, - provider, + subprovider, model, apiKey, tools, @@ -1526,16 +1533,18 @@ function resolvePiAgentSdkConfig( target: z.infer, env: EnvLookup, ): PiAgentSdkResolvedConfig { - const providerSource = target.pi_provider ?? target.piProvider ?? target.llm_provider; + // subprovider is canonical; pi_provider, piProvider, llm_provider are deprecated aliases + const subproviderSource = + target.subprovider ?? target.pi_provider ?? target.piProvider ?? target.llm_provider; const modelSource = target.model ?? target.pi_model ?? target.piModel; const apiKeySource = target.api_key ?? target.apiKey; const timeoutSource = target.timeout_seconds ?? target.timeoutSeconds; const systemPromptSource = target.system_prompt ?? target.systemPrompt; - const provider = resolveOptionalString( - providerSource, + const subprovider = resolveOptionalString( + subproviderSource, env, - `${target.name} pi-agent-sdk provider`, + `${target.name} pi-agent-sdk subprovider`, { allowLiteral: true, optionalEnv: true, @@ -1560,7 +1569,7 @@ function resolvePiAgentSdkConfig( : undefined; return { - provider, + subprovider, model, apiKey, timeoutMs,