opencode-swarm 7.51.4 → 7.51.6

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/dist/cli/index.js CHANGED
@@ -52,7 +52,7 @@ var package_default;
52
52
  var init_package = __esm(() => {
53
53
  package_default = {
54
54
  name: "opencode-swarm",
55
- version: "7.51.4",
55
+ version: "7.51.6",
56
56
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
57
57
  main: "dist/index.js",
58
58
  types: "dist/index.d.ts",
@@ -100,7 +100,8 @@ var init_package = __esm(() => {
100
100
  dev: "bun run build && opencode",
101
101
  "package:smoke": "node scripts/package-smoke.mjs",
102
102
  prepare: "bun run build",
103
- "repro:704": "node scripts/repro-704.mjs"
103
+ "repro:704": "node scripts/repro-704.mjs",
104
+ "repro:1144": "bun scripts/repro-1144.mjs"
104
105
  },
105
106
  dependencies: {
106
107
  "@opencode-ai/plugin": "^1.1.53",
package/dist/index.js CHANGED
@@ -69,7 +69,7 @@ var package_default;
69
69
  var init_package = __esm(() => {
70
70
  package_default = {
71
71
  name: "opencode-swarm",
72
- version: "7.51.4",
72
+ version: "7.51.6",
73
73
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
74
74
  main: "dist/index.js",
75
75
  types: "dist/index.d.ts",
@@ -117,7 +117,8 @@ var init_package = __esm(() => {
117
117
  dev: "bun run build && opencode",
118
118
  "package:smoke": "node scripts/package-smoke.mjs",
119
119
  prepare: "bun run build",
120
- "repro:704": "node scripts/repro-704.mjs"
120
+ "repro:704": "node scripts/repro-704.mjs",
121
+ "repro:1144": "bun scripts/repro-1144.mjs"
121
122
  },
122
123
  dependencies: {
123
124
  "@opencode-ai/plugin": "^1.1.53",
@@ -86511,20 +86512,34 @@ If you call @coder instead of @${swarmId}_coder, the call will FAIL or go to the
86511
86512
  agents.push(applyOverrides(testEngineer, swarmAgents, swarmPrefix, quiet));
86512
86513
  }
86513
86514
  if (pluginConfig?.council?.general?.enabled === true) {
86515
+ let councilAgentsCreated = 0;
86514
86516
  if (!isAgentDisabled("reviewer", swarmAgents, swarmPrefix)) {
86515
86517
  const councilGeneralist = createReviewerAgent(getModel("reviewer"), GENERALIST_COUNCIL_PROMPT);
86516
86518
  councilGeneralist.name = prefixName("council_generalist");
86517
86519
  agents.push(applyOverrides(councilGeneralist, swarmAgents, swarmPrefix, quiet));
86520
+ councilAgentsCreated++;
86518
86521
  }
86519
86522
  if (!isAgentDisabled("critic", swarmAgents, swarmPrefix)) {
86520
86523
  const councilSkeptic = createCriticAgent(getModel("critic"), SKEPTIC_COUNCIL_PROMPT);
86521
86524
  councilSkeptic.name = prefixName("council_skeptic");
86522
86525
  agents.push(applyOverrides(councilSkeptic, swarmAgents, swarmPrefix, quiet));
86526
+ councilAgentsCreated++;
86523
86527
  }
86524
86528
  if (!isAgentDisabled("sme", swarmAgents, swarmPrefix)) {
86525
86529
  const councilDomainExpert = createSMEAgent(getModel("sme"), DOMAIN_EXPERT_COUNCIL_PROMPT);
86526
86530
  councilDomainExpert.name = prefixName("council_domain_expert");
86527
86531
  agents.push(applyOverrides(councilDomainExpert, swarmAgents, swarmPrefix, quiet));
86532
+ councilAgentsCreated++;
86533
+ }
86534
+ if (councilAgentsCreated < 3) {
86535
+ const missing = [];
86536
+ if (isAgentDisabled("reviewer", swarmAgents, swarmPrefix))
86537
+ missing.push("council_generalist (requires reviewer)");
86538
+ if (isAgentDisabled("critic", swarmAgents, swarmPrefix))
86539
+ missing.push("council_skeptic (requires critic)");
86540
+ if (isAgentDisabled("sme", swarmAgents, swarmPrefix))
86541
+ missing.push("council_domain_expert (requires sme)");
86542
+ addDeferredWarning(`[opencode-swarm] council.general.enabled is true but only ${councilAgentsCreated}/3 council agents could be registered because the following base agents are disabled: ${missing.join(", ")}. Re-enable those agents or accept a reduced council.`);
86528
86543
  }
86529
86544
  if (pluginConfig?.council?.general?.moderatorModel !== undefined) {
86530
86545
  addDeferredWarning("[opencode-swarm] council.general.moderatorModel is deprecated and ignored. The architect now synthesizes the final answer directly using inline output rules. Remove this field (and council.general.moderator if set) from opencode-swarm.json to silence this warning.");
@@ -96167,6 +96182,21 @@ function addEdge(graph, edge) {
96167
96182
  updateGraphMetadata(graph);
96168
96183
  }
96169
96184
  }
96185
+ function buildLoopEdgeKey(edge) {
96186
+ return `${edge.source}\x00${edge.target}\x00${edge.importSpecifier}`;
96187
+ }
96188
+ function appendNodeFast(graph, node) {
96189
+ validateGraphNode(node);
96190
+ graph.nodes[normalizeGraphPath(node.filePath)] = node;
96191
+ }
96192
+ function appendEdgeFast(graph, edge, seenEdgeKeys) {
96193
+ validateGraphEdge(edge);
96194
+ const key = buildLoopEdgeKey(edge);
96195
+ if (seenEdgeKeys.has(key))
96196
+ return;
96197
+ seenEdgeKeys.add(key);
96198
+ graph.edges.push(edge);
96199
+ }
96170
96200
  function resolveModuleSpecifier(workspaceRoot, sourceFile, specifier) {
96171
96201
  if (containsControlChars(specifier)) {
96172
96202
  return null;
@@ -96480,13 +96510,14 @@ async function buildWorkspaceGraphAsync(workspaceRoot, options) {
96480
96510
  if (stats.truncated) {
96481
96511
  warn(`[repo-graph] Walk truncated: collected ${sourceFiles.length} files within ` + `${walkBudgetMs}ms / ${maxFiles}-file budget.`);
96482
96512
  }
96513
+ const seenEdges = new Set;
96483
96514
  let processedSinceYield = 0;
96484
96515
  for (const filePath of sourceFiles) {
96485
96516
  const result = scanFile(filePath, absoluteRoot, maxFileSize);
96486
96517
  if (result.node) {
96487
- upsertNode(graph, result.node);
96518
+ appendNodeFast(graph, result.node);
96488
96519
  for (const edge of result.edges) {
96489
- addEdge(graph, edge);
96520
+ appendEdgeFast(graph, edge, seenEdges);
96490
96521
  }
96491
96522
  stats.filesScanned++;
96492
96523
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.51.4",
3
+ "version": "7.51.6",
4
4
  "description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -48,7 +48,8 @@
48
48
  "dev": "bun run build && opencode",
49
49
  "package:smoke": "node scripts/package-smoke.mjs",
50
50
  "prepare": "bun run build",
51
- "repro:704": "node scripts/repro-704.mjs"
51
+ "repro:704": "node scripts/repro-704.mjs",
52
+ "repro:1144": "bun scripts/repro-1144.mjs"
52
53
  },
53
54
  "dependencies": {
54
55
  "@opencode-ai/plugin": "^1.1.53",