opencode-swarm 7.25.0 → 7.25.1

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
@@ -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.25.0",
37
+ version: "7.25.1",
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",
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ var package_default;
33
33
  var init_package = __esm(() => {
34
34
  package_default = {
35
35
  name: "opencode-swarm",
36
- version: "7.25.0",
36
+ version: "7.25.1",
37
37
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
38
38
  main: "dist/index.js",
39
39
  types: "dist/index.d.ts",
@@ -104289,6 +104289,23 @@ function checkReviewerGate(taskId, workingDirectory, stageBParallelEnabled = fal
104289
104289
  if (hasReviewer && hasTestEngineer) {
104290
104290
  return { blocked: false, reason: "" };
104291
104291
  }
104292
+ if (!evidenceIncompleteReason && (!hasReviewer || !hasTestEngineer)) {
104293
+ for (const [, chain] of swarmState.delegationChains) {
104294
+ const hasCoder = chain.some((d) => stripKnownSwarmPrefix(d.to) === "coder");
104295
+ if (hasCoder)
104296
+ continue;
104297
+ for (const delegation of chain) {
104298
+ const target = stripKnownSwarmPrefix(delegation.to);
104299
+ if (target === "reviewer")
104300
+ hasReviewer = true;
104301
+ if (target === "test_engineer")
104302
+ hasTestEngineer = true;
104303
+ }
104304
+ }
104305
+ if (hasReviewer && hasTestEngineer) {
104306
+ return { blocked: false, reason: "" };
104307
+ }
104308
+ }
104292
104309
  }
104293
104310
  const currentStateStr = stateEntries.length > 0 ? stateEntries.join(", ") : "no active sessions";
104294
104311
  const chainEntries = [];
@@ -104348,6 +104365,32 @@ function recoverTaskStateFromDelegations(taskId, directory) {
104348
104365
  }
104349
104366
  }
104350
104367
  }
104368
+ let hasDurableIncompleteGates = false;
104369
+ if (directory) {
104370
+ try {
104371
+ const taskEvidence = readTaskEvidenceRaw(directory, taskId);
104372
+ if (taskEvidence?.gates && Array.isArray(taskEvidence.required_gates) && taskEvidence.required_gates.length > 0) {
104373
+ const gates = taskEvidence.gates;
104374
+ hasDurableIncompleteGates = taskEvidence.required_gates.some((g) => gates[g] == null);
104375
+ }
104376
+ } catch {
104377
+ hasDurableIncompleteGates = true;
104378
+ }
104379
+ }
104380
+ if (!hasDurableIncompleteGates && (!hasReviewer || !hasTestEngineer)) {
104381
+ for (const [, chain] of swarmState.delegationChains) {
104382
+ const hasCoder = chain.some((d) => stripKnownSwarmPrefix(d.to) === "coder");
104383
+ if (hasCoder)
104384
+ continue;
104385
+ for (const delegation of chain) {
104386
+ const target = stripKnownSwarmPrefix(delegation.to);
104387
+ if (target === "reviewer")
104388
+ hasReviewer = true;
104389
+ if (target === "test_engineer")
104390
+ hasTestEngineer = true;
104391
+ }
104392
+ }
104393
+ }
104351
104394
  if ((!hasReviewer || !hasTestEngineer) && directory) {
104352
104395
  try {
104353
104396
  const evidence = readTaskEvidenceRaw(directory, taskId);
@@ -104494,7 +104537,7 @@ async function executeUpdateTaskStatus(args2, fallbackDir, ctx) {
104494
104537
  try {
104495
104538
  fs107.writeSync(fd, JSON.stringify({
104496
104539
  taskId: args2.task_id,
104497
- required_gates: ["reviewer", "test_engineer"],
104540
+ required_gates: [],
104498
104541
  gates: {}
104499
104542
  }, null, 2));
104500
104543
  writeOk = true;
@@ -104525,7 +104568,7 @@ async function executeUpdateTaskStatus(args2, fallbackDir, ctx) {
104525
104568
  if (reviewerCheck.blocked) {
104526
104569
  return {
104527
104570
  success: false,
104528
- message: "Gate check failed: reviewer delegation required before marking task as completed",
104571
+ message: "Gate check failed: required QA gates not yet satisfied for task " + args2.task_id,
104529
104572
  errors: [reviewerCheck.reason]
104530
104573
  };
104531
104574
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.25.0",
3
+ "version": "7.25.1",
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",