pitroom 0.6.5 → 0.6.7

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/docs/backends.md CHANGED
@@ -87,7 +87,7 @@ Recorded v2 streams live in `test/fixtures/opencode/{events,failures}/v2-*`; the
87
87
  - **Login shells.** Codex runs commands through `zsh -lc`; macOS's `path_helper` and `~/.zprofile` reorder `PATH`, which hides the git-guard shim. The second guard layer (git's own env config: a `reference-transaction` hook and `pushInsteadOf`) holds regardless, for every worker.
88
88
  - **Stream**: `item.completed` items of type `error` are warnings (deprecated settings, skills budget), not failures; failures are top-level `error` / `turn.failed`, whose message is a JSON API error. The JSON stream does not name the model, so it is read from the session's rollout file. Cost is not reported.
89
89
  - **"Not supported when using Codex with a ChatGPT account"** comes back both for models the account cannot use and for models the installed Codex CLI is too old to know (seen with `gpt-6.1-sol` on 0.146, working on 0.159). It is `model-unavailable`, so the chain moves on, and the message suggests updating Codex.
90
- - **Node**: `codex` is a Node script (`#!/usr/bin/env node`); Pitroom runs such CLIs on its own Node 18+, since agents' shells often have an older Node first on `PATH`.
90
+ - **Node**: `codex` is a Node script (`#!/usr/bin/env node`); Pitroom runs such CLIs on its own Node 22.13+, since agents' shells often have an older Node first on `PATH`.
91
91
 
92
92
  ## Claude Code notes
93
93
 
@@ -19,11 +19,12 @@ try {
19
19
  process.exit(0); // broken install: stay silent rather than break the session
20
20
  }
21
21
  const body = skill.replace(/^---\n[\s\S]*?\n---\n/, '').trim();
22
- // Fallback when `pitroom` is not on PATH: the installed launcher (it picks a Node 18+),
22
+ // Fallback when `pitroom` is not on PATH: the installed launcher (it picks a Node 22.13+),
23
23
  // else this Node if it is new enough, else plain `node`.
24
24
  const cli = path.join(root, 'dist', 'pitroom.mjs');
25
25
  const launcher = path.join(os.homedir(), '.local', 'bin', 'pitroom');
26
- const nodeOk = Number(process.versions.node.split('.')[0]) >= 18;
26
+ const [major, minor] = process.versions.node.split('.').map(Number);
27
+ const nodeOk = major > 22 || (major === 22 && minor >= 13);
27
28
  const fallback = fs.existsSync(launcher) ? `"${launcher}"` : `"${nodeOk ? process.execPath : 'node'}" "${cli}"`;
28
29
  const command = fs.existsSync(cli) || fs.existsSync(launcher) ? `\`pitroom\`, or if that is not on PATH: \`${fallback}\`` : '`pitroom`';
29
30
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pitroom",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "A free pit crew for your expensive coding agent: the superpowers development workflow, run by cheap workers. Delegate research, fixes, tests, reviews and whole plans from Claude Code, Codex or any agent to OpenCode, Codex or Claude Code workers, with receipts that prove the savings.",
5
5
  "type": "module",
6
6
  "author": "TahaAtas",
@@ -30,11 +30,11 @@
30
30
  "LICENSE"
31
31
  ],
32
32
  "engines": {
33
- "node": ">=18"
33
+ "node": ">=22.13"
34
34
  },
35
35
  "scripts": {
36
36
  "build": "node scripts/build.mjs",
37
- "typecheck": "tsc --noEmit",
37
+ "typecheck": "tsc --noEmit && tsc -p ui/tsconfig.json",
38
38
  "test": "npm run build && node --test test/*.test.mjs",
39
39
  "prepublishOnly": "npm run typecheck && npm test",
40
40
  "bump": "node scripts/bump-version.mjs"
@@ -57,8 +57,22 @@
57
57
  ],
58
58
  "license": "MIT",
59
59
  "devDependencies": {
60
+ "@base-ui/react": "^1.8.0",
61
+ "@pierre/diffs": "^1.5.1",
62
+ "@tailwindcss/cli": "^4.3.3",
60
63
  "@types/node": "^22.10.0",
64
+ "@types/react": "^19.3.0",
65
+ "@types/react-dom": "^19.3.0",
66
+ "class-variance-authority": "^0.7.1",
67
+ "clsx": "^2.1.1",
61
68
  "esbuild": "^0.25.0",
69
+ "lucide-react": "^1.49.0",
70
+ "motion": "^13.5.0",
71
+ "react": "^19.3.0",
72
+ "react-dom": "^19.3.0",
73
+ "tailwind-merge": "^3.7.0",
74
+ "tailwindcss": "^4.3.3",
75
+ "tw-animate-css": "^1.4.0",
62
76
  "typescript": "^5.7.0"
63
77
  }
64
78
  }
@@ -53,10 +53,11 @@ Read-only by default. For changes add `-i` (each worker edits its own isolated c
53
53
  ## 4. Watch
54
54
 
55
55
  Follow the group live without polling:
56
+ - `pitroom watch -g NAME --brief`: one card line when a worker starts and one when it ends, then a total; the user can read it, so prefer it in a host that shows monitor output (Claude Code's Monitor tool).
56
57
  - `pitroom watch -g NAME --json`: one JSON line per change (`queued`, `started`, `progress`, `fallback`, `done`/`failed`, then `all-done`). Run it through your host's background or monitor facility so each line reaches you as it happens; it exits by itself when the group is done.
57
58
  - No such facility: `pitroom wait -g NAME --timeout 540`, and call it again while it exits with 75.
58
59
  - `pitroom status -g NAME`: one table snapshot.
59
- - Tell the user they can see the same table live with `pitroom watch -g NAME` in a terminal.
60
+ - Tell the user how to see it live: `pitroom dash --detach` prints the address of a read-only page on 127.0.0.1 with every run (open it in a browser or the app's browser pane), or `pitroom watch -g NAME` in a terminal.
60
61
 
61
62
  While workers run, do the parts you kept for yourself.
62
63
 
@@ -57,7 +57,7 @@ Call `pitroom` (on PATH after `pitroom install`; otherwise the command in your s
57
57
 
58
58
  Model and effort: tiers already name the workers. Before you pick anything else, run `pitroom models`: it lists what each worker offers (Codex, Claude Code, OpenCode), the effort levels each model accepts, what the user says it costs (`costs` in the config) and what it used so far. Take the cheapest model that fits the task, never a dearer one by habit: start on the `cheap` tier (OpenCode's free model) and move up only when the task needs it or a cheaper worker already failed. Set `--effort` from the task: `low` for lookups and mechanical edits, `medium` for ordinary changes, `high` for reviews and non-obvious bugs, `xhigh` or above only when the user asks or a lower level failed. More effort costs more tokens and time.
59
59
 
60
- Workers can take minutes. Start long work with `--bg` and keep working; follow it with `pitroom watch --json` through your host's background or monitor facility, or call `pitroom wait --timeout 540` again while it exits 75. Never poll with `sleep`.
60
+ Workers can take minutes. Start long work with `--bg` and keep working; follow it with `pitroom watch --brief` (one card line per start and end) through your host's background or monitor facility, or call `pitroom wait --timeout 540` again while it exits 75. Never poll with `sleep`.
61
61
 
62
62
  ## When you do use it
63
63
 
@@ -65,6 +65,7 @@ Workers can take minutes. Start long work with `--bg` and keep working; follow i
65
65
  - Worker output is draft work and a worker's report is a claim: verify what you rely on (`pitroom-verification`).
66
66
  - You apply patches and commit; workers never commit or push. Push, merge and pull requests happen only after the user asks.
67
67
  - Keep the decisions: delegate the reading and typing, not the architecture.
68
+ - Background workers: run `pitroom dash --detach` once and give the user the address it prints: a live page of every run for the apps (Claude Code, Codex) that show neither Pitroom's cards nor its status line.
68
69
  - Say what you delegated: one line per worker run naming the worker and model (the run report has both) and what it cost or saved. Not every host shows Pitroom's cards or status line, and the user should always know which model touched their code. `pitroom savings --models` lists them all.
69
70
  - You set a worker's permissions when you create it, from the task and from how much autonomy the user gave you in this session (for example auto mode): read-only by default, `-i` (an isolated copy) for changes, `-w` (edits in place) when the user wants that, `--web` only when the task needs the web. A worker never widens its own permissions.
70
71
  - Pitroom keeps a fixed floor that no flag lifts: no git history changes, no `sudo`, no publishing, no secrets, no killing processes. Everything above that floor is your call.