opencode-swarm-plugin 0.26.1 → 0.27.2

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 (77) hide show
  1. package/.turbo/turbo-build.log +4 -4
  2. package/CHANGELOG.md +38 -0
  3. package/README.md +43 -46
  4. package/bin/swarm.ts +10 -54
  5. package/dist/compaction-hook.d.ts +57 -0
  6. package/dist/compaction-hook.d.ts.map +1 -0
  7. package/dist/hive.d.ts +741 -0
  8. package/dist/hive.d.ts.map +1 -0
  9. package/dist/index.d.ts +139 -23
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1353 -350
  12. package/dist/learning.d.ts +9 -9
  13. package/dist/plugin.js +1176 -350
  14. package/dist/schemas/cell-events.d.ts +1352 -0
  15. package/dist/schemas/{bead-events.d.ts.map → cell-events.d.ts.map} +1 -1
  16. package/dist/schemas/{bead.d.ts → cell.d.ts} +173 -29
  17. package/dist/schemas/cell.d.ts.map +1 -0
  18. package/dist/schemas/index.d.ts +11 -7
  19. package/dist/schemas/index.d.ts.map +1 -1
  20. package/dist/structured.d.ts +17 -7
  21. package/dist/structured.d.ts.map +1 -1
  22. package/dist/swarm-decompose.d.ts +5 -5
  23. package/dist/swarm-orchestrate.d.ts +16 -2
  24. package/dist/swarm-orchestrate.d.ts.map +1 -1
  25. package/dist/swarm-prompts.d.ts +9 -9
  26. package/dist/swarm-prompts.d.ts.map +1 -1
  27. package/dist/swarm-review.d.ts +210 -0
  28. package/dist/swarm-review.d.ts.map +1 -0
  29. package/dist/swarm-worktree.d.ts +185 -0
  30. package/dist/swarm-worktree.d.ts.map +1 -0
  31. package/dist/swarm.d.ts +7 -0
  32. package/dist/swarm.d.ts.map +1 -1
  33. package/dist/tool-availability.d.ts +3 -2
  34. package/dist/tool-availability.d.ts.map +1 -1
  35. package/docs/analysis-socratic-planner-pattern.md +1 -1
  36. package/docs/planning/ADR-007-swarm-enhancements-worktree-review.md +168 -0
  37. package/docs/testing/context-recovery-test.md +2 -2
  38. package/evals/README.md +2 -2
  39. package/evals/scorers/index.ts +7 -7
  40. package/examples/commands/swarm.md +21 -23
  41. package/examples/plugin-wrapper-template.ts +310 -44
  42. package/examples/skills/{beads-workflow → hive-workflow}/SKILL.md +40 -40
  43. package/examples/skills/swarm-coordination/SKILL.md +1 -1
  44. package/global-skills/swarm-coordination/SKILL.md +14 -14
  45. package/global-skills/swarm-coordination/references/coordinator-patterns.md +3 -3
  46. package/package.json +2 -2
  47. package/src/compaction-hook.ts +161 -0
  48. package/src/{beads.integration.test.ts → hive.integration.test.ts} +92 -80
  49. package/src/{beads.ts → hive.ts} +378 -219
  50. package/src/index.ts +57 -20
  51. package/src/learning.ts +9 -9
  52. package/src/output-guardrails.test.ts +4 -4
  53. package/src/output-guardrails.ts +9 -9
  54. package/src/planning-guardrails.test.ts +1 -1
  55. package/src/planning-guardrails.ts +1 -1
  56. package/src/schemas/{bead-events.test.ts → cell-events.test.ts} +83 -77
  57. package/src/schemas/cell-events.ts +807 -0
  58. package/src/schemas/{bead.ts → cell.ts} +95 -41
  59. package/src/schemas/evaluation.ts +1 -1
  60. package/src/schemas/index.ts +90 -18
  61. package/src/schemas/swarm-context.ts +2 -2
  62. package/src/structured.test.ts +15 -15
  63. package/src/structured.ts +18 -11
  64. package/src/swarm-decompose.ts +23 -23
  65. package/src/swarm-orchestrate.ts +135 -21
  66. package/src/swarm-prompts.ts +43 -43
  67. package/src/swarm-review.test.ts +702 -0
  68. package/src/swarm-review.ts +696 -0
  69. package/src/swarm-worktree.test.ts +501 -0
  70. package/src/swarm-worktree.ts +575 -0
  71. package/src/swarm.integration.test.ts +12 -12
  72. package/src/tool-availability.ts +36 -3
  73. package/dist/beads.d.ts +0 -386
  74. package/dist/beads.d.ts.map +0 -1
  75. package/dist/schemas/bead-events.d.ts +0 -698
  76. package/dist/schemas/bead.d.ts.map +0 -1
  77. package/src/schemas/bead-events.ts +0 -583
@@ -15,35 +15,35 @@
15
15
  * Prompt for decomposing a task into parallelizable subtasks.
16
16
  *
17
17
  * Used by swarm_decompose to instruct the agent on how to break down work.
18
- * The agent responds with a BeadTree that gets validated.
18
+ * The agent responds with a CellTree that gets validated.
19
19
  */
20
- export declare const DECOMPOSITION_PROMPT = "You are decomposing a task into parallelizable subtasks for a swarm of agents.\n\n## Task\n{task}\n\n{context_section}\n\n## MANDATORY: Beads Issue Tracking\n\n**Every subtask MUST become a bead.** This is non-negotiable.\n\nAfter decomposition, the coordinator will:\n1. Create an epic bead for the overall task\n2. Create child beads for each subtask\n3. Track progress through bead status updates\n4. Close beads with summaries when complete\n\nAgents MUST update their bead status as they work. No silent progress.\n\n## Requirements\n\n1. **Break into 2-{max_subtasks} independent subtasks** that can run in parallel\n2. **Assign files** - each subtask must specify which files it will modify\n3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)\n4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array\n5. **Estimate complexity** - 1 (trivial) to 5 (complex)\n6. **Plan aggressively** - break down more than you think necessary, smaller is better\n\n## Response Format\n\nRespond with a JSON object matching this schema:\n\n```typescript\n{\n epic: {\n title: string, // Epic title for the beads tracker\n description?: string // Brief description of the overall goal\n },\n subtasks: [\n {\n title: string, // What this subtask accomplishes\n description?: string, // Detailed instructions for the agent\n files: string[], // Files this subtask will modify (globs allowed)\n dependencies: number[], // Indices of subtasks this depends on (0-indexed)\n estimated_complexity: 1-5 // Effort estimate\n },\n // ... more subtasks\n ]\n}\n```\n\n## Guidelines\n\n- **Plan aggressively** - when in doubt, split further. 3 small tasks > 1 medium task\n- **Prefer smaller, focused subtasks** over large complex ones\n- **Include test files** in the same subtask as the code they test\n- **Consider shared types** - if multiple files share types, handle that first\n- **Think about imports** - changes to exported APIs affect downstream files\n- **Explicit > implicit** - spell out what each subtask should do, don't assume\n\n## File Assignment Examples\n\n- Schema change: `[\"src/schemas/user.ts\", \"src/schemas/index.ts\"]`\n- Component + test: `[\"src/components/Button.tsx\", \"src/components/Button.test.tsx\"]`\n- API route: `[\"src/app/api/users/route.ts\"]`\n\nNow decompose the task:";
20
+ export declare const DECOMPOSITION_PROMPT = "You are decomposing a task into parallelizable subtasks for a swarm of agents.\n\n## Task\n{task}\n\n{context_section}\n\n## MANDATORY: Hive Issue Tracking\n\n**Every subtask MUST become a cell.** This is non-negotiable.\n\nAfter decomposition, the coordinator will:\n1. Create an epic cell for the overall task\n2. Create child cells for each subtask\n3. Track progress through cell status updates\n4. Close cells with summaries when complete\n\nAgents MUST update their cell status as they work. No silent progress.\n\n## Requirements\n\n1. **Break into 2-{max_subtasks} independent subtasks** that can run in parallel\n2. **Assign files** - each subtask must specify which files it will modify\n3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)\n4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array\n5. **Estimate complexity** - 1 (trivial) to 5 (complex)\n6. **Plan aggressively** - break down more than you think necessary, smaller is better\n\n## Response Format\n\nRespond with a JSON object matching this schema:\n\n```typescript\n{\n epic: {\n title: string, // Epic title for the hive tracker\n description?: string // Brief description of the overall goal\n },\n subtasks: [\n {\n title: string, // What this subtask accomplishes\n description?: string, // Detailed instructions for the agent\n files: string[], // Files this subtask will modify (globs allowed)\n dependencies: number[], // Indices of subtasks this depends on (0-indexed)\n estimated_complexity: 1-5 // Effort estimate\n },\n // ... more subtasks\n ]\n}\n```\n\n## Guidelines\n\n- **Plan aggressively** - when in doubt, split further. 3 small tasks > 1 medium task\n- **Prefer smaller, focused subtasks** over large complex ones\n- **Include test files** in the same subtask as the code they test\n- **Consider shared types** - if multiple files share types, handle that first\n- **Think about imports** - changes to exported APIs affect downstream files\n- **Explicit > implicit** - spell out what each subtask should do, don't assume\n\n## File Assignment Examples\n\n- Schema change: `[\"src/schemas/user.ts\", \"src/schemas/index.ts\"]`\n- Component + test: `[\"src/components/Button.tsx\", \"src/components/Button.test.tsx\"]`\n- API route: `[\"src/app/api/users/route.ts\"]`\n\nNow decompose the task:";
21
21
  /**
22
22
  * Strategy-specific decomposition prompt template
23
23
  */
24
- export declare const STRATEGY_DECOMPOSITION_PROMPT = "You are decomposing a task into parallelizable subtasks for a swarm of agents.\n\n## Task\n{task}\n\n{strategy_guidelines}\n\n{context_section}\n\n{cass_history}\n\n{skills_context}\n\n## MANDATORY: Beads Issue Tracking\n\n**Every subtask MUST become a bead.** This is non-negotiable.\n\nAfter decomposition, the coordinator will:\n1. Create an epic bead for the overall task\n2. Create child beads for each subtask\n3. Track progress through bead status updates\n4. Close beads with summaries when complete\n\nAgents MUST update their bead status as they work. No silent progress.\n\n## Requirements\n\n1. **Break into 2-{max_subtasks} independent subtasks** that can run in parallel\n2. **Assign files** - each subtask must specify which files it will modify\n3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)\n4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array\n5. **Estimate complexity** - 1 (trivial) to 5 (complex)\n6. **Plan aggressively** - break down more than you think necessary, smaller is better\n\n## Response Format\n\nRespond with a JSON object matching this schema:\n\n```typescript\n{\n epic: {\n title: string, // Epic title for the beads tracker\n description?: string // Brief description of the overall goal\n },\n subtasks: [\n {\n title: string, // What this subtask accomplishes\n description?: string, // Detailed instructions for the agent\n files: string[], // Files this subtask will modify (globs allowed)\n dependencies: number[], // Indices of subtasks this depends on (0-indexed)\n estimated_complexity: 1-5 // Effort estimate\n },\n // ... more subtasks\n ]\n}\n```\n\nNow decompose the task:";
24
+ export declare const STRATEGY_DECOMPOSITION_PROMPT = "You are decomposing a task into parallelizable subtasks for a swarm of agents.\n\n## Task\n{task}\n\n{strategy_guidelines}\n\n{context_section}\n\n{cass_history}\n\n{skills_context}\n\n## MANDATORY: Hive Issue Tracking\n\n**Every subtask MUST become a cell.** This is non-negotiable.\n\nAfter decomposition, the coordinator will:\n1. Create an epic cell for the overall task\n2. Create child cells for each subtask\n3. Track progress through cell status updates\n4. Close cells with summaries when complete\n\nAgents MUST update their cell status as they work. No silent progress.\n\n## Requirements\n\n1. **Break into 2-{max_subtasks} independent subtasks** that can run in parallel\n2. **Assign files** - each subtask must specify which files it will modify\n3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)\n4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array\n5. **Estimate complexity** - 1 (trivial) to 5 (complex)\n6. **Plan aggressively** - break down more than you think necessary, smaller is better\n\n## Response Format\n\nRespond with a JSON object matching this schema:\n\n```typescript\n{\n epic: {\n title: string, // Epic title for the hive tracker\n description?: string // Brief description of the overall goal\n },\n subtasks: [\n {\n title: string, // What this subtask accomplishes\n description?: string, // Detailed instructions for the agent\n files: string[], // Files this subtask will modify (globs allowed)\n dependencies: number[], // Indices of subtasks this depends on (0-indexed)\n estimated_complexity: 1-5 // Effort estimate\n },\n // ... more subtasks\n ]\n}\n```\n\nNow decompose the task:";
25
25
  /**
26
26
  * Prompt template for spawned subtask agents.
27
27
  *
28
28
  * Each agent receives this prompt with their specific subtask details filled in.
29
29
  * The prompt establishes context, constraints, and expectations.
30
30
  */
31
- export declare const SUBTASK_PROMPT = "You are a swarm agent working on a subtask of a larger epic.\n\n## Your Identity\n- **Agent Name**: {agent_name}\n- **Bead ID**: {bead_id}\n- **Epic ID**: {epic_id}\n\n## Your Subtask\n**Title**: {subtask_title}\n\n{subtask_description}\n\n## File Scope\nYou have exclusive reservations for these files:\n{file_list}\n\n**CRITICAL**: Only modify files in your reservation. If you need to modify other files, \nsend a message to the coordinator requesting the change.\n\n## Shared Context\n{shared_context}\n\n## MANDATORY: Beads Tracking\n\nYou MUST keep your bead updated as you work:\n\n1. **Your bead is already in_progress** - don't change this unless blocked\n2. **If blocked**: `bd update {bead_id} --status blocked` and message coordinator\n3. **When done**: Use `swarm_complete` - it closes your bead automatically\n4. **Discovered issues**: Create new beads with `bd create \"issue\" -t bug`\n\n**Never work silently.** Your bead status is how the swarm tracks progress.\n\n## MANDATORY: Swarm Mail Communication\n\nYou MUST communicate with other agents:\n\n1. **Report progress** every significant milestone (not just at the end)\n2. **Ask questions** if requirements are unclear - don't guess\n3. **Announce blockers** immediately - don't spin trying to fix alone\n4. **Coordinate on shared concerns** - if you see something affecting other agents, say so\n\nUse Swarm Mail for all communication:\n```\nswarmmail_send(\n to: [\"coordinator\" or specific agent],\n subject: \"Brief subject\",\n body: \"Message content\",\n thread_id: \"{epic_id}\"\n)\n```\n\n## Coordination Protocol\n\n1. **Start**: Your bead is already marked in_progress\n2. **Progress**: Use swarm_progress to report status updates\n3. **Blocked**: Report immediately via Swarm Mail - don't spin\n4. **Complete**: Use swarm_complete when done - it handles:\n - Closing your bead with a summary\n - Releasing file reservations\n - Notifying the coordinator\n\n## Self-Evaluation\n\nBefore calling swarm_complete, evaluate your work:\n- Type safety: Does it compile without errors?\n- No obvious bugs: Did you handle edge cases?\n- Follows patterns: Does it match existing code style?\n- Readable: Would another developer understand it?\n\nIf evaluation fails, fix the issues before completing.\n\n## Planning Your Work\n\nBefore writing code:\n1. **Read the files** you're assigned to understand current state\n2. **Plan your approach** - what changes, in what order?\n3. **Identify risks** - what could go wrong? What dependencies?\n4. **Communicate your plan** via Swarm Mail if non-trivial\n\nBegin work on your subtask now.";
31
+ export declare const SUBTASK_PROMPT = "You are a swarm agent working on a subtask of a larger epic.\n\n## Your Identity\n- **Agent Name**: {agent_name}\n- **Cell ID**: {bead_id}\n- **Epic ID**: {epic_id}\n\n## Your Subtask\n**Title**: {subtask_title}\n\n{subtask_description}\n\n## File Scope\nYou have exclusive reservations for these files:\n{file_list}\n\n**CRITICAL**: Only modify files in your reservation. If you need to modify other files, \nsend a message to the coordinator requesting the change.\n\n## Shared Context\n{shared_context}\n\n## MANDATORY: Hive Tracking\n\nYou MUST keep your cell updated as you work:\n\n1. **Your cell is already in_progress** - don't change this unless blocked\n2. **If blocked**: `hive_update {bead_id} --status blocked` and message coordinator\n3. **When done**: Use `swarm_complete` - it closes your cell automatically\n4. **Discovered issues**: Create new cells with `hive_create \"issue\" -t bug`\n\n**Never work silently.** Your cell status is how the swarm tracks progress.\n\n## MANDATORY: Swarm Mail Communication\n\nYou MUST communicate with other agents:\n\n1. **Report progress** every significant milestone (not just at the end)\n2. **Ask questions** if requirements are unclear - don't guess\n3. **Announce blockers** immediately - don't spin trying to fix alone\n4. **Coordinate on shared concerns** - if you see something affecting other agents, say so\n\nUse Swarm Mail for all communication:\n```\nswarmmail_send(\n to: [\"coordinator\" or specific agent],\n subject: \"Brief subject\",\n body: \"Message content\",\n thread_id: \"{epic_id}\"\n)\n```\n\n## Coordination Protocol\n\n1. **Start**: Your cell is already marked in_progress\n2. **Progress**: Use swarm_progress to report status updates\n3. **Blocked**: Report immediately via Swarm Mail - don't spin\n4. **Complete**: Use swarm_complete when done - it handles:\n - Closing your cell with a summary\n - Releasing file reservations\n - Notifying the coordinator\n\n## Self-Evaluation\n\nBefore calling swarm_complete, evaluate your work:\n- Type safety: Does it compile without errors?\n- No obvious bugs: Did you handle edge cases?\n- Follows patterns: Does it match existing code style?\n- Readable: Would another developer understand it?\n\nIf evaluation fails, fix the issues before completing.\n\n## Planning Your Work\n\nBefore writing code:\n1. **Read the files** you're assigned to understand current state\n2. **Plan your approach** - what changes, in what order?\n3. **Identify risks** - what could go wrong? What dependencies?\n4. **Communicate your plan** via Swarm Mail if non-trivial\n\nBegin work on your subtask now.";
32
32
  /**
33
- * Streamlined subtask prompt (V2) - uses Swarm Mail and beads
33
+ * Streamlined subtask prompt (V2) - uses Swarm Mail and hive tracking
34
34
  *
35
35
  * This is a cleaner version of SUBTASK_PROMPT that's easier to parse.
36
- * Agents MUST use Swarm Mail for communication and beads for tracking.
36
+ * Agents MUST use Swarm Mail for communication and hive cells for tracking.
37
37
  *
38
38
  * Supports {error_context} placeholder for retry prompts.
39
39
  */
40
- export declare const SUBTASK_PROMPT_V2 = "You are a swarm agent working on: **{subtask_title}**\n\n## [IDENTITY]\nAgent: (assigned at spawn)\nBead: {bead_id}\nEpic: {epic_id}\n\n## [TASK]\n{subtask_description}\n\n## [FILES]\nReserved (exclusive):\n{file_list}\n\nOnly modify these files. Need others? Message the coordinator.\n\n## [CONTEXT]\n{shared_context}\n\n{compressed_context}\n\n{error_context}\n\n## [MANDATORY SURVIVAL CHECKLIST]\n\n**CRITICAL: Follow this checklist IN ORDER. Each step builds on the previous.**\n\n### Step 1: Initialize Coordination (REQUIRED - DO THIS FIRST)\n```\nswarmmail_init(project_path=\"{project_path}\", task_description=\"{bead_id}: {subtask_title}\")\n```\n\n**This registers you with the coordination system and enables:**\n- File reservation tracking\n- Inter-agent communication\n- Progress monitoring\n- Conflict detection\n\n**If you skip this step, your work will not be tracked and swarm_complete will fail.**\n\n### Step 2: Query Past Learnings (BEFORE starting work)\n```\nsemantic-memory_find(query=\"<keywords from your task>\", limit=5)\n```\n\n**Check if past agents solved similar problems.** Search for:\n- Error messages if debugging\n- Domain concepts (e.g., \"authentication\", \"caching\")\n- Technology stack (e.g., \"Next.js\", \"React\")\n- Patterns (e.g., \"event sourcing\", \"validation\")\n\n**Past learnings save time and prevent repeating mistakes.**\n\n### Step 3: Load Relevant Skills (if available)\n```\nskills_list() # See what skills exist\nskills_use(name=\"<relevant-skill>\", context=\"<your task>\") # Load skill\n```\n\n**Common skill triggers:**\n- Writing tests? \u2192 `skills_use(name=\"testing-patterns\")`\n- Breaking dependencies? \u2192 `skills_use(name=\"testing-patterns\")`\n- Multi-agent coordination? \u2192 `skills_use(name=\"swarm-coordination\")`\n- Building a CLI? \u2192 `skills_use(name=\"cli-builder\")`\n\n### Step 4: Reserve Your Files (YOU reserve, not coordinator)\n```\nswarmmail_reserve(\n paths=[{file_list}],\n reason=\"{bead_id}: {subtask_title}\",\n exclusive=true\n)\n```\n\n**Workers reserve their own files.** This prevents edit conflicts with other agents.\n\n### Step 5: Do the Work\n- Read your assigned files\n- Implement changes\n- Verify (typecheck if applicable)\n\n### Step 6: Report Progress at Milestones\n```\nswarm_progress(\n project_key=\"{project_path}\",\n agent_name=\"<your-agent-name>\",\n bead_id=\"{bead_id}\",\n status=\"in_progress\",\n progress_percent=25, # or 50, 75\n message=\"<what you just completed>\"\n)\n```\n\n**Report at 25%, 50%, 75% completion.** This:\n- Triggers auto-checkpoint (saves context)\n- Keeps coordinator informed\n- Prevents silent failures\n\n### Step 7: Manual Checkpoint BEFORE Risky Operations\n```\nswarm_checkpoint(\n project_key=\"{project_path}\",\n agent_name=\"<your-agent-name>\",\n bead_id=\"{bead_id}\"\n)\n```\n\n**Call BEFORE:**\n- Large refactors\n- File deletions\n- Breaking API changes\n- Anything that might fail catastrophically\n\n**Checkpoints preserve context so you can recover if things go wrong.**\n\n### Step 8: Store Learnings (if you discovered something)\n```\nsemantic-memory_store(\n information=\"<what you learned, WHY it matters, how to apply it>\",\n metadata=\"<tags: domain, tech-stack, pattern-type>\"\n)\n```\n\n**Store:**\n- Tricky bugs you solved (root cause + solution)\n- Project-specific patterns or domain rules\n- Tool/library gotchas and workarounds\n- Failed approaches (anti-patterns to avoid)\n\n**Don't store generic knowledge.** Store the WHY, not just the WHAT.\n\n### Step 9: Complete (REQUIRED - releases reservations)\n```\nswarm_complete(\n project_key=\"{project_path}\",\n agent_name=\"<your-agent-name>\",\n bead_id=\"{bead_id}\",\n summary=\"<what you accomplished>\",\n files_touched=[\"list\", \"of\", \"files\"]\n)\n```\n\n**This automatically:**\n- Runs UBS bug scan\n- Releases file reservations\n- Records learning signals\n- Notifies coordinator\n\n**DO NOT manually close the bead with beads_close.** Use swarm_complete.\n\n## [SWARM MAIL COMMUNICATION]\n\n### Check Inbox Regularly\n```\nswarmmail_inbox() # Check for coordinator messages\nswarmmail_read_message(message_id=N) # Read specific message\n```\n\n### When Blocked\n```\nswarmmail_send(\n to=[\"coordinator\"],\n subject=\"BLOCKED: {bead_id}\",\n body=\"<blocker description, what you need>\",\n importance=\"high\",\n thread_id=\"{epic_id}\"\n)\nbeads_update(id=\"{bead_id}\", status=\"blocked\")\n```\n\n### Report Issues to Other Agents\n```\nswarmmail_send(\n to=[\"OtherAgent\", \"coordinator\"],\n subject=\"Issue in {bead_id}\",\n body=\"<describe problem, don't fix their code>\",\n thread_id=\"{epic_id}\"\n)\n```\n\n### Manual Release (if needed)\n```\nswarmmail_release() # Manually release reservations\n```\n\n**Note:** `swarm_complete` automatically releases reservations. Only use manual release if aborting work.\n\n## [OTHER TOOLS]\n### Beads - You Have Autonomy to File Issues\nYou can create new beads against this epic when you discover:\n- **Bugs**: Found a bug while working? File it.\n- **Tech debt**: Spotted something that needs cleanup? File it.\n- **Follow-up work**: Task needs more work than scoped? File a follow-up.\n- **Dependencies**: Need something from another agent? File and link it.\n\n```\nbeads_create(\n title=\"<descriptive title>\",\n type=\"bug\", # or \"task\", \"chore\"\n priority=2,\n parent_id=\"{epic_id}\", # Links to this epic\n description=\"Found while working on {bead_id}: <details>\"\n)\n```\n\n**Don't silently ignore issues.** File them so they get tracked and addressed.\n\nOther bead operations:\n- beads_update(id, status) - Mark blocked if stuck\n- beads_query(status=\"open\") - See what else needs work\n\n### Skills\n- skills_list() - Discover available skills\n- skills_use(name) - Activate skill for specialized guidance\n- skills_create(name) - Create new skill (if you found a reusable pattern)\n\n## [CRITICAL REQUIREMENTS]\n\n**NON-NEGOTIABLE:**\n1. Step 1 (swarmmail_init) MUST be first - do it before anything else\n2. Step 2 (semantic-memory_find) MUST happen before starting work\n3. Step 4 (swarmmail_reserve) - YOU reserve files, not coordinator\n4. Step 6 (swarm_progress) - Report at milestones, don't work silently\n5. Step 9 (swarm_complete) - Use this to close, NOT beads_close\n\n**If you skip these steps:**\n- Your work won't be tracked (swarm_complete will fail)\n- You'll waste time repeating solved problems (no semantic memory query)\n- Edit conflicts with other agents (no file reservation)\n- Lost work if you crash (no checkpoints)\n- Future agents repeat your mistakes (no learnings stored)\n\nBegin now.";
40
+ export declare const SUBTASK_PROMPT_V2 = "You are a swarm agent working on: **{subtask_title}**\n\n## [IDENTITY]\nAgent: (assigned at spawn)\nCell: {bead_id}\nEpic: {epic_id}\n\n## [TASK]\n{subtask_description}\n\n## [FILES]\nReserved (exclusive):\n{file_list}\n\nOnly modify these files. Need others? Message the coordinator.\n\n## [CONTEXT]\n{shared_context}\n\n{compressed_context}\n\n{error_context}\n\n## [MANDATORY SURVIVAL CHECKLIST]\n\n**CRITICAL: Follow this checklist IN ORDER. Each step builds on the previous.**\n\n### Step 1: Initialize Coordination (REQUIRED - DO THIS FIRST)\n```\nswarmmail_init(project_path=\"{project_path}\", task_description=\"{bead_id}: {subtask_title}\")\n```\n\n**This registers you with the coordination system and enables:**\n- File reservation tracking\n- Inter-agent communication\n- Progress monitoring\n- Conflict detection\n\n**If you skip this step, your work will not be tracked and swarm_complete will fail.**\n\n### Step 2: Query Past Learnings (BEFORE starting work)\n```\nsemantic-memory_find(query=\"<keywords from your task>\", limit=5)\n```\n\n**Check if past agents solved similar problems.** Search for:\n- Error messages if debugging\n- Domain concepts (e.g., \"authentication\", \"caching\")\n- Technology stack (e.g., \"Next.js\", \"React\")\n- Patterns (e.g., \"event sourcing\", \"validation\")\n\n**Past learnings save time and prevent repeating mistakes.**\n\n### Step 3: Load Relevant Skills (if available)\n```\nskills_list() # See what skills exist\nskills_use(name=\"<relevant-skill>\", context=\"<your task>\") # Load skill\n```\n\n**Common skill triggers:**\n- Writing tests? \u2192 `skills_use(name=\"testing-patterns\")`\n- Breaking dependencies? \u2192 `skills_use(name=\"testing-patterns\")`\n- Multi-agent coordination? \u2192 `skills_use(name=\"swarm-coordination\")`\n- Building a CLI? \u2192 `skills_use(name=\"cli-builder\")`\n\n### Step 4: Reserve Your Files (YOU reserve, not coordinator)\n```\nswarmmail_reserve(\n paths=[{file_list}],\n reason=\"{bead_id}: {subtask_title}\",\n exclusive=true\n)\n```\n\n**Workers reserve their own files.** This prevents edit conflicts with other agents.\n\n### Step 5: Do the Work\n- Read your assigned files\n- Implement changes\n- Verify (typecheck if applicable)\n\n### Step 6: Report Progress at Milestones\n```\nswarm_progress(\n project_key=\"{project_path}\",\n agent_name=\"<your-agent-name>\",\n bead_id=\"{bead_id}\",\n status=\"in_progress\",\n progress_percent=25, # or 50, 75\n message=\"<what you just completed>\"\n)\n```\n\n**Report at 25%, 50%, 75% completion.** This:\n- Triggers auto-checkpoint (saves context)\n- Keeps coordinator informed\n- Prevents silent failures\n\n### Step 7: Manual Checkpoint BEFORE Risky Operations\n```\nswarm_checkpoint(\n project_key=\"{project_path}\",\n agent_name=\"<your-agent-name>\",\n bead_id=\"{bead_id}\"\n)\n```\n\n**Call BEFORE:**\n- Large refactors\n- File deletions\n- Breaking API changes\n- Anything that might fail catastrophically\n\n**Checkpoints preserve context so you can recover if things go wrong.**\n\n### Step 8: Store Learnings (if you discovered something)\n```\nsemantic-memory_store(\n information=\"<what you learned, WHY it matters, how to apply it>\",\n metadata=\"<tags: domain, tech-stack, pattern-type>\"\n)\n```\n\n**Store:**\n- Tricky bugs you solved (root cause + solution)\n- Project-specific patterns or domain rules\n- Tool/library gotchas and workarounds\n- Failed approaches (anti-patterns to avoid)\n\n**Don't store generic knowledge.** Store the WHY, not just the WHAT.\n\n### Step 9: Complete (REQUIRED - releases reservations)\n```\nswarm_complete(\n project_key=\"{project_path}\",\n agent_name=\"<your-agent-name>\",\n bead_id=\"{bead_id}\",\n summary=\"<what you accomplished>\",\n files_touched=[\"list\", \"of\", \"files\"]\n)\n```\n\n**This automatically:**\n- Runs UBS bug scan\n- Releases file reservations\n- Records learning signals\n- Notifies coordinator\n\n**DO NOT manually close the cell with hive_close.** Use swarm_complete.\n\n## [SWARM MAIL COMMUNICATION]\n\n### Check Inbox Regularly\n```\nswarmmail_inbox() # Check for coordinator messages\nswarmmail_read_message(message_id=N) # Read specific message\n```\n\n### When Blocked\n```\nswarmmail_send(\n to=[\"coordinator\"],\n subject=\"BLOCKED: {bead_id}\",\n body=\"<blocker description, what you need>\",\n importance=\"high\",\n thread_id=\"{epic_id}\"\n)\nhive_update(id=\"{bead_id}\", status=\"blocked\")\n```\n\n### Report Issues to Other Agents\n```\nswarmmail_send(\n to=[\"OtherAgent\", \"coordinator\"],\n subject=\"Issue in {bead_id}\",\n body=\"<describe problem, don't fix their code>\",\n thread_id=\"{epic_id}\"\n)\n```\n\n### Manual Release (if needed)\n```\nswarmmail_release() # Manually release reservations\n```\n\n**Note:** `swarm_complete` automatically releases reservations. Only use manual release if aborting work.\n\n## [OTHER TOOLS]\n### Hive - You Have Autonomy to File Issues\nYou can create new cells against this epic when you discover:\n- **Bugs**: Found a bug while working? File it.\n- **Tech debt**: Spotted something that needs cleanup? File it.\n- **Follow-up work**: Task needs more work than scoped? File a follow-up.\n- **Dependencies**: Need something from another agent? File and link it.\n\n```\nhive_create(\n title=\"<descriptive title>\",\n type=\"bug\", # or \"task\", \"chore\"\n priority=2,\n parent_id=\"{epic_id}\", # Links to this epic\n description=\"Found while working on {bead_id}: <details>\"\n)\n```\n\n**Don't silently ignore issues.** File them so they get tracked and addressed.\n\nOther cell operations:\n- hive_update(id, status) - Mark blocked if stuck\n- hive_query(status=\"open\") - See what else needs work\n\n### Skills\n- skills_list() - Discover available skills\n- skills_use(name) - Activate skill for specialized guidance\n- skills_create(name) - Create new skill (if you found a reusable pattern)\n\n## [CRITICAL REQUIREMENTS]\n\n**NON-NEGOTIABLE:**\n1. Step 1 (swarmmail_init) MUST be first - do it before anything else\n2. Step 2 (semantic-memory_find) MUST happen before starting work\n3. Step 4 (swarmmail_reserve) - YOU reserve files, not coordinator\n4. Step 6 (swarm_progress) - Report at milestones, don't work silently\n5. Step 9 (swarm_complete) - Use this to close, NOT hive_close\n\n**If you skip these steps:**\n- Your work won't be tracked (swarm_complete will fail)\n- You'll waste time repeating solved problems (no semantic memory query)\n- Edit conflicts with other agents (no file reservation)\n- Lost work if you crash (no checkpoints)\n- Future agents repeat your mistakes (no learnings stored)\n\nBegin now.";
41
41
  /**
42
42
  * Prompt for self-evaluation before completing a subtask.
43
43
  *
44
44
  * Agents use this to assess their work quality before marking complete.
45
45
  */
46
- export declare const EVALUATION_PROMPT = "Evaluate the work completed for this subtask.\n\n## Subtask\n**Bead ID**: {bead_id}\n**Title**: {subtask_title}\n\n## Files Modified\n{files_touched}\n\n## Evaluation Criteria\n\nFor each criterion, assess passed/failed and provide brief feedback:\n\n1. **type_safe**: Code compiles without TypeScript errors\n2. **no_bugs**: No obvious bugs, edge cases handled\n3. **patterns**: Follows existing codebase patterns and conventions\n4. **readable**: Code is clear and maintainable\n\n## Response Format\n\n```json\n{\n \"passed\": boolean, // Overall pass/fail\n \"criteria\": {\n \"type_safe\": { \"passed\": boolean, \"feedback\": string },\n \"no_bugs\": { \"passed\": boolean, \"feedback\": string },\n \"patterns\": { \"passed\": boolean, \"feedback\": string },\n \"readable\": { \"passed\": boolean, \"feedback\": string }\n },\n \"overall_feedback\": string,\n \"retry_suggestion\": string | null // If failed, what to fix\n}\n```\n\nIf any criterion fails, the overall evaluation fails and retry_suggestion \nshould describe what needs to be fixed.";
46
+ export declare const EVALUATION_PROMPT = "Evaluate the work completed for this subtask.\n\n## Subtask\n**Cell ID**: {bead_id}\n**Title**: {subtask_title}\n\n## Files Modified\n{files_touched}\n\n## Evaluation Criteria\n\nFor each criterion, assess passed/failed and provide brief feedback:\n\n1. **type_safe**: Code compiles without TypeScript errors\n2. **no_bugs**: No obvious bugs, edge cases handled\n3. **patterns**: Follows existing codebase patterns and conventions\n4. **readable**: Code is clear and maintainable\n\n## Response Format\n\n```json\n{\n \"passed\": boolean, // Overall pass/fail\n \"criteria\": {\n \"type_safe\": { \"passed\": boolean, \"feedback\": string },\n \"no_bugs\": { \"passed\": boolean, \"feedback\": string },\n \"patterns\": { \"passed\": boolean, \"feedback\": string },\n \"readable\": { \"passed\": boolean, \"feedback\": string }\n },\n \"overall_feedback\": string,\n \"retry_suggestion\": string | null // If failed, what to fix\n}\n```\n\nIf any criterion fails, the overall evaluation fails and retry_suggestion \nshould describe what needs to be fixed.";
47
47
  /**
48
48
  * Format the V2 subtask prompt for a specific agent
49
49
  */
@@ -112,7 +112,7 @@ export declare const swarm_subtask_prompt: {
112
112
  /**
113
113
  * Prepare a subtask for spawning with Task tool (V2 prompt)
114
114
  *
115
- * Generates a streamlined prompt that tells agents to USE Agent Mail and beads.
115
+ * Generates a streamlined prompt that tells agents to USE Agent Mail and hive tracking.
116
116
  * Returns JSON that can be directly used with Task tool.
117
117
  */
118
118
  export declare const swarm_spawn_subtask: {
@@ -1 +1 @@
1
- {"version":3,"file":"swarm-prompts.d.ts","sourceRoot":"","sources":["../src/swarm-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,q6EAkET,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,6BAA6B,kxDAyDlB,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,gkFAgFK,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,4iNAwOnB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8jCAmCU,CAAC;AAMzC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH,GAAG,MAAM,CAuDT;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAUT;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CAMT;AAMD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;CAoC/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0D9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;CAoClC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CA0I5B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvB,CAAC"}
1
+ {"version":3,"file":"swarm-prompts.d.ts","sourceRoot":"","sources":["../src/swarm-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,m6EAkET,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,6BAA6B,gxDAyDlB,CAAC;AAEzB;;;;;GAKG;AACH,eAAO,MAAM,cAAc,mkFAgFK,CAAC;AAEjC;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,qiNAwOnB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,8jCAmCU,CAAC;AAMzC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH,GAAG,MAAM,CAuDT;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,MAAM,CAUT;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,MAAM,CAMT;AAMD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;CAoC/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0D9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;CAoClC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CA0I5B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKvB,CAAC"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Swarm Structured Review Module
3
+ *
4
+ * Provides coordinator-driven review of worker output before completion.
5
+ * The review is epic-aware - it checks if work serves the overall goal
6
+ * and enables downstream tasks.
7
+ *
8
+ * Key features:
9
+ * - Generate review prompts with full epic context
10
+ * - Track review attempts (max 3 before task fails)
11
+ * - Send structured feedback to workers
12
+ * - Gate completion on review approval
13
+ *
14
+ * Credit: Review patterns inspired by https://github.com/nexxeln/opencode-config
15
+ */
16
+ import { z } from "zod";
17
+ /**
18
+ * Review issue - a specific problem found during review
19
+ */
20
+ export interface ReviewIssue {
21
+ file: string;
22
+ line?: number;
23
+ issue: string;
24
+ suggestion?: string;
25
+ }
26
+ export declare const ReviewIssueSchema: z.ZodObject<{
27
+ file: z.ZodString;
28
+ line: z.ZodOptional<z.ZodNumber>;
29
+ issue: z.ZodString;
30
+ suggestion: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ /**
33
+ * Review result - the outcome of a review
34
+ */
35
+ export interface ReviewResult {
36
+ status: "approved" | "needs_changes";
37
+ summary?: string;
38
+ issues?: ReviewIssue[];
39
+ remaining_attempts?: number;
40
+ }
41
+ export declare const ReviewResultSchema: z.ZodObject<{
42
+ status: z.ZodEnum<{
43
+ approved: "approved";
44
+ needs_changes: "needs_changes";
45
+ }>;
46
+ summary: z.ZodOptional<z.ZodString>;
47
+ issues: z.ZodOptional<z.ZodArray<z.ZodObject<{
48
+ file: z.ZodString;
49
+ line: z.ZodOptional<z.ZodNumber>;
50
+ issue: z.ZodString;
51
+ suggestion: z.ZodOptional<z.ZodString>;
52
+ }, z.core.$strip>>>;
53
+ remaining_attempts: z.ZodOptional<z.ZodNumber>;
54
+ }, z.core.$strip>;
55
+ /**
56
+ * Dependency info for review context
57
+ */
58
+ export interface DependencyInfo {
59
+ id: string;
60
+ title: string;
61
+ summary?: string;
62
+ }
63
+ /**
64
+ * Downstream task info
65
+ */
66
+ export interface DownstreamTask {
67
+ id: string;
68
+ title: string;
69
+ }
70
+ /**
71
+ * Review prompt context
72
+ */
73
+ export interface ReviewPromptContext {
74
+ epic_id: string;
75
+ epic_title: string;
76
+ epic_description?: string;
77
+ task_id: string;
78
+ task_title: string;
79
+ task_description?: string;
80
+ files_touched: string[];
81
+ diff: string;
82
+ completed_dependencies?: DependencyInfo[];
83
+ downstream_tasks?: DownstreamTask[];
84
+ }
85
+ /**
86
+ * Generate a review prompt with full epic context
87
+ *
88
+ * The prompt includes:
89
+ * - Epic goal (big picture)
90
+ * - Task requirements
91
+ * - Dependency context (what this builds on)
92
+ * - Downstream context (what depends on this)
93
+ * - The actual code diff
94
+ * - Review criteria checklist
95
+ */
96
+ export declare function generateReviewPrompt(context: ReviewPromptContext): string;
97
+ /**
98
+ * Generate a review prompt for a completed subtask
99
+ *
100
+ * Fetches epic and task details, gets the git diff, and generates
101
+ * a comprehensive review prompt.
102
+ */
103
+ export declare const swarm_review: {
104
+ description: string;
105
+ args: {
106
+ project_key: z.ZodString;
107
+ epic_id: z.ZodString;
108
+ task_id: z.ZodString;
109
+ files_touched: z.ZodOptional<z.ZodArray<z.ZodString>>;
110
+ };
111
+ execute(args: {
112
+ project_key: string;
113
+ epic_id: string;
114
+ task_id: string;
115
+ files_touched?: string[] | undefined;
116
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
117
+ };
118
+ /**
119
+ * Send review feedback to a worker
120
+ *
121
+ * Tracks review attempts and fails the task after 3 rejections.
122
+ */
123
+ export declare const swarm_review_feedback: {
124
+ description: string;
125
+ args: {
126
+ project_key: z.ZodString;
127
+ task_id: z.ZodString;
128
+ worker_id: z.ZodString;
129
+ status: z.ZodEnum<{
130
+ approved: "approved";
131
+ needs_changes: "needs_changes";
132
+ }>;
133
+ summary: z.ZodOptional<z.ZodString>;
134
+ issues: z.ZodOptional<z.ZodString>;
135
+ };
136
+ execute(args: {
137
+ project_key: string;
138
+ task_id: string;
139
+ worker_id: string;
140
+ status: "approved" | "needs_changes";
141
+ summary?: string | undefined;
142
+ issues?: string | undefined;
143
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
144
+ };
145
+ /**
146
+ * Review status for a task
147
+ */
148
+ interface TaskReviewStatus {
149
+ reviewed: boolean;
150
+ approved: boolean;
151
+ attempt_count: number;
152
+ remaining_attempts: number;
153
+ }
154
+ /**
155
+ * Mark a task as reviewed and approved
156
+ */
157
+ export declare function markReviewApproved(taskId: string): void;
158
+ /**
159
+ * Check if a task has been approved
160
+ */
161
+ export declare function isReviewApproved(taskId: string): boolean;
162
+ /**
163
+ * Get review status for a task
164
+ */
165
+ export declare function getReviewStatus(taskId: string): TaskReviewStatus;
166
+ /**
167
+ * Clear review status (for testing or reset)
168
+ */
169
+ export declare function clearReviewStatus(taskId: string): void;
170
+ export declare const reviewTools: {
171
+ swarm_review: {
172
+ description: string;
173
+ args: {
174
+ project_key: z.ZodString;
175
+ epic_id: z.ZodString;
176
+ task_id: z.ZodString;
177
+ files_touched: z.ZodOptional<z.ZodArray<z.ZodString>>;
178
+ };
179
+ execute(args: {
180
+ project_key: string;
181
+ epic_id: string;
182
+ task_id: string;
183
+ files_touched?: string[] | undefined;
184
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
185
+ };
186
+ swarm_review_feedback: {
187
+ description: string;
188
+ args: {
189
+ project_key: z.ZodString;
190
+ task_id: z.ZodString;
191
+ worker_id: z.ZodString;
192
+ status: z.ZodEnum<{
193
+ approved: "approved";
194
+ needs_changes: "needs_changes";
195
+ }>;
196
+ summary: z.ZodOptional<z.ZodString>;
197
+ issues: z.ZodOptional<z.ZodString>;
198
+ };
199
+ execute(args: {
200
+ project_key: string;
201
+ task_id: string;
202
+ worker_id: string;
203
+ status: "approved" | "needs_changes";
204
+ summary?: string | undefined;
205
+ issues?: string | undefined;
206
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
207
+ };
208
+ };
209
+ export {};
210
+ //# sourceMappingURL=swarm-review.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm-review.d.ts","sourceRoot":"","sources":["../src/swarm-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,UAAU,GAAG,eAAe,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAkB5B,CAAC;AAEJ;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1C,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;CACrC;AAkDD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAsGzE;AAmED;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CA+GvB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CA6KhC,CAAC;AAMH;;GAEG;AACH,UAAU,gBAAgB;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAOD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAQhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGtD;AAMD,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGvB,CAAC"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Swarm Worktree Isolation Module
3
+ *
4
+ * Provides git worktree-based isolation for parallel swarm workers.
5
+ * Each worker gets their own worktree at a shared start commit,
6
+ * preventing file conflicts without needing reservations.
7
+ *
8
+ * Key features:
9
+ * - Create worktrees at specific commits (swarm start point)
10
+ * - Cherry-pick commits back to main branch
11
+ * - Clean up worktrees on completion or abort
12
+ * - List active worktrees for a project
13
+ *
14
+ * Credit: Patterns inspired by https://github.com/nexxeln/opencode-config
15
+ */
16
+ import { z } from "zod";
17
+ /**
18
+ * Worktree info returned by git worktree list
19
+ */
20
+ export interface WorktreeInfo {
21
+ task_id: string;
22
+ path: string;
23
+ commit: string;
24
+ branch?: string;
25
+ created_at?: string;
26
+ }
27
+ /**
28
+ * Result of worktree operations
29
+ */
30
+ export interface WorktreeResult {
31
+ success: boolean;
32
+ worktree_path?: string;
33
+ task_id?: string;
34
+ error?: string;
35
+ created_at_commit?: string;
36
+ merged_commit?: string;
37
+ removed_path?: string;
38
+ removed_count?: number;
39
+ already_removed?: boolean;
40
+ conflicting_files?: string[];
41
+ }
42
+ /**
43
+ * Create a git worktree for a task
44
+ *
45
+ * Creates an isolated worktree at the specified start commit.
46
+ * Workers operate in their worktree without affecting main branch.
47
+ */
48
+ export declare const swarm_worktree_create: {
49
+ description: string;
50
+ args: {
51
+ project_path: z.ZodString;
52
+ task_id: z.ZodString;
53
+ start_commit: z.ZodString;
54
+ };
55
+ execute(args: {
56
+ project_path: string;
57
+ task_id: string;
58
+ start_commit: string;
59
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
60
+ };
61
+ /**
62
+ * Merge (cherry-pick) commits from worktree back to main
63
+ *
64
+ * After worker completes, cherry-pick their commits to main branch.
65
+ * This integrates the isolated work back into the shared codebase.
66
+ */
67
+ export declare const swarm_worktree_merge: {
68
+ description: string;
69
+ args: {
70
+ project_path: z.ZodString;
71
+ task_id: z.ZodString;
72
+ start_commit: z.ZodOptional<z.ZodString>;
73
+ };
74
+ execute(args: {
75
+ project_path: string;
76
+ task_id: string;
77
+ start_commit?: string | undefined;
78
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
79
+ };
80
+ /**
81
+ * Clean up a worktree
82
+ *
83
+ * Removes the worktree directory and git tracking.
84
+ * Call after merge or on abort.
85
+ */
86
+ export declare const swarm_worktree_cleanup: {
87
+ description: string;
88
+ args: {
89
+ project_path: z.ZodString;
90
+ task_id: z.ZodOptional<z.ZodString>;
91
+ cleanup_all: z.ZodOptional<z.ZodBoolean>;
92
+ };
93
+ execute(args: {
94
+ project_path: string;
95
+ task_id?: string | undefined;
96
+ cleanup_all?: boolean | undefined;
97
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
98
+ };
99
+ /**
100
+ * List all worktrees for a project
101
+ *
102
+ * Returns info about active worktrees including task IDs and paths.
103
+ */
104
+ export declare const swarm_worktree_list: {
105
+ description: string;
106
+ args: {
107
+ project_path: z.ZodString;
108
+ };
109
+ execute(args: {
110
+ project_path: string;
111
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
112
+ };
113
+ /**
114
+ * Check if worktree isolation can be used
115
+ *
116
+ * Worktree mode requires:
117
+ * - Clean working directory (no uncommitted changes)
118
+ * - Valid git repository
119
+ */
120
+ export declare function canUseWorktreeIsolation(projectPath: string): Promise<{
121
+ canUse: boolean;
122
+ reason?: string;
123
+ }>;
124
+ /**
125
+ * Get the current commit for worktree start point
126
+ */
127
+ export declare function getStartCommit(projectPath: string): Promise<string | null>;
128
+ /**
129
+ * Hard reset main branch to start commit (for abort)
130
+ */
131
+ export declare function resetToStartCommit(projectPath: string, startCommit: string): Promise<{
132
+ success: boolean;
133
+ error?: string;
134
+ }>;
135
+ export declare const worktreeTools: {
136
+ swarm_worktree_create: {
137
+ description: string;
138
+ args: {
139
+ project_path: z.ZodString;
140
+ task_id: z.ZodString;
141
+ start_commit: z.ZodString;
142
+ };
143
+ execute(args: {
144
+ project_path: string;
145
+ task_id: string;
146
+ start_commit: string;
147
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
148
+ };
149
+ swarm_worktree_merge: {
150
+ description: string;
151
+ args: {
152
+ project_path: z.ZodString;
153
+ task_id: z.ZodString;
154
+ start_commit: z.ZodOptional<z.ZodString>;
155
+ };
156
+ execute(args: {
157
+ project_path: string;
158
+ task_id: string;
159
+ start_commit?: string | undefined;
160
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
161
+ };
162
+ swarm_worktree_cleanup: {
163
+ description: string;
164
+ args: {
165
+ project_path: z.ZodString;
166
+ task_id: z.ZodOptional<z.ZodString>;
167
+ cleanup_all: z.ZodOptional<z.ZodBoolean>;
168
+ };
169
+ execute(args: {
170
+ project_path: string;
171
+ task_id?: string | undefined;
172
+ cleanup_all?: boolean | undefined;
173
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
174
+ };
175
+ swarm_worktree_list: {
176
+ description: string;
177
+ args: {
178
+ project_path: z.ZodString;
179
+ };
180
+ execute(args: {
181
+ project_path: string;
182
+ }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
183
+ };
184
+ };
185
+ //# sourceMappingURL=swarm-worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm-worktree.d.ts","sourceRoot":"","sources":["../src/swarm-worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AA+FD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;CA0DhC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CA+G/B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;CAoGjC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CA6D9B,CAAC;AAMH;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAa/C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc/C;AAMD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKzB,CAAC"}
package/dist/swarm.d.ts CHANGED
@@ -23,8 +23,13 @@ export declare const swarmTools: {
23
23
  description: string;
24
24
  args: {
25
25
  project_path: import("zod").ZodOptional<import("zod").ZodString>;
26
+ isolation: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodEnum<{
27
+ reservation: "reservation";
28
+ worktree: "worktree";
29
+ }>>>;
26
30
  };
27
31
  execute(args: {
32
+ isolation: "reservation" | "worktree";
28
33
  project_path?: string | undefined;
29
34
  }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
30
35
  };
@@ -103,6 +108,7 @@ export declare const swarmTools: {
103
108
  start_time: import("zod").ZodOptional<import("zod").ZodNumber>;
104
109
  error_count: import("zod").ZodOptional<import("zod").ZodNumber>;
105
110
  retry_count: import("zod").ZodOptional<import("zod").ZodNumber>;
111
+ skip_review: import("zod").ZodOptional<import("zod").ZodBoolean>;
106
112
  };
107
113
  execute(args: {
108
114
  project_key: string;
@@ -117,6 +123,7 @@ export declare const swarmTools: {
117
123
  start_time?: number | undefined;
118
124
  error_count?: number | undefined;
119
125
  retry_count?: number | undefined;
126
+ skip_review?: boolean | undefined;
120
127
  }, context: import("@opencode-ai/plugin").ToolContext): Promise<string>;
121
128
  };
122
129
  swarm_record_outcome: {
@@ -1 +1 @@
1
- {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../src/swarm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAQpC;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtB,CAAC"}
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../src/swarm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AAQpC;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAKtB,CAAC"}
@@ -8,11 +8,12 @@
8
8
  * - semantic-memory: Learning persistence with semantic search
9
9
  * - cass: Cross-agent session search for historical context
10
10
  * - ubs: Universal bug scanner for pre-commit checks
11
- * - beads (bd): Git-backed issue tracking
11
+ * - hive: Git-backed issue tracking (primary)
12
+ * - beads (bd): DEPRECATED - Use hive instead (kept for backward compatibility)
12
13
  * - swarm-mail: Embedded multi-agent coordination (PGLite-based)
13
14
  * - agent-mail: DEPRECATED - Legacy MCP server (use swarm-mail instead)
14
15
  */
15
- export type ToolName = "semantic-memory" | "cass" | "ubs" | "beads" | "swarm-mail" | "agent-mail";
16
+ export type ToolName = "semantic-memory" | "cass" | "ubs" | "hive" | "beads" | "swarm-mail" | "agent-mail";
16
17
  export interface ToolStatus {
17
18
  available: boolean;
18
19
  checkedAt: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-availability.d.ts","sourceRoot":"","sources":["../src/tool-availability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,MAAM,GACN,KAAK,GACL,OAAO,GACP,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAiOD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAWnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAC5C,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAChC,CAyBA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAQpD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/D;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CASZ;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CASxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAC5C,MAAM,CAWR"}
1
+ {"version":3,"file":"tool-availability.d.ts","sourceRoot":"","sources":["../src/tool-availability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,MAAM,MAAM,QAAQ,GAChB,iBAAiB,GACjB,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AA+PD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAWnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,QAAQ,GACb,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAC5C,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAChC,CA0BA;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAQpD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO/D;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACxB,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CASZ;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CASxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,GAAG,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAC5C,MAAM,CAWR"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Analysis Date:** 2025-12-13
4
4
  **Source:** obra/superpowers repo
5
- **Bead:** opencode-swarm-plugin-v737h.1
5
+ **Cell:** opencode-swarm-plugin-v737h.1
6
6
 
7
7
  ## Executive Summary
8
8