@zhuxixi/pi-agent-board 0.5.2 → 0.6.0

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 (48) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +41 -3
  3. package/docs/superpowers/plans/2026-09-03-code-refs-pr-backlink-narrow.md +551 -0
  4. package/docs/superpowers/plans/2026-09-04-evidence-outputpreview.md +209 -0
  5. package/docs/superpowers/plans/2026-09-04-warm-host-reclaim.md +796 -0
  6. package/docs/superpowers/plans/2026-09-05-issue-13-drainnextfollowup-pty-probe.md +114 -0
  7. package/docs/superpowers/plans/2026-09-05-issue-38-windows-wezterm-ime-cursor.md +73 -0
  8. package/docs/superpowers/plans/2026-09-05-issue-39-truncate-codepoint-boundary.md +143 -0
  9. package/docs/superpowers/plans/2026-09-05-issue-61-mention-fallback-guards.md +226 -0
  10. package/docs/superpowers/plans/2026-09-05-issue-63-flaky-manual-completion.md +87 -0
  11. package/docs/superpowers/plans/2026-09-05-issue-64-changelog-release-helper.md +53 -0
  12. package/docs/superpowers/plans/2026-09-05-pty-host-stacking-sock-race.md +731 -0
  13. package/docs/superpowers/specs/2026-08-29-code-refs-badges-design.md +1 -1
  14. package/docs/superpowers/specs/2026-09-03-code-refs-pr-backlink-narrow-design.md +92 -0
  15. package/docs/superpowers/specs/2026-09-04-evidence-outputpreview-design.md +50 -0
  16. package/docs/superpowers/specs/2026-09-04-warm-host-reclaim-design.md +106 -0
  17. package/docs/superpowers/specs/2026-09-05-issue-13-drainnextfollowup-pty-probe-design.md +64 -0
  18. package/docs/superpowers/specs/2026-09-05-issue-38-windows-wezterm-ime-design.md +48 -0
  19. package/docs/superpowers/specs/2026-09-05-issue-39-truncate-codepoint-boundary-design.md +64 -0
  20. package/docs/superpowers/specs/2026-09-05-issue-61-mention-fallback-design.md +71 -0
  21. package/docs/superpowers/specs/2026-09-05-issue-63-flaky-manual-completion-design.md +49 -0
  22. package/docs/superpowers/specs/2026-09-05-issue-64-changelog-helper-design.md +76 -0
  23. package/docs/superpowers/specs/2026-09-05-pty-host-stacking-sock-race-design.md +510 -0
  24. package/package.json +83 -81
  25. package/runner/job-runner.mjs +2 -2
  26. package/runner/pty-runner.mjs +573 -2
  27. package/runner/state-runner.mjs +3 -0
  28. package/runner/title-runner.mjs +1 -1
  29. package/scripts/release_helper.mjs +277 -0
  30. package/src/commands/agent-board.ts +38 -35
  31. package/src/commands/attach-decision.mjs +66 -0
  32. package/src/commands/attach-flow.ts +45 -39
  33. package/src/core/code-refs.mjs +85 -33
  34. package/src/core/evidence.mjs +2 -2
  35. package/src/core/heuristics.mjs +40 -2
  36. package/src/core/host-coordination.mjs +159 -0
  37. package/src/core/host-crash.mjs +43 -3
  38. package/src/core/host-probe.mjs +196 -0
  39. package/src/core/launch.mjs +3 -1
  40. package/src/core/locks.mjs +196 -1
  41. package/src/core/paths.mjs +24 -0
  42. package/src/core/store.mjs +164 -5
  43. package/src/core/types.mjs +17 -1
  44. package/src/core/warm-host-sweeper.mjs +150 -0
  45. package/src/index.ts +29 -1
  46. package/src/runtime/service.mjs +967 -109
  47. package/src/ui/dashboard-decisions.mjs +55 -0
  48. package/src/ui/dashboard.ts +26 -12
package/package.json CHANGED
@@ -1,83 +1,85 @@
1
1
  {
2
- "name": "@zhuxixi/pi-agent-board",
3
- "version": "0.5.2",
4
- "description": "Agent-board dashboard for Pi: dispatch, monitor, peek/reply, and attach to background Pi sessions.",
5
- "type": "module",
6
- "main": "./index.ts",
7
- "exports": "./index.ts",
8
- "files": [
9
- "index.ts",
10
- "src",
11
- "scripts",
12
- "runner",
13
- "README.md",
14
- "VERIFY.md",
15
- "LICENSE",
16
- "docs",
17
- "PRD.md",
18
- "IMPLEMENTATION_PLAN.md",
19
- "PROGRESS.md"
20
- ],
21
- "keywords": [
22
- "pi-package",
23
- "pi-extension",
24
- "pi",
25
- "pi-coding-agent",
26
- "agent-board",
27
- "background-agents",
28
- "dashboard"
29
- ],
30
- "license": "MIT",
31
- "repository": {
32
- "type": "git",
33
- "url": "git+https://github.com/zhuxixi/pi-agent-board.git"
34
- },
35
- "bugs": {
36
- "url": "https://github.com/zhuxixi/pi-agent-board/issues"
37
- },
38
- "homepage": "https://github.com/zhuxixi/pi-agent-board#readme",
39
- "publishConfig": {
40
- "access": "public"
41
- },
42
- "engines": {
43
- "node": ">=20"
44
- },
45
- "pi": {
46
- "extensions": [
47
- "./src/index.ts"
48
- ],
49
- "video": "https://github.com/zhuxixi/pi-agent-board/raw/refs/heads/main/assets/demo.mp4",
50
- "image": "https://github.com/zhuxixi/pi-agent-board/raw/refs/heads/main/assets/banner.png"
51
- },
52
- "scripts": {
53
- "postinstall": "node scripts/patch-vulns.mjs",
54
- "typecheck": "tsc --noEmit",
55
- "test": "node --test test/*.test.mjs",
56
- "test:coverage": "c8 node --test test/*.test.mjs",
57
- "pack:dry": "npm pack --dry-run",
58
- "verify": "npm run typecheck && npm test && npm run test:coverage && npm run pack:dry"
59
- },
60
- "peerDependencies": {
61
- "@earendil-works/pi-coding-agent": "*",
62
- "@earendil-works/pi-tui": "*"
63
- },
64
- "peerDependenciesMeta": {
65
- "@earendil-works/pi-coding-agent": {
66
- "optional": true
67
- },
68
- "@earendil-works/pi-tui": {
69
- "optional": true
70
- }
71
- },
72
- "devDependencies": {
73
- "@earendil-works/pi-coding-agent": "0.79.8",
74
- "@earendil-works/pi-tui": "0.79.8",
75
- "@types/node": "^25.9.1",
76
- "c8": "^12.0.0",
77
- "typescript": "^5.9.3"
78
- },
79
- "dependencies": {
80
- "@xterm/headless": "^6.0.0",
81
- "node-pty": "^1.1.0"
82
- }
2
+ "name": "@zhuxixi/pi-agent-board",
3
+ "version": "0.6.0",
4
+ "description": "Agent-board dashboard for Pi: dispatch, monitor, peek/reply, and attach to background Pi sessions.",
5
+ "type": "module",
6
+ "main": "./index.ts",
7
+ "exports": "./index.ts",
8
+ "files": [
9
+ "CHANGELOG.md",
10
+ "IMPLEMENTATION_PLAN.md",
11
+ "LICENSE",
12
+ "PRD.md",
13
+ "PROGRESS.md",
14
+ "README.md",
15
+ "VERIFY.md",
16
+ "docs",
17
+ "index.ts",
18
+ "runner",
19
+ "scripts",
20
+ "src"
21
+ ],
22
+ "keywords": [
23
+ "pi-package",
24
+ "pi-extension",
25
+ "pi",
26
+ "pi-coding-agent",
27
+ "agent-board",
28
+ "background-agents",
29
+ "dashboard"
30
+ ],
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/zhuxixi/pi-agent-board.git"
35
+ },
36
+ "bugs": {
37
+ "url": "https://github.com/zhuxixi/pi-agent-board/issues"
38
+ },
39
+ "homepage": "https://github.com/zhuxixi/pi-agent-board#readme",
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "engines": {
44
+ "node": ">=20"
45
+ },
46
+ "pi": {
47
+ "extensions": [
48
+ "./src/index.ts"
49
+ ],
50
+ "video": "https://github.com/zhuxixi/pi-agent-board/raw/refs/heads/main/assets/demo.mp4",
51
+ "image": "https://github.com/zhuxixi/pi-agent-board/raw/refs/heads/main/assets/banner.png"
52
+ },
53
+ "scripts": {
54
+ "postinstall": "node scripts/patch-vulns.mjs",
55
+ "typecheck": "tsc --noEmit",
56
+ "test": "node --test test/*.test.mjs",
57
+ "test:coverage": "c8 node --test test/*.test.mjs",
58
+ "pack:dry": "npm pack --dry-run",
59
+ "verify": "npm run typecheck && npm test && npm run test:coverage && npm run pack:dry",
60
+ "changelog": "node scripts/release_helper.mjs"
61
+ },
62
+ "peerDependencies": {
63
+ "@earendil-works/pi-coding-agent": "*",
64
+ "@earendil-works/pi-tui": "*"
65
+ },
66
+ "peerDependenciesMeta": {
67
+ "@earendil-works/pi-coding-agent": {
68
+ "optional": true
69
+ },
70
+ "@earendil-works/pi-tui": {
71
+ "optional": true
72
+ }
73
+ },
74
+ "devDependencies": {
75
+ "@earendil-works/pi-coding-agent": "0.79.8",
76
+ "@earendil-works/pi-tui": "0.79.8",
77
+ "@types/node": "^25.9.1",
78
+ "c8": "^12.0.0",
79
+ "typescript": "^5.9.3"
80
+ },
81
+ "dependencies": {
82
+ "@xterm/headless": "^6.0.0",
83
+ "node-pty": "^1.1.0"
84
+ }
83
85
  }
@@ -86,7 +86,7 @@ function main() {
86
86
  cwd: config.cwd,
87
87
  stdio: ["ignore", "pipe", "pipe"],
88
88
  windowsHide: true,
89
- env: process.env,
89
+ env: { ...process.env, AGENT_BOARD_NO_SWEEP: "1" },
90
90
  });
91
91
 
92
92
  status.pid = worker.pid ?? null;
@@ -460,7 +460,7 @@ async function maybeModelSummary(config, status) {
460
460
  function runOneShot(command, args, timeoutMs = 20000) {
461
461
  return new Promise((resolve) => {
462
462
  let out = "";
463
- const child = spawn(command, args, { stdio: ["ignore", "pipe", "ignore"], windowsHide: true });
463
+ const child = spawn(command, args, { stdio: ["ignore", "pipe", "ignore"], windowsHide: true, env: { ...process.env, AGENT_BOARD_NO_SWEEP: "1" } });
464
464
  let buf = "";
465
465
  child.stdout.on("data", (c) => {
466
466
  buf += c.toString();