Skip to content
Open
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 control-plane/internal/cli/doctor.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@ var providerEnvVars = []struct {
Model string // suggested default model when this provider is the chosen one
}{
{Name: "openrouter", EnvVar: "OPENROUTER_API_KEY", Model: "openrouter/google/gemini-2.5-flash"},
{Name: "anthropic", EnvVar: "ANTHROPIC_API_KEY", Model: "claude-3-5-sonnet-20241022"},
{Name: "anthropic", EnvVar: "ANTHROPIC_API_KEY", Model: "claude-sonnet-5-5"},
Comment thread
AbirAbbas marked this conversation as resolved.
Resolved
{Name: "openai", EnvVar: "OPENAI_API_KEY", Model: "gpt-4o"},
{Name: "google", EnvVar: "GOOGLE_API_KEY", Model: "gemini-1.5-pro"},
{Name: "google", EnvVar: "GOOGLE_API_KEY", Model: "gemini-3.8-flash"},
}

// doctorHarnessProvider describes one CLI `app.harness()` knows how to drive,
Expand Down
22 changes: 22 additions & 0 deletions control-plane/internal/cli/doctor_additional_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,28 @@ func TestDoctorHelpersAndCommand(t *testing.T) {
require.Equal(t, "OPENAI_API_KEY", report.ProviderKeys["openai"].EnvVar)
})

t.Run("recommended models are not retired ones", func(t *testing.T) {
for _, tc := range []struct {
provider string
envVar string
model string
}{
{"anthropic", "ANTHROPIC_API_KEY", "claude-sonnet-5-5"},
{"google", "GOOGLE_API_KEY", "gemini-3.8-flash"},
} {
t.Run(tc.provider, func(t *testing.T) {
for _, p := range providerEnvVars {
t.Setenv(p.EnvVar, "")
}
t.Setenv(tc.envVar, "key")

report := buildDoctorReport("http://127.0.0.1:1")
require.Equal(t, tc.provider, report.Recommendation.Provider)
require.Equal(t, tc.model, report.Recommendation.AIModel)
})
}
})

t.Run("tool and control plane checks cover success and failure", func(t *testing.T) {
tool := checkTool("go", "version")
require.True(t, tool.Available)
Expand Down
2 changes: 1 addition & 1 deletion control-plane/internal/cli/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ Example:
// and README.md are intentionally NOT generated — the skill produces them
// after the agent has written real reasoners.
cmd.Flags().BoolVar(&withDocker, "docker", false, "Also generate a Docker scaffold (Dockerfile, docker-compose.yml, .env.example, .dockerignore)")
cmd.Flags().StringVar(&defaultModel, "default-model", "openrouter/google/gemini-2.5-flash", "Default AI_MODEL string baked into the docker scaffold (LiteLLM-style, e.g. gpt-4o, anthropic/claude-3-5-sonnet-20241022)")
cmd.Flags().StringVar(&defaultModel, "default-model", "openrouter/google/gemini-2.5-flash", "Default AI_MODEL string baked into the docker scaffold (LiteLLM-style, e.g. gpt-4o, anthropic/claude-sonnet-5-5)")

// Hidden flags — sensible defaults; only set when you have a real reason.
cmd.Flags().StringVar(&controlPlaneImage, "control-plane-image", "agentfield/control-plane:latest", "")
Expand Down
4 changes: 2 additions & 2 deletions control-plane/internal/templates/docker/.env.example.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ OPENROUTER_API_KEY=sk-or-v1-...
# Must match the provider above. LiteLLM-style model strings.
AI_MODEL={{.DefaultModel}}
# AI_MODEL=gpt-4o
# AI_MODEL=anthropic/claude-3-5-sonnet-20241022
# AI_MODEL=gemini/gemini-1.5-pro
# AI_MODEL=anthropic/claude-sonnet-5-5
# AI_MODEL=gemini/gemini-3.8-flash

# --- Optional overrides ---
AGENT_NODE_ID={{.NodeID}}
Expand Down
Loading