opencode-swarm 7.126.5 → 7.126.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.
@@ -824,6 +824,21 @@ specialist review outside this canonical ledger, but supplementary work never
824
824
  replaces these portable rows. The `unclassified-risk` lane always runs to cover
825
825
  novel failure modes and classification gaps.
826
826
 
827
+ > **Trigger-ID namespace — do not mix (issue #1931).** The `trigger_id` field
828
+ > passed to `write_pr_review_trigger_eval` accepts **only** the 11 micro-lane
829
+ > IDs in the table below. Three different namespaces appear in this skill and
830
+ > they are NOT interchangeable:
831
+ >
832
+ > | Namespace | Example values | Used where? | Valid as `trigger_id`? |
833
+ > | --- | --- | --- | --- |
834
+ > | Micro-lane IDs (this table) | `auth-identity-secrets`, `untrusted-input-boundaries`, ... | `workflow_lane` of `swarm-pr-review:micro` dispatch; `trigger_id` of trigger-eval rows | **YES — only these** |
835
+ > | Base-lane IDs | `intent-architecture`, `correctness-state`, `tests-falsifiability`, `security-trust`, `reliability-performance`, `compatibility-delivery` | `workflow_lane` of `swarm-pr-review:base` dispatch; validated by `enforcePrReviewBaseDimensions` | NO |
836
+ > | Dispatch modes | `swarm-pr-review:base`, `swarm-pr-review:micro`, `swarm-pr-review:reviewer`, `swarm-pr-review:critic` | `mode` field of `dispatch_lanes_async` | NO |
837
+ >
838
+ > The writer rejects unknown trigger IDs with the list of valid IDs. Short
839
+ > informal names (`correctness`, `security`, `deps`, `docs`, `tests`, `perf`)
840
+ > sometimes appear in prose summaries; they are shorthand, not literal IDs.
841
+
827
842
  | Trigger ID | Scope | Trigger in diff or context pack | Launch micro-lane | Invariants to check |
828
843
  |---|---|---|---|---|
829
844
  | `auth-identity-secrets` | universal | authentication, authorization, identity, sessions, permissions, secrets, cryptography | Identity and secret boundaries | least privilege, confused-deputy paths, credential lifecycle, cryptographic misuse, safe defaults |
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  createCuratorLLMDelegate
4
- } from "./index-hczdkknj.js";
4
+ } from "./index-8exjgmrz.js";
5
5
  import"./index-v4n224r1.js";
6
6
  import"./index-cpssctv1.js";
7
7
  import"./index-kk1scggc.js";
@@ -14,7 +14,7 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-hczdkknj.js";
17
+ } from "./index-8exjgmrz.js";
18
18
  import"./index-v4n224r1.js";
19
19
  import"./index-cpssctv1.js";
20
20
  import"./index-kk1scggc.js";
@@ -1,8 +1,8 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-0y19k18q.js";
5
- import"./index-hczdkknj.js";
4
+ } from "./index-w3q49fy4.js";
5
+ import"./index-8exjgmrz.js";
6
6
  import"./index-v4n224r1.js";
7
7
  import"./index-cpssctv1.js";
8
8
  import"./index-kk1scggc.js";
@@ -7,7 +7,7 @@ import {
7
7
  isHiveEligible,
8
8
  promoteFromSwarm,
9
9
  promoteToHive
10
- } from "./index-hczdkknj.js";
10
+ } from "./index-8exjgmrz.js";
11
11
  import"./index-v4n224r1.js";
12
12
  import"./index-cpssctv1.js";
13
13
  import"./index-kk1scggc.js";
@@ -962,10 +962,10 @@ function assertCurrentCheckoutHead(directory, expectedHead) {
962
962
  const normalizedExpected = normalizePrHeadSha(expectedHead);
963
963
  const currentHead = _test_exports.resolveCurrentGitHead(directory)?.trim();
964
964
  if (!currentHead) {
965
- throw new Error(`BLOCKED: cannot verify the current Git HEAD against PR head "${normalizedExpected}"`);
965
+ throw new Error(`BLOCKED: cannot resolve the current Git HEAD in "${directory}" to verify against PR head "${normalizedExpected}". ` + `This means Git could not resolve HEAD (the working directory may not be a Git repository, ` + `HEAD may be unborn, the commit object may be missing in a shallow clone, the Git binary may not be on PATH, ` + `or the bounded Git invocation may have timed out). ` + `Verify with: git -C "${directory}" rev-parse --verify HEAD^{commit}`);
966
966
  }
967
967
  if (currentHead.toLowerCase() !== normalizedExpected.toLowerCase()) {
968
- throw new Error(`BLOCKED: current checkout HEAD "${currentHead}" does not match PR head "${normalizedExpected}"`);
968
+ throw new Error(`BLOCKED: current checkout HEAD "${currentHead}" does not match PR head "${normalizedExpected}" ` + `(working directory: "${directory}"). ` + `Check out the exact PR head with: git -C "${directory}" switch --detach ${normalizedExpected}`);
969
969
  }
970
970
  return normalizedExpected;
971
971
  }
@@ -1010,7 +1010,7 @@ var _test_exports = {
1010
1010
  async function requireAnyActiveState(directory, sessionID) {
1011
1011
  const state = await readPrWorkflowGateState(directory, sessionID);
1012
1012
  if (!state) {
1013
- throw new Error(`BLOCKED: no active PR workflow gate for session "${normalizeSessionID(sessionID)}"`);
1013
+ throw new Error(`BLOCKED: no active PR workflow gate for session "${normalizeSessionID(sessionID)}". ` + `The gate is activated by running \`/swarm pr-review <pr-ref>\` (PR_REVIEW) or \`/swarm pr-feedback <pr-ref>\` (PR_FEEDBACK), ` + `or by the first dispatch_lanes_async call with mode "swarm-pr-review:*" / "swarm-pr-feedback:*".`);
1014
1014
  }
1015
1015
  return state;
1016
1016
  }
@@ -12280,11 +12280,11 @@ var _internals15 = {
12280
12280
  }
12281
12281
  },
12282
12282
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
12283
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-5crbtfm1.js");
12283
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-zmff7bha.js");
12284
12284
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
12285
12285
  },
12286
12286
  checkHivePromotions: async (entries, knowledgeConfig, directory) => {
12287
- const { checkHivePromotions } = await import("./hive-promoter-9d2g1xf3.js");
12287
+ const { checkHivePromotions } = await import("./hive-promoter-s60fcnq0.js");
12288
12288
  return checkHivePromotions(entries, knowledgeConfig, directory);
12289
12289
  },
12290
12290
  applyProposalTriage: async (directory, triage) => {
@@ -20151,8 +20151,8 @@ var _internals28 = {
20151
20151
  loadCuratorDeps: async () => {
20152
20152
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
20153
20153
  import("./schema-2x7wsb0n.js"),
20154
- import("./curator-5crbtfm1.js"),
20155
- import("./curator-llm-factory-y24xw3j4.js")
20154
+ import("./curator-zmff7bha.js"),
20155
+ import("./curator-llm-factory-ffseqhr4.js")
20156
20156
  ]);
20157
20157
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
20158
20158
  }
@@ -20651,7 +20651,7 @@ import { fileURLToPath } from "url";
20651
20651
  // package.json
20652
20652
  var package_default = {
20653
20653
  name: "opencode-swarm",
20654
- version: "7.126.5",
20654
+ version: "7.126.6",
20655
20655
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
20656
20656
  main: "dist/index.js",
20657
20657
  types: "dist/index.d.ts",
@@ -41213,7 +41213,7 @@ function buildDetailedHelp(commandName, entry) {
41213
41213
  async function handleHelpCommand(ctx) {
41214
41214
  const targetCommand = ctx.args.join(" ");
41215
41215
  if (!targetCommand) {
41216
- const { buildHelpText } = await import("./index-0543dz3t.js");
41216
+ const { buildHelpText } = await import("./index-p3cksay8.js");
41217
41217
  return buildHelpText();
41218
41218
  }
41219
41219
  const tokens = targetCommand.split(/\s+/);
@@ -41222,7 +41222,7 @@ async function handleHelpCommand(ctx) {
41222
41222
  return _internals63.buildDetailedHelp(resolved.key, resolved.entry);
41223
41223
  }
41224
41224
  const similar = _internals63.findSimilarCommands(targetCommand);
41225
- const { buildHelpText: fullHelp } = await import("./index-0543dz3t.js");
41225
+ const { buildHelpText: fullHelp } = await import("./index-p3cksay8.js");
41226
41226
  if (similar.length > 0) {
41227
41227
  return `Command '/swarm ${targetCommand}' not found.
41228
41228
 
@@ -41361,7 +41361,7 @@ var COMMAND_REGISTRY = {
41361
41361
  },
41362
41362
  "guardrail explain": {
41363
41363
  handler: async (ctx) => {
41364
- const { handleGuardrailExplain } = await import("./guardrail-explain-3r26pm2s.js");
41364
+ const { handleGuardrailExplain } = await import("./guardrail-explain-n4eyw2ak.js");
41365
41365
  return handleGuardrailExplain(ctx.directory, ctx.args);
41366
41366
  },
41367
41367
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -41371,7 +41371,7 @@ var COMMAND_REGISTRY = {
41371
41371
  },
41372
41372
  "guardrail-explain": {
41373
41373
  handler: async (ctx) => {
41374
- const { handleGuardrailExplain } = await import("./guardrail-explain-3r26pm2s.js");
41374
+ const { handleGuardrailExplain } = await import("./guardrail-explain-n4eyw2ak.js");
41375
41375
  return handleGuardrailExplain(ctx.directory, ctx.args);
41376
41376
  },
41377
41377
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-0y19k18q.js";
4
+ } from "./index-w3q49fy4.js";
5
5
  import {
6
6
  handleGuardrailLog
7
7
  } from "./index-8etcyr9r.js";
@@ -83,7 +83,7 @@ import {
83
83
  handleWriteRetroCommand,
84
84
  normalizeSwarmCommandInput,
85
85
  resolveCommand
86
- } from "./index-hczdkknj.js";
86
+ } from "./index-8exjgmrz.js";
87
87
  import"./index-v4n224r1.js";
88
88
  import"./index-cpssctv1.js";
89
89
  import"./index-kk1scggc.js";
@@ -12,7 +12,7 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-hczdkknj.js";
15
+ } from "./index-8exjgmrz.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
package/dist/cli/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  getPluginLockFilePaths,
8
8
  package_default,
9
9
  resolveCommand
10
- } from "./index-hczdkknj.js";
10
+ } from "./index-8exjgmrz.js";
11
11
  import"./index-v4n224r1.js";
12
12
  import"./index-cpssctv1.js";
13
13
  import"./index-kk1scggc.js";
@@ -188,7 +188,18 @@ export declare function bindPrReviewBase(directory: string, sessionID: string, o
188
188
  baseRef: string;
189
189
  baseSha: string;
190
190
  }): Promise<PrWorkflowGateState>;
191
- /** Prove that caller-provided PR identity equals the actual checked-out commit. */
191
+ /**
192
+ * Prove that caller-provided PR identity equals the actual checked-out commit.
193
+ *
194
+ * Two distinct failure modes are reported with separate, diagnostic-rich
195
+ * messages (issue #1931): a null HEAD means Git could not resolve HEAD at all
196
+ * (the directory may not be a repository, HEAD may be unborn, the commit may
197
+ * be missing from a shallow clone, the `git` binary may not be on PATH, or
198
+ * the bounded Git invocation may have timed out); a non-matching HEAD means
199
+ * a different commit is checked out. Both messages name `directory` and the
200
+ * exact remediation command so callers can self-diagnose instead of
201
+ * cascading into fictional root causes.
202
+ */
192
203
  export declare function assertCurrentCheckoutHead(directory: string, expectedHead: string): string;
193
204
  /** Prove that every PR-review lane reads the immutable checked-out PR tree. */
194
205
  export declare function assertPrReviewCleanCheckout(directory: string, mode?: PrWorkflowMode): void;