@lmctl-ai/lmctl 0.1.83 → 0.1.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,138 @@
1
+ # Model Selection
2
+
3
+ `model=` on a `_MEMBER_` line is a provider-specific model request.
4
+
5
+ For `.lmctl` teamfile compatibility mode:
6
+
7
+ - `lmctl lint <teamfile>` warns when a requested model is not in the
8
+ tested-model catalog for `claude`, `codex`, `gemini`, `qwen`, or `agy`.
9
+ - `opencode` model validation reads configured models from
10
+ `~/.config/opencode/opencode.json` and WARNS (never injects) when a
11
+ `model=` isn't declared there and isn't a config-free github-copilot
12
+ GPT/Gemini/o-series id. See the `## OpenCode` section below.
13
+ - `copilot` accepts `model=` syntactically, but model selection is not
14
+ supported and lint warns that the value is ignored.
15
+ - `lmctl seed <teamfile>` passes `model=` through to the provider seed
16
+ call. It does not contact provider model catalogs.
17
+
18
+ The runtime also carries a built-in fallback catalog so installed
19
+ `lmctl` can lint without requiring this source-tree document to be
20
+ present in `dist`. Keep this document and
21
+ `src/providers/config/model-selection-lint.ts` synchronized when adding
22
+ or retiring tested model ids.
23
+
24
+ ## Claude
25
+
26
+ | Configured `model=` | Evidence |
27
+ | --- | --- |
28
+ | `claude-opus-4-6` | Ported from lmctl0 tested-model catalog. |
29
+ | `claude-opus-4-7` | Ported from lmctl0 tested-model catalog. |
30
+ | `claude-opus-4-8` | Added from operator-confirmed availability on 2026-06-13; `lmctl lint` compatibility smoke accepts it. |
31
+ | `claude-sonnet-4-6` | Ported from lmctl0 tested-model catalog. |
32
+ | `claude-sonnet-5` | Operator-confirmed 2026-07-05 (via GitHub Copilot: `opencode --model github-copilot/claude-sonnet-5 run …` → "build · claude-sonnet-5"). Also a valid native Claude Code model id (`claude --model claude-sonnet-5`). |
33
+ | `claude-haiku-4-5` | Ported from lmctl0 tested-model catalog. |
34
+ | `claude-fable-5` | Session observed locally via `lmctl0 ls` on 2026-06-11; `lmctl lint` compatibility smoke accepts it. Anthropic announced on 2026-06-12 that access to Fable 5 was suspended for customers; keep the id valid for existing teamfiles, but do not use it for new work while unavailable. |
35
+
36
+ ## Codex
37
+
38
+ | Configured `model=` | Evidence |
39
+ | --- | --- |
40
+ | `gpt-5.2` | Ported from lmctl0 tested-model catalog. |
41
+ | `gpt-5.4` | Ported from lmctl0 tested-model catalog. |
42
+ | `gpt-5.5` | Ported from lmctl0 tested-model catalog. |
43
+ | `gpt-5.4-mini` | Ported from lmctl0 tested-model catalog. |
44
+ | `gpt-5.3-codex` | Ported from lmctl0 tested-model catalog. |
45
+ | `gpt-5.3-codex-spark` | Ported from lmctl0 tested-model catalog. |
46
+
47
+ ## Gemini
48
+
49
+ | Configured `model=` | Evidence |
50
+ | --- | --- |
51
+ | `gemini-3.1-pro-preview` | Ported from lmctl0 tested-model catalog. |
52
+ | `gemini-3-flash-preview` | Ported from lmctl0 tested-model catalog. |
53
+ | `gemini-3.1-flash-lite-preview` | Ported from lmctl0 tested-model catalog. |
54
+ | `gemini-2.5-flash` | Ported from lmctl0 tested-model catalog. |
55
+ | `gemini-2.5-flash-lite` | Ported from lmctl0 tested-model catalog. |
56
+
57
+ ## Qwen
58
+
59
+ | Configured `model=` | Evidence |
60
+ | --- | --- |
61
+ | `qwen3.5-plus` | Ported from lmctl0 tested-model catalog. |
62
+ | `qwen3.6-plus` | Ported from lmctl0 tested-model catalog. |
63
+
64
+ ## Antigravity
65
+
66
+ Antigravity (`agy`) is a distinct provider from Gemini even though it stores
67
+ state under `~/.gemini/antigravity-cli`. `lmctl` supports it through native
68
+ terminal resume plus one-shot `agy -p` turns.
69
+
70
+ | Configured `model=` | Evidence |
71
+ | --- | --- |
72
+ | `gemini-1.5-flash` | Ported from lmctl0 tested-model catalog. |
73
+ | `gemini-1.5-pro` | Ported from lmctl0 tested-model catalog. |
74
+ | `gemini-3.5-flash` | Ported from lmctl0 tested-model catalog. |
75
+ | `gemini-3.1-pro` | Ported from lmctl0 tested-model catalog. |
76
+ | `gpt-oss-120b` | Ported from lmctl0 tested-model catalog. |
77
+ | `gpt-4-turbo` | Ported from lmctl0 tested-model catalog. |
78
+ | `gpt-4` | Ported from lmctl0 tested-model catalog. |
79
+ | `gpt-3.5-turbo` | Ported from lmctl0 tested-model catalog. |
80
+ | `claude-3-opus` | Ported from lmctl0 tested-model catalog. |
81
+ | `claude-3-sonnet` | Ported from lmctl0 tested-model catalog. |
82
+ | `claude-3-haiku` | Ported from lmctl0 tested-model catalog. |
83
+
84
+ ## OpenCode
85
+
86
+ opencode model ids use `<provider>/<model>` shape. **lmctl does NOT manage opencode
87
+ model config.** When lmctl spawns an opencode member it writes only
88
+ `permission: "allow"` (the YOLO contract — opencode ACP has no
89
+ `--dangerously-skip-permissions` flag) plus its own `mcp.lmctl` bridge entry into
90
+ the member's `.opencode/opencode.json`. It never injects a provider/model catalog.
91
+ Models resolve from **opencode's own default models.dev catalog + your
92
+ `~/.config/opencode/opencode.json`** — you own the model config.
93
+
94
+ What needs declaring:
95
+ - **github-copilot GPT / Gemini / o-series** → served **config-free** from opencode's
96
+ default catalog. Just `opencode auth login github-copilot`, then
97
+ `model=github-copilot/gpt-5.5`, etc.
98
+ - **github-copilot Claude** (`claude-opus-4.8`, `claude-sonnet-5`, …) → **must be
99
+ declared** in your `opencode.json`. Copilot proxies Claude through its own API and
100
+ opencode's default catalog does not route them (→ "404 page not found"); declaring
101
+ them under a `github-copilot` provider (`@ai-sdk/openai-compatible`,
102
+ `baseURL https://api.githubcopilot.com`) fixes it.
103
+ - **Custom providers** (`deepseek/*`, `z-ai-coding/*`, `openrouter/*`,
104
+ `ollama-local/*`, …) → **must be declared** (not in models.dev).
105
+
106
+ Copy the published sample and adjust for your account:
107
+
108
+ ```sh
109
+ mkdir -p ~/.config/opencode
110
+ cp examples/opencode.json ~/.config/opencode/opencode.json # or: curl -sL https://lmctl.com/examples/opencode.json -o ~/.config/opencode/opencode.json
111
+ ```
112
+
113
+ **Lint = detect + warn (never inject).** `lmctl lint`/`seed` warns when a
114
+ `provider=opencode model=` is **not declared** in your `opencode.json` and isn't a
115
+ config-free github-copilot GPT/Gemini/o id — pointing you at the sample. It also
116
+ warns when `model=` is absent (opencode would silently pick its own default). It
117
+ does not edit your config.
118
+
119
+ `effort=`/variants: an opencode member's `effort=` maps to opencode's `--variant`
120
+ (reasoning effort). Declare the variants on the model in your `opencode.json` (see
121
+ the sample's Claude/GPT entries with `variants: { high, xhigh, max }`); on the ACP
122
+ chat path lmctl sends `session/set_config_option` with `configId: "model"` and
123
+ `configId: "effort"` before `session/prompt`.
124
+
125
+ Example:
126
+
127
+ ```md
128
+ _MEMBER_ alias=Reviewer provider=opencode model=github-copilot/gpt-5.4 effort=xhigh sessionid=<seeded-id>
129
+ ```
130
+
131
+ `effort=` support by provider:
132
+
133
+ | Provider | Status |
134
+ | --- | --- |
135
+ | `opencode` | Supported (via the model's declared `variants` in opencode.json). |
136
+ | `claude` | Claude Code has native `--effort`, but lmctl has not wired `_MEMBER_ effort=` to Claude yet. |
137
+ | `codex` | Native effort surfaces exist; lmctl has not wired `_MEMBER_ effort=` to Codex yet. |
138
+ | `agy` | No verified effort flag; only `--model` supported. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lmctl-ai/lmctl",
3
- "version": "0.1.83",
3
+ "version": "0.1.84",
4
4
  "description": "A provider-agnostic control plane for teams of AI coding agents — across providers, with independent review and durable memory.",
5
5
  "type": "module",
6
6
  "homepage": "https://lmctl.com",
@@ -13,6 +13,7 @@
13
13
  "dist/cli/schema.sql",
14
14
  "dist/cli/side_effect_classifier.json",
15
15
  "dist/config/",
16
+ "durable-memory/model_selection.md",
16
17
  "workflows/",
17
18
  "bin/",
18
19
  "package.json",