@gjczone/pi-swarm 0.5.0 → 0.7.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 (68) hide show
  1. package/README.md +14 -21
  2. package/dist/index.d.ts +3 -10
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +4 -16
  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 +47 -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 +49 -5
  13. package/dist/shared/spawner.js.map +1 -1
  14. package/dist/shared/types.d.ts +8 -0
  15. package/dist/shared/types.d.ts.map +1 -1
  16. package/dist/shared/worktree.d.ts +2 -0
  17. package/dist/shared/worktree.d.ts.map +1 -1
  18. package/dist/shared/worktree.js +10 -3
  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 +107 -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 -0
  39. package/dist/team/mailbox.d.ts.map +1 -1
  40. package/dist/team/mailbox.js +99 -13
  41. package/dist/team/mailbox.js.map +1 -1
  42. package/dist/tui/progress.d.ts +18 -50
  43. package/dist/tui/progress.d.ts.map +1 -1
  44. package/dist/tui/progress.js +200 -483
  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,18 +1,19 @@
1
1
  /**
2
- * swarm/tool — AgentSwarm tool registration.
2
+ * swarm/tool — Swarm tool registration.
3
3
  *
4
- * Registers the `AgentSwarm` tool that the LLM can call to launch
5
- * multiple subagents from a shared prompt template.
4
+ * Registers the `Swarm` tool that the LLM can call to launch
5
+ * 1-20 isolated subagents in parallel from a shared prompt template.
6
6
  *
7
- * Ported from MoonshotAI/kimi-code's AgentSwarmTool.
7
+ * Architecture reference: AgentSwarm pattern.
8
8
  */
9
9
  import { Type } from "typebox";
10
10
  import { Container, Spacer, Text } from "@earendil-works/pi-tui";
11
- import { SubagentBatchController, resolveSwarmMaxConcurrency, } from "../shared/controller.js";
11
+ import { SubagentBatchController, resolveSwarmMaxConcurrency, resolveSwarmSmallModel, } from "../shared/controller.js";
12
12
  import { renderSwarmResults, toSwarmRunResults } from "../shared/render.js";
13
13
  import { spawnSubagent, resumeSubagent, retrySubagent, } from "../shared/spawner.js";
14
- import { resolveSwarmRoot, createManifest, updateManifest, readManifest, registerAgentInManifest, validateId, } from "../state/persistence.js";
14
+ import { resolveSwarmRoot, createManifest, updateManifest, readManifest, registerAgentInManifest, } from "../state/persistence.js";
15
15
  import { mergeBranch, isGitRepository } from "../shared/worktree.js";
16
+ import { resolveMailboxPaths, ensureMailbox } from "../team/mailbox.js";
16
17
  import { AgentSwarmProgressComponent, snapshotToProgressState, } from "../tui/progress.js";
17
18
  /** Widget key used to render the live swarm progress panel. */
18
19
  const PROGRESS_WIDGET_KEY = "pi-swarm-progress";
@@ -21,61 +22,80 @@ const PROGRESS_WIDGET_KEY = "pi-swarm-progress";
21
22
  // ---------------------------------------------------------------------------
22
23
  const DEFAULT_SUBAGENT_TYPE = "coder";
23
24
  const PROMPT_TEMPLATE_PLACEHOLDER = "{{item}}";
24
- const MAX_AGENT_SWARM_SUBAGENTS = 128;
25
+ const MAX_ITEM_COUNT = 20;
25
26
  const DEFAULT_SUBAGENT_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
26
27
  const AGENT_SWARM_DESCRIPTION = [
27
- "Launch 1-128 isolated subagents in parallel from a template or resume list.",
28
+ "Launch 1-20 subagents in parallel, with optional inter-agent mailbox.",
28
29
  "",
29
- "CRITICAL RULES:",
30
- "1. If `items` is provided, `prompt_template` MUST contain {{item}} exactly once.",
31
- "2. If only resuming agents, omit both `items` and `prompt_template`.",
32
- "3. This tool MUST be the ONLY tool call in your response — do not batch.",
30
+ "YOU (the assistant) decide whether to enable mailbox based on the task:",
31
+ "- Simple parallel work (review files, fix independent bugs, investigate):",
32
+ " mailbox: false (default). Items are independent.",
33
+ "- Collaborative workflows (agents need to share findings between phases):",
34
+ " mailbox: true. Agents communicate via shared inbox/outbox.",
33
35
  "",
34
- "QUICK REFERENCE:",
35
- '- New subagents: { "items": ["a","b"], "prompt_template": "Review {{item}}" }',
36
- '- Resume only: { "resume_agent_ids": { "ag-1": "retry prompt" } }',
37
- "- Combined: both fields together (resumes fire first, then spawns).",
36
+ "How to use:",
37
+ "1. Analyze the task. Decompose it into 1-20 items.",
38
+ "2. Decide: do agents need to communicate?",
39
+ " - No -> mailbox: false (default)",
40
+ " - Yes -> mailbox: true",
41
+ "3. Write a prompt_template with {{item}} placeholder.",
42
+ " Include context from the user's task and the specific item.",
43
+ "4. Use 1 item for a single isolated agent, 2-6 for typical parallel work.",
44
+ "5. The tool handles concurrency, rate limits, and error recovery.",
45
+ "6. Read the results from the tool output.",
38
46
  "",
39
- "Use AgentSwarm for parallel independent tasks. Use SwarmTeam for role-based collaboration.",
47
+ "Each subagent runs in a clean workspace with project rules (AGENTS.md) loaded.",
48
+ "With mailbox, subagents get inbox/outbox and send messages during execution.",
49
+ "Without mailbox, subagents are fully independent and do not communicate.",
50
+ "",
51
+ "Best for: code review, bug fixing, file editing, investigation, refactoring,",
52
+ " multi-step research, phased implementation.",
53
+ "",
54
+ 'Optional: set model to "small" for simple/exploratory subagent tasks.',
55
+ 'The tool auto-resolves "small" from your settings (pi-swarm.smallModel).',
56
+ "Only use small model for straightforward execution or exploration.",
57
+ "Do NOT use small model for review, planning, or complex analysis.",
58
+ "Default: inherit parent session model (omit model param).",
40
59
  ].join("\n");
41
60
  // ---------------------------------------------------------------------------
42
61
  // Registration
43
62
  // ---------------------------------------------------------------------------
44
63
  export function registerAgentSwarmTool(pi) {
45
64
  pi.registerTool({
46
- name: "AgentSwarm",
47
- label: "Agent Swarm",
65
+ name: "Swarm",
66
+ label: "Swarm",
48
67
  description: AGENT_SWARM_DESCRIPTION,
49
68
  parameters: Type.Object({
50
- description: Type.String({
51
- description: "Short description for the whole swarm.",
52
- examples: ["Review all source files for bugs"],
53
- }),
54
- subagent_type: Type.Optional(Type.String({
55
- description: "Subagent type used for every spawned subagent. Defaults to coder when omitted.",
56
- examples: ["coder"],
69
+ description: Type.Optional(Type.String({
70
+ description: "Short description for the whole swarm (optional).",
71
+ examples: ["Review source files for bugs"],
57
72
  })),
58
- prompt_template: Type.Optional(Type.String({
59
- description: `REQUIRED when items is provided. Must contain ${PROMPT_TEMPLATE_PLACEHOLDER} exactly once. Each item replaces the placeholder.`,
73
+ prompt_template: Type.String({
74
+ description: `Prompt template with ${PROMPT_TEMPLATE_PLACEHOLDER} exactly once. Each item replaces the placeholder.`,
60
75
  examples: [
61
- "Fix issues in {{item}}",
62
- "Review {{item}} for security vulnerabilities",
76
+ "You are a code reviewer. Review {{item}} for bugs and security issues.",
77
+ "Fix the following issue in {{item}}",
63
78
  ],
64
- })),
65
- items: Type.Optional(Type.Array(Type.String(), {
66
- maxItems: MAX_AGENT_SWARM_SUBAGENTS,
67
- description: "REQUIRED with prompt_template. Each item replaces {{item}}. Values are used as {{item}} in the template. Min 1 item, max 128.",
79
+ }),
80
+ items: Type.Array(Type.String(), {
81
+ minItems: 1,
82
+ maxItems: MAX_ITEM_COUNT,
83
+ description: "Items (1-20) to parallelize across. Each item replaces {{item}} in the template.",
68
84
  examples: [["src/auth.ts", "src/api.ts", "src/db.ts"]],
85
+ }),
86
+ model: Type.Optional(Type.String({
87
+ description: 'Model for subagents. Pass "small" to auto-resolve from settings pi-swarm.smallModel. Pass an explicit model ID to override. Omit to inherit parent session model. Do NOT use small model for review, planning, or complex analysis.',
88
+ examples: ["deepseek/deepseek-v4-flash"],
69
89
  })),
70
- resume_agent_ids: Type.Optional(Type.Record(Type.String(), Type.String(), {
71
- description: "Map of existing subagent agent_id to the prompt used to resume that subagent. Resumed subagents launch before new item-based subagents.",
72
- examples: [
73
- { "swarm-abc123": "Retry with more focus on XSS detection" },
74
- ],
90
+ mailbox: Type.Optional(Type.Boolean({
91
+ description: "Enable inter-agent mailbox. When true, subagents can exchange messages via shared mailbox. Use for collaborative workflows where agents need to share findings. Default: false (agents are independent, no communication).",
92
+ examples: [true],
75
93
  })),
76
94
  }, { additionalProperties: false }),
77
95
  execute: async (toolCallId, params, signal, _onUpdate, ctxRaw) => {
78
- const { description, subagent_type, prompt_template, items, resume_agent_ids, } = params;
96
+ const { description, prompt_template, items, model, mailbox } = params;
97
+ // Resolve model: "small" keyword → lookup settings; explicit model ID → use as-is; undefined → inherit parent
98
+ const resolvedModel = model === "small" ? resolveSwarmSmallModel() : model;
79
99
  const ctx = ctxRaw;
80
100
  const progress = createProgressWidget(ctx);
81
101
  // Persistent run state - declared outside try for catch access
@@ -83,52 +103,58 @@ export function registerAgentSwarmTool(pi) {
83
103
  const runId = `swarm-${Date.now().toString(36)}`;
84
104
  let runCreated = false;
85
105
  try {
86
- const profileName = normalizeOptionalString(subagent_type) ?? DEFAULT_SUBAGENT_TYPE;
106
+ const profileName = DEFAULT_SUBAGENT_TYPE;
107
+ // Validate prompt_template contains exactly one placeholder
108
+ const placeholderCount = prompt_template.split(PROMPT_TEMPLATE_PLACEHOLDER).length - 1;
109
+ if (placeholderCount !== 1) {
110
+ throw new Error(`prompt_template must contain {{item}} exactly once, found ${placeholderCount} occurrence(s). ` +
111
+ `Each item replaces the placeholder to generate per-agent prompts.`);
112
+ }
87
113
  // Build specs
88
- const specs = createAgentSwarmSpecs({
89
- items,
90
- resume_agent_ids,
91
- prompt_template,
92
- });
114
+ const specs = items.map((item, index) => ({
115
+ kind: "spawn",
116
+ index: index + 1,
117
+ item: item.trim(),
118
+ prompt: prompt_template
119
+ .split(PROMPT_TEMPLATE_PLACEHOLDER)
120
+ .join(item.trim()),
121
+ }));
122
+ // Set up mailbox when enabled
123
+ let mailboxPath;
124
+ if (mailbox) {
125
+ const paths = resolveMailboxPaths(swarmRoot, runId);
126
+ ensureMailbox(paths);
127
+ mailboxPath = paths.root;
128
+ }
93
129
  createManifest(swarmRoot, {
94
130
  runId,
95
131
  type: "swarm",
96
132
  status: "running",
97
- goal: description,
133
+ goal: description ?? "Swarm",
98
134
  startedAt: Date.now(),
99
135
  agentIds: [],
100
136
  });
101
137
  runCreated = true;
102
138
  // Convert to queued tasks
103
- const tasks = specs.map((spec) => {
104
- const descriptionName = spec.kind === "resume" ? "resume" : profileName;
105
- const common = {
106
- data: spec,
107
- profileName: spec.kind === "resume" ? "subagent" : profileName,
108
- parentToolCallId: toolCallId,
109
- prompt: spec.prompt,
110
- description: childDescription(description, spec.index, descriptionName),
111
- swarmIndex: spec.index,
112
- runInBackground: false,
113
- swarmItem: spec.item,
114
- signal,
115
- timeout: DEFAULT_SUBAGENT_TIMEOUT_MS,
116
- swarmRoot,
117
- runId,
118
- useWorktree: true,
119
- };
120
- if (spec.kind === "resume") {
121
- return {
122
- ...common,
123
- kind: "resume",
124
- resumeAgentId: spec.agentId,
125
- };
126
- }
127
- return {
128
- ...common,
129
- kind: "spawn",
130
- };
131
- });
139
+ const tasks = specs.map((spec, idx) => ({
140
+ kind: "spawn",
141
+ data: spec,
142
+ profileName: profileName,
143
+ parentToolCallId: toolCallId,
144
+ prompt: spec.prompt,
145
+ description: `${description ?? "Swarm"} #${spec.index} (${profileName})`,
146
+ swarmIndex: spec.index,
147
+ runInBackground: false,
148
+ swarmItem: spec.item,
149
+ signal,
150
+ timeout: DEFAULT_SUBAGENT_TIMEOUT_MS,
151
+ swarmRoot,
152
+ runId,
153
+ useWorktree: true,
154
+ model: resolvedModel,
155
+ mailboxPath,
156
+ roleName: `agent-${idx + 1}`,
157
+ }));
132
158
  // Run with controller
133
159
  const maxConcurrency = resolveSwarmMaxConcurrency(process.cwd());
134
160
  const repoCwd = process.cwd();
@@ -140,7 +166,9 @@ export function registerAgentSwarmTool(pi) {
140
166
  }, tasks, {
141
167
  maxConcurrency,
142
168
  onProgress: (snapshot) => {
143
- progress?.component.update(snapshotToProgressState(snapshot, description));
169
+ const state = snapshotToProgressState(snapshot, description);
170
+ state.mailbox = mailbox;
171
+ progress?.component.update(state);
144
172
  },
145
173
  });
146
174
  const results = await controller.run();
@@ -206,7 +234,7 @@ export function registerAgentSwarmTool(pi) {
206
234
  }
207
235
  }
208
236
  return {
209
- content: [{ type: "text", text: `AgentSwarm failed: ${message}` }],
237
+ content: [{ type: "text", text: `Swarm failed: ${message}` }],
210
238
  isError: true,
211
239
  details: undefined,
212
240
  };
@@ -226,13 +254,9 @@ export function registerAgentSwarmTool(pi) {
226
254
  * prompt 模板预览。
227
255
  */
228
256
  renderCall(args, theme, _context) {
229
- const subagentType = args.subagent_type || "coder";
230
257
  const itemCount = args.items?.length ?? 0;
231
- const resumeCount = Object.keys(args.resume_agent_ids ?? {}).length;
232
- const totalCount = itemCount + resumeCount;
233
- const hasResume = resumeCount > 0;
234
258
  const container = new Container();
235
- const title = `${theme.fg("toolTitle", theme.bold("swarm "))}${theme.fg("accent", `${totalCount} agent${totalCount !== 1 ? "s" : ""}`)}${hasResume ? theme.fg("warning", ` (${resumeCount} resume)`) : ""}${theme.fg("muted", ` [${subagentType}]`)}`;
259
+ const title = `${theme.fg("toolTitle", theme.bold("swarm "))}${theme.fg("accent", `${itemCount} agent${itemCount !== 1 ? "s" : ""}`)}`;
236
260
  container.addChild(new Text(title, 0, 0));
237
261
  const desc = args.description;
238
262
  if (desc) {
@@ -276,90 +300,6 @@ export function registerAgentSwarmTool(pi) {
276
300
  },
277
301
  });
278
302
  }
279
- // ---------------------------------------------------------------------------
280
- // Spec creation (from kimi-code)
281
- // ---------------------------------------------------------------------------
282
- function createAgentSwarmSpecs(args) {
283
- const resumeEntries = Object.entries(args.resume_agent_ids ?? {}).map(([agentId, prompt]) => {
284
- const trimmedId = agentId.trim();
285
- validateId(trimmedId, "agentId");
286
- return {
287
- agentId: trimmedId,
288
- prompt: prompt.trim(),
289
- };
290
- });
291
- const items = (args.items ?? []).map((item) => item.trim());
292
- const itemCount = items.length;
293
- const resumeCount = resumeEntries.length;
294
- const totalCount = resumeCount + itemCount;
295
- if (!hasMinimumAgentSwarmInputs(itemCount, resumeCount)) {
296
- throw new Error("AgentSwarm requires at least 1 item or a resume_agent_ids entry. " +
297
- 'Example with items: { "items": ["src/a.ts"], "prompt_template": "Review {{item}}" }. ' +
298
- 'Example with resume: { "resume_agent_ids": { "swarm-abc": "Retry with more detail" } }.');
299
- }
300
- if (totalCount > MAX_AGENT_SWARM_SUBAGENTS) {
301
- throw new Error(`AgentSwarm supports at most ${String(MAX_AGENT_SWARM_SUBAGENTS)} subagents.`);
302
- }
303
- const promptTemplate = normalizeOptionalString(args.prompt_template);
304
- if (items.length > 0 && promptTemplate === undefined) {
305
- throw new Error("prompt_template is required when items are provided. " +
306
- 'Example: { "prompt_template": "Review {{item}} for bugs", "items": ["src/a.ts", "src/b.ts"] }');
307
- }
308
- if (promptTemplate !== undefined &&
309
- !promptTemplate.includes(PROMPT_TEMPLATE_PLACEHOLDER)) {
310
- throw new Error(`prompt_template must include the ${PROMPT_TEMPLATE_PLACEHOLDER} placeholder. ` +
311
- `Got: "${promptTemplate.slice(0, 80)}". ` +
312
- `Add {{item}} where each item value should be inserted. ` +
313
- 'Example: "Fix issues in {{item}}"');
314
- }
315
- const seenPrompts = new Map();
316
- const specs = [];
317
- // Resume entries first
318
- for (const entry of resumeEntries) {
319
- specs.push({
320
- kind: "resume",
321
- index: specs.length + 1,
322
- agentId: entry.agentId,
323
- prompt: entry.prompt,
324
- });
325
- }
326
- // Item-based spawns
327
- if (items.length > 0) {
328
- const itemPromptTemplate = promptTemplate;
329
- items.forEach((item, index) => {
330
- const prompt = itemPromptTemplate
331
- .split(PROMPT_TEMPLATE_PLACEHOLDER)
332
- .join(item);
333
- const previousIndex = seenPrompts.get(prompt);
334
- if (previousIndex !== undefined) {
335
- throw new Error(`Duplicate subagent prompts from items ${String(previousIndex)} and ${String(index + 1)}. AgentSwarm requires distinct subagents.`);
336
- }
337
- seenPrompts.set(prompt, index + 1);
338
- specs.push({
339
- kind: "spawn",
340
- index: specs.length + 1,
341
- item,
342
- prompt,
343
- });
344
- });
345
- }
346
- return specs;
347
- }
348
- // ---------------------------------------------------------------------------
349
- // Helpers
350
- // ---------------------------------------------------------------------------
351
- function hasMinimumAgentSwarmInputs(itemCount, resumeCount) {
352
- return resumeCount > 0 || itemCount >= 1;
353
- }
354
- function childDescription(swarmDescription, index, profileName) {
355
- return `${swarmDescription} #${String(index)} (${profileName})`;
356
- }
357
- function normalizeOptionalString(value) {
358
- if (value === undefined)
359
- return undefined;
360
- const trimmed = value.trim();
361
- return trimmed.length > 0 ? trimmed : undefined;
362
- }
363
303
  /**
364
304
  * Install a live progress widget above the editor when running in TUI mode.
365
305
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/swarm/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/swarm/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEhD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,qBAAqB,GAAG,OAAO,CAAC;AACtC,MAAM,2BAA2B,GAAG,UAAU,CAAC;AAC/C,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAEjE,MAAM,uBAAuB,GAAG;IAC9B,uEAAuE;IACvE,EAAE;IACF,yEAAyE;IACzE,2EAA2E;IAC3E,oDAAoD;IACpD,2EAA2E;IAC3E,8DAA8D;IAC9D,EAAE;IACF,aAAa;IACb,oDAAoD;IACpD,2CAA2C;IAC3C,qCAAqC;IACrC,2BAA2B;IAC3B,uDAAuD;IACvD,gEAAgE;IAChE,2EAA2E;IAC3E,mEAAmE;IACnE,2CAA2C;IAC3C,EAAE;IACF,gFAAgF;IAChF,8EAA8E;IAC9E,0EAA0E;IAC1E,EAAE;IACF,8EAA8E;IAC9E,8CAA8C;IAC9C,EAAE;IACF,uEAAuE;IACvE,0EAA0E;IAC1E,oEAAoE;IACpE,mEAAmE;IACnE,2DAA2D;CAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,sBAAsB,CAAC,EAAgB;IACrD,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,uBAAuB;QACpC,UAAU,EAAE,IAAI,CAAC,MAAM,CACrB;YACE,WAAW,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,mDAAmD;gBAChE,QAAQ,EAAE,CAAC,8BAA8B,CAAC;aAC3C,CAAC,CACH;YACD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC;gBAC3B,WAAW,EAAE,wBAAwB,2BAA2B,oDAAoD;gBACpH,QAAQ,EAAE;oBACR,wEAAwE;oBACxE,qCAAqC;iBACtC;aACF,CAAC;YACF,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;gBAC/B,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,cAAc;gBACxB,WAAW,EACT,kFAAkF;gBACpF,QAAQ,EAAE,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;aACvD,CAAC;YACF,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EACT,qOAAqO;gBACvO,QAAQ,EAAE,CAAC,4BAA4B,CAAC;aACzC,CAAC,CACH;YACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,OAAO,CAAC;gBACX,WAAW,EACT,4NAA4N;gBAC9N,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB,CAAC,CACH;SACF,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC;QACD,OAAO,EAAE,KAAK,EACZ,UAAkB,EAClB,MAA+B,EAC/B,MAA+B,EAC/B,SAAkB,EAClB,MAAe,EACf,EAAE;YACF,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAC3D,MAMC,CAAC;YACJ,8GAA8G;YAC9G,MAAM,aAAa,GACjB,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAEvD,MAAM,GAAG,GAAG,MAA0B,CAAC;YACvC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAE3C,+DAA+D;YAC/D,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,qBAAqB,CAAC;gBAE1C,4DAA4D;gBAC5D,MAAM,gBAAgB,GACpB,eAAe,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAChE,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CACb,6DAA6D,gBAAgB,kBAAkB;wBAC7F,mEAAmE,CACtE,CAAC;gBACJ,CAAC;gBAED,cAAc;gBACd,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CACrB,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAC9B,CAAC;oBACC,IAAI,EAAE,OAAgB;oBACtB,KAAK,EAAE,KAAK,GAAG,CAAC;oBAChB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;oBACjB,MAAM,EAAE,eAAe;yBACpB,KAAK,CAAC,2BAA2B,CAAC;yBAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBACrB,CAA0B,CAC9B,CAAC;gBAEF,8BAA8B;gBAC9B,IAAI,WAA+B,CAAC;gBACpC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBACpD,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrB,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC3B,CAAC;gBAED,cAAc,CAAC,SAAS,EAAE;oBACxB,KAAK;oBACL,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,WAAW,IAAI,OAAO;oBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,QAAQ,EAAE,EAAE;iBACb,CAAC,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC;gBAElB,0BAA0B;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAiC,EAAE,CAAC,CAAC;oBACrE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,IAAI;oBACV,WAAW,EAAE,WAAW;oBACxB,gBAAgB,EAAE,UAAU;oBAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,WAAW,EAAE,GAAG,WAAW,IAAI,OAAO,KAAK,IAAI,CAAC,KAAK,KAAK,WAAW,GAAG;oBACxE,UAAU,EAAE,IAAI,CAAC,KAAK;oBACtB,eAAe,EAAE,KAAK;oBACtB,SAAS,EAAE,IAAI,CAAC,IAAI;oBACpB,MAAM;oBACN,OAAO,EAAE,2BAA2B;oBACpC,SAAS;oBACT,KAAK;oBACL,WAAW,EAAE,IAAI;oBACjB,KAAK,EAAE,aAAa;oBACpB,WAAW;oBACX,QAAQ,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE;iBAC7B,CAAC,CAAC,CAAC;gBAEJ,sBAAsB;gBACtB,MAAM,cAAc,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBACjE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,uBAAuB,CAC5C;oBACE,KAAK,EAAE,aAAa;oBACpB,MAAM,EAAE,cAAc;oBACtB,KAAK,EAAE,aAAa;iBACrB,EACD,KAAK,EACL;oBACE,cAAc;oBACd,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;wBACvB,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;wBAC7D,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;wBACxB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACpC,CAAC;iBACF,CACF,CAAC;gBACF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,CAAC;gBAEvC,2CAA2C;gBAC3C,MAAM,WAAW,GAAa,EAAE,CAAC;gBACjC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;wBACrB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAED,yDAAyD;gBACzD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;wBACd,uBAAuB,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBACD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAChD,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;oBAC9B,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACtC,CAAC;gBAED,sEAAsE;gBACtE,MAAM,YAAY,GAAa,EAAE,CAAC;gBAClC,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;wBACjC,IAAI,CAAC;4BACH,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;4BACjD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gCACxB,YAAY,CAAC,IAAI,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC;4BACzC,CAAC;iCAAM,CAAC;gCACN,YAAY,CAAC,IAAI,CACf,oBAAoB,MAAM,KAAK,WAAW,CAAC,KAAK,EAAE,CACnD,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,YAAY,CAAC,IAAI,CACf,mBAAmB,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACjF,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,mDAAmD;gBACnD,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;gBAE/B,gBAAgB;gBAChB,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAChD,IAAI,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAC9C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,qBAAqB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAC1E,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oBACzC,OAAO,EAAE,SAAS;iBACnB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAChD,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;wBAC3B,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAClC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;wBACzB,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,OAAO,EAAE,EAAE,CAAC;oBAC7D,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,SAAS;iBACnB,CAAC;YACJ,CAAC;oBAAS,CAAC;gBACT,6DAA6D;gBAC7D,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACpB,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,uBAAuB;QACvB,sEAAsE;QAEtE;;;;WAIG;QACH,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ;YAC9B,MAAM,SAAS,GAAI,IAAI,CAAC,KAA8B,EAAE,MAAM,IAAI,CAAC,CAAC;YAEpE,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,SAAS,SAAS,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACvI,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAiC,CAAC;YACpD,IAAI,IAAI,EAAE,CAAC;gBACT,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,SAAS,CAAC,QAAQ,CAChB,IAAI,IAAI,CACN,KAAK,CAAC,EAAE,CACN,KAAK,EACL,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACpD,EACD,CAAC,EACD,CAAC,CACF,CACF,CAAC;YACJ,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,eAAqC,CAAC;YACnE,IAAI,eAAe,EAAE,CAAC;gBACpB,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,OAAO,GACX,eAAe,CAAC,MAAM,GAAG,EAAE;oBACzB,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;oBACtC,CAAC,CAAC,eAAe,CAAC;gBACtB,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED;;;WAGG;QACH,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO;YAC3C,MAAM,IAAI,GACR,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO;gBAC1B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC;gBACxB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAE7B,4CAA4C;YAC5C,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5D,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAEnD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;YAClC,SAAS,CAAC,QAAQ,CAChB,IAAI,IAAI,CACN,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,CAAC,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EACxJ,CAAC,EACD,CAAC,CACF,CACF,CAAC;YAEF,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBACxD,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAYD;;;;;;;;;;;;;GAaG;AACH,SAAS,oBAAoB,CAC3B,GAAqB;IAErB,8CAA8C;IAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACpC,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO,SAAS,CAAC;IAEtD,2CAA2C;IAC3C,IAAI,WAAiE,CAAC;IAEtE,MAAM,SAAS,GAAG,IAAI,2BAA2B,CAAC,GAAG,EAAE;QACrD,WAAW,EAAE,aAAa,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,oCAAoC;QACpC,SAAS,CACP,mBAAmB,EACnB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,WAAW,GAAG,GAAG,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC,EACD;YACE,SAAS,EAAE,aAAa;SACzB,CACF,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;QAC5B,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,SAAS;QACT,OAAO;YACL,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAqB;IAChD,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO;IAC/B,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC;IACpC,IAAI,OAAO,SAAS,KAAK,UAAU;QAAE,OAAO;IAC5C,IAAI,CAAC;QACH,SAAS,CAAC,mBAAmB,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;AACH,CAAC"}
@@ -1,10 +1,8 @@
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
7
  import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
10
8
  import type { SwarmCommandHost } from "../swarm/command.js";
@@ -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"}
@@ -24,6 +24,7 @@ export interface MailboxPaths {
24
24
  readonly outbox: string;
25
25
  readonly delivery: string;
26
26
  readonly taskDir: string;
27
+ readonly inboxAcks: string;
27
28
  }
28
29
  export declare function resolveMailboxPaths(swarmRoot: string, runId: string): MailboxPaths;
29
30
  export declare function resolveTaskMailboxPaths(paths: MailboxPaths, taskId: string): {
@@ -53,10 +54,16 @@ export declare function readTaskInbox(paths: MailboxPaths, taskId: string): Mail
53
54
  export declare function countOutboxMessages(paths: MailboxPaths): number;
54
55
  /**
55
56
  * Acknowledge (delete) messages from the team inbox.
57
+ *
58
+ * Uses an append-only ack file to avoid the TOCTOU race between
59
+ * reading and rewriting inbox.jsonl. Acknowledged message IDs are
60
+ * appended to inboxAcks.jsonl and filtered at read time.
56
61
  */
57
62
  export declare function ackMessages(paths: MailboxPaths, messageIds: string[]): void;
58
63
  /**
59
64
  * Acknowledge (delete) messages from a task-specific inbox.
65
+ *
66
+ * Uses the same append-only ack approach as ackMessages.
60
67
  */
61
68
  export declare function ackTaskMessages(paths: MailboxPaths, taskId: string, messageIds: string[]): void;
62
69
  /**
@@ -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;;;;;;;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;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,CAkCN;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"}