opencode-swarm 7.11.1 → 7.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -5
- package/dist/cli/index.js +39 -10
- package/dist/commands/command-names.d.ts +4 -0
- package/dist/commands/command-names.test.d.ts +1 -0
- package/dist/commands/conflict-registry.d.ts +2 -2
- package/dist/commands/index.d.ts +2 -0
- package/dist/commands/registry.d.ts +22 -5
- package/dist/council/council-service.d.ts +3 -3
- package/dist/index.js +611 -441
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -217,12 +217,12 @@ in your `opencode-swarm.json`.
|
|
|
217
217
|
|
|
218
218
|
## Commands
|
|
219
219
|
|
|
220
|
-
All
|
|
220
|
+
All 43 subcommands at a glance:
|
|
221
221
|
|
|
222
222
|
```bash
|
|
223
223
|
/swarm help [command] # List all commands or get detailed help for a specific command
|
|
224
224
|
/swarm status # Current phase and task
|
|
225
|
-
/swarm plan [N]
|
|
225
|
+
/swarm show-plan [N] # Full plan or filtered by phase
|
|
226
226
|
/swarm agents # Registered agents and models
|
|
227
227
|
/swarm diagnose # Health check
|
|
228
228
|
/swarm evidence [task] # Test and review results
|
|
@@ -233,7 +233,7 @@ Use `/swarm help` to see all available commands categorized by function. Use `/s
|
|
|
233
233
|
|
|
234
234
|
Nine commands display a ⚠️ warning in help output because they share names with Claude Code built-in slash commands (e.g., `/plan`, `/reset`, `/status`). The warning reminds you to always use `/swarm <command>` — the bare CC command does something different and sometimes destructive. See [docs/commands.md#claude-code-command-conflicts](docs/commands.md#claude-code-command-conflicts) for the full conflict registry.
|
|
235
235
|
|
|
236
|
-
See [docs/commands.md](docs/commands.md) for the full reference (
|
|
236
|
+
See [docs/commands.md](docs/commands.md) for the full reference (43 commands).
|
|
237
237
|
|
|
238
238
|
## Command Aliases
|
|
239
239
|
|
|
@@ -248,6 +248,8 @@ Some commands are available under deprecated names for backwards compatibility.
|
|
|
248
248
|
| `/swarm info` | `/swarm status` |
|
|
249
249
|
| `/swarm list-agents` | `/swarm agents` |
|
|
250
250
|
| `/swarm health` | `/swarm diagnose` |
|
|
251
|
+
| `/swarm plan` | `/swarm show-plan` |
|
|
252
|
+
| `/swarm close` | `/swarm finalize` |
|
|
251
253
|
| `/swarm check` | `/swarm preflight` |
|
|
252
254
|
| `/swarm clear` | `/swarm reset-session` |
|
|
253
255
|
|
|
@@ -1321,7 +1323,8 @@ Control how tool outputs are summarized for LLM context.
|
|
|
1321
1323
|
|---------|-------------|
|
|
1322
1324
|
| `/swarm help [command]` | List all commands or get detailed help for a specific command |
|
|
1323
1325
|
| `/swarm status` | Current phase, task progress, agent count |
|
|
1324
|
-
| `/swarm plan [N]` | Full plan or filtered by phase |
|
|
1326
|
+
| `/swarm show-plan [N]` | Full plan or filtered by phase |
|
|
1327
|
+
| `/swarm plan [N]` | Deprecated alias for `/swarm show-plan [N]` |
|
|
1325
1328
|
| `/swarm agents` | Registered agents with models and permissions |
|
|
1326
1329
|
| `/swarm history` | Completed phases with status |
|
|
1327
1330
|
| `/swarm config` | Current resolved configuration |
|
|
@@ -1340,7 +1343,8 @@ Control how tool outputs are summarized for LLM context.
|
|
|
1340
1343
|
| `/swarm specify [description]` | Generate or import a feature specification |
|
|
1341
1344
|
| `/swarm clarify [topic]` | Clarify and refine an existing feature specification |
|
|
1342
1345
|
| `/swarm analyze` | Analyze spec.md vs plan.md for requirement coverage gaps |
|
|
1343
|
-
| `/swarm
|
|
1346
|
+
| `/swarm finalize [--prune-branches]` | Idempotent session close-out: retrospectives, lesson curation, evidence archive, context.md reset, config-backup cleanup, optional branch pruning |
|
|
1347
|
+
| `/swarm close [--prune-branches]` | Deprecated alias for `/swarm finalize [--prune-branches]` |
|
|
1344
1348
|
| `/swarm write-retro` | Write a phase retrospective manually |
|
|
1345
1349
|
| `/swarm handoff` | Generate a handoff summary for context-budget-critical sessions |
|
|
1346
1350
|
| `/swarm simulate` | Simulate plan execution without writing code |
|
package/dist/cli/index.js
CHANGED
|
@@ -34,7 +34,7 @@ var package_default;
|
|
|
34
34
|
var init_package = __esm(() => {
|
|
35
35
|
package_default = {
|
|
36
36
|
name: "opencode-swarm",
|
|
37
|
-
version: "7.
|
|
37
|
+
version: "7.13.0",
|
|
38
38
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
39
39
|
main: "dist/index.js",
|
|
40
40
|
types: "dist/index.d.ts",
|
|
@@ -20682,7 +20682,7 @@ var init_model_limits = __esm(() => {
|
|
|
20682
20682
|
var init_normalize_tool_name = () => {};
|
|
20683
20683
|
|
|
20684
20684
|
// src/hooks/guardrails.ts
|
|
20685
|
-
var storedInputArgs, toolCallsSinceLastWrite, noOpWarningIssued, consecutiveNoToolTurns, DC_SAFE_TARGETS, DC_FS_ROOTS, pathNormalizationCache, globMatcherCache;
|
|
20685
|
+
var storedInputArgs, TRANSIENT_STATUS_CODES, toolCallsSinceLastWrite, noOpWarningIssued, consecutiveNoToolTurns, DC_SAFE_TARGETS, DC_FS_ROOTS, pathNormalizationCache, globMatcherCache;
|
|
20686
20686
|
var init_guardrails = __esm(() => {
|
|
20687
20687
|
init_quick_lru();
|
|
20688
20688
|
init_agents2();
|
|
@@ -20702,6 +20702,7 @@ var init_guardrails = __esm(() => {
|
|
|
20702
20702
|
init_model_limits();
|
|
20703
20703
|
init_normalize_tool_name();
|
|
20704
20704
|
storedInputArgs = new Map;
|
|
20705
|
+
TRANSIENT_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504, 529]);
|
|
20705
20706
|
toolCallsSinceLastWrite = new Map;
|
|
20706
20707
|
noOpWarningIssued = new Set;
|
|
20707
20708
|
consecutiveNoToolTurns = new Map;
|
|
@@ -48520,6 +48521,14 @@ var init_write_retro2 = __esm(() => {
|
|
|
48520
48521
|
init_write_retro();
|
|
48521
48522
|
});
|
|
48522
48523
|
|
|
48524
|
+
// src/commands/command-names.ts
|
|
48525
|
+
var COMMAND_NAMES, COMMAND_NAME_SET;
|
|
48526
|
+
var init_command_names = __esm(() => {
|
|
48527
|
+
init_registry();
|
|
48528
|
+
COMMAND_NAMES = Object.freeze(Object.keys(COMMAND_REGISTRY));
|
|
48529
|
+
COMMAND_NAME_SET = new Set(COMMAND_NAMES);
|
|
48530
|
+
});
|
|
48531
|
+
|
|
48523
48532
|
// src/commands/index.ts
|
|
48524
48533
|
var exports_commands = {};
|
|
48525
48534
|
__export(exports_commands, {
|
|
@@ -48567,7 +48576,9 @@ __export(exports_commands, {
|
|
|
48567
48576
|
createSwarmCommandHandler: () => createSwarmCommandHandler,
|
|
48568
48577
|
buildHelpText: () => buildHelpText,
|
|
48569
48578
|
VALID_COMMANDS: () => VALID_COMMANDS,
|
|
48570
|
-
COMMAND_REGISTRY: () => COMMAND_REGISTRY
|
|
48579
|
+
COMMAND_REGISTRY: () => COMMAND_REGISTRY,
|
|
48580
|
+
COMMAND_NAME_SET: () => COMMAND_NAME_SET,
|
|
48581
|
+
COMMAND_NAMES: () => COMMAND_NAMES
|
|
48571
48582
|
});
|
|
48572
48583
|
import fs22 from "fs";
|
|
48573
48584
|
import path37 from "path";
|
|
@@ -48747,6 +48758,7 @@ var init_commands = __esm(() => {
|
|
|
48747
48758
|
init_benchmark();
|
|
48748
48759
|
init_checkpoint2();
|
|
48749
48760
|
init_close();
|
|
48761
|
+
init_command_names();
|
|
48750
48762
|
init_config2();
|
|
48751
48763
|
init_council();
|
|
48752
48764
|
init_curate();
|
|
@@ -49004,11 +49016,19 @@ var init_registry = __esm(() => {
|
|
|
49004
49016
|
category: "core",
|
|
49005
49017
|
clashesWithNativeCcCommand: "/status"
|
|
49006
49018
|
},
|
|
49019
|
+
"show-plan": {
|
|
49020
|
+
handler: (ctx) => handlePlanCommand(ctx.directory, ctx.args),
|
|
49021
|
+
description: "Show current plan (optionally filter by phase number)",
|
|
49022
|
+
category: "core",
|
|
49023
|
+
args: "[phase-number]"
|
|
49024
|
+
},
|
|
49007
49025
|
plan: {
|
|
49008
49026
|
handler: (ctx) => handlePlanCommand(ctx.directory, ctx.args),
|
|
49009
|
-
description: "Show plan (
|
|
49027
|
+
description: "Show current plan (deprecated alias for /swarm show-plan)",
|
|
49010
49028
|
category: "core",
|
|
49011
|
-
clashesWithNativeCcCommand: "/plan"
|
|
49029
|
+
clashesWithNativeCcCommand: "/plan",
|
|
49030
|
+
aliasOf: "show-plan",
|
|
49031
|
+
deprecated: true
|
|
49012
49032
|
},
|
|
49013
49033
|
agents: {
|
|
49014
49034
|
handler: (ctx) => Promise.resolve(handleAgentsCommand(ctx.agents, undefined)),
|
|
@@ -49178,13 +49198,22 @@ var init_registry = __esm(() => {
|
|
|
49178
49198
|
args: "--threshold <number>, --min-commits <number>",
|
|
49179
49199
|
category: "diagnostics"
|
|
49180
49200
|
},
|
|
49181
|
-
|
|
49201
|
+
finalize: {
|
|
49182
49202
|
handler: (ctx) => handleCloseCommand(ctx.directory, ctx.args),
|
|
49183
|
-
description: "Use /swarm
|
|
49203
|
+
description: "Use /swarm finalize to finalize the swarm project and archive evidence",
|
|
49184
49204
|
details: "Idempotent 4-stage terminal finalization: (1) finalize writes retrospectives for in-progress phases, (2) archive creates timestamped bundle of swarm artifacts and evidence, (3) clean removes active-state files for a clean slate, (4) align performs safe git ff-only to main. Resets agent sessions and delegation chains. Reads .swarm/close-lessons.md for explicit lessons and runs curation.",
|
|
49185
49205
|
args: "--prune-branches",
|
|
49186
49206
|
category: "core"
|
|
49187
49207
|
},
|
|
49208
|
+
close: {
|
|
49209
|
+
handler: (ctx) => handleCloseCommand(ctx.directory, ctx.args),
|
|
49210
|
+
description: "Use /swarm close (deprecated alias) to finalize and archive swarm state",
|
|
49211
|
+
details: "Deprecated alias for /swarm finalize. Preserved for backward compatibility.",
|
|
49212
|
+
args: "--prune-branches",
|
|
49213
|
+
category: "core",
|
|
49214
|
+
aliasOf: "finalize",
|
|
49215
|
+
deprecated: true
|
|
49216
|
+
},
|
|
49188
49217
|
simulate: {
|
|
49189
49218
|
handler: (ctx) => handleSimulateCommand(ctx.directory, ctx.args),
|
|
49190
49219
|
description: "Dry-run hidden coupling analysis with configurable thresholds",
|
|
@@ -49218,9 +49247,9 @@ var init_registry = __esm(() => {
|
|
|
49218
49247
|
},
|
|
49219
49248
|
council: {
|
|
49220
49249
|
handler: (ctx) => handleCouncilCommand(ctx.directory, ctx.args),
|
|
49221
|
-
description: "Enter architect MODE: COUNCIL \u2014 multi-model deliberation [question] [--spec-review]",
|
|
49222
|
-
args: "<question> [--spec-review]",
|
|
49223
|
-
details: "Triggers the architect to convene a three-agent General Council: Generalist (reviewer model), Skeptic (critic model), and Domain Expert (SME model). " + "The architect first runs 1\u20133 targeted web searches and passes a compiled RESEARCH CONTEXT " + "to all three agents before dispatching them in parallel. Agents deliberate using the NSED peer-review protocol (Round 1 independent analysis, Round 2 MAINTAIN/CONCEDE/NUANCE for disagreements). The architect synthesizes the final answer directly from convene_general_council output. --spec-review switches to single-pass advisory mode for spec review. Requires council.general.enabled: true and a search API key in opencode-swarm.json.",
|
|
49250
|
+
description: "Enter architect MODE: COUNCIL \u2014 multi-model deliberation [question] [--preset <name>] [--spec-review]",
|
|
49251
|
+
args: "<question> [--preset <name>] [--spec-review]",
|
|
49252
|
+
details: "Triggers the architect to convene a three-agent General Council: Generalist (reviewer model), Skeptic (critic model), and Domain Expert (SME model). Use --preset <name> to choose a named member preset from council.general.presets. " + "The architect first runs 1\u20133 targeted web searches and passes a compiled RESEARCH CONTEXT " + "to all three agents before dispatching them in parallel. Agents deliberate using the NSED peer-review protocol (Round 1 independent analysis, Round 2 MAINTAIN/CONCEDE/NUANCE for disagreements). The architect synthesizes the final answer directly from convene_general_council output. --spec-review switches to single-pass advisory mode for spec review. Requires council.general.enabled: true and a search API key in opencode-swarm.json.",
|
|
49224
49253
|
category: "agent"
|
|
49225
49254
|
},
|
|
49226
49255
|
"pr-review": {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -17,12 +17,12 @@ export interface CommandConflict {
|
|
|
17
17
|
disambiguationNote: string;
|
|
18
18
|
}
|
|
19
19
|
export declare const CLAUDE_CODE_CONFLICTS: readonly [{
|
|
20
|
-
readonly swarmCommand: "plan";
|
|
20
|
+
readonly swarmCommand: "show-plan";
|
|
21
21
|
readonly ccCommand: "/plan";
|
|
22
22
|
readonly severity: "CRITICAL";
|
|
23
23
|
readonly ccBehavior: "Enters Claude Code plan mode — Claude proposes all actions before executing them";
|
|
24
24
|
readonly swarmBehavior: "Displays the current .swarm/plan.md task list";
|
|
25
|
-
readonly disambiguationNote: "Use /swarm plan to read the swarm task plan. NEVER invoke the bare /plan command — it enters Claude Code plan mode and blocks execution.";
|
|
25
|
+
readonly disambiguationNote: "Use /swarm show-plan to read the swarm task plan. NEVER invoke the bare /plan command — it enters Claude Code plan mode and blocks execution.";
|
|
26
26
|
}, {
|
|
27
27
|
readonly swarmCommand: "reset";
|
|
28
28
|
readonly ccCommand: "/reset";
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { handleBrainstormCommand } from './brainstorm';
|
|
|
8
8
|
export { handleCheckpointCommand } from './checkpoint';
|
|
9
9
|
export { handleClarifyCommand } from './clarify';
|
|
10
10
|
export { handleCloseCommand } from './close';
|
|
11
|
+
export type { CommandName } from './command-names.js';
|
|
12
|
+
export { COMMAND_NAME_SET, COMMAND_NAMES } from './command-names.js';
|
|
11
13
|
export { handleConfigCommand } from './config';
|
|
12
14
|
export { handleCouncilCommand } from './council';
|
|
13
15
|
export { handleCurateCommand } from './curate';
|
|
@@ -50,11 +50,19 @@ export declare const COMMAND_REGISTRY: {
|
|
|
50
50
|
readonly category: "core";
|
|
51
51
|
readonly clashesWithNativeCcCommand: "/status";
|
|
52
52
|
};
|
|
53
|
+
readonly 'show-plan': {
|
|
54
|
+
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
55
|
+
readonly description: "Show current plan (optionally filter by phase number)";
|
|
56
|
+
readonly category: "core";
|
|
57
|
+
readonly args: "[phase-number]";
|
|
58
|
+
};
|
|
53
59
|
readonly plan: {
|
|
54
60
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
55
|
-
readonly description: "Show plan (
|
|
61
|
+
readonly description: "Show current plan (deprecated alias for /swarm show-plan)";
|
|
56
62
|
readonly category: "core";
|
|
57
63
|
readonly clashesWithNativeCcCommand: "/plan";
|
|
64
|
+
readonly aliasOf: "show-plan";
|
|
65
|
+
readonly deprecated: true;
|
|
58
66
|
};
|
|
59
67
|
readonly agents: {
|
|
60
68
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
@@ -224,13 +232,22 @@ export declare const COMMAND_REGISTRY: {
|
|
|
224
232
|
readonly args: "--threshold <number>, --min-commits <number>";
|
|
225
233
|
readonly category: "diagnostics";
|
|
226
234
|
};
|
|
227
|
-
readonly
|
|
235
|
+
readonly finalize: {
|
|
228
236
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
229
|
-
readonly description: "Use /swarm
|
|
237
|
+
readonly description: "Use /swarm finalize to finalize the swarm project and archive evidence";
|
|
230
238
|
readonly details: "Idempotent 4-stage terminal finalization: (1) finalize writes retrospectives for in-progress phases, (2) archive creates timestamped bundle of swarm artifacts and evidence, (3) clean removes active-state files for a clean slate, (4) align performs safe git ff-only to main. Resets agent sessions and delegation chains. Reads .swarm/close-lessons.md for explicit lessons and runs curation.";
|
|
231
239
|
readonly args: "--prune-branches";
|
|
232
240
|
readonly category: "core";
|
|
233
241
|
};
|
|
242
|
+
readonly close: {
|
|
243
|
+
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
244
|
+
readonly description: "Use /swarm close (deprecated alias) to finalize and archive swarm state";
|
|
245
|
+
readonly details: "Deprecated alias for /swarm finalize. Preserved for backward compatibility.";
|
|
246
|
+
readonly args: "--prune-branches";
|
|
247
|
+
readonly category: "core";
|
|
248
|
+
readonly aliasOf: "finalize";
|
|
249
|
+
readonly deprecated: true;
|
|
250
|
+
};
|
|
234
251
|
readonly simulate: {
|
|
235
252
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
236
253
|
readonly description: "Dry-run hidden coupling analysis with configurable thresholds";
|
|
@@ -264,8 +281,8 @@ export declare const COMMAND_REGISTRY: {
|
|
|
264
281
|
};
|
|
265
282
|
readonly council: {
|
|
266
283
|
readonly handler: (ctx: CommandContext) => Promise<string>;
|
|
267
|
-
readonly description: "Enter architect MODE: COUNCIL — multi-model deliberation [question] [--spec-review]";
|
|
268
|
-
readonly args: "<question> [--spec-review]";
|
|
284
|
+
readonly description: "Enter architect MODE: COUNCIL — multi-model deliberation [question] [--preset <name>] [--spec-review]";
|
|
285
|
+
readonly args: "<question> [--preset <name>] [--spec-review]";
|
|
269
286
|
readonly details: string;
|
|
270
287
|
readonly category: "agent";
|
|
271
288
|
};
|
|
@@ -15,7 +15,7 @@ export declare function synthesizeCouncilVerdicts(taskId: string, swarmId: strin
|
|
|
15
15
|
* Reuses the same veto detection, conflict detection, and finding
|
|
16
16
|
* classification logic as per-task council, but scoped to a phase number.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
18
|
+
* Pure computation — no I/O. File writes are the caller's responsibility
|
|
19
|
+
* (see writePhaseCouncilEvidence in submit-phase-council-verdicts.ts).
|
|
20
20
|
*/
|
|
21
|
-
export declare function synthesizePhaseCouncilAdvisory(phaseNumber: number, phaseSummary: string, verdicts: CouncilMemberVerdict[], roundNumber: number, config?: Partial<CouncilConfig>,
|
|
21
|
+
export declare function synthesizePhaseCouncilAdvisory(phaseNumber: number, phaseSummary: string, verdicts: CouncilMemberVerdict[], roundNumber: number, config?: Partial<CouncilConfig>, _workingDir?: string): PhaseCouncilSynthesis;
|