opencode-swarm 7.156.0 → 7.157.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.
Files changed (72) hide show
  1. package/dist/background/workspace-snapshot.d.ts +28 -0
  2. package/dist/cli/{coder-settlement-jm7024zm.js → coder-settlement-dz2x352d.js} +9 -9
  3. package/dist/cli/{config-doctor-q9v8yscr.js → config-doctor-4jxf9w9e.js} +3 -3
  4. package/dist/cli/{core-ev3bn503.js → core-xf2f087t.js} +2 -2
  5. package/dist/cli/{curation-policy-jabphe51.js → curation-policy-72qx868r.js} +4 -4
  6. package/dist/cli/{curator-llm-factory-cnatbky1.js → curator-llm-factory-7mfvey3x.js} +30 -30
  7. package/dist/cli/{curator-dnjf9ser.js → curator-pjjw3ja4.js} +30 -30
  8. package/dist/cli/{evidence-summary-service-5drv65qh.js → evidence-summary-service-5ffkbs50.js} +11 -11
  9. package/dist/cli/{gate-evidence-dcyvst7g.js → gate-evidence-ne9rbdtb.js} +5 -5
  10. package/dist/cli/{guardrail-explain-z8f6qhz2.js → guardrail-explain-b9vr4ta3.js} +31 -31
  11. package/dist/cli/{guardrail-log-zwec6ann.js → guardrail-log-hrt36jz5.js} +5 -5
  12. package/dist/cli/{guardrail-reset-ga6e11r9.js → guardrail-reset-pggm9hx4.js} +30 -30
  13. package/dist/cli/{hive-promoter-mpez5tqh.js → hive-promoter-7vxm11sm.js} +30 -30
  14. package/dist/cli/{index-fpg4tzf7.js → index-12e2hztp.js} +1 -1
  15. package/dist/cli/{index-sm2t1awr.js → index-1dzy1j4v.js} +2 -2
  16. package/dist/cli/{index-b91qwpms.js → index-2e60kmzg.js} +1 -1
  17. package/dist/cli/{index-vnn7qq8c.js → index-3f7hqtgg.js} +62 -1
  18. package/dist/cli/{index-17h6ewqp.js → index-3qpr16k2.js} +32 -32
  19. package/dist/cli/{index-98j6z038.js → index-3vqdt1sx.js} +5 -5
  20. package/dist/cli/{index-wn0xm2e8.js → index-4kd1nqd2.js} +8 -3
  21. package/dist/cli/{index-5w87j6j4.js → index-4w20thrc.js} +2 -2
  22. package/dist/cli/{index-5r3zrw81.js → index-61nkp124.js} +2 -2
  23. package/dist/cli/{index-6bqqzfbe.js → index-6sbx96v6.js} +2 -2
  24. package/dist/cli/{index-mdypz60w.js → index-79k7p589.js} +1 -1
  25. package/dist/cli/{index-00hyhg47.js → index-8n602qc2.js} +4 -4
  26. package/dist/cli/{index-fjcm6wwf.js → index-91ybfvy2.js} +1 -1
  27. package/dist/cli/{index-q2khkey7.js → index-93ymj3j5.js} +5 -5
  28. package/dist/cli/{index-myt57pht.js → index-9r7gp6cp.js} +5 -1
  29. package/dist/cli/{index-85p1850w.js → index-b5xm177r.js} +1 -1
  30. package/dist/cli/{index-0q8kywcf.js → index-dwkrdpz2.js} +1 -1
  31. package/dist/cli/{index-g37454vj.js → index-ebratyzr.js} +1 -1
  32. package/dist/cli/{index-6g6qwr8z.js → index-g0j2hnse.js} +5 -5
  33. package/dist/cli/{index-ppx8bnzd.js → index-gk6wpq41.js} +1463 -402
  34. package/dist/cli/{index-aqg7c1z9.js → index-gpf3cjre.js} +1 -1
  35. package/dist/cli/{index-dfmr6pj5.js → index-j3egsxa1.js} +6 -6
  36. package/dist/cli/{index-sfdg1xg5.js → index-n6ayyadp.js} +4 -4
  37. package/dist/cli/{index-fd7wj6fy.js → index-n7gv8m7v.js} +4 -4
  38. package/dist/cli/{index-68098cfj.js → index-nd22bsnt.js} +2 -2
  39. package/dist/cli/{index-gthnsbzf.js → index-ngn6jmad.js} +1 -1
  40. package/dist/cli/{index-xdy28ngt.js → index-nwkr6tvv.js} +17 -1
  41. package/dist/cli/{index-za6bb2fd.js → index-p0by16z8.js} +2 -2
  42. package/dist/cli/{index-164c64z8.js → index-q94gt4n9.js} +3 -3
  43. package/dist/cli/{index-4m3j9q9z.js → index-t0kxka8n.js} +1 -1
  44. package/dist/cli/{index-9n555qz4.js → index-tvtvhjh0.js} +4 -4
  45. package/dist/cli/{index-zdgdf0e9.js → index-vbqssmbs.js} +6 -6
  46. package/dist/cli/{index-ew6fykvv.js → index-xe6zbfps.js} +1 -1
  47. package/dist/cli/{index-kxk8cnx7.js → index-zq7pw6qg.js} +2 -2
  48. package/dist/cli/index.js +30 -30
  49. package/dist/cli/{knowledge-escalator-cq4e6v2j.js → knowledge-escalator-d65mctqy.js} +10 -10
  50. package/dist/cli/{knowledge-events-sr5fqqaq.js → knowledge-events-6aet71sp.js} +8 -8
  51. package/dist/cli/{knowledge-link-4frk38w8.js → knowledge-link-z9cchqdj.js} +3 -3
  52. package/dist/cli/{knowledge-store-2dww3dqz.js → knowledge-store-vvgxbakx.js} +4 -4
  53. package/dist/cli/{knowledge-validator-yprsj4ye.js → knowledge-validator-4fb6pbpn.js} +6 -6
  54. package/dist/cli/{model-preflight-b95w8wxy.js → model-preflight-cv9kvw8h.js} +1 -1
  55. package/dist/cli/{pending-delegations-7qvag076.js → pending-delegations-f52jtanf.js} +1 -1
  56. package/dist/cli/{pr-subscriptions-00evnffe.js → pr-subscriptions-76vg2xya.js} +2 -2
  57. package/dist/cli/{runner-gheaxd5r.js → runner-eagt6gf8.js} +4 -4
  58. package/dist/cli/{scan-cursor-6awybk8b.js → scan-cursor-q3530gc8.js} +5 -5
  59. package/dist/cli/{schema-bf3smw7k.js → schema-5zc62306.js} +2 -2
  60. package/dist/cli/{scope-persistence-kc42c6ph.js → scope-persistence-fzqf115q.js} +7 -7
  61. package/dist/cli/{skill-generator-9k1ztt7c.js → skill-generator-kh1z90tm.js} +12 -12
  62. package/dist/cli/{workspace-snapshot-8269e1p9.js → workspace-snapshot-yq0tc49d.js} +9 -1
  63. package/dist/cli/{worktree-collision-ownership-ej10dhwe.js → worktree-collision-ownership-2qxjtxt6.js} +3 -3
  64. package/dist/cli/{worktree-isolation-r7qqy6ca.js → worktree-isolation-40v34p0s.js} +30 -30
  65. package/dist/commands/registry.d.ts +1 -1
  66. package/dist/hooks/pr-workflow-gate.d.ts +291 -3
  67. package/dist/index.js +72 -70
  68. package/dist/tools/index.d.ts +1 -0
  69. package/dist/tools/invalidate-pr-feedback-publication.d.ts +20 -0
  70. package/dist/tools/manifest.d.ts +1 -0
  71. package/dist/tools/tool-metadata.d.ts +4 -0
  72. package/package.json +1 -1
@@ -7,61 +7,61 @@ import {
7
7
  isHiveEligible,
8
8
  promoteFromSwarm,
9
9
  promoteToHive
10
- } from "./index-ppx8bnzd.js";
11
- import"./index-4m3j9q9z.js";
12
- import"./index-wn0xm2e8.js";
13
- import"./index-68098cfj.js";
14
- import"./index-q2khkey7.js";
15
- import"./index-gthnsbzf.js";
10
+ } from "./index-gk6wpq41.js";
11
+ import"./index-t0kxka8n.js";
12
+ import"./index-4kd1nqd2.js";
13
+ import"./index-nd22bsnt.js";
14
+ import"./index-93ymj3j5.js";
15
+ import"./index-ngn6jmad.js";
16
16
  import"./index-134d35c1.js";
17
17
  import"./index-nj6rmyeh.js";
18
18
  import"./index-txdagbh7.js";
19
- import"./index-6g6qwr8z.js";
20
- import"./index-sm2t1awr.js";
19
+ import"./index-g0j2hnse.js";
20
+ import"./index-1dzy1j4v.js";
21
21
  import"./index-70ha9e09.js";
22
22
  import"./index-c8s9a3zh.js";
23
23
  import"./index-9ss2m4rs.js";
24
- import"./index-fjcm6wwf.js";
24
+ import"./index-91ybfvy2.js";
25
25
  import"./index-zsrtt42s.js";
26
- import"./index-zdgdf0e9.js";
27
- import"./index-0q8kywcf.js";
28
- import"./index-sfdg1xg5.js";
29
- import"./index-9n555qz4.js";
30
- import"./index-aqg7c1z9.js";
26
+ import"./index-vbqssmbs.js";
27
+ import"./index-dwkrdpz2.js";
28
+ import"./index-n6ayyadp.js";
29
+ import"./index-tvtvhjh0.js";
30
+ import"./index-gpf3cjre.js";
31
31
  import"./index-rtry5xyf.js";
32
- import"./index-5r3zrw81.js";
33
- import"./index-za6bb2fd.js";
34
- import"./index-fpg4tzf7.js";
32
+ import"./index-61nkp124.js";
33
+ import"./index-p0by16z8.js";
34
+ import"./index-12e2hztp.js";
35
35
  import"./index-ddszzne4.js";
36
- import"./index-vnn7qq8c.js";
37
- import"./index-fd7wj6fy.js";
38
- import"./index-mdypz60w.js";
39
- import"./index-xdy28ngt.js";
36
+ import"./index-3f7hqtgg.js";
37
+ import"./index-n7gv8m7v.js";
38
+ import"./index-79k7p589.js";
39
+ import"./index-nwkr6tvv.js";
40
40
  import"./index-556ja8an.js";
41
41
  import"./index-4fwbbad3.js";
42
42
  import"./index-b43rt5ph.js";
43
43
  import"./index-q7sjgr1y.js";
44
44
  import {
45
45
  resolveHiveKnowledgePath
46
- } from "./index-dfmr6pj5.js";
47
- import"./index-98j6z038.js";
48
- import"./index-164c64z8.js";
46
+ } from "./index-j3egsxa1.js";
47
+ import"./index-3vqdt1sx.js";
48
+ import"./index-q94gt4n9.js";
49
49
  import"./index-gprxjmm7.js";
50
50
  import"./index-n832052r.js";
51
51
  import"./index-dtn0pne5.js";
52
52
  import"./index-z6xqpmqg.js";
53
53
  import"./index-r3mvsbtq.js";
54
- import"./index-b91qwpms.js";
55
- import"./index-5w87j6j4.js";
56
- import"./index-myt57pht.js";
54
+ import"./index-2e60kmzg.js";
55
+ import"./index-4w20thrc.js";
56
+ import"./index-9r7gp6cp.js";
57
57
  import"./index-zjygnfay.js";
58
58
  import"./index-9e6fdz2h.js";
59
59
  import"./index-4rhhvd1a.js";
60
60
  import"./index-ae75rja9.js";
61
- import"./index-85p1850w.js";
62
- import"./index-ew6fykvv.js";
61
+ import"./index-b5xm177r.js";
62
+ import"./index-xe6zbfps.js";
63
63
  import"./index-bk5tah7q.js";
64
- import"./index-6bqqzfbe.js";
64
+ import"./index-6sbx96v6.js";
65
65
  import"./index-xagq35tf.js";
66
66
  import"./index-ed5ykebp.js";
67
67
  import"./index-h1g8w4v0.js";
@@ -3096,7 +3096,7 @@ async function reconcileLegacyCoderSettlements(directory, maxRecords, onReconcil
3096
3096
  const candidates = readDelegations(directory).filter((record) => record.normalizedAgent === "coder" && Boolean(record.legacyCoderSettlementTransfer) && Boolean(record.terminalResult)).slice(0, maxRecords);
3097
3097
  if (candidates.length === 0)
3098
3098
  return 0;
3099
- const { transferCoderSettlementToBackground } = await import("./coder-settlement-jm7024zm.js");
3099
+ const { transferCoderSettlementToBackground } = await import("./coder-settlement-dz2x352d.js");
3100
3100
  let transferred = 0;
3101
3101
  for (const record of candidates) {
3102
3102
  try {
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  readKnowledge,
4
4
  transactKnowledge
5
- } from "./index-dfmr6pj5.js";
5
+ } from "./index-j3egsxa1.js";
6
6
  import {
7
7
  init_git_executable,
8
8
  resolveGitExecutableAsync
9
9
  } from "./index-9e6fdz2h.js";
10
10
  import {
11
11
  resolveKnowledgeStoreDir
12
- } from "./index-85p1850w.js";
12
+ } from "./index-b5xm177r.js";
13
13
  import {
14
14
  init_knowledge_types,
15
15
  isActiveStatus
@@ -6,7 +6,7 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  resolveExternalSkillsConfig
9
- } from "./index-5w87j6j4.js";
9
+ } from "./index-4w20thrc.js";
10
10
  import {
11
11
  MAX_MERGE_DEPTH,
12
12
  deepMerge,
@@ -358,6 +358,14 @@ async function resolveCurrentUpstreamPushTargetAsync(directory) {
358
358
  }
359
359
  return { remoteName, remoteBranchRef, remoteTrackingRef };
360
360
  }
361
+ async function resolveCurrentLocalHeadRefAsync(directory) {
362
+ const localBranchRef = await runGitAsync(directory, [
363
+ "symbolic-ref",
364
+ "--quiet",
365
+ "HEAD"
366
+ ]);
367
+ return localBranchRef?.startsWith("refs/heads/") ? localBranchRef : null;
368
+ }
361
369
  function resolveExactRemoteBranchHead(directory, remoteName, remoteBranchRef) {
362
370
  if (!remoteName || remoteName.startsWith("-") || /[\s;&|<>`]/.test(remoteName) || !remoteBranchRef.startsWith("refs/heads/") || remoteBranchRef === "refs/heads/" || /[\s;&|<>`]/.test(remoteBranchRef)) {
363
371
  return null;
@@ -390,6 +398,59 @@ async function resolveExactRemoteBranchHeadAsync(directory, remoteName, remoteBr
390
398
  }
391
399
  return objectName;
392
400
  }
401
+ function redactRemoteUrlIdentity(url, maxChars) {
402
+ const cap = (value) => value.length > maxChars ? value.slice(0, maxChars) : value;
403
+ const stripQueryAndFragment = (value) => {
404
+ const cut = [value.indexOf("?"), value.indexOf("#")].filter((index) => index >= 0).sort((a, b) => a - b)[0];
405
+ return cut === undefined ? value : `${value.slice(0, cut)}?\u2026`;
406
+ };
407
+ const trimmed = url.trim();
408
+ const urlForm = trimmed.match(/^([A-Za-z][A-Za-z0-9+.-]*):\/\/(.*)$/);
409
+ if (urlForm) {
410
+ const [, scheme, rest] = urlForm;
411
+ const authorityEnd = rest.indexOf("/");
412
+ const authority = authorityEnd >= 0 ? rest.slice(0, authorityEnd) : rest;
413
+ const pathAndAfter = authorityEnd >= 0 ? rest.slice(authorityEnd) : "";
414
+ const at = authority.lastIndexOf("@");
415
+ const redactedAuthority = at >= 0 ? `***${authority.slice(at)}` : authority;
416
+ return cap(`${scheme}://${redactedAuthority}${stripQueryAndFragment(pathAndAfter)}`);
417
+ }
418
+ const scpForm = trimmed.match(/^([^/@]+)@([^/@]+):(\S.*)$/);
419
+ if (scpForm) {
420
+ const [, , host, path2] = scpForm;
421
+ return cap(`***@${host}:${stripQueryAndFragment(path2)}`);
422
+ }
423
+ return cap(stripQueryAndFragment(trimmed));
424
+ }
425
+ function resolveRemoteUrlIdentity(directory, remoteName, maxChars = 200) {
426
+ if (!remoteName || remoteName.startsWith("-") || /[\s;&|<>`]/.test(remoteName)) {
427
+ return null;
428
+ }
429
+ const output = runGit(directory, ["remote", "get-url", "--push", remoteName]);
430
+ if (!output)
431
+ return null;
432
+ const url = output.split(/\r?\n/).filter(Boolean)[0];
433
+ if (!url)
434
+ return null;
435
+ return redactRemoteUrlIdentity(url, maxChars);
436
+ }
437
+ async function resolveRemoteUrlIdentityAsync(directory, remoteName, maxChars = 200) {
438
+ if (!remoteName || remoteName.startsWith("-") || /[\s;&|<>`]/.test(remoteName)) {
439
+ return null;
440
+ }
441
+ const output = await runGitAsync(directory, [
442
+ "remote",
443
+ "get-url",
444
+ "--push",
445
+ remoteName
446
+ ]);
447
+ if (!output)
448
+ return null;
449
+ const url = output.split(/\r?\n/).filter(Boolean)[0];
450
+ if (!url)
451
+ return null;
452
+ return redactRemoteUrlIdentity(url, maxChars);
453
+ }
393
454
  function resolveGitControlStateDigest(directory) {
394
455
  const head = runGit(directory, ["rev-parse", "--verify", "HEAD^{commit}"]);
395
456
  const symbolicHead = runGit(directory, ["symbolic-ref", "--quiet", "HEAD"]);
@@ -1150,4 +1211,4 @@ var _internals = {
1150
1211
  readChangedFileSync: (filePath) => fs.readFileSync(filePath)
1151
1212
  };
1152
1213
 
1153
- export { readGitTextAtRevision, resolveCurrentGitHead, resolveCurrentGitHeadAsync, resolveExactMergeBase, resolveExactMergeBaseAsync, resolvePrReviewDiffStats, resolvePrReviewDiffStatsAsync, resolveCurrentUpstreamRemoteRef, resolveCurrentUpstreamPushTarget, resolveCurrentUpstreamPushTargetAsync, resolveExactRemoteBranchHead, resolveExactRemoteBranchHeadAsync, resolveGitControlStateDigest, resolveGitControlStateDigestAsync, resolveIsWorkingTreeClean, resolveIsWorkingTreeCleanAsync, resolveCommitCountSince, resolveCommitCountSinceAsync, resolveIsExactSingleChildCommit, resolveIsExactSingleChildCommitAsync, resolveRemoteRefsContainingHead, resolveRemoteRefsContainingHeadAsync, resolvePrFeedbackTrackingCandidatesAsync, switchPrFeedbackTrackingCandidateAsync, resolvePrWorkflowRevisionDigestDetailed, resolvePrWorkflowRevisionDigest, resolvePrWorkflowRevisionDigestDetailedAsync, resolvePrWorkflowRevisionDigestAsync, parsePorcelainPaths, isSwarmRuntimePath, parsePorcelainV2Snapshot, captureWorkspaceSnapshot, changedFilesSinceSnapshot, workspaceSnapshotMatches, compareWorkspaceSnapshot, compareWorkspaceSnapshots, digest, _internals };
1214
+ export { readGitTextAtRevision, resolveCurrentGitHead, resolveCurrentGitHeadAsync, resolveExactMergeBase, resolveExactMergeBaseAsync, resolvePrReviewDiffStats, resolvePrReviewDiffStatsAsync, resolveCurrentUpstreamRemoteRef, resolveCurrentUpstreamPushTarget, resolveCurrentUpstreamPushTargetAsync, resolveCurrentLocalHeadRefAsync, resolveExactRemoteBranchHead, resolveExactRemoteBranchHeadAsync, redactRemoteUrlIdentity, resolveRemoteUrlIdentity, resolveRemoteUrlIdentityAsync, resolveGitControlStateDigest, resolveGitControlStateDigestAsync, resolveIsWorkingTreeClean, resolveIsWorkingTreeCleanAsync, resolveCommitCountSince, resolveCommitCountSinceAsync, resolveIsExactSingleChildCommit, resolveIsExactSingleChildCommitAsync, resolveRemoteRefsContainingHead, resolveRemoteRefsContainingHeadAsync, resolvePrFeedbackTrackingCandidatesAsync, switchPrFeedbackTrackingCandidateAsync, resolvePrWorkflowRevisionDigestDetailed, resolvePrWorkflowRevisionDigest, resolvePrWorkflowRevisionDigestDetailedAsync, resolvePrWorkflowRevisionDigestAsync, parsePorcelainPaths, isSwarmRuntimePath, parsePorcelainV2Snapshot, captureWorkspaceSnapshot, changedFilesSinceSnapshot, workspaceSnapshotMatches, compareWorkspaceSnapshot, compareWorkspaceSnapshots, digest, _internals };
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-kxk8cnx7.js";
4
+ } from "./index-zq7pw6qg.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-g37454vj.js";
7
+ } from "./index-ebratyzr.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  SWARM_COMMAND_TOOL_ALLOWLIST,
@@ -94,66 +94,66 @@ import {
94
94
  handleWriteRetroCommand,
95
95
  normalizeSwarmCommandInput,
96
96
  resolveCommand
97
- } from "./index-ppx8bnzd.js";
98
- import"./index-4m3j9q9z.js";
99
- import"./index-wn0xm2e8.js";
100
- import"./index-68098cfj.js";
101
- import"./index-q2khkey7.js";
102
- import"./index-gthnsbzf.js";
97
+ } from "./index-gk6wpq41.js";
98
+ import"./index-t0kxka8n.js";
99
+ import"./index-4kd1nqd2.js";
100
+ import"./index-nd22bsnt.js";
101
+ import"./index-93ymj3j5.js";
102
+ import"./index-ngn6jmad.js";
103
103
  import"./index-134d35c1.js";
104
104
  import"./index-nj6rmyeh.js";
105
105
  import"./index-txdagbh7.js";
106
- import"./index-6g6qwr8z.js";
107
- import"./index-sm2t1awr.js";
106
+ import"./index-g0j2hnse.js";
107
+ import"./index-1dzy1j4v.js";
108
108
  import"./index-70ha9e09.js";
109
109
  import"./index-c8s9a3zh.js";
110
110
  import"./index-9ss2m4rs.js";
111
- import"./index-fjcm6wwf.js";
111
+ import"./index-91ybfvy2.js";
112
112
  import"./index-zsrtt42s.js";
113
- import"./index-zdgdf0e9.js";
114
- import"./index-0q8kywcf.js";
115
- import"./index-sfdg1xg5.js";
116
- import"./index-9n555qz4.js";
117
- import"./index-aqg7c1z9.js";
113
+ import"./index-vbqssmbs.js";
114
+ import"./index-dwkrdpz2.js";
115
+ import"./index-n6ayyadp.js";
116
+ import"./index-tvtvhjh0.js";
117
+ import"./index-gpf3cjre.js";
118
118
  import"./index-rtry5xyf.js";
119
- import"./index-5r3zrw81.js";
120
- import"./index-za6bb2fd.js";
121
- import"./index-fpg4tzf7.js";
119
+ import"./index-61nkp124.js";
120
+ import"./index-p0by16z8.js";
121
+ import"./index-12e2hztp.js";
122
122
  import"./index-ddszzne4.js";
123
- import"./index-vnn7qq8c.js";
124
- import"./index-fd7wj6fy.js";
125
- import"./index-mdypz60w.js";
126
- import"./index-xdy28ngt.js";
123
+ import"./index-3f7hqtgg.js";
124
+ import"./index-n7gv8m7v.js";
125
+ import"./index-79k7p589.js";
126
+ import"./index-nwkr6tvv.js";
127
127
  import"./index-556ja8an.js";
128
128
  import"./index-4fwbbad3.js";
129
129
  import"./index-b43rt5ph.js";
130
130
  import"./index-q7sjgr1y.js";
131
- import"./index-dfmr6pj5.js";
132
- import"./index-98j6z038.js";
133
- import"./index-164c64z8.js";
131
+ import"./index-j3egsxa1.js";
132
+ import"./index-3vqdt1sx.js";
133
+ import"./index-q94gt4n9.js";
134
134
  import"./index-gprxjmm7.js";
135
135
  import"./index-n832052r.js";
136
136
  import"./index-dtn0pne5.js";
137
137
  import"./index-z6xqpmqg.js";
138
138
  import"./index-r3mvsbtq.js";
139
- import"./index-b91qwpms.js";
139
+ import"./index-2e60kmzg.js";
140
140
  import {
141
141
  init_schema,
142
142
  stripKnownSwarmPrefix
143
- } from "./index-5w87j6j4.js";
143
+ } from "./index-4w20thrc.js";
144
144
  import {
145
145
  AGENT_TOOL_MAP,
146
146
  ORCHESTRATOR_NAME,
147
147
  init_constants
148
- } from "./index-myt57pht.js";
148
+ } from "./index-9r7gp6cp.js";
149
149
  import"./index-zjygnfay.js";
150
150
  import"./index-9e6fdz2h.js";
151
151
  import"./index-4rhhvd1a.js";
152
152
  import"./index-ae75rja9.js";
153
- import"./index-85p1850w.js";
154
- import"./index-ew6fykvv.js";
153
+ import"./index-b5xm177r.js";
154
+ import"./index-xe6zbfps.js";
155
155
  import"./index-bk5tah7q.js";
156
- import"./index-6bqqzfbe.js";
156
+ import"./index-6sbx96v6.js";
157
157
  import"./index-xagq35tf.js";
158
158
  import"./index-ed5ykebp.js";
159
159
  import"./index-h1g8w4v0.js";
@@ -4,20 +4,20 @@ import {
4
4
  } from "./index-dtn0pne5.js";
5
5
  import {
6
6
  loadPluginConfigWithMeta
7
- } from "./index-b91qwpms.js";
7
+ } from "./index-2e60kmzg.js";
8
8
  import {
9
9
  KnowledgeConfigSchema,
10
10
  init_schema
11
- } from "./index-5w87j6j4.js";
11
+ } from "./index-4w20thrc.js";
12
12
  import {
13
13
  resolveHiveEventsPath
14
14
  } from "./index-ae75rja9.js";
15
15
  import {
16
16
  resolveKnowledgeStoreDir
17
- } from "./index-85p1850w.js";
17
+ } from "./index-b5xm177r.js";
18
18
  import {
19
19
  atomicWriteFile
20
- } from "./index-ew6fykvv.js";
20
+ } from "./index-xe6zbfps.js";
21
21
  import {
22
22
  assertProjectRoot
23
23
  } from "./index-xagq35tf.js";
@@ -2793,7 +2793,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
2793
2793
  }
2794
2794
  let bumps = 0;
2795
2795
  if (deltas.length > 0) {
2796
- const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-2dww3dqz.js");
2796
+ const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-vvgxbakx.js");
2797
2797
  bumps = await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
2798
2798
  }
2799
2799
  return {
@@ -11,10 +11,10 @@ import {
11
11
  import {
12
12
  init_schema,
13
13
  stripKnownSwarmPrefix
14
- } from "./index-5w87j6j4.js";
14
+ } from "./index-4w20thrc.js";
15
15
  import {
16
16
  init_constants
17
- } from "./index-myt57pht.js";
17
+ } from "./index-9r7gp6cp.js";
18
18
  import {
19
19
  telemetry
20
20
  } from "./index-h1g8w4v0.js";
@@ -2641,6 +2641,11 @@ init_constants();
2641
2641
 
2642
2642
  // src/hooks/normalize-tool-name.ts
2643
2643
  var NAMESPACE_PREFIX_PATTERN = /^[^:]+[:.]/;
2644
+ function normalizeToolName(toolName) {
2645
+ if (!toolName)
2646
+ return;
2647
+ return toolName.replace(NAMESPACE_PREFIX_PATTERN, "");
2648
+ }
2644
2649
  function normalizeToolNameLowerCase(toolName) {
2645
2650
  return toolName.replace(NAMESPACE_PREFIX_PATTERN, "").toLowerCase();
2646
2651
  }
@@ -3421,4 +3426,4 @@ function redactDecisionLineForArchive(line) {
3421
3426
  return changed ? JSON.stringify(record) : line;
3422
3427
  }
3423
3428
 
3424
- export { isPolicyProtectedPath, protectedRoots, classifyFile, stableCanonicalStringify, checkFileAuthority, normalizeToolNameLowerCase, isInDeclaredScope, redactShellCommand, readShellAuditTail, getShellAuditFoldedSummary, finalizeShellAuditForClose, redactPath, redactDecisionLineForArchive };
3429
+ export { isPolicyProtectedPath, protectedRoots, classifyFile, stableCanonicalStringify, checkFileAuthority, normalizeToolName, normalizeToolNameLowerCase, isInDeclaredScope, redactShellCommand, readShellAuditTail, getShellAuditFoldedSummary, finalizeShellAuditForClose, redactPath, redactDecisionLineForArchive };
@@ -3,7 +3,7 @@ import {
3
3
  ALL_AGENT_NAMES,
4
4
  SUMMARIZER_EXEMPT_TOOL_NAMES,
5
5
  init_constants
6
- } from "./index-myt57pht.js";
6
+ } from "./index-9r7gp6cp.js";
7
7
  import {
8
8
  OUTCOME_BLOCK_THRESHOLD,
9
9
  init_knowledge_types
@@ -21,7 +21,7 @@ var package_default;
21
21
  var init_package = __esm(() => {
22
22
  package_default = {
23
23
  name: "opencode-swarm",
24
- version: "7.156.0",
24
+ version: "7.157.0",
25
25
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
26
26
  main: "dist/index.js",
27
27
  types: "dist/index.d.ts",
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  autoCommitDirty,
4
4
  cleanUntrackedFiles
5
- } from "./index-za6bb2fd.js";
5
+ } from "./index-p0by16z8.js";
6
6
  import {
7
7
  isPathWithinDeclaredScope,
8
8
  unsafePathTextReason
@@ -26,7 +26,7 @@ import {
26
26
  atomicWriteFile,
27
27
  taskEvidencePath,
28
28
  withTaskEvidenceLock
29
- } from "./index-ew6fykvv.js";
29
+ } from "./index-xe6zbfps.js";
30
30
  import {
31
31
  assertProjectRoot
32
32
  } from "./index-xagq35tf.js";
@@ -42,8 +42,8 @@ var SWARM_TEMP_GRAMMARS = [
42
42
  token: "instance",
43
43
  quarantineEligible: true,
44
44
  parsesTarget: true,
45
- producers: ["src/hooks/pr-workflow-gate.ts:14774"],
46
- note: "pre/post-rename file-identity verification (assertOpened/ClosedSwarmFileIdentity, pr-workflow-gate.ts:14547-14595) is writer-specific and load-bearing"
45
+ producers: ["src/hooks/pr-workflow-gate.ts:16990"],
46
+ note: "pre/post-rename file-identity verification (assertOpened/ClosedSwarmFileIdentity, pr-workflow-gate.ts:16932-16970) is writer-specific and load-bearing"
47
47
  },
48
48
  {
49
49
  id: "target-suffix-tmp-num-num-json",
@@ -4,7 +4,7 @@ import {
4
4
  PlanSchema,
5
5
  TaskStatusSchema,
6
6
  init_loader
7
- } from "./index-b91qwpms.js";
7
+ } from "./index-2e60kmzg.js";
8
8
  import {
9
9
  assertProjectRoot,
10
10
  withEvidenceLock
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  _internals,
4
4
  resolveWorktreeIsolationConfig
5
- } from "./index-164c64z8.js";
5
+ } from "./index-q94gt4n9.js";
6
6
  import {
7
7
  ApprovalEvidenceSchema,
8
8
  BaseEvidenceSchema,
@@ -42,7 +42,7 @@ import {
42
42
  loadPluginConfig,
43
43
  loadPluginConfigWithMeta,
44
44
  loadPluginConfigWithMetaAsync
45
- } from "./index-b91qwpms.js";
45
+ } from "./index-2e60kmzg.js";
46
46
  import {
47
47
  AUTO_REVIEW_V8_BURN_IN_DECISION,
48
48
  AgentOverrideConfigSchema,
@@ -64,7 +64,7 @@ import {
64
64
  TurboConfigSchema,
65
65
  WorktreeIsolationConfigSchema,
66
66
  resolveAutoReviewConfig
67
- } from "./index-5w87j6j4.js";
67
+ } from "./index-4w20thrc.js";
68
68
  import {
69
69
  ALL_AGENT_NAMES,
70
70
  ALL_SUBAGENT_NAMES,
@@ -74,7 +74,7 @@ import {
74
74
  QA_AGENTS,
75
75
  isQAAgent,
76
76
  isSubagent
77
- } from "./index-myt57pht.js";
77
+ } from "./index-9r7gp6cp.js";
78
78
  import"./index-zjygnfay.js";
79
79
  import"./index-9e6fdz2h.js";
80
80
  import"./index-4rhhvd1a.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-dtn0pne5.js";
5
5
  import {
6
6
  atomicWriteSwarmFileSync
7
- } from "./index-6bqqzfbe.js";
7
+ } from "./index-6sbx96v6.js";
8
8
  import {
9
9
  withEvidenceLock
10
10
  } from "./index-xagq35tf.js";
@@ -3,7 +3,7 @@ import {
3
3
  EvaluationRunV1Schema,
4
4
  GateAuditResultV1Schema,
5
5
  getProtectedEvaluationRunIds
6
- } from "./index-gthnsbzf.js";
6
+ } from "./index-ngn6jmad.js";
7
7
  import {
8
8
  loadDatabaseCtor
9
9
  } from "./index-134d35c1.js";
@@ -23,7 +23,7 @@ import {
23
23
  readTaskEvidence,
24
24
  readTaskEvidenceRaw,
25
25
  sanitizeTaskId
26
- } from "./index-5r3zrw81.js";
26
+ } from "./index-61nkp124.js";
27
27
  import {
28
28
  LedgerStaleWriterError,
29
29
  appendLedgerEvent,
@@ -43,10 +43,10 @@ import {
43
43
  replayFromLedgerWithStatus,
44
44
  takeSnapshotEvent,
45
45
  takeSnapshotWithRetry
46
- } from "./index-mdypz60w.js";
46
+ } from "./index-79k7p589.js";
47
47
  import {
48
48
  appendCoreEventSync
49
- } from "./index-xdy28ngt.js";
49
+ } from "./index-nwkr6tvv.js";
50
50
  import {
51
51
  init_executor,
52
52
  isUntrustedEnvKey,
@@ -70,7 +70,7 @@ import {
70
70
  } from "./index-r3mvsbtq.js";
71
71
  import {
72
72
  PlanSchema
73
- } from "./index-b91qwpms.js";
73
+ } from "./index-2e60kmzg.js";
74
74
  import {
75
75
  GIT_BINARY_ENV_VAR,
76
76
  describeGitResolution,
@@ -246,6 +246,10 @@ var init_tool_metadata = __esm(() => {
246
246
  description: "prepare an auditable PR workflow checkout or restore its exact original branch/HEAD and preserved stash after terminal cleanup",
247
247
  agents: ["architect"]
248
248
  },
249
+ invalidate_pr_feedback_publication: {
250
+ description: "invalidate the armed PR_FEEDBACK publication generation so approved content can change, superseding every content-dependent approval and reopening the exact scoped rework + fresh-review path (issue #2108)",
251
+ agents: ["architect"]
252
+ },
249
253
  record_implementation_review: {
250
254
  description: "record fresh-context reviewer + critic APPROVE verdicts for the implementation diff so the /swarm issue --trace workflow can satisfy its review gate before commit-pr handoff",
251
255
  agents: ["architect"]
@@ -613,7 +617,7 @@ var init_tool_metadata = __esm(() => {
613
617
  }
614
618
  },
615
619
  pr_workflow_status: {
616
- description: "Read-only architect observation of local git state (HEAD, branch, clean/dirty with a bounded changed-file list, remotes) plus a session-pinned PR workflow gate summary. Use to observe state under the fail-closed PR_REVIEW/PR_FEEDBACK gate. Never executes PR-controlled scripts and never reads another session gate.",
620
+ description: "Read-only architect observation of local git state (HEAD, branch, clean/dirty with a bounded changed-file list, remotes) plus a session-pinned PR workflow gate summary and the PR_FEEDBACK publication-generation section (state, attempts, invalidation reason, recovery guidance). Use to observe state under the fail-closed PR_REVIEW/PR_FEEDBACK gate. Never executes PR-controlled scripts and never reads another session gate.",
617
621
  agents: ["architect"],
618
622
  prWorkflow: {
619
623
  modes: ["PR_REVIEW", "PR_FEEDBACK"],
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  atomicWriteFile
4
- } from "./index-ew6fykvv.js";
4
+ } from "./index-xe6zbfps.js";
5
5
  import {
6
6
  init_logger,
7
7
  warn
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-dtn0pne5.js";
5
5
  import {
6
6
  atomicWriteSwarmFileSync
7
- } from "./index-6bqqzfbe.js";
7
+ } from "./index-6sbx96v6.js";
8
8
 
9
9
  // src/hooks/delegation-gate/worktree-provisioning-owner.ts
10
10
  import { createHash } from "crypto";
@@ -4,7 +4,7 @@ import {
4
4
  readShellAuditTail,
5
5
  redactPath,
6
6
  redactShellCommand
7
- } from "./index-wn0xm2e8.js";
7
+ } from "./index-4kd1nqd2.js";
8
8
 
9
9
  // src/services/guardrail-log-service.ts
10
10
  var BLOCK_TYPES = new Set([
@@ -6,12 +6,12 @@ import {
6
6
  resolveSwarmKnowledgePath,
7
7
  transactKnowledge,
8
8
  wordBigrams
9
- } from "./index-dfmr6pj5.js";
9
+ } from "./index-j3egsxa1.js";
10
10
  import {
11
11
  queryHistoricalOutcomes,
12
12
  readKnowledgeEvents,
13
13
  recordKnowledgeEvent
14
- } from "./index-98j6z038.js";
14
+ } from "./index-3vqdt1sx.js";
15
15
  import {
16
16
  init_knowledge_types,
17
17
  isActiveStatus
@@ -224,11 +224,11 @@ async function maybeQuarantineOnContradiction(directory, entryId, threshold, win
224
224
  alreadyInactive: true
225
225
  };
226
226
  }
227
- const { quarantineEntry } = await import("./knowledge-validator-yprsj4ye.js");
227
+ const { quarantineEntry } = await import("./knowledge-validator-4fb6pbpn.js");
228
228
  let policyConfig;
229
229
  try {
230
- const { KnowledgeConfigSchema } = await import("./schema-bf3smw7k.js");
231
- const { loadPluginConfigWithMeta } = await import("./index-00hyhg47.js");
230
+ const { KnowledgeConfigSchema } = await import("./schema-5zc62306.js");
231
+ const { loadPluginConfigWithMeta } = await import("./index-8n602qc2.js");
232
232
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
233
233
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
234
234
  } catch {