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

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)
}
}