@loompad/cli 1.2.1 → 1.2.3

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.
Files changed (97) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/dist/adapters/opencode.d.ts +2 -0
  3. package/dist/adapters/opencode.js +9 -2
  4. package/dist/adapters/opencode.js.map +1 -1
  5. package/dist/cli/doctor.d.ts +1 -1
  6. package/dist/cli/doctor.js +7 -2
  7. package/dist/cli/doctor.js.map +1 -1
  8. package/dist/cli/index.js +111 -15
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/ui.js +2 -1
  11. package/dist/cli/ui.js.map +1 -1
  12. package/dist/core/brain-index.d.ts +0 -18
  13. package/dist/core/brain-index.js +10 -2
  14. package/dist/core/brain-index.js.map +1 -1
  15. package/dist/core/crew.d.ts +26 -1
  16. package/dist/core/crew.js +66 -5
  17. package/dist/core/crew.js.map +1 -1
  18. package/dist/core/orchestra.d.ts +36 -0
  19. package/dist/core/orchestra.js +149 -82
  20. package/dist/core/orchestra.js.map +1 -1
  21. package/dist/core/prices.d.ts +16 -0
  22. package/dist/core/prices.js +29 -1
  23. package/dist/core/prices.js.map +1 -1
  24. package/dist/core/registry.d.ts +7 -0
  25. package/dist/core/registry.js.map +1 -1
  26. package/dist/core/replay.js +2 -0
  27. package/dist/core/replay.js.map +1 -1
  28. package/dist/core/team-hub.d.ts +2 -1
  29. package/dist/core/team-hub.js +1 -1
  30. package/dist/core/team-hub.js.map +1 -1
  31. package/dist/core/team-leases.d.ts +7 -0
  32. package/dist/core/team-leases.js +19 -0
  33. package/dist/core/team-leases.js.map +1 -1
  34. package/dist/daemon/auth.d.ts +7 -1
  35. package/dist/daemon/auth.js +19 -3
  36. package/dist/daemon/auth.js.map +1 -1
  37. package/dist/daemon/client.d.ts +23 -0
  38. package/dist/daemon/client.js +31 -0
  39. package/dist/daemon/client.js.map +1 -1
  40. package/dist/daemon/council.d.ts +8 -0
  41. package/dist/daemon/council.js +115 -36
  42. package/dist/daemon/council.js.map +1 -1
  43. package/dist/daemon/review.d.ts +4 -0
  44. package/dist/daemon/review.js +22 -2
  45. package/dist/daemon/review.js.map +1 -1
  46. package/dist/daemon/routes/brain.js +4 -0
  47. package/dist/daemon/routes/brain.js.map +1 -1
  48. package/dist/daemon/routes/council.js +9 -0
  49. package/dist/daemon/routes/council.js.map +1 -1
  50. package/dist/daemon/routes/crews.js +2 -0
  51. package/dist/daemon/routes/crews.js.map +1 -1
  52. package/dist/daemon/routes/orchestra.js +1 -0
  53. package/dist/daemon/routes/orchestra.js.map +1 -1
  54. package/dist/daemon/routes/pairing.js +6 -1
  55. package/dist/daemon/routes/pairing.js.map +1 -1
  56. package/dist/daemon/routes/team.js +2 -0
  57. package/dist/daemon/routes/team.js.map +1 -1
  58. package/dist/daemon/runner.d.ts +11 -0
  59. package/dist/daemon/runner.js +96 -3
  60. package/dist/daemon/runner.js.map +1 -1
  61. package/dist/daemon/runtime/accounting.js +7 -3
  62. package/dist/daemon/runtime/accounting.js.map +1 -1
  63. package/dist/daemon/runtime/briefings.js +12 -1
  64. package/dist/daemon/runtime/briefings.js.map +1 -1
  65. package/dist/daemon/runtime/queue.d.ts +2 -0
  66. package/dist/daemon/runtime/queue.js +14 -0
  67. package/dist/daemon/runtime/queue.js.map +1 -1
  68. package/dist/daemon/runtime/turns.d.ts +2 -0
  69. package/dist/daemon/runtime/turns.js +28 -0
  70. package/dist/daemon/runtime/turns.js.map +1 -1
  71. package/dist/daemon/runtime-support.d.ts +5 -1
  72. package/dist/daemon/runtime-support.js +8 -2
  73. package/dist/daemon/runtime-support.js.map +1 -1
  74. package/dist/daemon/runtime.d.ts +28 -0
  75. package/dist/daemon/runtime.js +98 -6
  76. package/dist/daemon/runtime.js.map +1 -1
  77. package/dist/daemon/server.js +4 -0
  78. package/dist/daemon/server.js.map +1 -1
  79. package/dist/daemon/shift.d.ts +6 -0
  80. package/dist/daemon/shift.js +10 -1
  81. package/dist/daemon/shift.js.map +1 -1
  82. package/dist/daemon/team-coordinator.d.ts +27 -3
  83. package/dist/daemon/team-coordinator.js +54 -2
  84. package/dist/daemon/team-coordinator.js.map +1 -1
  85. package/dist/daemon/team.d.ts +15 -1
  86. package/dist/daemon/team.js +59 -1
  87. package/dist/daemon/team.js.map +1 -1
  88. package/dist/hub/supabase-client.d.ts +4 -2
  89. package/dist/hub/supabase-client.js +21 -12
  90. package/dist/hub/supabase-client.js.map +1 -1
  91. package/dist/web/app.css +69 -0
  92. package/dist/web/app.js +11990 -11745
  93. package/dist/web/app.js.map +4 -4
  94. package/docs/release-notes/v1.2.2.md +39 -0
  95. package/docs/release-notes/v1.2.3.md +29 -0
  96. package/docs/teams.md +28 -0
  97. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ ## Loom 1.2.2: Teams front and centre, and Loom that survives a restart
2
+
3
+ ### Teams get their own tab, and you sign in with GitHub
4
+ - **A Team tab**, right after Chat. Teams used to sit at the bottom of Agents. Signed out, the tab shows what Loom Teams does and one **Sign in with GitHub** button. Once you're on a team, it shows:
5
+ - members, with their GitHub pictures;
6
+ - an **Invite** button;
7
+ - who's working on what, and which files they're touching;
8
+ - the team's activity and costs.
9
+ - **Loom Desktop asks you to sign in with GitHub** when it opens. "Continue without an account" is right there, since Loom works alone; the account is for Teams.
10
+ - **Invite works.** It said "admin only" in Desktop, because the window signed in like a phone. Desktop now holds the owner's session.
11
+ - **Accounts are GitHub-only**, enforced by the hosted database. An email sign-up could otherwise claim someone else's GitHub name.
12
+ - **Agents shows this project only.** Other projects are on the home screen.
13
+
14
+ ### Survives a restart
15
+ - **Councils resume.** Use `loom council:resume`, or Resume on the card. A council picks up at the stage it stopped at, keeping its plan, reviews and decisions.
16
+ - **Night shifts stay in order after a restart.** A queued task is sent once and never on top of a running turn. The report waits until the work is really done.
17
+ - **`loom up --restart` leaves Loom Desktop's daemon alone**, and windows refresh themselves when the daemon restarts.
18
+
19
+ ### Honest costs and budgets
20
+ - **The cold-session warning prices what you'll really pay.** It learns from that agent's own past turns: it said $0.34 where the real cost was $6.03, and now it says about $4.80. In a terminal it asks before sending.
21
+ - **A turn that would cross an agent's daily budget doesn't start.**
22
+
23
+ ### Crews and reviews
24
+ - **Crews:**
25
+ - Fixing a merge conflict no longer uses up a card's review rounds.
26
+ - A failed card has **Accept it anyway**: its work is merged as it is, and the cards waiting on it run.
27
+ - **Reviews:**
28
+ - A review waits for a busy reviewer instead of failing.
29
+ - A reviewer that has never finished one is named up front.
30
+ - A reviewer that runs out of time is stopped, process and all.
31
+
32
+ ### Smaller things
33
+ - A shift or council starting on uncommitted edits tells you, and points to Rewind.
34
+ - Files an agent changed through the shell are counted as edits.
35
+ - `loom memory:repair` fixes decisions recorded before 1.2.1 with their underscores stripped.
36
+ - `loom clients --prune` clears out paired devices that never came back.
37
+ - `loom projects --json` and `loom status --json` exist, and `loom watch --json` is clean JSON.
38
+ - `loom doctor` and `loom agents` no longer call a signed-out agent ready.
39
+ - The window's "N working" matches `loom status`.
@@ -0,0 +1,29 @@
1
+ ## Loom 1.2.3: two people, one goal, both machines
2
+
3
+ ### Team auto-orchestration
4
+ - **A goal splits across your teammates' machines on its own.** When a teammate's Loom is a shared runner, your orchestrator sees their agents as `team:codex`, `team:opencode` and so on. Self-contained tasks go to them; tightly coupled ones stay with you.
5
+ - **Nobody on their side clicks anything.** Their runner claims the task, runs it with **their** agent in a fresh clone (their subscription, their limits) and pushes the result back.
6
+ - **A teammate who goes offline doesn't stall you.** A task nobody takes within 10 minutes goes back to your orchestrator, which hands it to someone else.
7
+ - **Still one PR.** Your Loom merges each teammate's task into the goal's integration branch next to your own, checks what it touched against the task's lease, and opens one PR from your machine.
8
+ - Set it up once:
9
+ - in the repo: `{ "runners": { "shared": true } }` in `loom.team.json`;
10
+ - each teammate: `loom runner start --shared`;
11
+ - then `loom orchestrate "<goal>"` as usual, or `--solo` to keep a goal on your machine.
12
+
13
+ ### Simple mode, by default
14
+ - A project opens on five plain tabs: **Chat, Team, Agents, Board, Memory**. The composer is just a box, the agent and Plan.
15
+ - **Developer mode** (Settings → Preferences → Mode) brings back the rest: Orchestra, Crew, Insights, the terminal, console, browser, right-hand panel, and the model, permission and cost chips.
16
+ - No Developer vocabulary leaks into Simple mode: no "baton" labels, no permission badges.
17
+
18
+ ### Safer team hub
19
+ - When a teammate disconnects, the hub no longer broadcasts their repo names to signed-in users of other teams.
20
+ - A teammate can't replace another member's encryption key envelope; only the owner can.
21
+ - Old presence, expired leases and invites, and team activity older than 90 days are cleaned up hourly.
22
+
23
+ ### Fixes from the fourth field round
24
+ - `loom runner stop` really stops: a stopped runner no longer takes a job the hub pushes to it.
25
+ - `loom memory:repair` now shows up in `loom memory` and in what agents are briefed with; add `--dry-run` to preview it.
26
+ - A crew card no longer gets stuck asking about its own files.
27
+ - Crew checkouts live beside the project on an external disk, like orchestra's.
28
+ - `loom crew status` shows card ids, says how to accept a failed card, and has `--json`.
29
+ - The Verified card quotes agents' words without raw markdown.
package/docs/teams.md CHANGED
@@ -163,6 +163,34 @@ Each goal gets a fresh clone (a fresh container when Docker runs), and agents
163
163
  get a scrubbed environment with only their logins and the token. If a goal of
164
164
  yours needs a CI fix and you've been offline 15 minutes, your runner takes it.
165
165
 
166
+ ### Two people, one goal: team auto-orchestration
167
+
168
+ When teammates' Looms are shared runners, a goal you start doesn't stay on your
169
+ machine. Your orchestrator sees each teammate's agents as `team:<agent>` workers
170
+ (`team:codex`, `team:opencode`, …) and splits the goal across both machines:
171
+ self-contained tasks go to a teammate, tightly coupled ones stay with you. Nobody
172
+ on their side clicks anything.
173
+
174
+ ```bash
175
+ # once, in the repo: let teammates' runners take its work (reviewed like any policy change)
176
+ echo '{ "runners": { "shared": true } }' > loom.team.json
177
+ # each teammate, once: their daemon takes tasks with their own agents
178
+ loom runner start --shared
179
+ # you: start a goal as usual — teammates' agents are in it when their runners are online
180
+ loom orchestrate "Add rate limiting and its admin page"
181
+ loom orchestrate "…" --solo # keep this one on your machine
182
+ ```
183
+
184
+ How a task travels: Loom pushes the task's starting commit to
185
+ `refs/loom/run/<run>/<task>-base` on origin and posts a `task` job on the hub. The
186
+ first teammate's runner with that agent claims it, runs it in a fresh clone with
187
+ **their** agent (their subscription, their limits), commits, and pushes to
188
+ `refs/loom/run/<run>/<task>`. Your Loom fetches it, merges it into the goal's
189
+ integration branch next to your own tasks, and checks what it touched against the
190
+ task's lease. The goal still lands as **one PR** from your machine. A task no
191
+ teammate finishes within two hours fails back to your orchestrator, which can
192
+ reassign it.
193
+
166
194
  ## 7. Deploys and release notes
167
195
 
168
196
  `loom team deploys` lists deployments; results show in the team feed, and a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loompad/cli",
3
- "version": "1.2.1",
3
+ "version": "1.2.3",
4
4
  "description": "Loom — local-first control plane for coding agents: one CLI, shared memory, baton handoffs and routes across Claude Code, OpenCode, and friends.",
5
5
  "type": "module",
6
6
  "license": "MIT",