@gjczone/pi-swarm 0.5.0 → 0.7.1

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 (68) hide show
  1. package/README.md +14 -21
  2. package/dist/index.d.ts +2 -12
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -18
  5. package/dist/index.js.map +1 -1
  6. package/dist/shared/controller.d.ts +10 -1
  7. package/dist/shared/controller.d.ts.map +1 -1
  8. package/dist/shared/controller.js +48 -12
  9. package/dist/shared/controller.js.map +1 -1
  10. package/dist/shared/render.d.ts +1 -1
  11. package/dist/shared/render.js +1 -1
  12. package/dist/shared/spawner.js +54 -8
  13. package/dist/shared/spawner.js.map +1 -1
  14. package/dist/shared/types.d.ts +10 -0
  15. package/dist/shared/types.d.ts.map +1 -1
  16. package/dist/shared/worktree.d.ts +2 -1
  17. package/dist/shared/worktree.d.ts.map +1 -1
  18. package/dist/shared/worktree.js +10 -4
  19. package/dist/shared/worktree.js.map +1 -1
  20. package/dist/state/recovery.d.ts.map +1 -1
  21. package/dist/state/recovery.js +25 -4
  22. package/dist/state/recovery.js.map +1 -1
  23. package/dist/swarm/command.d.ts +4 -5
  24. package/dist/swarm/command.d.ts.map +1 -1
  25. package/dist/swarm/command.js +26 -74
  26. package/dist/swarm/command.js.map +1 -1
  27. package/dist/swarm/mode.d.ts +1 -1
  28. package/dist/swarm/mode.js +2 -2
  29. package/dist/swarm/mode.js.map +1 -1
  30. package/dist/swarm/tool.d.ts +4 -4
  31. package/dist/swarm/tool.d.ts.map +1 -1
  32. package/dist/swarm/tool.js +112 -167
  33. package/dist/swarm/tool.js.map +1 -1
  34. package/dist/team/command.d.ts +2 -4
  35. package/dist/team/command.d.ts.map +1 -1
  36. package/dist/team/command.js +5 -13
  37. package/dist/team/command.js.map +1 -1
  38. package/dist/team/mailbox.d.ts +7 -2
  39. package/dist/team/mailbox.d.ts.map +1 -1
  40. package/dist/team/mailbox.js +121 -32
  41. package/dist/team/mailbox.js.map +1 -1
  42. package/dist/tui/progress.d.ts +35 -47
  43. package/dist/tui/progress.d.ts.map +1 -1
  44. package/dist/tui/progress.js +245 -489
  45. package/dist/tui/progress.js.map +1 -1
  46. package/dist/tui/swarm-markers.d.ts +1 -1
  47. package/dist/tui/swarm-markers.js +1 -1
  48. package/package.json +13 -2
  49. package/dist/team/supervisor.d.ts +0 -171
  50. package/dist/team/supervisor.d.ts.map +0 -1
  51. package/dist/team/supervisor.js +0 -685
  52. package/dist/team/supervisor.js.map +0 -1
  53. package/dist/team/task-graph.d.ts +0 -64
  54. package/dist/team/task-graph.d.ts.map +0 -1
  55. package/dist/team/task-graph.js +0 -216
  56. package/dist/team/task-graph.js.map +0 -1
  57. package/dist/team/tool.d.ts +0 -11
  58. package/dist/team/tool.d.ts.map +0 -1
  59. package/dist/team/tool.js +0 -491
  60. package/dist/team/tool.js.map +0 -1
  61. package/dist/tui/permission-prompt.d.ts +0 -26
  62. package/dist/tui/permission-prompt.d.ts.map +0 -1
  63. package/dist/tui/permission-prompt.js +0 -98
  64. package/dist/tui/permission-prompt.js.map +0 -1
  65. package/dist/tui/team-dashboard.d.ts +0 -81
  66. package/dist/tui/team-dashboard.d.ts.map +0 -1
  67. package/dist/tui/team-dashboard.js +0 -657
  68. package/dist/tui/team-dashboard.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/team/command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5D,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAoCN"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/team/command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,YAAY,EAChB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAgCN"}
@@ -1,40 +1,32 @@
1
1
  /**
2
2
  * team/command — /swarm-team slash command handler.
3
3
  *
4
- * Supports:
5
- * /swarm-team <goal> — launch a team run for the given goal
6
- *
7
- * The command delegates to the SwarmTeam tool internally.
4
+ * /swarm-team <goal> — directs the LLM to use the Swarm tool with mailbox enabled
5
+ * for collaborative multi-step workflows.
8
6
  */
9
- // ---------------------------------------------------------------------------
10
- // Registration
11
- // ---------------------------------------------------------------------------
12
7
  export function registerTeamCommand(pi, host) {
13
8
  pi.registerCommand("swarm-team", {
14
- description: "Launch a collaborative team of role-based agents to complete a complex task. " +
9
+ description: "Launch a collaborative Swarm with mailbox. " +
15
10
  "Usage: /swarm-team <goal>",
16
11
  async handler(args, ctx) {
17
12
  const prompt = args.trim();
18
13
  if (prompt.length === 0) {
19
- ctx.ui?.notify?.("Usage: /swarm-team <goal>", "warning");
14
+ ctx.ui?.notify?.("/swarm-team <goal>", "info");
20
15
  return;
21
16
  }
22
17
  if (!host.hasModel()) {
23
18
  host.showError("No model configured. Please set a model first.");
24
19
  return;
25
20
  }
26
- // Activate swarm mode if not already active
27
21
  if (!host.swarmActive) {
28
22
  host.setSwarmActive(true, "task");
29
23
  }
30
- // TUI marker
31
24
  host.pi.sendMessage?.({
32
25
  customType: "swarm:marker",
33
26
  content: "active",
34
27
  display: true,
35
28
  });
36
- // Send the goal as a user prompt the LLM will call SwarmTeam
37
- host.sendNormalUserInput(`Use the SwarmTeam tool to accomplish this goal: ${prompt}`);
29
+ host.sendNormalUserInput(`Use the Swarm tool with mailbox: true to accomplish this goal: ${prompt}`);
38
30
  },
39
31
  });
40
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/team/command.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CACjC,EAAgB,EAChB,IAAsB;IAEtB,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;QAC/B,WAAW,EACT,+EAA+E;YAC/E,2BAA2B;QAC7B,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,GAA4B;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YAED,aAAa;YACb,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;gBACpB,UAAU,EAAE,cAAc;gBAC1B,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,+DAA+D;YAC/D,IAAI,CAAC,mBAAmB,CACtB,mDAAmD,MAAM,EAAE,CAC5D,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/team/command.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,UAAU,mBAAmB,CACjC,EAAgB,EAChB,IAAsB;IAEtB,EAAE,CAAC,eAAe,CAAC,YAAY,EAAE;QAC/B,WAAW,EACT,6CAA6C;YAC7C,2BAA2B;QAC7B,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,GAA4B;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;gBACpB,UAAU,EAAE,cAAc;gBAC1B,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,mBAAmB,CACtB,kEAAkE,MAAM,EAAE,CAC3E,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Each team run has a shared mailbox directory under .pi/swarm/mailbox/
5
5
  * where agents write messages (outbox) and read messages (inbox).
6
- *
7
- * Inspired by pi-crew's mailbox system.
8
6
  */
9
7
  import type { MailboxMessage } from "../shared/types.js";
10
8
  /**
@@ -24,6 +22,7 @@ export interface MailboxPaths {
24
22
  readonly outbox: string;
25
23
  readonly delivery: string;
26
24
  readonly taskDir: string;
25
+ readonly inboxAcks: string;
27
26
  }
28
27
  export declare function resolveMailboxPaths(swarmRoot: string, runId: string): MailboxPaths;
29
28
  export declare function resolveTaskMailboxPaths(paths: MailboxPaths, taskId: string): {
@@ -53,10 +52,16 @@ export declare function readTaskInbox(paths: MailboxPaths, taskId: string): Mail
53
52
  export declare function countOutboxMessages(paths: MailboxPaths): number;
54
53
  /**
55
54
  * Acknowledge (delete) messages from the team inbox.
55
+ *
56
+ * Uses an append-only ack file to avoid the TOCTOU race between
57
+ * reading and rewriting inbox.jsonl. Acknowledged message IDs are
58
+ * appended to inboxAcks.jsonl and filtered at read time.
56
59
  */
57
60
  export declare function ackMessages(paths: MailboxPaths, messageIds: string[]): void;
58
61
  /**
59
62
  * Acknowledge (delete) messages from a task-specific inbox.
63
+ *
64
+ * Uses the same append-only ack approach as ackMessages.
60
65
  */
61
66
  export declare function ackTaskMessages(paths: MailboxPaths, taskId: string, messageIds: string[]): void;
62
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../src/team/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAyCzD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,YAAY,CASd;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQnC;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CASvD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,cAAc,GACtB,IAAI,CAkCN;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,EAAE,CAE/D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,GACb,cAAc,EAAE,CAGlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAW/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAK3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAIN"}
1
+ {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../src/team/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAyCzD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,YAAY,CAWd;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQnC;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CASvD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,cAAc,GACtB,IAAI,CAoCN;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,EAAE,CAK/D;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,GACb,cAAc,EAAE,CAMlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAW/D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAK3E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAAE,GACnB,IAAI,CAON;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,IAAI,CAIN"}
@@ -3,8 +3,6 @@
3
3
  *
4
4
  * Each team run has a shared mailbox directory under .pi/swarm/mailbox/
5
5
  * where agents write messages (outbox) and read messages (inbox).
6
- *
7
- * Inspired by pi-crew's mailbox system.
8
6
  */
9
7
  import * as fs from "node:fs";
10
8
  import * as path from "node:path";
@@ -34,12 +32,14 @@ function ensureWithinMailbox(resolvedPath, mailboxRoot) {
34
32
  }
35
33
  export function resolveMailboxPaths(swarmRoot, runId) {
36
34
  const root = path.join(swarmRoot, "state", "runs", runId, "mailbox");
35
+ const inbox = path.join(root, "inbox.jsonl");
37
36
  return {
38
37
  root,
39
- inbox: path.join(root, "inbox.jsonl"),
38
+ inbox,
40
39
  outbox: path.join(root, "outbox.jsonl"),
41
40
  delivery: path.join(root, "delivery.json"),
42
41
  taskDir: path.join(root, "tasks"),
42
+ inboxAcks: inbox + ".acks",
43
43
  };
44
44
  }
45
45
  export function resolveTaskMailboxPaths(paths, taskId) {
@@ -79,25 +79,30 @@ export function sendMessage(paths, message) {
79
79
  // Also append to team inbox for general reading
80
80
  appendJsonLine(paths.inbox, message);
81
81
  if (message.to === "broadcast") {
82
- // Broadcast: deliver to all known role inboxes
83
- const roles = [
84
- "explorer",
85
- "planner",
86
- "coder",
87
- "reviewer",
88
- "tester",
89
- "fixer",
90
- ];
91
- for (const role of roles) {
92
- try {
93
- const taskPaths = resolveTaskMailboxPaths(paths, role);
94
- fs.mkdirSync(path.dirname(taskPaths.inbox), { recursive: true });
95
- appendJsonLine(taskPaths.inbox, message);
96
- }
97
- catch {
98
- // Best effort delivery per role
82
+ // Broadcast: deliver to all known task inboxes under the tasks directory.
83
+ // Discovers recipients dynamically so it works for both team mode
84
+ // (explorer, planner, ...) and swarm mode (agent-1, agent-2, ...).
85
+ try {
86
+ const entries = fs.readdirSync(paths.taskDir, { withFileTypes: true });
87
+ for (const entry of entries) {
88
+ if (!entry.isDirectory())
89
+ continue;
90
+ const taskId = entry.name;
91
+ if (!SAFE_RECIPIENT_PATTERN.test(taskId))
92
+ continue;
93
+ try {
94
+ const taskPaths = resolveTaskMailboxPaths(paths, taskId);
95
+ fs.mkdirSync(path.dirname(taskPaths.inbox), { recursive: true });
96
+ appendJsonLine(taskPaths.inbox, message);
97
+ }
98
+ catch {
99
+ // Best effort delivery per task
100
+ }
99
101
  }
100
102
  }
103
+ catch {
104
+ // tasks directory might not exist yet — best effort
105
+ }
101
106
  }
102
107
  else {
103
108
  // Direct message: deliver to specific role inbox
@@ -110,14 +115,25 @@ export function sendMessage(paths, message) {
110
115
  * Read unacknowledged messages from the team inbox.
111
116
  */
112
117
  export function readInbox(paths) {
113
- return readJsonLines(paths.inbox);
118
+ const messages = readJsonLines(paths.inbox);
119
+ const ackedIds = readAckIds(paths.inboxAcks);
120
+ if (ackedIds.size === 0)
121
+ return messages;
122
+ return messages.filter((m) => !ackedIds.has(m.messageId));
123
+ }
124
+ function taskAckPath(taskInbox) {
125
+ return taskInbox + ".acks";
114
126
  }
115
127
  /**
116
128
  * Read messages from a task-specific inbox.
117
129
  */
118
130
  export function readTaskInbox(paths, taskId) {
119
131
  const taskPaths = resolveTaskMailboxPaths(paths, taskId);
120
- return readJsonLines(taskPaths.inbox);
132
+ const messages = readJsonLines(taskPaths.inbox);
133
+ const ackedIds = readAckIds(taskAckPath(taskPaths.inbox));
134
+ if (ackedIds.size === 0)
135
+ return messages;
136
+ return messages.filter((m) => !ackedIds.has(m.messageId));
121
137
  }
122
138
  /**
123
139
  * Count total messages in the team outbox.
@@ -138,22 +154,29 @@ export function countOutboxMessages(paths) {
138
154
  }
139
155
  /**
140
156
  * Acknowledge (delete) messages from the team inbox.
157
+ *
158
+ * Uses an append-only ack file to avoid the TOCTOU race between
159
+ * reading and rewriting inbox.jsonl. Acknowledged message IDs are
160
+ * appended to inboxAcks.jsonl and filtered at read time.
141
161
  */
142
162
  export function ackMessages(paths, messageIds) {
143
- const messages = readJsonLines(paths.inbox);
144
- const idSet = new Set(messageIds);
145
- const remaining = messages.filter((m) => !idSet.has(m.messageId));
146
- writeJsonLines(paths.inbox, remaining);
163
+ for (const id of messageIds) {
164
+ appendJsonLine(paths.inboxAcks, { messageId: id });
165
+ }
166
+ compactAcks(paths.inboxAcks);
147
167
  }
148
168
  /**
149
169
  * Acknowledge (delete) messages from a task-specific inbox.
170
+ *
171
+ * Uses the same append-only ack approach as ackMessages.
150
172
  */
151
173
  export function ackTaskMessages(paths, taskId, messageIds) {
152
174
  const taskPaths = resolveTaskMailboxPaths(paths, taskId);
153
- const messages = readJsonLines(taskPaths.inbox);
154
- const idSet = new Set(messageIds);
155
- const remaining = messages.filter((m) => !idSet.has(m.messageId));
156
- writeJsonLines(taskPaths.inbox, remaining);
175
+ const ackPath = taskAckPath(taskPaths.inbox);
176
+ for (const id of messageIds) {
177
+ appendJsonLine(ackPath, { messageId: id });
178
+ }
179
+ compactAcks(ackPath);
157
180
  }
158
181
  /**
159
182
  * Get delivery state (which messages have been delivered/read).
@@ -184,24 +207,90 @@ function appendJsonLine(filePath, data) {
184
207
  const line = JSON.stringify(data) + "\n";
185
208
  fs.appendFileSync(filePath, line, "utf-8");
186
209
  }
210
+ /**
211
+ * Read acknowledged message IDs from an ack file (JSONL with {messageId: string} entries).
212
+ */
213
+ function readAckIds(ackPath) {
214
+ try {
215
+ const raw = fs.readFileSync(ackPath, "utf-8");
216
+ if (!raw.trim())
217
+ return new Set();
218
+ const ids = new Set();
219
+ for (const line of raw.trim().split("\n")) {
220
+ const trimmed = line.trim();
221
+ if (!trimmed)
222
+ continue;
223
+ try {
224
+ const parsed = JSON.parse(trimmed);
225
+ if (parsed.messageId)
226
+ ids.add(parsed.messageId);
227
+ }
228
+ catch {
229
+ // Skip corrupted ack lines
230
+ }
231
+ }
232
+ return ids;
233
+ }
234
+ catch {
235
+ return new Set();
236
+ }
237
+ }
238
+ /**
239
+ * Compact an ack file if the number of lines exceeds 10x the unique ID count
240
+ * (indicating significant duplication from repeated acknowledgment cycles).
241
+ */
242
+ function compactAcks(ackPath) {
243
+ try {
244
+ const raw = fs.readFileSync(ackPath, "utf-8");
245
+ if (!raw.trim())
246
+ return;
247
+ const lines = raw
248
+ .trim()
249
+ .split("\n")
250
+ .filter((l) => l.trim());
251
+ if (lines.length < 100)
252
+ return; // Don't compact small files
253
+ const uniqueIds = readAckIds(ackPath);
254
+ if (uniqueIds.size === 0)
255
+ return;
256
+ // Compact if ratio exceeds 10x
257
+ if (lines.length > uniqueIds.size * 10) {
258
+ const content = Array.from(uniqueIds)
259
+ .map((id) => JSON.stringify({ messageId: id }))
260
+ .join("\n");
261
+ writeAtomic(ackPath, content + "\n");
262
+ }
263
+ }
264
+ catch {
265
+ // Best effort compaction
266
+ }
267
+ }
187
268
  function readJsonLines(filePath) {
188
269
  try {
189
270
  const raw = fs.readFileSync(filePath, "utf-8");
190
271
  if (!raw.trim())
191
272
  return [];
192
- return raw
273
+ const lines = raw
193
274
  .trim()
194
275
  .split("\n")
195
- .filter((line) => line.trim())
276
+ .filter((line) => line.trim());
277
+ let corruptedCount = 0;
278
+ const messages = lines
196
279
  .map((line) => {
197
280
  try {
198
281
  return JSON.parse(line);
199
282
  }
200
283
  catch {
284
+ corruptedCount++;
285
+ console.error(`[pi-swarm] Corrupted JSONL line in ${filePath}:`, line.slice(0, 200));
201
286
  return null;
202
287
  }
203
288
  })
204
289
  .filter((m) => m !== null);
290
+ if (corruptedCount > 0) {
291
+ console.error(`[pi-swarm] Skipped ${corruptedCount} corrupted line(s) in ${filePath}`);
292
+ }
293
+ return messages;
205
294
  }
206
295
  catch {
207
296
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../src/team/mailbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mailbox.js","sourceRoot":"","sources":["../../src/team/mailbox.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,18 @@
1
1
  /**
2
2
  * tui/progress — AgentSwarm live progress panel.
3
3
  *
4
- * Renders a real-time progress display above the input area when
5
- * an AgentSwarm batch is running. Each subagent gets a compact braille
6
- * spinner with status and item description.
4
+ * Vertical panel layout with fixed-width tool-call-based braille progress
5
+ * bars and inline activity text. Each agent renders as a single line:
6
+ * 001 [braille bar] read: src/lib.rs lines 42-99
7
+ * Bar width is fixed (5 cells) so tool labels align across agents.
7
8
  *
8
- * Features:
9
- * - Debounced, event-driven rendering (replaces pure setInterval polling)
10
- * - Keyboard interaction: j/k scroll, Enter detail, ? help, tab panel switch
11
- * - Panel switching: members list / event log
12
- * - Detail overlay for individual members
13
- * - Activity/tool tracking per member
14
- * - ETA estimation
9
+ * Progress is driven by actual tool calls / activity events (progressTick),
10
+ * not wall-clock time. An agent that makes more progress fills faster.
15
11
  *
16
- * Ported from MoonshotAI/kimi-code's AgentSwarmProgressComponent.
12
+ * For 5+ agents, switches to a 2-column compact grid (3-cell bars).
17
13
  */
18
14
  import type { Component } from "@earendil-works/pi-tui";
19
- import type { BatchProgressSnapshot, SubagentUsage, ProgressEvent } from "../shared/types.js";
15
+ import type { BatchProgressSnapshot, SubagentUsage } from "../shared/types.js";
20
16
  export type MemberPhase = "pending" | "queued" | "prompting" | "working" | "completed" | "failed" | "cancelled" | "suspended";
21
17
  export interface MemberStatus {
22
18
  readonly index: number;
@@ -24,10 +20,11 @@ export interface MemberStatus {
24
20
  item?: string;
25
21
  result?: string;
26
22
  error?: string;
27
- phaseStartedAt?: number;
28
23
  currentTool?: string;
29
24
  activity?: string;
30
25
  usage?: SubagentUsage;
26
+ progressTick?: number;
27
+ startedAt?: number;
31
28
  }
32
29
  export interface SwarmProgressState {
33
30
  title?: string;
@@ -39,59 +36,50 @@ export interface SwarmProgressState {
39
36
  members: MemberStatus[];
40
37
  totalUsage: SubagentUsage;
41
38
  startedAt: number;
42
- estimatedRemainingMs?: number;
43
- eventLog?: ProgressEvent[];
39
+ mailbox?: boolean;
40
+ mailboxCount?: number;
44
41
  }
45
42
  export declare function snapshotToProgressState(snapshot: BatchProgressSnapshot, title?: string): SwarmProgressState;
46
43
  export declare class AgentSwarmProgressComponent implements Component {
47
44
  private state_;
48
- private renderedWidth;
49
- private cachedLines;
50
45
  private onRequestRender;
51
- private animationFrame;
52
- private frameIndex;
53
46
  private pollTimer;
54
47
  private debounceTimer;
55
- private pendingInvalidate;
56
- private hasActiveMembers;
57
- private scrollOffset;
58
- private selectedIndex;
59
- private activePanel;
60
- private overlay;
61
48
  constructor(onRequestRender?: () => void);
62
49
  update(state: SwarmProgressState): void;
63
50
  complete(): void;
64
51
  dispose(): void;
65
52
  invalidate(): void;
66
- handleInput(data: string): void;
53
+ handleInput(_data: string): void;
67
54
  render(width: number): string[];
68
- private renderMembersPanel;
69
- private renderEventsPanel;
70
- private renderOverlay;
71
- private renderHelpOverlay;
72
- private renderDetailOverlay;
73
- private scrollDown;
74
- private scrollUp;
55
+ private renderHeader;
56
+ private renderStatusLine;
75
57
  /**
76
- * Request a debounced render. Multiple calls within the debounce window
77
- * coalesce into a single render pass. State changes also trigger immediate
78
- * invalidation.
58
+ * Render all agents. Uses vertical panels for small counts
59
+ * and a compact 2-column grid for larger batches.
79
60
  */
80
- private requestRender;
81
- /**
82
- * Start the fallback polling timer. Falls back to polling when no
83
- * state changes trigger requests, ensuring the spinner animates.
84
- */
85
- private startPolling;
86
- private schedulePoll;
61
+ private renderAgentPanels;
62
+ private renderVerticalPanels;
87
63
  /**
88
- * Adjust polling interval based on active member count.
64
+ * Render one agent as a single line with fixed-width progress bar.
65
+ *
66
+ * Format: `001 [braille bar] read: src/lib.rs lines 42-99`
67
+ * Bar is always FIXED_BAR_CELLS (5) wide so tool labels align across agents.
68
+ *
69
+ * Progress is driven by progressTick (actual tool calls / activity events),
70
+ * not wall-clock time. Each tick fills one level of the braille bar.
89
71
  */
90
- private updatePollingInterval;
72
+ private renderAgentLine;
73
+ private renderCompactGrid;
91
74
  /**
92
- * Start the animation tick for the braille spinner.
75
+ * Compact single-line grid cell.
76
+ * Format: `001 [▓▓] label`
93
77
  */
94
- private startAnimation;
78
+ private renderGridCell;
79
+ private renderBrailleBar;
80
+ private renderCellLabel;
81
+ private requestRender;
82
+ private startPolling;
95
83
  private stopTimers;
96
84
  }
97
85
  //# sourceMappingURL=progress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/tui/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EACV,qBAAqB,EAErB,aAAa,EACb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAoE5B,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAMD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,CAAC,EAAE,MAAM,GACb,kBAAkB,CA4BpB;AAyBD,qBAAa,2BAA4B,YAAW,SAAS;IAC3D,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,eAAe,CAA2B;IAGlD,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,aAAa,CAA4C;IACjE,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAAS;IAGjC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,OAAO,CAA6B;gBAEhC,eAAe,CAAC,EAAE,MAAM,IAAI;IAUxC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAcvC,QAAQ,IAAI,IAAI;IAoBhB,OAAO,IAAI,IAAI;IAKf,UAAU,IAAI,IAAI;IASlB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA8F/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAiE/B,OAAO,CAAC,kBAAkB;IAsC1B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,mBAAmB;IA6D3B,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,QAAQ;IAgBhB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAmBrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,UAAU;CAcnB"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/tui/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EACV,qBAAqB,EAErB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAmC5B,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,QAAQ,GACR,WAAW,GACX,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,qBAAqB,EAC/B,KAAK,CAAC,EAAE,MAAM,GACb,kBAAkB,CAsBpB;AAqBD,qBAAa,2BAA4B,YAAW,SAAS;IAC3D,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,aAAa,CAA4C;gBAErD,eAAe,CAAC,EAAE,MAAM,IAAI;IASxC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKvC,QAAQ,IAAI,IAAI;IAkBhB,OAAO,IAAI,IAAI;IAIf,UAAU,IAAI,IAAI;IAGlB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA+B/B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,gBAAgB;IAgBxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,iBAAiB;IAsCzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,UAAU;CAUnB"}