opencode-swarm 7.156.0 → 7.157.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.
Files changed (74) hide show
  1. package/dist/background/workspace-snapshot.d.ts +28 -0
  2. package/dist/cli/{coder-settlement-jm7024zm.js → coder-settlement-tqh28pr3.js} +9 -9
  3. package/dist/cli/{config-doctor-q9v8yscr.js → config-doctor-9rsk8ags.js} +3 -3
  4. package/dist/cli/{core-ev3bn503.js → core-7zwdc0sk.js} +2 -2
  5. package/dist/cli/{curation-policy-jabphe51.js → curation-policy-72qx868r.js} +4 -4
  6. package/dist/cli/{curator-dnjf9ser.js → curator-fdj5ftfz.js} +30 -30
  7. package/dist/cli/{curator-llm-factory-cnatbky1.js → curator-llm-factory-rtkeb1y1.js} +30 -30
  8. package/dist/cli/{evidence-summary-service-5drv65qh.js → evidence-summary-service-bhqvx9qe.js} +11 -11
  9. package/dist/cli/{gate-evidence-dcyvst7g.js → gate-evidence-rp0r5phx.js} +5 -5
  10. package/dist/cli/{guardrail-explain-z8f6qhz2.js → guardrail-explain-17me709w.js} +31 -31
  11. package/dist/cli/{guardrail-log-zwec6ann.js → guardrail-log-te4a5fmn.js} +5 -5
  12. package/dist/cli/{guardrail-reset-ga6e11r9.js → guardrail-reset-5n76tj7e.js} +30 -30
  13. package/dist/cli/{hive-promoter-mpez5tqh.js → hive-promoter-e0zrkgns.js} +30 -30
  14. package/dist/cli/{index-5w87j6j4.js → index-14awxpgt.js} +2 -2
  15. package/dist/cli/{index-kxk8cnx7.js → index-1gk7ctgp.js} +2 -2
  16. package/dist/cli/{index-9n555qz4.js → index-1vjjh2gp.js} +4 -4
  17. package/dist/cli/{index-vnn7qq8c.js → index-3f7hqtgg.js} +62 -1
  18. package/dist/cli/{index-6bqqzfbe.js → index-6sbx96v6.js} +2 -2
  19. package/dist/cli/{index-fd7wj6fy.js → index-80qxscrc.js} +4 -4
  20. package/dist/cli/{index-fjcm6wwf.js → index-91ybfvy2.js} +1 -1
  21. package/dist/cli/{index-myt57pht.js → index-9r7gp6cp.js} +5 -1
  22. package/dist/cli/{index-fpg4tzf7.js → index-az2sga91.js} +1 -1
  23. package/dist/cli/{index-68098cfj.js → index-b3cwazk2.js} +2 -2
  24. package/dist/cli/{index-85p1850w.js → index-b5xm177r.js} +1 -1
  25. package/dist/cli/{index-0q8kywcf.js → index-dwkrdpz2.js} +1 -1
  26. package/dist/cli/{index-za6bb2fd.js → index-e7m7g2f9.js} +2 -2
  27. package/dist/cli/{index-b91qwpms.js → index-gg70afs7.js} +1 -1
  28. package/dist/cli/{index-aqg7c1z9.js → index-gpf3cjre.js} +1 -1
  29. package/dist/cli/{index-sm2t1awr.js → index-hq3m47kh.js} +2 -2
  30. package/dist/cli/{index-164c64z8.js → index-n3362zjr.js} +3 -3
  31. package/dist/cli/{index-sfdg1xg5.js → index-n9hecanw.js} +4 -4
  32. package/dist/cli/{index-gthnsbzf.js → index-ngn6jmad.js} +1 -1
  33. package/dist/cli/{index-xdy28ngt.js → index-nwkr6tvv.js} +17 -1
  34. package/dist/cli/{index-q2khkey7.js → index-pbh1rmb9.js} +5 -5
  35. package/dist/cli/{index-mdypz60w.js → index-pr6a7669.js} +1 -1
  36. package/dist/cli/{index-dfmr6pj5.js → index-q24ffxx6.js} +6 -6
  37. package/dist/cli/{index-00hyhg47.js → index-qy6rcnjg.js} +4 -4
  38. package/dist/cli/{index-zdgdf0e9.js → index-r4qxngnx.js} +6 -6
  39. package/dist/cli/{index-wn0xm2e8.js → index-r98wqjw4.js} +8 -3
  40. package/dist/cli/{index-g37454vj.js → index-rgkwg6d7.js} +1 -1
  41. package/dist/cli/{index-98j6z038.js → index-sdde1nvx.js} +5 -5
  42. package/dist/cli/{index-4m3j9q9z.js → index-t0kxka8n.js} +1 -1
  43. package/dist/cli/{index-ppx8bnzd.js → index-tt350s4g.js} +1466 -404
  44. package/dist/cli/{index-17h6ewqp.js → index-w7s5vgb6.js} +32 -32
  45. package/dist/cli/{index-ew6fykvv.js → index-xe6zbfps.js} +1 -1
  46. package/dist/cli/{index-6g6qwr8z.js → index-xttdbb6d.js} +5 -5
  47. package/dist/cli/{index-5r3zrw81.js → index-ybvtfthv.js} +2 -2
  48. package/dist/cli/index.js +30 -30
  49. package/dist/cli/{knowledge-escalator-cq4e6v2j.js → knowledge-escalator-wrpk82b9.js} +10 -10
  50. package/dist/cli/{knowledge-events-sr5fqqaq.js → knowledge-events-4z6yzntf.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-z9686tpv.js} +4 -4
  53. package/dist/cli/{knowledge-validator-yprsj4ye.js → knowledge-validator-rqb0b436.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-g10v5k22.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-7s1bz7ew.js} +5 -5
  59. package/dist/cli/{schema-bf3smw7k.js → schema-78pdxc8f.js} +2 -2
  60. package/dist/cli/{scope-persistence-kc42c6ph.js → scope-persistence-7ad69qmq.js} +7 -7
  61. package/dist/cli/{skill-generator-9k1ztt7c.js → skill-generator-7cxf53ye.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-ry7xnaae.js} +3 -3
  64. package/dist/cli/{worktree-isolation-r7qqy6ca.js → worktree-isolation-1jcc8ynj.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 +85 -83
  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/repo-graph/types.d.ts +9 -0
  72. package/dist/tools/repo-graph.d.ts +1 -1
  73. package/dist/tools/tool-metadata.d.ts +4 -0
  74. 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-tt350s4g.js";
11
+ import"./index-t0kxka8n.js";
12
+ import"./index-r98wqjw4.js";
13
+ import"./index-b3cwazk2.js";
14
+ import"./index-pbh1rmb9.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-xttdbb6d.js";
20
+ import"./index-hq3m47kh.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-r4qxngnx.js";
27
+ import"./index-dwkrdpz2.js";
28
+ import"./index-n9hecanw.js";
29
+ import"./index-1vjjh2gp.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-ybvtfthv.js";
33
+ import"./index-e7m7g2f9.js";
34
+ import"./index-az2sga91.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-80qxscrc.js";
38
+ import"./index-pr6a7669.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-q24ffxx6.js";
47
+ import"./index-sdde1nvx.js";
48
+ import"./index-n3362zjr.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-gg70afs7.js";
55
+ import"./index-14awxpgt.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";
@@ -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.1",
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",
@@ -14,14 +14,14 @@ import {
14
14
  detectWindowsWrites,
15
15
  getSharedClassifierGuardrailBlock,
16
16
  resolveWriteTargets
17
- } from "./index-ppx8bnzd.js";
17
+ } from "./index-tt350s4g.js";
18
18
  import {
19
19
  checkFileAuthority,
20
20
  classifyFile,
21
21
  isInDeclaredScope,
22
22
  redactPath,
23
23
  redactShellCommand
24
- } from "./index-wn0xm2e8.js";
24
+ } from "./index-r98wqjw4.js";
25
25
 
26
26
  // src/services/guardrail-explain-service.ts
27
27
  import path from "path";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  authorizeCuration
4
- } from "./index-aqg7c1z9.js";
4
+ } from "./index-gpf3cjre.js";
5
5
  import {
6
6
  findNearDuplicate,
7
7
  inferTags,
@@ -9,13 +9,13 @@ import {
9
9
  resolveSwarmKnowledgePath,
10
10
  resolveSwarmRejectedPath,
11
11
  transactKnowledge
12
- } from "./index-dfmr6pj5.js";
12
+ } from "./index-q24ffxx6.js";
13
13
  import {
14
14
  resolveKnowledgeStoreDir
15
- } from "./index-85p1850w.js";
15
+ } from "./index-b5xm177r.js";
16
16
  import {
17
17
  atomicWriteFile
18
- } from "./index-ew6fykvv.js";
18
+ } from "./index-xe6zbfps.js";
19
19
  import {
20
20
  require_proper_lockfile
21
21
  } from "./index-7g4c7s5r.js";
@@ -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 };
@@ -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",
@@ -2,20 +2,20 @@
2
2
  import {
3
3
  computePlanStructureHash,
4
4
  derivePlanId
5
- } from "./index-mdypz60w.js";
5
+ } from "./index-pr6a7669.js";
6
6
  import {
7
7
  appendCoreEventSync
8
- } from "./index-xdy28ngt.js";
8
+ } from "./index-nwkr6tvv.js";
9
9
  import {
10
10
  unsafePathTextReason
11
11
  } from "./index-556ja8an.js";
12
12
  import {
13
13
  PlanSchema
14
- } from "./index-b91qwpms.js";
14
+ } from "./index-gg70afs7.js";
15
15
  import {
16
16
  atomicWriteSwarmFile,
17
17
  atomicWriteSwarmFileSync
18
- } from "./index-6bqqzfbe.js";
18
+ } from "./index-6sbx96v6.js";
19
19
  import {
20
20
  assertProjectRoot
21
21
  } from "./index-xagq35tf.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";
@@ -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"],
@@ -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-tqh28pr3.js");
3100
3100
  let transferred = 0;
3101
3101
  for (const record of candidates) {
3102
3102
  try {
@@ -6,11 +6,11 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  stripKnownSwarmPrefix
9
- } from "./index-5w87j6j4.js";
9
+ } from "./index-14awxpgt.js";
10
10
  import {
11
11
  ALL_AGENT_NAMES,
12
12
  init_constants
13
- } from "./index-myt57pht.js";
13
+ } from "./index-9r7gp6cp.js";
14
14
  import {
15
15
  log
16
16
  } from "./index-zgwm4ryv.js";
@@ -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";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  SWARM_WORKTREE_DIR_NAME,
7
7
  init_constants
8
- } from "./index-myt57pht.js";
8
+ } from "./index-9r7gp6cp.js";
9
9
  import {
10
10
  init_git_executable,
11
11
  resolveGitExecutable
@@ -92,7 +92,7 @@ var _internals = {
92
92
  symlinkSync: fs.symlinkSync
93
93
  },
94
94
  writeScopeToDisk: async (directory, taskId, files) => {
95
- const { writeScopeToDisk: realWrite } = await import("./scope-persistence-kc42c6ph.js");
95
+ const { writeScopeToDisk: realWrite } = await import("./scope-persistence-7ad69qmq.js");
96
96
  return realWrite(directory, taskId, files);
97
97
  },
98
98
  writeLaneProfileToDisk: async (_worktreePath, _laneIndex, _envOverrides) => {
@@ -6,7 +6,7 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  resolveExternalSkillsConfig
9
- } from "./index-5w87j6j4.js";
9
+ } from "./index-14awxpgt.js";
10
10
  import {
11
11
  MAX_MERGE_DEPTH,
12
12
  deepMerge,
@@ -7,7 +7,7 @@ import {
7
7
  readLinkPointer,
8
8
  resolveKnowledgeStoreDir,
9
9
  resolveLinkDir
10
- } from "./index-85p1850w.js";
10
+ } from "./index-b5xm177r.js";
11
11
 
12
12
  // src/knowledge/curation-policy.ts
13
13
  import { appendFile, mkdir as mkdir2, readFile as readFile2 } from "fs/promises";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  readKnowledge,
4
4
  transactKnowledge
5
- } from "./index-dfmr6pj5.js";
5
+ } from "./index-q24ffxx6.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
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  init_loader,
4
4
  loadPluginConfigWithMeta
5
- } from "./index-b91qwpms.js";
5
+ } from "./index-gg70afs7.js";
6
6
  import {
7
7
  init_schema
8
- } from "./index-5w87j6j4.js";
8
+ } from "./index-14awxpgt.js";
9
9
  import {
10
10
  DEFAULT_WORKTREE_ISOLATION_CONFIG,
11
11
  init_constants
12
- } from "./index-myt57pht.js";
12
+ } from "./index-9r7gp6cp.js";
13
13
 
14
14
  // src/config/index.ts
15
15
  init_constants();
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  ALLOWED_SKILL_PATH_PREFIXES,
4
4
  validateSkillPath
5
- } from "./index-9n555qz4.js";
5
+ } from "./index-1vjjh2gp.js";
6
6
  import {
7
7
  withTimeoutSignal
8
8
  } from "./index-q7sjgr1y.js";
@@ -12,11 +12,11 @@ import {
12
12
  resolveHiveKnowledgePath,
13
13
  resolveSwarmKnowledgePath,
14
14
  transactKnowledge
15
- } from "./index-dfmr6pj5.js";
15
+ } from "./index-q24ffxx6.js";
16
16
  import {
17
17
  effectiveRetrievalOutcomes,
18
18
  readAuthoritativeKnowledgeCounterRollups
19
- } from "./index-98j6z038.js";
19
+ } from "./index-sdde1nvx.js";
20
20
  import {
21
21
  advisoryWarn,
22
22
  init_warning_buffer
@@ -28,7 +28,7 @@ import {
28
28
  import {
29
29
  atomicWriteFileAnyRoot,
30
30
  atomicWriteSwarmFile
31
- } from "./index-6bqqzfbe.js";
31
+ } from "./index-6sbx96v6.js";
32
32
  import {
33
33
  init_logger,
34
34
  log,
@@ -9,7 +9,7 @@ import {
9
9
  } from "./index-txdagbh7.js";
10
10
  import {
11
11
  atomicWriteFile
12
- } from "./index-ew6fykvv.js";
12
+ } from "./index-xe6zbfps.js";
13
13
  import {
14
14
  assertProjectRoot,
15
15
  withEvidenceLock
@@ -27,6 +27,16 @@ var AUTHORITY_RETRY = "coder_retry_circuit_breaker";
27
27
  var AUTHORITY_REPAIR = "task_workflow_repaired";
28
28
  var AUTHORITY_DRIFT_ACK = "spec_drift_acknowledged";
29
29
  var AUTHORITY_DRIFT_REPAIR = "spec_drift_repaired";
30
+ var PUBLICATION_LIVE_EVENT_TYPES = new Set([
31
+ "pr_feedback_publication_armed",
32
+ "pr_feedback_publication_migrated",
33
+ "pr_feedback_push_attempt_started"
34
+ ]);
35
+ var PUBLICATION_TERMINAL_EVENT_TYPES = new Set([
36
+ "pr_feedback_publication_invalidated",
37
+ "pr_feedback_published",
38
+ "pr_feedback_publication_cancelled"
39
+ ]);
30
40
  var RETRY_ACTIONS = new Set([
31
41
  "sounding_board_consultation",
32
42
  "simplification",
@@ -53,8 +63,14 @@ function authorityKeyFor(event) {
53
63
  }
54
64
  return null;
55
65
  }
56
- default:
66
+ default: {
67
+ if (PUBLICATION_LIVE_EVENT_TYPES.has(String(event.type)) || PUBLICATION_TERMINAL_EVENT_TYPES.has(String(event.type))) {
68
+ if (typeof event.sessionID === "string" && typeof event.generation === "number" && Number.isFinite(event.generation)) {
69
+ return `pr_feedback_publication|${event.sessionID}|${event.generation}`;
70
+ }
71
+ }
57
72
  return null;
73
+ }
58
74
  }
59
75
  }
60
76
  var MANIFEST_TYPE = "swarm-events-manifest";
@@ -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-ybvtfthv.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-pr6a7669.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-gg70afs7.js";
74
74
  import {
75
75
  GIT_BINARY_ENV_VAR,
76
76
  describeGitResolution,
@@ -4,7 +4,7 @@ import {
4
4
  PlanSchema,
5
5
  TaskStatusSchema,
6
6
  init_loader
7
- } from "./index-b91qwpms.js";
7
+ } from "./index-gg70afs7.js";
8
8
  import {
9
9
  assertProjectRoot,
10
10
  withEvidenceLock
@@ -6,10 +6,10 @@ import {
6
6
  } from "./index-ae75rja9.js";
7
7
  import {
8
8
  resolveKnowledgeStoreDir
9
- } from "./index-85p1850w.js";
9
+ } from "./index-b5xm177r.js";
10
10
  import {
11
11
  atomicWriteFile
12
- } from "./index-ew6fykvv.js";
12
+ } from "./index-xe6zbfps.js";
13
13
  import {
14
14
  init_knowledge_types,
15
15
  isActiveStatus
@@ -713,7 +713,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
713
713
  const {
714
714
  readAuthoritativeKnowledgeCounterRollups,
715
715
  effectiveRetrievalOutcomes
716
- } = await import("./knowledge-events-sr5fqqaq.js");
716
+ } = await import("./knowledge-events-4z6yzntf.js");
717
717
  const rollups = await readAuthoritativeKnowledgeCounterRollups(directory);
718
718
  const flagIds = new Set;
719
719
  for (const e of atFloor) {
@@ -780,11 +780,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
780
780
  });
781
781
  }
782
782
  if (action === "quarantine" && toQuarantine.length > 0) {
783
- const { quarantineEntry } = await import("./knowledge-validator-yprsj4ye.js");
784
- const { KnowledgeConfigSchema } = await import("./schema-bf3smw7k.js");
783
+ const { quarantineEntry } = await import("./knowledge-validator-rqb0b436.js");
784
+ const { KnowledgeConfigSchema } = await import("./schema-78pdxc8f.js");
785
785
  let config;
786
786
  try {
787
- const { loadPluginConfigWithMeta } = await import("./index-00hyhg47.js");
787
+ const { loadPluginConfigWithMeta } = await import("./index-qy6rcnjg.js");
788
788
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
789
789
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
790
790
  } catch {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  _internals,
4
4
  resolveWorktreeIsolationConfig
5
- } from "./index-164c64z8.js";
5
+ } from "./index-n3362zjr.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-gg70afs7.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-14awxpgt.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";