opencode-swarm-plugin 0.25.0 → 0.25.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.
- package/.turbo/turbo-build.log +3 -3
- package/CHANGELOG.md +25 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +128 -10
- package/dist/planning-guardrails.d.ts +43 -0
- package/dist/planning-guardrails.d.ts.map +1 -0
- package/dist/plugin.js +128 -10
- package/dist/skills.d.ts +4 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/swarm-orchestrate.d.ts.map +1 -1
- package/dist/swarm-prompts.d.ts +1 -1
- package/dist/swarm-prompts.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +22 -0
- package/src/planning-guardrails.test.ts +106 -0
- package/src/planning-guardrails.ts +149 -0
- package/src/skills.ts +10 -5
- package/src/swarm-orchestrate.ts +29 -9
- package/src/swarm-prompts.ts +21 -2
- package/src/swarm.integration.test.ts +11 -246
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
$ bun build ./src/index.ts --outdir ./dist --target node --external @electric-sql/pglite --external swarm-mail && bun build ./src/plugin.ts --outfile ./dist/plugin.js --target node --external @electric-sql/pglite --external swarm-mail && tsc
|
|
2
|
-
Bundled
|
|
2
|
+
Bundled 197 modules in 34ms
|
|
3
3
|
|
|
4
4
|
index.js 1.16 MB (entry point)
|
|
5
5
|
|
|
6
|
-
Bundled
|
|
6
|
+
Bundled 198 modules in 32ms
|
|
7
7
|
|
|
8
|
-
plugin.js 1.
|
|
8
|
+
plugin.js 1.14 MB (entry point)
|
|
9
9
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# opencode-swarm-plugin
|
|
2
2
|
|
|
3
|
+
## 0.25.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`34a2c3a`](https://github.com/joelhooks/swarm-tools/commit/34a2c3a07f036297db449414ef8dbeb7b39721e2) Thanks [@joelhooks](https://github.com/joelhooks)! - Grant swarm workers autonomy to file beads against the epic
|
|
8
|
+
|
|
9
|
+
Workers can now create bugs, tech debt, and follow-up tasks linked to their parent epic via `parent_id`. Prompt explicitly encourages workers to file issues rather than silently ignoring them.
|
|
10
|
+
|
|
11
|
+
## 0.25.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [`757f4a6`](https://github.com/joelhooks/swarm-tools/commit/757f4a690721b3f04a414e4c1694660862504e54) Thanks [@joelhooks](https://github.com/joelhooks)! - Fix skills_update tool - add `content` parameter as primary (with `body` as backwards-compat alias)
|
|
16
|
+
|
|
17
|
+
The tool was only accepting `body` but users expected `content`. Now both work:
|
|
18
|
+
|
|
19
|
+
- `skills_update(name="foo", content="new stuff")` - preferred
|
|
20
|
+
- `skills_update(name="foo", body="new stuff")` - still works for backwards compat
|
|
21
|
+
|
|
22
|
+
- [`3d619ff`](https://github.com/joelhooks/swarm-tools/commit/3d619ffda78b2e6066491f053e8fad8dac7b5b71) Thanks [@joelhooks](https://github.com/joelhooks)! - Fix swarm_complete failing when bead project doesn't match CWD
|
|
23
|
+
|
|
24
|
+
- Use `project_key` as working directory for `bd close` command
|
|
25
|
+
- Improved error messages with context-specific recovery steps
|
|
26
|
+
- Added planning guardrails to warn when todowrite is used for parallel work (should use swarm)
|
|
27
|
+
|
|
3
28
|
## 0.25.0
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -301,6 +301,7 @@ export declare const allTools: {
|
|
|
301
301
|
args: {
|
|
302
302
|
name: import("zod").ZodString;
|
|
303
303
|
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
304
|
+
content: import("zod").ZodOptional<import("zod").ZodString>;
|
|
304
305
|
body: import("zod").ZodOptional<import("zod").ZodString>;
|
|
305
306
|
append_body: import("zod").ZodOptional<import("zod").ZodString>;
|
|
306
307
|
tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
@@ -310,6 +311,7 @@ export declare const allTools: {
|
|
|
310
311
|
execute(args: {
|
|
311
312
|
name: string;
|
|
312
313
|
description?: string | undefined;
|
|
314
|
+
content?: string | undefined;
|
|
313
315
|
body?: string | undefined;
|
|
314
316
|
append_body?: string | undefined;
|
|
315
317
|
tags?: string[] | undefined;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAsB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26806,7 +26806,8 @@ Use this to refine skills based on experience:
|
|
|
26806
26806
|
args: {
|
|
26807
26807
|
name: tool.schema.string().describe("Name of the skill to update"),
|
|
26808
26808
|
description: tool.schema.string().max(1024).optional().describe("New description (replaces existing)"),
|
|
26809
|
-
|
|
26809
|
+
content: tool.schema.string().optional().describe("New content/body (replaces existing SKILL.md body)"),
|
|
26810
|
+
body: tool.schema.string().optional().describe("Alias for content - new body (replaces existing)"),
|
|
26810
26811
|
append_body: tool.schema.string().optional().describe("Content to append to existing body"),
|
|
26811
26812
|
tags: tool.schema.array(tool.schema.string()).optional().describe("New tags (replaces existing)"),
|
|
26812
26813
|
add_tags: tool.schema.array(tool.schema.string()).optional().describe("Tags to add to existing"),
|
|
@@ -26821,8 +26822,9 @@ Use this to refine skills based on experience:
|
|
|
26821
26822
|
}
|
|
26822
26823
|
const newDescription = args.description ?? skill.metadata.description;
|
|
26823
26824
|
let newBody = skill.body;
|
|
26824
|
-
|
|
26825
|
-
|
|
26825
|
+
const bodyContent = args.content ?? args.body;
|
|
26826
|
+
if (bodyContent) {
|
|
26827
|
+
newBody = bodyContent;
|
|
26826
26828
|
} else if (args.append_body) {
|
|
26827
26829
|
newBody = `${skill.body}
|
|
26828
26830
|
|
|
@@ -26849,7 +26851,7 @@ ${args.append_body}`;
|
|
|
26849
26851
|
path: skill.path,
|
|
26850
26852
|
updated: {
|
|
26851
26853
|
description: args.description ? true : false,
|
|
26852
|
-
|
|
26854
|
+
content: args.content || args.body || args.append_body ? true : false,
|
|
26853
26855
|
tags: args.tags || args.add_tags ? true : false,
|
|
26854
26856
|
tools: args.tools ? true : false
|
|
26855
26857
|
},
|
|
@@ -31468,9 +31470,28 @@ swarmmail_release() # Manually release reservations
|
|
|
31468
31470
|
**Note:** \`swarm_complete\` automatically releases reservations. Only use manual release if aborting work.
|
|
31469
31471
|
|
|
31470
31472
|
## [OTHER TOOLS]
|
|
31471
|
-
### Beads
|
|
31473
|
+
### Beads - You Have Autonomy to File Issues
|
|
31474
|
+
You can create new beads against this epic when you discover:
|
|
31475
|
+
- **Bugs**: Found a bug while working? File it.
|
|
31476
|
+
- **Tech debt**: Spotted something that needs cleanup? File it.
|
|
31477
|
+
- **Follow-up work**: Task needs more work than scoped? File a follow-up.
|
|
31478
|
+
- **Dependencies**: Need something from another agent? File and link it.
|
|
31479
|
+
|
|
31480
|
+
\`\`\`
|
|
31481
|
+
beads_create(
|
|
31482
|
+
title="<descriptive title>",
|
|
31483
|
+
type="bug", # or "task", "chore"
|
|
31484
|
+
priority=2,
|
|
31485
|
+
parent_id="{epic_id}", # Links to this epic
|
|
31486
|
+
description="Found while working on {bead_id}: <details>"
|
|
31487
|
+
)
|
|
31488
|
+
\`\`\`
|
|
31489
|
+
|
|
31490
|
+
**Don't silently ignore issues.** File them so they get tracked and addressed.
|
|
31491
|
+
|
|
31492
|
+
Other bead operations:
|
|
31472
31493
|
- beads_update(id, status) - Mark blocked if stuck
|
|
31473
|
-
-
|
|
31494
|
+
- beads_query(status="open") - See what else needs work
|
|
31474
31495
|
|
|
31475
31496
|
### Skills
|
|
31476
31497
|
- skills_list() - Discover available skills
|
|
@@ -32373,23 +32394,32 @@ Continuing with completion, but this should be fixed for future subtasks.`;
|
|
|
32373
32394
|
}, null, 2);
|
|
32374
32395
|
}
|
|
32375
32396
|
}
|
|
32376
|
-
const closeResult = await Bun.$`bd close ${args.bead_id} --reason ${args.summary} --json`.quiet().nothrow();
|
|
32397
|
+
const closeResult = await Bun.$`bd close ${args.bead_id} --reason ${args.summary} --json`.cwd(args.project_key).quiet().nothrow();
|
|
32377
32398
|
if (closeResult.exitCode !== 0) {
|
|
32378
32399
|
const stderrOutput = closeResult.stderr.toString().trim();
|
|
32400
|
+
const stdoutOutput = closeResult.stdout.toString().trim();
|
|
32401
|
+
const isNoDatabaseError = stderrOutput.includes("no beads database found");
|
|
32402
|
+
const isNotFoundError = stderrOutput.includes("not found") || stderrOutput.includes("does not exist");
|
|
32379
32403
|
return JSON.stringify({
|
|
32380
32404
|
success: false,
|
|
32381
32405
|
error: "Failed to close bead",
|
|
32382
32406
|
failed_step: "bd close",
|
|
32383
|
-
details: stderrOutput || "Unknown error from bd close command",
|
|
32407
|
+
details: stderrOutput || stdoutOutput || "Unknown error from bd close command",
|
|
32384
32408
|
bead_id: args.bead_id,
|
|
32409
|
+
project_key: args.project_key,
|
|
32385
32410
|
recovery: {
|
|
32386
|
-
steps: [
|
|
32411
|
+
steps: isNoDatabaseError ? [
|
|
32412
|
+
`1. Verify project_key is correct: "${args.project_key}"`,
|
|
32413
|
+
`2. Check .beads/ exists in that directory`,
|
|
32414
|
+
`3. Bead ID prefix "${args.bead_id.split("-")[0]}" should match project`,
|
|
32415
|
+
`4. Try: beads_close(id="${args.bead_id}", reason="...")`
|
|
32416
|
+
] : [
|
|
32387
32417
|
`1. Check bead exists: bd show ${args.bead_id}`,
|
|
32388
32418
|
`2. Check bead status (might already be closed): beads_query()`,
|
|
32389
32419
|
`3. If bead is blocked, unblock first: beads_update(id="${args.bead_id}", status="in_progress")`,
|
|
32390
32420
|
`4. Try closing directly: beads_close(id="${args.bead_id}", reason="...")`
|
|
32391
32421
|
],
|
|
32392
|
-
hint: "If bead is in 'blocked' status, you must change it to 'in_progress' or 'open' before closing."
|
|
32422
|
+
hint: isNoDatabaseError ? `The project_key "${args.project_key}" doesn't have a .beads/ directory. Make sure you're using the correct project path.` : isNotFoundError ? `Bead "${args.bead_id}" not found. It may have been closed already or the ID is incorrect.` : "If bead is in 'blocked' status, you must change it to 'in_progress' or 'open' before closing."
|
|
32393
32423
|
}
|
|
32394
32424
|
}, null, 2);
|
|
32395
32425
|
}
|
|
@@ -34362,6 +34392,85 @@ function createMetrics(result, toolName) {
|
|
|
34362
34392
|
timestamp: Date.now()
|
|
34363
34393
|
};
|
|
34364
34394
|
}
|
|
34395
|
+
|
|
34396
|
+
// src/planning-guardrails.ts
|
|
34397
|
+
var FILE_MODIFICATION_PATTERNS = [
|
|
34398
|
+
/\bimplement\b/i,
|
|
34399
|
+
/\bcreate\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34400
|
+
/\badd\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34401
|
+
/\bupdate\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34402
|
+
/\bmodify\b/i,
|
|
34403
|
+
/\brefactor\b/i,
|
|
34404
|
+
/\bextract\b/i,
|
|
34405
|
+
/\bmigrate\b/i,
|
|
34406
|
+
/\bconvert\b/i,
|
|
34407
|
+
/\brewrite\b/i,
|
|
34408
|
+
/\bfix\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34409
|
+
/\bwrite\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34410
|
+
/src\//i,
|
|
34411
|
+
/lib\//i,
|
|
34412
|
+
/packages?\//i,
|
|
34413
|
+
/components?\//i
|
|
34414
|
+
];
|
|
34415
|
+
var TRACKING_PATTERNS = [
|
|
34416
|
+
/\breview\b/i,
|
|
34417
|
+
/\bcheck\b/i,
|
|
34418
|
+
/\bverify\b/i,
|
|
34419
|
+
/\btest\b.*pass/i,
|
|
34420
|
+
/\brun\b.*test/i,
|
|
34421
|
+
/\bdeploy\b/i,
|
|
34422
|
+
/\bmerge\b/i,
|
|
34423
|
+
/\bpr\b/i,
|
|
34424
|
+
/\bpush\b/i,
|
|
34425
|
+
/\bcommit\b/i
|
|
34426
|
+
];
|
|
34427
|
+
function analyzeTodoWrite(args) {
|
|
34428
|
+
const todos = args.todos;
|
|
34429
|
+
if (!todos || !Array.isArray(todos) || todos.length < 6) {
|
|
34430
|
+
return {
|
|
34431
|
+
looksLikeParallelWork: false,
|
|
34432
|
+
fileModificationCount: 0,
|
|
34433
|
+
totalCount: todos?.length ?? 0
|
|
34434
|
+
};
|
|
34435
|
+
}
|
|
34436
|
+
let fileModificationCount = 0;
|
|
34437
|
+
for (const todo of todos) {
|
|
34438
|
+
if (typeof todo !== "object" || todo === null)
|
|
34439
|
+
continue;
|
|
34440
|
+
const content = todo.content ?? "";
|
|
34441
|
+
const isFileModification = FILE_MODIFICATION_PATTERNS.some((pattern) => pattern.test(content));
|
|
34442
|
+
const isTracking = TRACKING_PATTERNS.some((pattern) => pattern.test(content));
|
|
34443
|
+
if (isFileModification && !isTracking) {
|
|
34444
|
+
fileModificationCount++;
|
|
34445
|
+
}
|
|
34446
|
+
}
|
|
34447
|
+
const ratio = fileModificationCount / todos.length;
|
|
34448
|
+
const looksLikeParallelWork = ratio >= 0.5 && fileModificationCount >= 4;
|
|
34449
|
+
if (looksLikeParallelWork) {
|
|
34450
|
+
return {
|
|
34451
|
+
looksLikeParallelWork: true,
|
|
34452
|
+
fileModificationCount,
|
|
34453
|
+
totalCount: todos.length,
|
|
34454
|
+
warning: `⚠️ This looks like a multi-file implementation plan (${fileModificationCount}/${todos.length} items are file modifications).
|
|
34455
|
+
|
|
34456
|
+
Consider using swarm instead:
|
|
34457
|
+
swarm_decompose → beads_create_epic → parallel task spawns
|
|
34458
|
+
|
|
34459
|
+
TodoWrite is for tracking progress, not parallelizable implementation work.
|
|
34460
|
+
Swarm workers can complete these ${fileModificationCount} tasks in parallel.
|
|
34461
|
+
|
|
34462
|
+
(Continuing with todowrite - this is just a suggestion)`
|
|
34463
|
+
};
|
|
34464
|
+
}
|
|
34465
|
+
return {
|
|
34466
|
+
looksLikeParallelWork: false,
|
|
34467
|
+
fileModificationCount,
|
|
34468
|
+
totalCount: todos.length
|
|
34469
|
+
};
|
|
34470
|
+
}
|
|
34471
|
+
function shouldAnalyzeTool(toolName) {
|
|
34472
|
+
return toolName === "todowrite" || toolName === "TodoWrite";
|
|
34473
|
+
}
|
|
34365
34474
|
// src/storage.ts
|
|
34366
34475
|
init_learning();
|
|
34367
34476
|
|
|
@@ -34881,6 +34990,15 @@ var SwarmPlugin = async (input) => {
|
|
|
34881
34990
|
await releaseReservations();
|
|
34882
34991
|
}
|
|
34883
34992
|
},
|
|
34993
|
+
"tool.execute.before": async (input2, output) => {
|
|
34994
|
+
const toolName = input2.tool;
|
|
34995
|
+
if (shouldAnalyzeTool(toolName)) {
|
|
34996
|
+
const analysis = analyzeTodoWrite(output.args);
|
|
34997
|
+
if (analysis.warning) {
|
|
34998
|
+
console.warn(`[swarm-plugin] ${analysis.warning}`);
|
|
34999
|
+
}
|
|
35000
|
+
}
|
|
35001
|
+
},
|
|
34884
35002
|
"tool.execute.after": async (input2, output) => {
|
|
34885
35003
|
const toolName = input2.tool;
|
|
34886
35004
|
if (output.output && typeof output.output === "string") {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Planning Guardrails
|
|
3
|
+
*
|
|
4
|
+
* Detects when agents are about to make planning mistakes and warns them.
|
|
5
|
+
* Non-blocking - just emits warnings to help agents self-correct.
|
|
6
|
+
*
|
|
7
|
+
* @module planning-guardrails
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Result of analyzing todowrite args
|
|
11
|
+
*/
|
|
12
|
+
export interface TodoWriteAnalysis {
|
|
13
|
+
/** Whether this looks like parallel work that should use swarm */
|
|
14
|
+
looksLikeParallelWork: boolean;
|
|
15
|
+
/** Number of todos that look like file modifications */
|
|
16
|
+
fileModificationCount: number;
|
|
17
|
+
/** Total number of todos */
|
|
18
|
+
totalCount: number;
|
|
19
|
+
/** Warning message if applicable */
|
|
20
|
+
warning?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Analyze todowrite args to detect potential planning mistakes
|
|
24
|
+
*
|
|
25
|
+
* Triggers warning when:
|
|
26
|
+
* - 6+ todos created in one call
|
|
27
|
+
* - Most todos match file modification patterns
|
|
28
|
+
* - Few todos match tracking patterns
|
|
29
|
+
*
|
|
30
|
+
* @param args - The todowrite tool arguments
|
|
31
|
+
* @returns Analysis result with optional warning
|
|
32
|
+
*/
|
|
33
|
+
export declare function analyzeTodoWrite(args: {
|
|
34
|
+
todos?: unknown[];
|
|
35
|
+
}): TodoWriteAnalysis;
|
|
36
|
+
/**
|
|
37
|
+
* Check if a tool call should trigger planning guardrails
|
|
38
|
+
*
|
|
39
|
+
* @param toolName - Name of the tool being called
|
|
40
|
+
* @returns Whether this tool should be analyzed
|
|
41
|
+
*/
|
|
42
|
+
export declare function shouldAnalyzeTool(toolName: string): boolean;
|
|
43
|
+
//# sourceMappingURL=planning-guardrails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning-guardrails.d.ts","sourceRoot":"","sources":["../src/planning-guardrails.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyCH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,qBAAqB,EAAE,OAAO,CAAC;IAE/B,wDAAwD;IACxD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IAEnB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG,iBAAiB,CA8D/E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE3D"}
|
package/dist/plugin.js
CHANGED
|
@@ -26806,7 +26806,8 @@ Use this to refine skills based on experience:
|
|
|
26806
26806
|
args: {
|
|
26807
26807
|
name: tool.schema.string().describe("Name of the skill to update"),
|
|
26808
26808
|
description: tool.schema.string().max(1024).optional().describe("New description (replaces existing)"),
|
|
26809
|
-
|
|
26809
|
+
content: tool.schema.string().optional().describe("New content/body (replaces existing SKILL.md body)"),
|
|
26810
|
+
body: tool.schema.string().optional().describe("Alias for content - new body (replaces existing)"),
|
|
26810
26811
|
append_body: tool.schema.string().optional().describe("Content to append to existing body"),
|
|
26811
26812
|
tags: tool.schema.array(tool.schema.string()).optional().describe("New tags (replaces existing)"),
|
|
26812
26813
|
add_tags: tool.schema.array(tool.schema.string()).optional().describe("Tags to add to existing"),
|
|
@@ -26821,8 +26822,9 @@ Use this to refine skills based on experience:
|
|
|
26821
26822
|
}
|
|
26822
26823
|
const newDescription = args.description ?? skill.metadata.description;
|
|
26823
26824
|
let newBody = skill.body;
|
|
26824
|
-
|
|
26825
|
-
|
|
26825
|
+
const bodyContent = args.content ?? args.body;
|
|
26826
|
+
if (bodyContent) {
|
|
26827
|
+
newBody = bodyContent;
|
|
26826
26828
|
} else if (args.append_body) {
|
|
26827
26829
|
newBody = `${skill.body}
|
|
26828
26830
|
|
|
@@ -26849,7 +26851,7 @@ ${args.append_body}`;
|
|
|
26849
26851
|
path: skill.path,
|
|
26850
26852
|
updated: {
|
|
26851
26853
|
description: args.description ? true : false,
|
|
26852
|
-
|
|
26854
|
+
content: args.content || args.body || args.append_body ? true : false,
|
|
26853
26855
|
tags: args.tags || args.add_tags ? true : false,
|
|
26854
26856
|
tools: args.tools ? true : false
|
|
26855
26857
|
},
|
|
@@ -31259,9 +31261,28 @@ swarmmail_release() # Manually release reservations
|
|
|
31259
31261
|
**Note:** \`swarm_complete\` automatically releases reservations. Only use manual release if aborting work.
|
|
31260
31262
|
|
|
31261
31263
|
## [OTHER TOOLS]
|
|
31262
|
-
### Beads
|
|
31264
|
+
### Beads - You Have Autonomy to File Issues
|
|
31265
|
+
You can create new beads against this epic when you discover:
|
|
31266
|
+
- **Bugs**: Found a bug while working? File it.
|
|
31267
|
+
- **Tech debt**: Spotted something that needs cleanup? File it.
|
|
31268
|
+
- **Follow-up work**: Task needs more work than scoped? File a follow-up.
|
|
31269
|
+
- **Dependencies**: Need something from another agent? File and link it.
|
|
31270
|
+
|
|
31271
|
+
\`\`\`
|
|
31272
|
+
beads_create(
|
|
31273
|
+
title="<descriptive title>",
|
|
31274
|
+
type="bug", # or "task", "chore"
|
|
31275
|
+
priority=2,
|
|
31276
|
+
parent_id="{epic_id}", # Links to this epic
|
|
31277
|
+
description="Found while working on {bead_id}: <details>"
|
|
31278
|
+
)
|
|
31279
|
+
\`\`\`
|
|
31280
|
+
|
|
31281
|
+
**Don't silently ignore issues.** File them so they get tracked and addressed.
|
|
31282
|
+
|
|
31283
|
+
Other bead operations:
|
|
31263
31284
|
- beads_update(id, status) - Mark blocked if stuck
|
|
31264
|
-
-
|
|
31285
|
+
- beads_query(status="open") - See what else needs work
|
|
31265
31286
|
|
|
31266
31287
|
### Skills
|
|
31267
31288
|
- skills_list() - Discover available skills
|
|
@@ -32164,23 +32185,32 @@ Continuing with completion, but this should be fixed for future subtasks.`;
|
|
|
32164
32185
|
}, null, 2);
|
|
32165
32186
|
}
|
|
32166
32187
|
}
|
|
32167
|
-
const closeResult = await Bun.$`bd close ${args.bead_id} --reason ${args.summary} --json`.quiet().nothrow();
|
|
32188
|
+
const closeResult = await Bun.$`bd close ${args.bead_id} --reason ${args.summary} --json`.cwd(args.project_key).quiet().nothrow();
|
|
32168
32189
|
if (closeResult.exitCode !== 0) {
|
|
32169
32190
|
const stderrOutput = closeResult.stderr.toString().trim();
|
|
32191
|
+
const stdoutOutput = closeResult.stdout.toString().trim();
|
|
32192
|
+
const isNoDatabaseError = stderrOutput.includes("no beads database found");
|
|
32193
|
+
const isNotFoundError = stderrOutput.includes("not found") || stderrOutput.includes("does not exist");
|
|
32170
32194
|
return JSON.stringify({
|
|
32171
32195
|
success: false,
|
|
32172
32196
|
error: "Failed to close bead",
|
|
32173
32197
|
failed_step: "bd close",
|
|
32174
|
-
details: stderrOutput || "Unknown error from bd close command",
|
|
32198
|
+
details: stderrOutput || stdoutOutput || "Unknown error from bd close command",
|
|
32175
32199
|
bead_id: args.bead_id,
|
|
32200
|
+
project_key: args.project_key,
|
|
32176
32201
|
recovery: {
|
|
32177
|
-
steps: [
|
|
32202
|
+
steps: isNoDatabaseError ? [
|
|
32203
|
+
`1. Verify project_key is correct: "${args.project_key}"`,
|
|
32204
|
+
`2. Check .beads/ exists in that directory`,
|
|
32205
|
+
`3. Bead ID prefix "${args.bead_id.split("-")[0]}" should match project`,
|
|
32206
|
+
`4. Try: beads_close(id="${args.bead_id}", reason="...")`
|
|
32207
|
+
] : [
|
|
32178
32208
|
`1. Check bead exists: bd show ${args.bead_id}`,
|
|
32179
32209
|
`2. Check bead status (might already be closed): beads_query()`,
|
|
32180
32210
|
`3. If bead is blocked, unblock first: beads_update(id="${args.bead_id}", status="in_progress")`,
|
|
32181
32211
|
`4. Try closing directly: beads_close(id="${args.bead_id}", reason="...")`
|
|
32182
32212
|
],
|
|
32183
|
-
hint: "If bead is in 'blocked' status, you must change it to 'in_progress' or 'open' before closing."
|
|
32213
|
+
hint: isNoDatabaseError ? `The project_key "${args.project_key}" doesn't have a .beads/ directory. Make sure you're using the correct project path.` : isNotFoundError ? `Bead "${args.bead_id}" not found. It may have been closed already or the ID is incorrect.` : "If bead is in 'blocked' status, you must change it to 'in_progress' or 'open' before closing."
|
|
32184
32214
|
}
|
|
32185
32215
|
}, null, 2);
|
|
32186
32216
|
}
|
|
@@ -34099,6 +34129,85 @@ function guardrailOutput(toolName, output, config2 = DEFAULT_GUARDRAIL_CONFIG) {
|
|
|
34099
34129
|
truncatedLength
|
|
34100
34130
|
};
|
|
34101
34131
|
}
|
|
34132
|
+
|
|
34133
|
+
// src/planning-guardrails.ts
|
|
34134
|
+
var FILE_MODIFICATION_PATTERNS = [
|
|
34135
|
+
/\bimplement\b/i,
|
|
34136
|
+
/\bcreate\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34137
|
+
/\badd\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34138
|
+
/\bupdate\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34139
|
+
/\bmodify\b/i,
|
|
34140
|
+
/\brefactor\b/i,
|
|
34141
|
+
/\bextract\b/i,
|
|
34142
|
+
/\bmigrate\b/i,
|
|
34143
|
+
/\bconvert\b/i,
|
|
34144
|
+
/\brewrite\b/i,
|
|
34145
|
+
/\bfix\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34146
|
+
/\bwrite\b.*\.(ts|js|tsx|jsx|py|rs|go|java|rb|swift|kt)/i,
|
|
34147
|
+
/src\//i,
|
|
34148
|
+
/lib\//i,
|
|
34149
|
+
/packages?\//i,
|
|
34150
|
+
/components?\//i
|
|
34151
|
+
];
|
|
34152
|
+
var TRACKING_PATTERNS = [
|
|
34153
|
+
/\breview\b/i,
|
|
34154
|
+
/\bcheck\b/i,
|
|
34155
|
+
/\bverify\b/i,
|
|
34156
|
+
/\btest\b.*pass/i,
|
|
34157
|
+
/\brun\b.*test/i,
|
|
34158
|
+
/\bdeploy\b/i,
|
|
34159
|
+
/\bmerge\b/i,
|
|
34160
|
+
/\bpr\b/i,
|
|
34161
|
+
/\bpush\b/i,
|
|
34162
|
+
/\bcommit\b/i
|
|
34163
|
+
];
|
|
34164
|
+
function analyzeTodoWrite(args) {
|
|
34165
|
+
const todos = args.todos;
|
|
34166
|
+
if (!todos || !Array.isArray(todos) || todos.length < 6) {
|
|
34167
|
+
return {
|
|
34168
|
+
looksLikeParallelWork: false,
|
|
34169
|
+
fileModificationCount: 0,
|
|
34170
|
+
totalCount: todos?.length ?? 0
|
|
34171
|
+
};
|
|
34172
|
+
}
|
|
34173
|
+
let fileModificationCount = 0;
|
|
34174
|
+
for (const todo of todos) {
|
|
34175
|
+
if (typeof todo !== "object" || todo === null)
|
|
34176
|
+
continue;
|
|
34177
|
+
const content = todo.content ?? "";
|
|
34178
|
+
const isFileModification = FILE_MODIFICATION_PATTERNS.some((pattern) => pattern.test(content));
|
|
34179
|
+
const isTracking = TRACKING_PATTERNS.some((pattern) => pattern.test(content));
|
|
34180
|
+
if (isFileModification && !isTracking) {
|
|
34181
|
+
fileModificationCount++;
|
|
34182
|
+
}
|
|
34183
|
+
}
|
|
34184
|
+
const ratio = fileModificationCount / todos.length;
|
|
34185
|
+
const looksLikeParallelWork = ratio >= 0.5 && fileModificationCount >= 4;
|
|
34186
|
+
if (looksLikeParallelWork) {
|
|
34187
|
+
return {
|
|
34188
|
+
looksLikeParallelWork: true,
|
|
34189
|
+
fileModificationCount,
|
|
34190
|
+
totalCount: todos.length,
|
|
34191
|
+
warning: `⚠️ This looks like a multi-file implementation plan (${fileModificationCount}/${todos.length} items are file modifications).
|
|
34192
|
+
|
|
34193
|
+
Consider using swarm instead:
|
|
34194
|
+
swarm_decompose → beads_create_epic → parallel task spawns
|
|
34195
|
+
|
|
34196
|
+
TodoWrite is for tracking progress, not parallelizable implementation work.
|
|
34197
|
+
Swarm workers can complete these ${fileModificationCount} tasks in parallel.
|
|
34198
|
+
|
|
34199
|
+
(Continuing with todowrite - this is just a suggestion)`
|
|
34200
|
+
};
|
|
34201
|
+
}
|
|
34202
|
+
return {
|
|
34203
|
+
looksLikeParallelWork: false,
|
|
34204
|
+
fileModificationCount,
|
|
34205
|
+
totalCount: todos.length
|
|
34206
|
+
};
|
|
34207
|
+
}
|
|
34208
|
+
function shouldAnalyzeTool(toolName) {
|
|
34209
|
+
return toolName === "todowrite" || toolName === "TodoWrite";
|
|
34210
|
+
}
|
|
34102
34211
|
// src/storage.ts
|
|
34103
34212
|
init_learning();
|
|
34104
34213
|
|
|
@@ -34285,6 +34394,15 @@ var SwarmPlugin = async (input) => {
|
|
|
34285
34394
|
await releaseReservations();
|
|
34286
34395
|
}
|
|
34287
34396
|
},
|
|
34397
|
+
"tool.execute.before": async (input2, output) => {
|
|
34398
|
+
const toolName = input2.tool;
|
|
34399
|
+
if (shouldAnalyzeTool(toolName)) {
|
|
34400
|
+
const analysis = analyzeTodoWrite(output.args);
|
|
34401
|
+
if (analysis.warning) {
|
|
34402
|
+
console.warn(`[swarm-plugin] ${analysis.warning}`);
|
|
34403
|
+
}
|
|
34404
|
+
}
|
|
34405
|
+
},
|
|
34288
34406
|
"tool.execute.after": async (input2, output) => {
|
|
34289
34407
|
const toolName = input2.tool;
|
|
34290
34408
|
if (output.output && typeof output.output === "string") {
|
package/dist/skills.d.ts
CHANGED
|
@@ -233,6 +233,7 @@ export declare const skills_update: {
|
|
|
233
233
|
args: {
|
|
234
234
|
name: import("zod").ZodString;
|
|
235
235
|
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
236
|
+
content: import("zod").ZodOptional<import("zod").ZodString>;
|
|
236
237
|
body: import("zod").ZodOptional<import("zod").ZodString>;
|
|
237
238
|
append_body: import("zod").ZodOptional<import("zod").ZodString>;
|
|
238
239
|
tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
@@ -242,6 +243,7 @@ export declare const skills_update: {
|
|
|
242
243
|
execute(args: {
|
|
243
244
|
name: string;
|
|
244
245
|
description?: string | undefined;
|
|
246
|
+
content?: string | undefined;
|
|
245
247
|
body?: string | undefined;
|
|
246
248
|
append_body?: string | undefined;
|
|
247
249
|
tags?: string[] | undefined;
|
|
@@ -389,6 +391,7 @@ export declare const skillsTools: {
|
|
|
389
391
|
args: {
|
|
390
392
|
name: import("zod").ZodString;
|
|
391
393
|
description: import("zod").ZodOptional<import("zod").ZodString>;
|
|
394
|
+
content: import("zod").ZodOptional<import("zod").ZodString>;
|
|
392
395
|
body: import("zod").ZodOptional<import("zod").ZodString>;
|
|
393
396
|
append_body: import("zod").ZodOptional<import("zod").ZodString>;
|
|
394
397
|
tags: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
|
|
@@ -398,6 +401,7 @@ export declare const skillsTools: {
|
|
|
398
401
|
execute(args: {
|
|
399
402
|
name: string;
|
|
400
403
|
description?: string | undefined;
|
|
404
|
+
content?: string | undefined;
|
|
401
405
|
body?: string | undefined;
|
|
402
406
|
append_body?: string | undefined;
|
|
403
407
|
tags?: string[] | undefined;
|
package/dist/skills.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAoBH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,kCAAkC;IAClC,QAAQ,EAAE,aAAa,CAAC;IACxB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,UAAU,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAYD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAG3D;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAQA;AAmKD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAuD7B;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAGlE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAQtD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAMD;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;;;;;;CAyCtB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;CAoCrB,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;CAwEzB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;CAsDtB,CAAC;AAeH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kCAAkC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,qBAAqB,CA2FvB;AAwGD;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;CA6GxB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-orchestrate.d.ts","sourceRoot":"","sources":["../src/swarm-orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgiBxB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;;;CAuGrB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAoFvB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CA8GzB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CA6E1B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"swarm-orchestrate.d.ts","sourceRoot":"","sources":["../src/swarm-orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgiBxB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU;;;;;;;;CAuGrB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;CAoFvB,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;CA8GzB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CA6E1B,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqjBzB,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkJ/B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;CA6CjC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;CAmClC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;CAmB9B,CAAC;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;CAoJ9B,CAAC;AA4BH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqG3B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;CAsGxB,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgMtB,CAAC;AAMH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAc5B,CAAC"}
|
package/dist/swarm-prompts.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export declare const SUBTASK_PROMPT = "You are a swarm agent working on a subtas
|
|
|
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\n- beads_update(id, status) - Mark blocked if stuck\n-
|
|
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.";
|
|
41
41
|
/**
|
|
42
42
|
* Prompt for self-evaluation before completing a subtask.
|
|
43
43
|
*
|
|
@@ -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,
|
|
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"}
|
package/package.json
CHANGED