@gjczone/pi-swarm 0.3.1 → 0.3.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 (40) hide show
  1. package/README.md +16 -1
  2. package/dist/index.d.ts +11 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +41 -34
  5. package/dist/index.js.map +1 -1
  6. package/dist/shared/controller.d.ts.map +1 -1
  7. package/dist/shared/controller.js +13 -16
  8. package/dist/shared/controller.js.map +1 -1
  9. package/dist/shared/spawner.d.ts.map +1 -1
  10. package/dist/shared/spawner.js +93 -7
  11. package/dist/shared/spawner.js.map +1 -1
  12. package/dist/shared/types.d.ts +28 -0
  13. package/dist/shared/types.d.ts.map +1 -1
  14. package/dist/shared/types.js +2 -1
  15. package/dist/shared/types.js.map +1 -1
  16. package/dist/state/persistence.d.ts +12 -0
  17. package/dist/state/persistence.d.ts.map +1 -1
  18. package/dist/state/persistence.js +25 -0
  19. package/dist/state/persistence.js.map +1 -1
  20. package/dist/swarm/tool.d.ts.map +1 -1
  21. package/dist/swarm/tool.js +38 -3
  22. package/dist/swarm/tool.js.map +1 -1
  23. package/dist/team/mailbox.d.ts +4 -0
  24. package/dist/team/mailbox.d.ts.map +1 -1
  25. package/dist/team/mailbox.js +10 -18
  26. package/dist/team/mailbox.js.map +1 -1
  27. package/dist/team/supervisor.d.ts +38 -2
  28. package/dist/team/supervisor.d.ts.map +1 -1
  29. package/dist/team/supervisor.js +292 -31
  30. package/dist/team/supervisor.js.map +1 -1
  31. package/dist/team/tool.d.ts.map +1 -1
  32. package/dist/team/tool.js +58 -6
  33. package/dist/team/tool.js.map +1 -1
  34. package/dist/tui/permission-prompt.js +5 -1
  35. package/dist/tui/permission-prompt.js.map +1 -1
  36. package/dist/tui/progress.js +18 -4
  37. package/dist/tui/progress.js.map +1 -1
  38. package/dist/tui/team-dashboard.js +19 -7
  39. package/dist/tui/team-dashboard.js.map +1 -1
  40. package/package.json +1 -1
@@ -5,8 +5,9 @@
5
5
  * each phase to a role agent, monitors progress via the mailbox,
6
6
  * and synthesizes the final result.
7
7
  */
8
+ import { SMALL_MODEL_ROLES } from "../shared/types.js";
8
9
  import { TaskGraph, DEFAULT_TEAM_PHASES, } from "./task-graph.js";
9
- import { resolveMailboxPaths, ensureMailbox, sendMessage, readTaskInbox, updateDeliveryState, } from "./mailbox.js";
10
+ import { resolveMailboxPaths, ensureMailbox, sendMessage, readTaskInbox, ackTaskMessages, updateDeliveryState, } from "./mailbox.js";
10
11
  // ---------------------------------------------------------------------------
11
12
  // Supervisor
12
13
  // ---------------------------------------------------------------------------
@@ -66,6 +67,15 @@ export class TeamSupervisor {
66
67
  const result = this.state.taskGraph.startPhase(phase.phase.name);
67
68
  if (!result.ok)
68
69
  return null;
70
+ // Gather dependency results to include in assignment
71
+ const deps = phase.phase.dependsOn ?? [];
72
+ const depResults = {};
73
+ for (const dep of deps) {
74
+ const depState = this.state.taskGraph.getPhase(dep);
75
+ if (depState?.result) {
76
+ depResults[dep] = depState.result;
77
+ }
78
+ }
69
79
  // Send task assignment message to the role's mailbox
70
80
  const assignmentMessage = {
71
81
  messageId: this.generateMessageId(),
@@ -77,7 +87,8 @@ export class TeamSupervisor {
77
87
  payload: {
78
88
  phase: phase.phase.name,
79
89
  goal: this.config.goal,
80
- dependsOn: phase.phase.dependsOn ?? [],
90
+ dependsOn: deps,
91
+ dependencyResults: depResults,
81
92
  },
82
93
  };
83
94
  sendMessage(this.mailboxPaths, assignmentMessage);
@@ -182,13 +193,62 @@ export class TeamSupervisor {
182
193
  }
183
194
  this.emitProgress();
184
195
  }
185
- /**
186
- * Assign an agent to a phase.
187
- */
196
+ /** Assign an agent to a phase. */
188
197
  assignAgent(phaseName, agentId) {
189
198
  this.state.agentIds.set(phaseName, agentId);
190
199
  this.state.taskGraph.assignAgent(phaseName, agentId);
191
200
  }
201
+ /**
202
+ * Resolve the model and tools configuration for a given phase.
203
+ *
204
+ * Resolution order (highest priority first):
205
+ * 1. Phase-level explicit model override (phase.model)
206
+ * 2. Phase-level modelTier (small => smallModel if configured)
207
+ * 3. Role-level model override from roles config
208
+ * 4. Auto-routing by role name: roles in SMALL_MODEL_ROLES => smallModel
209
+ * 5. Default model (undefined, inherits parent)
210
+ */
211
+ getPhaseExecutionConfig(phaseName) {
212
+ const phase = this.state.taskGraph.getPhase(phaseName);
213
+ const role = phase?.phase.role;
214
+ const roleConfig = role
215
+ ? this.config.roles?.find((r) => r.role === role)
216
+ : undefined;
217
+ let model;
218
+ let tools;
219
+ // Role-level tools whitelist
220
+ if (roleConfig?.tools) {
221
+ tools = [...roleConfig.tools];
222
+ }
223
+ // Phase-level explicit model (highest priority)
224
+ if (phase?.phase.model) {
225
+ model = phase.phase.model;
226
+ }
227
+ // Phase-level modelTier override
228
+ else if (phase?.phase.modelTier === "small" && this.config.smallModel) {
229
+ model = this.config.smallModel;
230
+ }
231
+ else if (phase?.phase.modelTier === "default") {
232
+ model = undefined; // explicit default
233
+ }
234
+ // Role-level model override
235
+ else if (roleConfig?.model) {
236
+ model = roleConfig.model;
237
+ }
238
+ // Auto-routing: explorer (and other SMALL_MODEL_ROLES) => smallModel
239
+ else if (role && SMALL_MODEL_ROLES.has(role) && this.config.smallModel) {
240
+ model = this.config.smallModel;
241
+ }
242
+ // Phase-level tools override (overrides role config)
243
+ if (phase?.phase.tools) {
244
+ tools = [...phase.phase.tools];
245
+ }
246
+ return {
247
+ model,
248
+ tools,
249
+ cwd: this.config.cwd,
250
+ };
251
+ }
192
252
  // -------------------------------------------------------------------
193
253
  // Completion
194
254
  // -------------------------------------------------------------------
@@ -257,30 +317,161 @@ export class TeamSupervisor {
257
317
  }
258
318
  /**
259
319
  * Synthesize the final team result from all completed phases.
320
+ * Max characters of phase output to include inline; rest is truncated.
260
321
  */
322
+ static MAX_PHASE_OUTPUT_CHARS = 12000;
261
323
  synthesizeResult() {
324
+ const allPhases = this.state.taskGraph.getAllPhases();
325
+ const durationMs = (this.state.completedAt ?? Date.now()) - this.state.startedAt;
262
326
  const lines = [
263
327
  "<swarm_team_result>",
264
328
  `<summary>${this.buildSummary()}</summary>`,
329
+ `<total_duration_ms>${durationMs}</total_duration_ms>`,
265
330
  ];
266
- for (const phase of this.state.taskGraph.getAllPhases()) {
331
+ // Per-phase results
332
+ for (const phase of allPhases) {
267
333
  const name = phase.phase.name;
268
334
  const role = phase.phase.role;
269
335
  const status = phase.status;
270
336
  const result = phase.result ?? "";
271
337
  const error = phase.error ?? "";
272
- lines.push(`<phase name="${escapeXml(name)}" role="${escapeXml(role)}" outcome="${escapeXml(status)}">`);
273
- if (status === "completed" && result) {
274
- lines.push(escapeXml(result));
338
+ const agentId = phase.agentId ?? "";
339
+ const duration = phase.startedAt && phase.completedAt
340
+ ? phase.completedAt - phase.startedAt
341
+ : undefined;
342
+ const attrs = [
343
+ `name="${escapeAttr(name)}"`,
344
+ `role="${escapeAttr(role)}"`,
345
+ `outcome="${escapeAttr(status)}"`,
346
+ ];
347
+ if (agentId)
348
+ attrs.push(`agent_id="${escapeAttr(agentId)}"`);
349
+ if (duration !== undefined)
350
+ attrs.push(`duration_ms="${String(duration)}"`);
351
+ lines.push(`<phase ${attrs.join(" ")}>`);
352
+ if (status === "completed") {
353
+ if (result.trim()) {
354
+ const truncated = this.truncateForOutput(result);
355
+ lines.push(truncated);
356
+ }
357
+ else {
358
+ lines.push("(agent returned no text output; see per-agent output.log for full session transcript)");
359
+ }
275
360
  }
276
361
  else if (status === "failed" && error) {
277
- lines.push(`<error>${escapeXml(error)}</error>`);
362
+ lines.push(`<error>${escapeBody(error)}</error>`);
363
+ }
364
+ else if (status === "skipped") {
365
+ lines.push("(phase skipped due to failed dependency)");
278
366
  }
279
367
  lines.push(`</phase>`);
280
368
  }
369
+ // Supervisor synthesis — a consolidated summary across all phases
370
+ lines.push("<supervisor_synthesis>");
371
+ lines.push(this.buildSynthesis(allPhases));
372
+ lines.push("</supervisor_synthesis>");
281
373
  lines.push("</swarm_team_result>");
282
374
  return lines.join("\n");
283
375
  }
376
+ /**
377
+ * Truncate a phase result to MAX_PHASE_OUTPUT_CHARS with a note.
378
+ */
379
+ truncateForOutput(text) {
380
+ if (text.length <= TeamSupervisor.MAX_PHASE_OUTPUT_CHARS) {
381
+ return text;
382
+ }
383
+ const truncated = text.slice(0, TeamSupervisor.MAX_PHASE_OUTPUT_CHARS);
384
+ return (truncated +
385
+ `\n\n... [output truncated: ${text.length - TeamSupervisor.MAX_PHASE_OUTPUT_CHARS} additional characters omitted. See output.log for full content.]`);
386
+ }
387
+ /**
388
+ * Build a consolidated synthesis across all completed phases.
389
+ *
390
+ * Extracts the first non-empty line or heading from each phase to create
391
+ * an executive summary, then lists all phases with their key outcomes.
392
+ */
393
+ buildSynthesis(phases) {
394
+ const sections = [];
395
+ const completedPhases = phases.filter((p) => p.status === "completed");
396
+ const failedPhases = phases.filter((p) => p.status === "failed");
397
+ sections.push(`### Team Run: ${this.config.goal.slice(0, 200)}`);
398
+ sections.push("");
399
+ if (failedPhases.length > 0) {
400
+ sections.push(`### Errors`);
401
+ for (const p of failedPhases) {
402
+ sections.push(`- **${p.phase.name}** (${p.phase.role}): ${p.error ?? "unknown error"}`);
403
+ }
404
+ sections.push("");
405
+ }
406
+ sections.push(`### Phase Outcomes`);
407
+ for (const p of phases) {
408
+ const status = p.status;
409
+ const bullet = status === "completed"
410
+ ? "DONE"
411
+ : status === "failed"
412
+ ? "FAIL"
413
+ : status === "skipped"
414
+ ? "SKIP"
415
+ : "??";
416
+ const firstLine = this.extractFirstMeaningfulLine(p.result ?? "");
417
+ const suffix = firstLine ? ` — ${firstLine}` : "";
418
+ sections.push(`- [${bullet}] **${p.phase.name}** (${p.phase.role})${suffix}`);
419
+ }
420
+ if (completedPhases.length > 0) {
421
+ sections.push("");
422
+ sections.push(`### Key Deliverables`);
423
+ for (const p of completedPhases) {
424
+ const excerpt = this.extractExcerpt(p.result ?? "");
425
+ if (excerpt) {
426
+ sections.push(`#### ${p.phase.name} (${p.phase.role})`);
427
+ sections.push(excerpt);
428
+ sections.push("");
429
+ }
430
+ }
431
+ }
432
+ return sections.join("\n");
433
+ }
434
+ /**
435
+ * Extract the first meaningful line (not empty, not a mailbox tag).
436
+ */
437
+ extractFirstMeaningfulLine(text) {
438
+ const lines = text.split("\n");
439
+ for (const line of lines) {
440
+ const trimmed = line.trim();
441
+ if (!trimmed)
442
+ continue;
443
+ if (trimmed.startsWith("<mailbox_message"))
444
+ continue;
445
+ if (trimmed.startsWith("</mailbox_message"))
446
+ continue;
447
+ // Strip leading markdown heading markers
448
+ const cleaned = trimmed.replace(/^#+\s*/, "");
449
+ return cleaned.slice(0, 120);
450
+ }
451
+ return "";
452
+ }
453
+ /**
454
+ * Extract a short excerpt (first ~400 chars of meaningful content) from a phase result.
455
+ */
456
+ extractExcerpt(text) {
457
+ const lines = text.split("\n");
458
+ const meaningful = [];
459
+ let total = 0;
460
+ for (const line of lines) {
461
+ const trimmed = line.trim();
462
+ if (!trimmed)
463
+ continue;
464
+ if (trimmed.startsWith("<mailbox_message"))
465
+ continue;
466
+ if (trimmed.startsWith("</mailbox_message"))
467
+ continue;
468
+ meaningful.push(line);
469
+ total += line.length;
470
+ if (total > 400)
471
+ break;
472
+ }
473
+ return meaningful.join("\n").slice(0, 500);
474
+ }
284
475
  // -------------------------------------------------------------------
285
476
  // Helpers
286
477
  // -------------------------------------------------------------------
@@ -288,55 +479,112 @@ export class TeamSupervisor {
288
479
  const goal = this.config.goal;
289
480
  const role = phase.phase.role;
290
481
  const name = phase.phase.name;
291
- // Gather context from completed dependency phases
292
482
  const deps = phase.phase.dependsOn ?? [];
483
+ // Gather context from completed dependency phases
293
484
  let contextBlock = "";
294
485
  if (deps.length > 0) {
295
- const depResults = deps
486
+ const depSections = deps
296
487
  .map((dep) => {
297
488
  const depState = this.state.taskGraph.getPhase(dep);
298
- if (!depState || !depState.result)
489
+ if (!depState)
299
490
  return null;
300
- return `${dep} output:\n${depState.result}`;
491
+ const status = depState.status;
492
+ if (status === "failed") {
493
+ return `### ${dep} (${depState.phase.role}) — FAILED\nError: ${depState.error ?? "unknown"}`;
494
+ }
495
+ if (status === "skipped") {
496
+ return `### ${dep} (${depState.phase.role}) — SKIPPED`;
497
+ }
498
+ if (depState.result) {
499
+ return `### ${dep} (${depState.phase.role})\n${depState.result}`;
500
+ }
501
+ return null;
301
502
  })
302
503
  .filter(Boolean)
303
504
  .join("\n\n");
304
- if (depResults) {
305
- contextBlock = `\n\nContext from previous phases:\n${depResults}`;
505
+ if (depSections) {
506
+ contextBlock = `\n\n## Previous Phase Results\n\n${depSections}\n`;
306
507
  }
307
508
  }
308
509
  // Read messages addressed to this role
309
510
  let messagesBlock = "";
511
+ const ackIds = [];
310
512
  try {
311
513
  const roleMessages = readTaskInbox(this.mailboxPaths, role);
312
- const handoffMessages = roleMessages.filter((m) => m.type === "handoff" || m.type === "task_assignment");
313
- if (handoffMessages.length > 0) {
314
- const messageText = handoffMessages
315
- .map((m) => `Message from ${m.from}:\n${String(m.payload.content ?? m.payload.phase ?? "")}`)
316
- .join("\n\n");
317
- messagesBlock = `\n\nMessages for you:\n${messageText}`;
514
+ if (roleMessages.length > 0) {
515
+ const messageParts = [];
516
+ for (const m of roleMessages) {
517
+ ackIds.push(m.messageId);
518
+ if (m.type === "task_assignment") {
519
+ const depList = Array.isArray(m.payload.dependsOn)
520
+ ? m.payload.dependsOn.join(", ")
521
+ : "(none)";
522
+ let depResultsText = "";
523
+ const depResults = m.payload.dependencyResults;
524
+ if (depResults && Object.keys(depResults).length > 0) {
525
+ depResultsText = Object.entries(depResults)
526
+ .map(([depName, depResult]) => `#### ${depName} result:\n${depResult}`)
527
+ .join("\n\n");
528
+ }
529
+ messageParts.push(`### Task Assignment from supervisor (${m.timestamp})\n` +
530
+ `Phase: ${m.payload.phase ?? name}\n` +
531
+ `Dependencies: ${depList}\n` +
532
+ (depResultsText ? `\n${depResultsText}\n` : ""));
533
+ }
534
+ else if (m.type === "handoff") {
535
+ const content = String(m.payload.content ?? "");
536
+ messageParts.push(`### Message from ${m.from} (${m.timestamp})\n${content}`);
537
+ }
538
+ else if (m.type === "task_result") {
539
+ const resultText = String(m.payload.result ?? "");
540
+ const fromPhase = String(m.payload.phase ?? m.from);
541
+ messageParts.push(`### Completed: ${fromPhase} (${m.timestamp})\n${resultText}`);
542
+ }
543
+ }
544
+ if (messageParts.length > 0) {
545
+ messagesBlock = `\n## Messages\n\n${messageParts.join("\n\n")}\n`;
546
+ }
318
547
  }
319
548
  }
320
549
  catch {
321
550
  // Ignore mailbox read errors
322
551
  }
552
+ // Acknowledge messages that were included in the prompt
553
+ if (ackIds.length > 0) {
554
+ try {
555
+ ackTaskMessages(this.mailboxPaths, role, ackIds);
556
+ }
557
+ catch {
558
+ // Best effort acknowledgment
559
+ }
560
+ }
561
+ // Get role-specific system prompt if configured
562
+ const roleConfig = this.config.roles?.find((r) => r.role === role);
563
+ const roleSystemPrompt = roleConfig?.systemPrompt;
323
564
  return [
324
- `You are the ${role} agent in a team working on: ${goal}`,
325
- `Your current phase is: ${name}`,
565
+ roleSystemPrompt
566
+ ? roleSystemPrompt
567
+ : `You are the ${role} agent on a software engineering team.`,
568
+ "",
569
+ `## Overall Goal`,
570
+ "",
571
+ goal,
572
+ "",
573
+ `## Your Current Phase: ${name}`,
574
+ "",
326
575
  contextBlock,
327
576
  messagesBlock,
328
- ``,
329
577
  `## Communication Protocol`,
330
- ``,
578
+ "",
331
579
  `You can send messages to other team members by including them in your output using this format:`,
332
- ``,
580
+ "",
333
581
  `<mailbox_message to="role_name">`,
334
- `Your message content here.`,
582
+ `Your message content here. Be specific about what you found and what they need to know.`,
335
583
  `</mailbox_message>`,
336
- ``,
584
+ "",
337
585
  `You can address messages to: explorer, planner, coder, reviewer, tester, fixer, or broadcast.`,
338
586
  `Messages are delivered after your phase completes.`,
339
- ``,
587
+ "",
340
588
  `Your final output (outside of mailbox_message tags) is your phase result.`,
341
589
  `Complete the ${name} phase and write your result.`,
342
590
  ]
@@ -356,11 +604,24 @@ export class TeamSupervisor {
356
604
  // ---------------------------------------------------------------------------
357
605
  // Helpers
358
606
  // ---------------------------------------------------------------------------
359
- function escapeXml(value) {
607
+ /**
608
+ * Escape a string for use in an XML attribute value.
609
+ * Full XML special character escaping.
610
+ */
611
+ function escapeAttr(value) {
360
612
  return value
361
613
  .replaceAll("&", "&amp;")
362
614
  .replaceAll('"', "&quot;")
615
+ .replaceAll("'", "&apos;")
363
616
  .replaceAll("<", "&lt;")
364
617
  .replaceAll(">", "&gt;");
365
618
  }
619
+ /**
620
+ * Minimal escaping for XML element body content.
621
+ * Only escapes & and ]]> to prevent XML parsing errors while
622
+ * preserving markdown formatting (headers, lists, bold, etc.).
623
+ */
624
+ function escapeBody(value) {
625
+ return value.replaceAll("&", "&amp;").replaceAll("]]>", "]]&gt;");
626
+ }
366
627
  //# sourceMappingURL=supervisor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/team/supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/team/supervisor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/team/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AAsDzC,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA8V5D"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/team/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AAyDzC,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAoa5D"}
package/dist/team/tool.js CHANGED
@@ -10,7 +10,7 @@ import { Type } from "typebox";
10
10
  import { Container, Spacer, Text } from "@earendil-works/pi-tui";
11
11
  import { SubagentBatchController, } from "../shared/controller.js";
12
12
  import { spawnSubagent, resumeSubagent, retrySubagent, } from "../shared/spawner.js";
13
- import { resolveSwarmRoot, createManifest, saveTaskState, updateHeartbeat, } from "../state/persistence.js";
13
+ import { resolveSwarmRoot, createManifest, readManifest, updateManifest, saveTaskState, updateHeartbeat, registerAgentInManifest, } from "../state/persistence.js";
14
14
  import { TeamSupervisor } from "./supervisor.js";
15
15
  import { TeamDashboardComponent, snapshotToDashboardState, } from "../tui/team-dashboard.js";
16
16
  // ---------------------------------------------------------------------------
@@ -51,6 +51,9 @@ export function registerSwarmTeamTool(pi) {
51
51
  name: Type.String(),
52
52
  role: Type.String(),
53
53
  dependsOn: Type.Optional(Type.Array(Type.String())),
54
+ modelTier: Type.Optional(Type.Union([Type.Literal("small"), Type.Literal("default")])),
55
+ model: Type.Optional(Type.String()),
56
+ tools: Type.Optional(Type.Array(Type.String())),
54
57
  }), {
55
58
  description: "Custom phase definitions. Defaults to explore/plan/implement/review/test.",
56
59
  })),
@@ -62,6 +65,9 @@ export function registerSwarmTeamTool(pi) {
62
65
  }), {
63
66
  description: "Custom role configurations with optional model/tools overrides.",
64
67
  })),
68
+ small_model: Type.Optional(Type.String({
69
+ description: "Lightweight/fast model for exploration roles (e.g. explorer). Other roles use the default model.",
70
+ })),
65
71
  max_agents: Type.Optional(Type.Number({
66
72
  description: "Max concurrent agents. Default 4.",
67
73
  })),
@@ -70,15 +76,20 @@ export function registerSwarmTeamTool(pi) {
70
76
  const p = params;
71
77
  const ctx = ctxRaw;
72
78
  const dashboard = createTeamDashboardWidget(ctx, p.description);
79
+ // Persistent run state - declared outside try for catch access
80
+ const swarmRoot = process.env.PI_SWARM_ROOT ?? resolveSwarmRoot(process.cwd());
81
+ const runId = `team-${Date.now().toString(36)}`;
82
+ let runCreated = false;
73
83
  let supervisor = null;
74
84
  try {
75
- const swarmRoot = process.env.PI_SWARM_ROOT ?? resolveSwarmRoot(process.cwd());
76
- const runId = `team-${Date.now().toString(36)}`;
77
85
  // Build phase definitions
78
86
  const phases = p.phases?.map((ph) => ({
79
87
  name: ph.name,
80
88
  role: ph.role,
81
89
  dependsOn: ph.dependsOn,
90
+ modelTier: ph.modelTier,
91
+ model: ph.model,
92
+ tools: ph.tools,
82
93
  }));
83
94
  // Build role configs
84
95
  const roles = p.roles?.map((r) => ({
@@ -95,6 +106,7 @@ export function registerSwarmTeamTool(pi) {
95
106
  goal: p.goal,
96
107
  phases,
97
108
  roles,
109
+ smallModel: p.small_model,
98
110
  maxAgents: p.max_agents ?? 4,
99
111
  onProgress: (snapshot) => {
100
112
  dashboard?.component.update(snapshotToDashboardState(snapshot));
@@ -109,6 +121,7 @@ export function registerSwarmTeamTool(pi) {
109
121
  startedAt: Date.now(),
110
122
  agentIds: [],
111
123
  });
124
+ runCreated = true;
112
125
  saveTaskState(swarmRoot, runId, supervisor.state.taskGraph.toJSON());
113
126
  // Run phases sequentially through the task graph
114
127
  const allResults = [];
@@ -119,6 +132,8 @@ export function registerSwarmTeamTool(pi) {
119
132
  // Update heartbeat before phase
120
133
  updateHeartbeat(swarmRoot, runId);
121
134
  const { phase, role, prompt: phasePrompt } = currentPhase;
135
+ // Resolve model/tools/cwd for this phase based on role config and tier
136
+ const execConfig = supervisor.getPhaseExecutionConfig(phase.phase.name);
122
137
  // Spawn a single agent for this phase
123
138
  const tasks = [
124
139
  {
@@ -132,6 +147,11 @@ export function registerSwarmTeamTool(pi) {
132
147
  runInBackground: false,
133
148
  signal,
134
149
  timeout: DEFAULT_SUBAGENT_TIMEOUT_MS,
150
+ model: execConfig.model,
151
+ tools: execConfig.tools,
152
+ cwd: execConfig.cwd,
153
+ swarmRoot,
154
+ runId,
135
155
  },
136
156
  ];
137
157
  const controller = new SubagentBatchController({
@@ -153,6 +173,15 @@ export function registerSwarmTeamTool(pi) {
153
173
  // Abort signal: stop the entire run, save partial state
154
174
  if (signal?.aborted) {
155
175
  supervisor.finalize();
176
+ if (runCreated) {
177
+ const m = readManifest(swarmRoot, runId);
178
+ if (m) {
179
+ m.status = "failed";
180
+ m.completedAt = Date.now();
181
+ m.error = "Aborted by user";
182
+ updateManifest(swarmRoot, m);
183
+ }
184
+ }
156
185
  const partialOutput = supervisor.synthesizeResult();
157
186
  return {
158
187
  content: [{ type: "text", text: partialOutput }],
@@ -168,9 +197,15 @@ export function registerSwarmTeamTool(pi) {
168
197
  if (result && result.status === "completed") {
169
198
  supervisor.assignAgent(phase.phase.name, result.agentId ?? phase.phase.name);
170
199
  supervisor.completePhase(phase.phase.name, result.result ?? "");
200
+ if (result.agentId) {
201
+ registerAgentInManifest(swarmRoot, runId, result.agentId);
202
+ }
171
203
  }
172
204
  else if (result) {
173
205
  supervisor.failPhase(phase.phase.name, result.error ?? "Unknown error");
206
+ if (result.agentId) {
207
+ registerAgentInManifest(swarmRoot, runId, result.agentId);
208
+ }
174
209
  }
175
210
  // Save state after each phase
176
211
  saveTaskState(swarmRoot, runId, supervisor.state.taskGraph.toJSON());
@@ -178,6 +213,15 @@ export function registerSwarmTeamTool(pi) {
178
213
  }
179
214
  // Finalize and render
180
215
  supervisor.finalize();
216
+ // Mark run as completed
217
+ if (runCreated) {
218
+ const manifest = readManifest(swarmRoot, runId);
219
+ if (manifest) {
220
+ manifest.status = "completed";
221
+ manifest.completedAt = Date.now();
222
+ updateManifest(swarmRoot, manifest);
223
+ }
224
+ }
181
225
  dashboard?.component.complete();
182
226
  const output = supervisor.synthesizeResult();
183
227
  return {
@@ -187,6 +231,16 @@ export function registerSwarmTeamTool(pi) {
187
231
  }
188
232
  catch (error) {
189
233
  const message = error instanceof Error ? error.message : String(error);
234
+ // Mark run as failed
235
+ if (runCreated) {
236
+ const manifest = readManifest(swarmRoot, runId);
237
+ if (manifest) {
238
+ manifest.status = "failed";
239
+ manifest.completedAt = Date.now();
240
+ manifest.error = message;
241
+ updateManifest(swarmRoot, manifest);
242
+ }
243
+ }
190
244
  // Return partial state if available
191
245
  if (supervisor) {
192
246
  try {
@@ -261,9 +315,7 @@ export function registerSwarmTeamTool(pi) {
261
315
  * 业务说明:展示团队执行结果 —— 各阶段完成/失败状态。
262
316
  */
263
317
  renderResult(result, _options, theme, context) {
264
- const text = result.content[0]?.type === "text"
265
- ? result.content[0].text
266
- : "";
318
+ const text = result.content[0]?.type === "text" ? result.content[0].text : "";
267
319
  const icon = context.isError
268
320
  ? theme.fg("error", "x")
269
321
  : theme.fg("success", "V");