@lmctl-ai/lmctl 0.1.324 → 0.1.325
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.
- package/dist/cli/index.js +626 -603
- package/dist/cli/schema.sql +15 -0
- package/durable-memory/model_selection.md +63 -1
- package/package.json +1 -1
package/dist/cli/schema.sql
CHANGED
|
@@ -859,3 +859,18 @@ CREATE INDEX IF NOT EXISTS idx_invocation_state_target_status
|
|
|
859
859
|
ON invocation_state(target_teamfile, target_alias, status, launch_source);
|
|
860
860
|
CREATE INDEX IF NOT EXISTS idx_invocation_state_from_time
|
|
861
861
|
ON invocation_state(from_identity, started_at DESC);
|
|
862
|
+
|
|
863
|
+
-- v59: source-generation identity. A single-row, non-secret random id assigned
|
|
864
|
+
-- ONCE at migration time. Every lmctl-issued reference (invocation/provider-
|
|
865
|
+
-- session/mail ref) binds to it so a ref minted against one ledger can never
|
|
866
|
+
-- silently resolve against an unrelated or recovered one. The singleton CHECK
|
|
867
|
+
-- makes >1 row structurally impossible; the row itself is inserted by
|
|
868
|
+
-- migrate()'s ensureLedgerIdentity (fresh create AND upgrade paths).
|
|
869
|
+
-- DELIBERATELY EXCLUDED from the db-recovery salvage set (salvageEssentialConfig
|
|
870
|
+
-- copies only root_team + lmctl_config): a salvage-into-fresh-db is a NEW ledger
|
|
871
|
+
-- and must mint a NEW id; only a full-file backup restore retains this row.
|
|
872
|
+
CREATE TABLE IF NOT EXISTS state_ledger_identity (
|
|
873
|
+
singleton INTEGER PRIMARY KEY CHECK (singleton = 1),
|
|
874
|
+
instance_id TEXT NOT NULL,
|
|
875
|
+
created_at TEXT NOT NULL
|
|
876
|
+
);
|
|
@@ -21,6 +21,17 @@ For `.lmctl` teamfile compatibility mode:
|
|
|
21
21
|
user-defined, not a fixed vendor catalog, so a hardcoded list in this
|
|
22
22
|
doc would be wrong for every user whose aliases differ. See the
|
|
23
23
|
`## Kimi` section below.
|
|
24
|
+
- `hermes` model ids are the ENCODED `<provider>:<model>` form Hermes's
|
|
25
|
+
ACP server advertises (`acp_adapter/model_catalog.py`). lmctl sends the
|
|
26
|
+
value through ACP `session/set_model` and does NOT maintain a Hermes
|
|
27
|
+
model list to validate against: Hermes resolves models at runtime from
|
|
28
|
+
its own provider config + auth, so any hardcoded list here would be
|
|
29
|
+
wrong for most users. Lint warns only when `model=` has no `provider:`
|
|
30
|
+
prefix. Hermes only treats a leading `<x>:` as a provider delimiter when
|
|
31
|
+
`x` is a known provider name (`hermes_cli/models.py:parse_model_input`);
|
|
32
|
+
a bare id stays the model name and Hermes then has to infer the provider
|
|
33
|
+
by detection, which fails for models it cannot place. See the `## Hermes`
|
|
34
|
+
section below.
|
|
24
35
|
- `copilot` accepts `model=` syntactically, but model selection is not
|
|
25
36
|
supported and lint warns that the value is ignored.
|
|
26
37
|
- `lmctl seed <teamfile>` passes `model=` through to the provider seed
|
|
@@ -54,11 +65,24 @@ or retiring tested model ids.
|
|
|
54
65
|
| `gpt-5.4` | Ported from lmctl0 tested-model catalog. |
|
|
55
66
|
| `gpt-5.5` | Ported from lmctl0 tested-model catalog. |
|
|
56
67
|
| `gpt-5.6-sol` | Operator-confirmed for Codex review team use on 2026-07-19. |
|
|
57
|
-
| `gpt-5.4-mini` | Ported from lmctl0 tested-model catalog. |
|
|
58
68
|
| `gpt-5.3-codex` | Ported from lmctl0 tested-model catalog. |
|
|
59
69
|
| `gpt-5.3-codex-spark` | Ported from lmctl0 tested-model catalog. Banned as a build model by the operator (2026-09-06, plenty of regular-GPT quota headroom) -- `lmctl lint` now warns on explicit `model=gpt-5.3-codex-spark` for build work; kept in this tested list since it's still a real, valid model for genuinely non-build (classification-only) use. |
|
|
60
70
|
| `gpt-6-astra` | Operator seeding for evaluation, 2026-09-06. |
|
|
61
71
|
|
|
72
|
+
**Retired:** `gpt-5.4-mini` -- removed 2026-09-15 after a real fleet incident:
|
|
73
|
+
the model was withdrawn from the OpenAI subscription while 194 codex members
|
|
74
|
+
across ~90 teamfiles had no `model=` pinned and were falling through to it
|
|
75
|
+
as the ambient default (unrelated to this catalog directly, but the SAME
|
|
76
|
+
stale id was also still listed here as "tested", so `lmctl lint` would have
|
|
77
|
+
passed the exact configuration that was failing in production). Unlike
|
|
78
|
+
`claude-fable-5` above (suspended, may return, kept valid), this id was
|
|
79
|
+
withdrawn outright and is not expected back -- do not re-add without fresh
|
|
80
|
+
operator/production confirmation it works again. Codex has no live model
|
|
81
|
+
catalog to check against (unlike `agy`/`opencode`, which query the
|
|
82
|
+
installed provider CLI directly) -- see the code comment on
|
|
83
|
+
`BUILTIN_TESTED_MODELS.codex` for why, and keep this table and that array
|
|
84
|
+
synchronized by hand until/unless a live check becomes possible for codex.
|
|
85
|
+
|
|
62
86
|
## Gemini
|
|
63
87
|
|
|
64
88
|
| Configured `model=` | Evidence |
|
|
@@ -198,3 +222,41 @@ _MEMBER_ alias=Reviewer provider=kimi model="kimi-code/k3" sessionid=<seeded-id>
|
|
|
198
222
|
| `claude` | Claude Code has native `--effort`, but lmctl has not wired `_MEMBER_ effort=` to Claude yet. |
|
|
199
223
|
| `codex` | Native effort surfaces exist; lmctl has not wired `_MEMBER_ effort=` to Codex yet. |
|
|
200
224
|
| `agy` | No verified effort flag; only `--model` supported. |
|
|
225
|
+
| `hermes` | Not supported. Hermes exposes reasoning effort through its own config (`--reasoning`) but not through its ACP surface, so lmctl ignores `effort=` for a Hermes member and warns. |
|
|
226
|
+
|
|
227
|
+
## Hermes
|
|
228
|
+
|
|
229
|
+
Hermes is driven over ACP (`hermes acp`), and its ACP model ids are the
|
|
230
|
+
encoded `provider:model` strings it advertises in `session/new`
|
|
231
|
+
(`acp_adapter/model_catalog.py`, `encode_model_choice`). lmctl applies
|
|
232
|
+
`model=` with ACP `session/set_model` when it differs from the loaded model.
|
|
233
|
+
|
|
234
|
+
```md
|
|
235
|
+
_MEMBER_ alias=Reviewer provider=hermes model="deepseek:deepseek-v4.1-flash" sessionid=<uuid>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
There is deliberately **no** tested-model table here. Hermes resolves its
|
|
239
|
+
model inventory at runtime from the user's own provider configuration and
|
|
240
|
+
credentials, so a list in this repository would be wrong for most users —
|
|
241
|
+
the same reasoning as `kimi` and `opencode`. Lint checks the SHAPE only:
|
|
242
|
+
the value should carry a `provider:` prefix, because without one Hermes
|
|
243
|
+
has to infer the provider by model-name detection and fails for models it
|
|
244
|
+
cannot place.
|
|
245
|
+
|
|
246
|
+
V1 supports ACP seeding and structured chat/dispatch against one effective
|
|
247
|
+
`HERMES_HOME`. Existing session IDs default to strict resume. Yolo mode enables
|
|
248
|
+
both the shell approval bypass and the per-process ACP edit mode; plan mode is
|
|
249
|
+
rejected. Native deletion, interactive resume, fork, and persistent daemon
|
|
250
|
+
sessions are not supported by this integration. The reader is read-only and
|
|
251
|
+
shows active transcript rows; token totals do not establish last-turn usage.
|
|
252
|
+
|
|
253
|
+
Release prerequisites: Hermes must return JSON-RPC errors for missing load/resume
|
|
254
|
+
IDs. Task 140 also uncovered an ACP compression-head restore defect: restart-safe
|
|
255
|
+
resume after compression requires a separate Hermes fix before this provider lands.
|
|
256
|
+
|
|
257
|
+
The source fixes are reviewed and committed locally in the Hermes checkout as
|
|
258
|
+
`989fd87461e23493fe62250b1671f9fc368e9117`. This is not an upstream release or an
|
|
259
|
+
installed-runtime update: the current GitHub identity has read-only access to
|
|
260
|
+
NousResearch/hermes-agent, and validation used the fixed checkout explicitly.
|
|
261
|
+
Provider publication remains gated on an approved, available patched Hermes
|
|
262
|
+
runtime and final owner landing approval (task 141 notes 548-549).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lmctl-ai/lmctl",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.325",
|
|
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",
|