@lmctl-ai/lmctl 0.1.86 → 0.1.88

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/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  All notable public-preview changes for `@lmctl-ai/lmctl` are recorded here.
4
4
 
5
+ ## 0.1.88 — 2026-07-08
6
+
7
+ - **Removed `lmctl wait --all`.** System-wide scope is a foot-gun for a paced
8
+ wake (field-confirmed): unrelated completions can wake the caller before its
9
+ own next job finishes. Scope `wait` with default-self, `--from`, `[teamfile]`,
10
+ or `--id`.
11
+
12
+ ## 0.1.87 — 2026-07-07
13
+
14
+ - **`lmctl wait`/`lmctl exec` are now the synchronous wake model, on a new
15
+ `tracked_invocation` substrate.** Every backgrounded lmctl invocation records
16
+ a start row and a finish row; `lmctl wait` blocks on those rows and returns the
17
+ instant the first one in scope finishes (reporting which completed and which
18
+ are still running). `lmctl exec -- <command>` runs any shell command as a
19
+ tracked invocation, and a backgrounded `lmctl chat … --from "<teamfile>:Lead"`
20
+ is tracked the same way — so `cmd & lmctl wait` is the wake for chats and
21
+ arbitrary commands alike. This replaces the fragile "reserve one blocking job
22
+ as the wake" (N−1/1) pattern; all N launches go to the background and `wait` is
23
+ the single return-point.
24
+ - **Removed `lmctl chat --detach`, `lmctl jobs`, `lmctl nudge`, and turn-exit
25
+ auto-delivery.** The old detached-worker / `delegation_job` background model is
26
+ gone, along with its per-provider (codex/gemini) poll special-casing — every
27
+ provider now uses the same background-then-`wait` loop. The legacy
28
+ `delegation_job` / `delegation_event` tables are **kept dormant** for existing
29
+ DB compatibility (no destructive migration); only the active code paths were
30
+ removed.
31
+ - **`wait` is robust against the failure modes of a fire-and-forget loop.** A
32
+ phantom `running` row whose process died without writing a finish is reclaimed
33
+ as `error` (dead/stale holder detection) instead of hanging `wait` forever; an
34
+ appearance-grace poll covers the `cmd & lmctl wait` insert-lag race; and
35
+ `lmctl exec --json` prints its invocation id so `lmctl wait --id <id>` gives a
36
+ zero-race handshake. Scopes: default (caller, via `LMCTL_SELF_SESSIONID`),
37
+ `--from`, `<teamfile>`, `--all`, `--id`; exit `0` completed/idle, `1` timeout
38
+ (8h backstop), `2` usage. A single `idle` return means "nothing running right
39
+ now", not "done" — loop `wait`.
40
+
5
41
  ## 0.1.86 — 2026-07-07
6
42
 
7
43
  - **New `lmctl wait` — the wake primitive for the meta-lead orchestration loop.**
package/README.md CHANGED
@@ -49,16 +49,17 @@ lmctl chat ./my-project/my-project.lmctl Lead "Inspect the repo and propose next
49
49
  ```
50
50
 
51
51
  Start with `lmctl run <url>` for published workflows. For a custom AI-Lead team,
52
- use the plan -> lint -> seed -> chat flow. Use provider-native background
53
- execution for long turns, with `lmctl jobs` as the tracked work portal. Daemon,
54
- web, API, and MCP surfaces are secondary integration paths; the CLI/job portal
55
- is the golden path for onboarding.
52
+ use the plan -> lint -> seed -> chat flow. For long turns, background a tracked
53
+ invocation (`lmctl exec -- <command> &` or a backgrounded `lmctl chat`) and let
54
+ `lmctl wait` block until it finishes that return is the wake. Daemon, web, API,
55
+ and MCP surfaces are secondary integration paths; the CLI is the golden path for
56
+ onboarding.
56
57
  Lintable teamfile templates for research, writing, and review teams ship in the
57
58
  [examples gallery](https://lmctl.com/examples/).
58
59
 
59
- `lmctl` top-level subcommands are: `api`, `chat`, `code`, `serve`, `intake`,
60
- `mcp`, `monitor`, `device`, `team`, `terminal`, `tail`, `health`, `jobs`,
61
- `nudge`, `recover`, `ls`, `lint`, `seed`, `hire`, `refresh`, `clone`, `plan`, `workflow`,
60
+ `lmctl` top-level subcommands are: `api`, `chat`, `loop`, `code`, `serve`, `intake`,
61
+ `mcp`, `monitor`, `device`, `team`, `terminal`, `tail`, `health`, `wait`,
62
+ `exec`, `recover`, `ls`, `lint`, `seed`, `hire`, `refresh`, `clone`, `plan`, `workflow`,
62
63
  `run`, `project`, `workspace`, `diagnose`, `diagnose-prompt`, `status`, and
63
64
  `db`. Run `lmctl <command> --help` for details on each, and see the
64
65
  [documentation](https://lmctl.com/lmctl) to define your first team.