trantor 0.17.12 → 0.17.13

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.
@@ -6,14 +6,14 @@
6
6
  },
7
7
  "metadata": {
8
8
  "description": "Trantor — the hub-world for AI agent crews: live message bus, presence, project Kanban/flow board + context-handoff for independent AI coding agents (Claude, Codex, Gemini, …)",
9
- "version": "0.17.12"
9
+ "version": "0.17.13"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "trantor",
14
14
  "source": "./",
15
15
  "description": "The hub-world for AI agent crews. Say \"fire up the crew\" and Claude becomes the architect: a plan-aware Advisor routes the work (solo / cheap inline calls / live crew of Codex, Gemini, Kimi & DeepSeek in their own terminal windows), a Kanban/flow command center with a testing gate tracks it, and an economics brain (Scrooge) keeps the receipts. Includes the relay MCP, a SessionStart auto-discovery hook, and a PreCompact context-handoff so a fresh session can take over a full window instead of compacting.",
16
- "version": "0.17.12",
16
+ "version": "0.17.13",
17
17
  "author": {
18
18
  "name": "Sasha Bogojevic"
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trantor",
3
- "version": "0.17.12",
3
+ "version": "0.17.13",
4
4
  "description": "Trantor — the hub-world for AI agent crews: live message bus, presence, project Kanban/flow board + crew orchestration for independent AI coding agents (Claude, Codex, Gemini, Kimi, DeepSeek)",
5
5
  "mcpServers": {
6
6
  "relay": {
package/README.md CHANGED
@@ -13,12 +13,13 @@
13
13
 
14
14
  **One Advisor decides how your work runs — solo, cheap inline calls, or a live crew of
15
15
  Claude Code, Codex, Gemini, Kimi & DeepSeek in their own terminal windows — routed by your
16
- actual plans, supervised on a live board, learning from every failure.**
16
+ actual plans, supervised on a live + historical board you can scroll back through, learning
17
+ from every failure.**
17
18
 
18
19
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
19
20
  ![Node](https://img.shields.io/badge/node-%E2%89%A518-339933?logo=node.js&logoColor=white)
20
21
  ![Agents](https://img.shields.io/badge/crew-Claude%20%C2%B7%20Codex%20%C2%B7%20Gemini%20%C2%B7%20Kimi%20%C2%B7%20DeepSeek-D97757)
21
- ![Tests](https://img.shields.io/badge/tests-37%2F37-2DD4BF)
22
+ ![Tests](https://img.shields.io/badge/tests-80%2F80-2DD4BF)
22
23
 
23
24
  </div>
24
25
 
@@ -99,9 +100,11 @@ project takes over with a full window (and a PreCompact hook does this automatic
99
100
  that many seats ("seats follow the work, not the install list"), and a real-money estimate
100
101
  with quota-pool accounting. You say go.
101
102
  2. **Windows open.** `trantor up codex gemini kimi deepseek:deepseek-v4-pro` spawns one titled
102
- terminal window per agent (`agent:model` pins a model), **serialized and then verified on
103
- the bus** the launcher ends with "crew verified" or names the no-shows loudly. The
104
- orchestrator never gets a green lie.
103
+ terminal window per agent. `agent:model` pins a model; `agent:provider --difficulty hard`
104
+ picks the **best live model** for the work at spawn (capability × cost), enumerated from the
105
+ CLI itself — never a guessed endpoint. **Serialized and then verified on the bus** — the
106
+ launcher ends with "crew verified" or names the no-shows loudly. The orchestrator never gets
107
+ a green lie.
105
108
  3. **Work flows over the bus.** Contracts arrive as messages; each agent owns its own files;
106
109
  coordination happens in <280-char messages you can read on the dashboard. Crew members
107
110
  live under a **runner**: the CLI works one turn and exits, the runner long-polls the bus
@@ -110,22 +113,45 @@ project takes over with a full window (and a PreCompact hook does this automatic
110
113
  4. **The board tells the truth.** Cards flow `todo → doing → testing → done` — `testing` is a
111
114
  real gate (tests/typecheck run there); failures turn the card **pulsing red** until the
112
115
  orchestrator bounces them back; demoted cards wear an "↩ bounced" mark with full history.
113
- 5. **It learns.** Failures become lessons (`relay_lesson`), stored on the hub and **injected
116
+ 5. **Failures surface in real time.** A crew agent whose turn fails (credits exhausted, auth,
117
+ crash) no longer re-parks silently — it classifies the failure, posts a ⚠️ to the bus, and
118
+ flips its dashboard chip **red** (escalating to 🛑 if it keeps failing). `trantor swap <old>
119
+ <new>` tears down an exhausted agent and spawns a live-selected replacement, ready for a fresh
120
+ contract.
121
+ 6. **It learns.** Failures become lessons (`relay_lesson`), stored on the hub and **injected
114
122
  into every future crew's prompts** — global or per-CLI. Your crew gets smarter every run.
115
123
 
116
124
  ## The dashboard — `trantor ui`
117
125
 
118
- A live command center at `http://127.0.0.1:4477`, grouped by **project**:
119
-
120
- - **BOARD view** Kanban with the testing gate, difficulty + model badges per card, agent
121
- chips with provider logos, live status, and quota-pool tags.
122
- - **FLOW view** — the same work as an n8n-style dependency graph: parallel streams fanning
123
- out and converging into integration, edges lighting up as work flows (green = done feeding
124
- forward, animated blue = active), **red ↩n loops where work bounced back**. Drag nodes to
125
- rearrange, ⌘+scroll / pinch to zoom, FIT/AUTO controls. Pick per project; your choice sticks.
126
+ A live command center at `http://127.0.0.1:4477`, grouped by **project** — and a *durable,
127
+ self-maintaining record*, not just a snapshot. Dead sessions self-prune (no more graveyard of
128
+ stale boards), and the project order is **stable**: a working board updates in place instead of
129
+ jumping to the top while you're reading it.
130
+
131
+ Three views per project (your choice sticks):
132
+
133
+ - **BOARD** Kanban with the testing gate, difficulty + model badges per card, agent chips with
134
+ provider logos, live status, quota-pool tags, and **red / 🛑 chips for errored / down agents**.
135
+ - **FLOW** — a **development timeline**: every card laid left→right in **build order** across
136
+ **agent lanes**, each card a readable block segmented by the time it spent in each status, with
137
+ dependency edges converging where parallel work merged. Scroll the project's whole history
138
+ left/right. **Click any card** to open its full story — the contract it was given, the agent's
139
+ plan, its build report, the files it changed — reconstructed from that agent's own bus messages.
140
+ - **TIMELINE** — the same history as a chronological event log.
141
+
142
+ Plus:
143
+
144
+ - **🧠 Learning sidebar** — the self-learning loop, made visible: lessons (global / per-agent /
145
+ per-project), **per-LLM reliability** (turns, fail-rate, trend charts) from real turn telemetry,
146
+ and the guardrails baked into each model's prompts. Watch the platform get smarter over time.
147
+ - **🪙 savings pill** — a lifetime running total of what cheap-model routing has saved vs running
148
+ the frontier model, with a selectable window (24h / week / month / quarter / year).
126
149
  - **Per-project conversation lanes** — watch agents negotiate interfaces in context — plus a
127
- global live feed, and a composer so *you* can message the bus (or any single agent).
128
- - **🪙 economics pill** — live Scrooge ledger: real spend, savings vs frontier pricing.
150
+ global live feed and a composer so *you* can message the bus (or any single agent).
151
+
152
+ Every session registers automatically — **crew or not** — and a solo session's own todo list
153
+ shows up on the board as cards, so the dashboard reflects *all* the work on a project, not just
154
+ crew runs.
129
155
 
130
156
  ## The brain — plan-aware economics
131
157
 
@@ -160,7 +186,7 @@ rate, not work rate.
160
186
  | `relay_send(to, text)` / `relay_inbox` / `relay_wait(t)` | Live messaging: direct, read-new, long-poll wake |
161
187
  | `relay_peers` / `relay_status(text)` / `relay_whoami` | Presence: who's alive (honest, heartbeat-backed), doing what |
162
188
  | `relay_project_brief(text)` | The project's what/why on the dashboard |
163
- | `relay_task_add(title, …, difficulty, model, deps)` | Cards with difficulty/model badges + DAG edges for the flow view |
189
+ | `relay_task_add(title, …, difficulty, model, deps, project?)` | Cards with difficulty/model badges + DAG edges; `project` targets another board when you orchestrate from elsewhere |
164
190
  | `relay_task_move(id, status)` | `todo → doing → testing → done` (the gate), `failed`, `blocked` |
165
191
  | `relay_board` | The project's full board, as text |
166
192
  | `relay_scrooge(prompt, task?, difficulty?)` | Fractal cheap-model delegation, with the ledger receipt |
@@ -170,13 +196,15 @@ rate, not work rate.
170
196
  ## The CLI
171
197
 
172
198
  ```
173
- trantor setup | doctor | connect | profile | up <agents…> | down | ui | advise | hub | watch
199
+ trantor setup | doctor | connect | profile | up <agents…> | swap <old> <new> | down | ui | advise | hub | watch
174
200
  ```
175
201
 
176
- `trantor up` notes: `agent:model` pins a model (`deepseek:deepseek-v4-pro`); spawns are
177
- verified on the bus with one retry; geometry auto-detects the screen you're working on
178
- (`CREW_RECT="X,Y,W,H"` to override); `trantor down` kills crew processes via their ttys and
179
- closes windows without macOS "Terminate?" dialogs.
202
+ `trantor up` notes: `agent:model` pins a model (`deepseek:deepseek-v4-pro`); `agent:provider
203
+ --task <k> --difficulty <d>` picks the **best live model** for the work at spawn
204
+ (`opencode:zai-coding-plan --difficulty hard`); spawns are verified on the bus with one retry;
205
+ geometry auto-detects the screen you're working on (`CREW_RECT="X,Y,W,H"` to override). `trantor
206
+ swap <oldAgent> <newSpec>` replaces an exhausted agent with a live-selected one. `trantor down`
207
+ kills crew processes via their ttys and closes windows without macOS "Terminate?" dialogs.
180
208
 
181
209
  ## Works with any MCP agent
182
210
 
@@ -192,10 +220,10 @@ server auto-registers the session, so presence works before the model says a wor
192
220
  │ advise/contracts │ one turn, exit; runner long-polls (free) + resumes with context
193
221
  └───────────┬─────────────┴──────────────┴────────────────┴────────────────┘
194
222
 
195
- hub.mjs ←— plain HTTP + SSE · presence/messages/board/lessons/economics
223
+ hub.mjs ←— plain HTTP + SSE · presence/messages/board/history/lessons/learning/economics
196
224
  (Node built-ins only · state in ~/.agent-bus/bus.json · loopback by default)
197
225
 
198
- dashboard (ui.html) · BOARD/FLOW · conversation lanes · 🪙 ledger
226
+ dashboard (ui.html) · BOARD/FLOW/TIMELINE · 🧠 Learning · 🪙 savings · conversation lanes
199
227
  ```
200
228
 
201
229
  Config: `RELAY_URL` env → `~/.agent-bus/config.json` → `http://127.0.0.1:4477`.
@@ -223,9 +251,10 @@ The `relay_*` tool names and the `~/.agent-bus` state dir remain until a later r
223
251
  ## Tests
224
252
 
225
253
  ```bash
226
- npm test # unit + 37 protocol-level scenario drills with mock agents (no LLMs, seconds, $0):
227
- # honest presence, spawn no-shows, the testing gate, bounce trails, lessons,
228
- # advisor decisions across plan tiers, deps validation, virgin-machine doctor
254
+ npm test # 80 checks: unit + protocol-level scenario drills with mock agents (no LLMs, seconds, $0):
255
+ # honest presence + TTL prune, spawn no-shows, the testing gate, bounce trails, lessons,
256
+ # /history + backfill, /learning shape, /todos sync, /card detail, advisor decisions across
257
+ # plan tiers, deps validation, virgin-machine doctor, and failure-classification drills
229
258
  ```
230
259
 
231
260
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trantor",
3
- "version": "0.17.12",
3
+ "version": "0.17.13",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "trantor": "bin/cli.mjs"