@lmctl-ai/lmctl 0.1.96 → 0.1.97
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 +20 -0
- package/README.md +2 -2
- package/dist/cli/index.js +553 -526
- package/dist/cli/schema.sql +6 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
All notable public-preview changes for `@lmctl-ai/lmctl` are recorded here.
|
|
4
4
|
|
|
5
|
+
## 0.1.97 — 2026-07-10
|
|
6
|
+
|
|
7
|
+
- **`lmctl chat` now carries the mailbox queue; `lmctl send` is removed.** One verb. Chatting a
|
|
8
|
+
member that is **busy** enqueues the message into that `(sender, receiver)` lane instead of
|
|
9
|
+
failing. Chatting a member that is **idle** delivers *all* of your queued messages to it **plus**
|
|
10
|
+
the new one, together in a single turn (FIFO, new message last), and records the member's response
|
|
11
|
+
as the delivery receipt. `lmctl send` now errors with `unknown command: send (use lmctl chat)`.
|
|
12
|
+
- **Queue key is `(sender, receiver)`.** A chat only ever drains your own lane to that member — it
|
|
13
|
+
never touches another sender's queued mail. Delivery marks rows delivered (it does not delete
|
|
14
|
+
them), so a crash before marking re-delivers rather than loses (at-least-once).
|
|
15
|
+
- **One `busy` predicate.** `isReceiverBusy` (terminal-lock + live-holder inflight, reusing the
|
|
16
|
+
0.1.52 reclaim rule) is now the single source of truth, so `chat`'s routing can no longer disagree
|
|
17
|
+
with itself and drop a message.
|
|
18
|
+
- **`lmctl wait` no longer misses or double-reports completions.** It now claims a finished tracked
|
|
19
|
+
invocation by time (`ended_at >= wait_started_at`) with an atomic marker, so a job that starts and
|
|
20
|
+
finishes inside the wait's startup window is still reported, and two concurrent waits never both
|
|
21
|
+
report the same completion.
|
|
22
|
+
- Migration v47 adds `agent_mailbox.delivered_at`/`receipt` and `tracked_invocation.notified_by`/
|
|
23
|
+
`notified_at`, guarded so a fresh database and a migrated one produce identical tables.
|
|
24
|
+
|
|
5
25
|
## 0.1.96 — 2026-07-10
|
|
6
26
|
|
|
7
27
|
- **Fixed: 0.1.95 silently stopped recording `team_chat_log`.** The chat-log INSERT omitted the
|
package/README.md
CHANGED
|
@@ -57,14 +57,14 @@ onboarding.
|
|
|
57
57
|
Lintable teamfile templates for research, writing, and review teams ship in the
|
|
58
58
|
[examples gallery](https://lmctl.com/examples/).
|
|
59
59
|
|
|
60
|
-
`lmctl` top-level subcommands are: `api`, `chat`, `
|
|
60
|
+
`lmctl` top-level subcommands are: `api`, `chat`, `recv`, `loop`, `code`, `serve`, `intake`,
|
|
61
61
|
`mcp`, `monitor`, `device`, `team`, `terminal`, `tail`, `health`, `wait`,
|
|
62
62
|
`exec`, `recover`, `ls`, `lint`, `seed`, `hire`, `refresh`, `clone`, `plan`, `workflow`,
|
|
63
63
|
`run`, `project`, `workspace`, `diagnose`, `diagnose-prompt`, `status`, and
|
|
64
64
|
`db`. Run `lmctl <command> --help` for details on each, and see the
|
|
65
65
|
[documentation](https://lmctl.com/lmctl) to define your first team.
|
|
66
66
|
|
|
67
|
-
- `lmctl
|
|
67
|
+
- `lmctl chat <teamfile> <alias> "message"` drives or messages a member; if a member-origin target is busy, chat queues the message for that lane.
|
|
68
68
|
- `lmctl recv` drains the calling Lead's mailbox consume-on-read, inferred from `LMCTL_SELF_SESSIONID`.
|
|
69
69
|
|
|
70
70
|
## Model selection
|