Drop fabricated "example" models for codex/gemini · Entire
Drop fabricated "example" models for codex/gemini
724f579→main·
dipree·1mo ago·3 files·+10 added/-44 removed
The codex/gemini model listers returned hardcoded "example" model ids
that looked pickable but weren't guaranteed valid (gpt-5-codex could fail
outright). Neither CLI has a model-enumeration command, so remove the
listers entirely. The model picker then offers just Default + Custom for
those agents (its existing no-models behavior), and --models shows
"(no advertised models; pass any value your CLI accepts via --model)".
Claude keeps its real, valid aliases (opus/sonnet/haiku). Tests updated.
Sessions
ebcc924da0dfView transcript
Changes
3
- cmd/entire/cli
- agent
- codex
- Dmodels.go-20
- geminicli
- Dmodels.go-19
- codex
- review
- Mcmd_test.go+10/-5
- agent
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package codex
import (
"context"
"github.com/entireio/cli/cmd/entire/cli/agent"
)
var _ agent.ModelLister = (*CodexAgent)(nil)
// ListModels returns example Codex model identifiers for `entire review
// --model`. Codex has no model-enumeration command, so these are advisory
// examples — `--model` forwards any value the codex CLI accepts.
func (c *CodexAgent) ListModels(_ context.Context) ([]agent.ModelInfo, error) {
return []agent.ModelInfo{
{ID: "gpt-5-codex", Note: "example — Codex-tuned"},
{ID: "gpt-5", Note: "example"},
{ID: "o3", Note: "example"},
}, nil
}
Dcmd/entire/cli/agent/codex/models.go-20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package geminicli
import (
"context"
"github.com/entireio/cli/cmd/entire/cli/agent"
)
var _ agent.ModelLister = (*GeminiCLIAgent)(nil)
// ListModels returns example Gemini model identifiers for `entire review
// --model`. The Gemini CLI has no model-enumeration command, so these are
// advisory examples — `--model` forwards any value the gemini CLI accepts.
func (g *GeminiCLIAgent) ListModels(_ context.Context) ([]agent.ModelInfo, error) {
return []agent.ModelInfo{
{ID: "gemini-2.5-pro", Note: "example"},
{ID: "gemini-2.5-flash", Note: "example — faster"},
}, nil
}
Dcmd/entire/cli/agent/geminicli/models.go-19
135 unmodified lines
136
137
138
139
139
140
141
142
143
144
145
146
147
148
149
150
151
8 unmodified lines
160
161
162
158
159
163
164
165
161
162
166
167
168
169
170
135 unmodified lines
t.Fatalf("execute: %v", err)
}
out := buf.String()
for _, want := range []string{"claude-code", "opus", "sonnet", "codex", "gpt-5-codex", "gemini", "gemini-2.5-pro"} {
// claude-code advertises real aliases; codex/gemini have no enumeration
// command, so they list no models and point at Default/--model instead.
for _, want := range []string{"claude-code", "opus", "sonnet", "codex", "gemini", "no advertised models"} {
if !strings.Contains(out, want) {
t.Errorf("--models output missing %q:\n%s", want, out)
}
}
if strings.Contains(out, "gpt-5-codex") {
t.Errorf("--models should not invent example codex models:\n%s", out)
}
// TestReviewCmd_ListModelsFilteredByAgent verifies the --agent filter narrows
8 unmodified lines
t.Fatalf("execute: %v", err)
}
out := buf.String()
if !strings.Contains(out, "gpt-5-codex") {
t.Errorf("expected codex models, got:\n%s", out)
if !strings.Contains(out, "codex") || !strings.Contains(out, "no advertised models") {
t.Errorf("expected codex section with no-advertised-models note, got:\n%s", out)
}
if strings.Contains(out, "gemini-2.5-pro") {
t.Errorf("--agent codex should not list gemini models:\n%s", out)
if strings.Contains(out, "gemini") {
t.Errorf("--agent codex should not list gemini:\n%s", out)
}
}