opencode-swarm 7.110.2 → 7.112.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 (71) hide show
  1. package/.opencode/skills/ci-failure-batching/SKILL.md +6 -9
  2. package/.opencode/skills/gate-attribution/SKILL.md +24 -7
  3. package/.opencode/skills/merge-queue-readiness/SKILL.md +21 -7
  4. package/.opencode/skills/skill-edit-validation/SKILL.md +10 -3
  5. package/.opencode/skills/swarm-pr-feedback/SKILL.md +24 -0
  6. package/.opencode/skills/worktree-retry-cleanup/SKILL.md +7 -11
  7. package/dist/background/pr-event-subscribers.d.ts +28 -0
  8. package/dist/background/pr-monitor-worker.d.ts +8 -1
  9. package/dist/background/pr-subscriptions.d.ts +6 -0
  10. package/dist/cli/{config-doctor-q5e9yzn6.js → config-doctor-mmw4c50z.js} +2 -2
  11. package/dist/cli/{core-gjac7vd9.js → core-f4cbabe7.js} +2 -2
  12. package/dist/cli/{curator-drift-169wgaxn.js → curator-drift-jvs1v6em.js} +2 -2
  13. package/dist/cli/{curator-qpgdv0fp.js → curator-j7ty8k6t.js} +19 -19
  14. package/dist/cli/curator-llm-factory-8rnk2083.js +40 -0
  15. package/dist/cli/{dispatch-zr1xja4t.js → dispatch-wst7bypk.js} +2 -2
  16. package/dist/cli/{evidence-summary-service-8tasw2tt.js → evidence-summary-service-j6fnsfeq.js} +5 -5
  17. package/dist/cli/{gate-evidence-v6ds8rcp.js → gate-evidence-mk0ss1re.js} +3 -3
  18. package/dist/cli/guardrail-explain-2j0gw8f0.js +41 -0
  19. package/dist/cli/{guardrail-log-973nan7m.js → guardrail-log-xjgr00eq.js} +4 -4
  20. package/dist/cli/{hive-promoter-rs5dr4pf.js → hive-promoter-y179n7wx.js} +19 -19
  21. package/dist/cli/{index-1cn967sa.js → index-0dab9w37.js} +1 -1
  22. package/dist/cli/{index-r3j3458j.js → index-1rga1vvb.js} +1 -1
  23. package/dist/cli/{index-mvg66d9n.js → index-2aqs6daa.js} +3 -3
  24. package/dist/cli/{index-yw8qpf51.js → index-9fxs0rm1.js} +1 -1
  25. package/dist/cli/{index-cmjq1kg7.js → index-b83y9a7r.js} +3 -3
  26. package/dist/cli/{index-rm8b4959.js → index-c3h3d8kh.js} +23 -21
  27. package/dist/cli/{index-0g5xsrp4.js → index-cq2hgvd2.js} +13 -5
  28. package/dist/cli/{index-yhmt3dw3.js → index-cye4g7zj.js} +3 -3
  29. package/dist/cli/{index-j2v3w1ds.js → index-d0w40jm3.js} +4 -4
  30. package/dist/cli/{index-40h0yp9e.js → index-db1fh1fv.js} +1 -1
  31. package/dist/cli/{index-dm35e55e.js → index-fhmw7evd.js} +36 -15
  32. package/dist/cli/{index-vzzt3ygr.js → index-g55nzpwn.js} +1 -1
  33. package/dist/cli/{index-c483hnn4.js → index-hg0pamsa.js} +3 -3
  34. package/dist/cli/{index-smk3st51.js → index-j5c98bd9.js} +1799 -1249
  35. package/dist/cli/{index-53z1afgh.js → index-npxmfj48.js} +1 -1
  36. package/dist/cli/{index-6jng9c8t.js → index-pm992z24.js} +1 -1
  37. package/dist/cli/{index-85bacexr.js → index-q1jaeynn.js} +4 -1
  38. package/dist/cli/{index-v8pk35h7.js → index-t7efm8vz.js} +4 -4
  39. package/dist/cli/{index-5rfxzgmt.js → index-w84stmkx.js} +1 -1
  40. package/dist/cli/{index-4k3gh2nz.js → index-x4bghdyv.js} +2 -2
  41. package/dist/cli/{index-xddysq89.js → index-xehrmy76.js} +1 -1
  42. package/dist/cli/index.js +19 -19
  43. package/dist/cli/{knowledge-escalator-0dkkenp2.js → knowledge-escalator-t1e2211j.js} +6 -6
  44. package/dist/cli/{knowledge-events-bckbj6ah.js → knowledge-events-2h3gvtfa.js} +4 -4
  45. package/dist/cli/{knowledge-store-dvjbdn00.js → knowledge-store-gpta9gzh.js} +4 -4
  46. package/dist/cli/{knowledge-validator-bqr936sg.js → knowledge-validator-03f0hm0p.js} +5 -5
  47. package/dist/cli/{pending-delegations-yyz3fcfn.js → pending-delegations-gc3a2hfx.js} +2 -2
  48. package/dist/cli/{pr-subscriptions-vv8byxe6.js → pr-subscriptions-p8g2rzxd.js} +3 -3
  49. package/dist/cli/{schema-s48je8zt.js → schema-2p15yrvn.js} +1 -1
  50. package/dist/cli/{scope-persistence-tgp00wtd.js → scope-persistence-5ccgtebg.js} +2 -2
  51. package/dist/cli/{skill-generator-5rsjmmfq.js → skill-generator-2tsqqaa2.js} +7 -7
  52. package/dist/commands/ci-simulate.d.ts +40 -0
  53. package/dist/commands/index.d.ts +1 -0
  54. package/dist/commands/pr-monitor-status.d.ts +24 -0
  55. package/dist/commands/registry.d.ts +8 -0
  56. package/dist/config/bundled-skills.d.ts +1 -1
  57. package/dist/config/schema.d.ts +5 -0
  58. package/dist/full-auto/oversight.d.ts +4 -0
  59. package/dist/full-auto/state.d.ts +12 -0
  60. package/dist/git/pr.d.ts +23 -0
  61. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +110 -0
  62. package/dist/hooks/delegation-gate.d.ts +17 -0
  63. package/dist/hooks/full-auto-intercept.d.ts +1 -1
  64. package/dist/index.js +399 -364
  65. package/dist/tools/placeholder-scan.d.ts +15 -0
  66. package/dist/utils/bun-compat.d.ts +6 -0
  67. package/dist/worktree/merge.d.ts +12 -0
  68. package/package.json +9 -5
  69. package/dist/cli/curator-llm-factory-3x89ddtd.js +0 -40
  70. package/dist/cli/guardrail-explain-jdwp6h9c.js +0 -41
  71. /package/dist/cli/{index-7xgqky26.js → index-h91bv3hy.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  stripKnownSwarmPrefix
4
- } from "./index-0g5xsrp4.js";
4
+ } from "./index-cq2hgvd2.js";
5
5
  import {
6
6
  init_logger,
7
7
  warn
@@ -3,7 +3,7 @@ import {
3
3
  atomicWriteFile,
4
4
  taskEvidencePath,
5
5
  withTaskEvidenceLock
6
- } from "./index-1cn967sa.js";
6
+ } from "./index-0dab9w37.js";
7
7
  import {
8
8
  exports_external
9
9
  } from "./index-293f68mj.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-r3j3458j.js";
4
+ } from "./index-1rga1vvb.js";
5
5
  import {
6
6
  log
7
7
  } from "./index-zgwm4ryv.js";
@@ -33,6 +33,9 @@ var RecordSchema = exports_external.object({
33
33
  lastCommentId: exports_external.string().optional(),
34
34
  lastCheckRunSet: exports_external.string().optional(),
35
35
  mergeableState: exports_external.string().optional(),
36
+ mergeGroupRunStatus: exports_external.string().optional(),
37
+ mergeGroupRunConclusion: exports_external.string().optional(),
38
+ mergeGroupRunHtmlUrl: exports_external.string().optional(),
36
39
  isWatching: exports_external.boolean(),
37
40
  hasUnaddressedEvents: exports_external.boolean(),
38
41
  status: exports_external.enum(["active", "removed", "expired"]),
@@ -4,13 +4,13 @@ import {
4
4
  } from "./index-bfwt3abw.js";
5
5
  import {
6
6
  resolveKnowledgeStoreDir
7
- } from "./index-40h0yp9e.js";
7
+ } from "./index-db1fh1fv.js";
8
8
  import {
9
9
  readCachedParsedFile
10
10
  } from "./index-jtqkh8jf.js";
11
11
  import {
12
12
  atomicWriteFile
13
- } from "./index-1cn967sa.js";
13
+ } from "./index-0dab9w37.js";
14
14
  import {
15
15
  require_proper_lockfile
16
16
  } from "./index-vvk2g744.js";
@@ -525,7 +525,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
525
525
  const recovered = touched.filter((e) => e.confidence > CONFIDENCE_FLOOR + FLOOR_EPSILON && e.confidence_floor_demoted);
526
526
  if (atFloor.length === 0 && recovered.length === 0)
527
527
  return;
528
- const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-bckbj6ah.js");
528
+ const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-2h3gvtfa.js");
529
529
  const rollups = await readKnowledgeCounterRollups(directory);
530
530
  const flagIds = new Set;
531
531
  for (const e of atFloor) {
@@ -592,7 +592,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
592
592
  });
593
593
  }
594
594
  if (action === "quarantine" && toQuarantine.length > 0) {
595
- const { quarantineEntry } = await import("./knowledge-validator-bqr936sg.js");
595
+ const { quarantineEntry } = await import("./knowledge-validator-03f0hm0p.js");
596
596
  for (const { id } of toQuarantine) {
597
597
  await quarantineEntry(directory, id, "confidence_floor_negative_outcome", "auto").catch((err) => {
598
598
  console.warn("[knowledge-store] confidence-floor quarantine failed (best-effort):", err instanceof Error ? err.message : String(err));
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  redactPath,
4
4
  redactShellCommand
5
- } from "./index-53z1afgh.js";
5
+ } from "./index-npxmfj48.js";
6
6
 
7
7
  // src/services/guardrail-log-service.ts
8
8
  import * as fs from "fs/promises";
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-smk3st51.js";
15
+ } from "./index-j5c98bd9.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-53z1afgh.js";
22
+ } from "./index-npxmfj48.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -5,7 +5,7 @@ import {
5
5
  GateConfigSchema,
6
6
  PluginConfigSchema,
7
7
  stripKnownSwarmPrefix
8
- } from "./index-0g5xsrp4.js";
8
+ } from "./index-cq2hgvd2.js";
9
9
  import {
10
10
  log
11
11
  } from "./index-zgwm4ryv.js";
package/dist/cli/index.js CHANGED
@@ -7,41 +7,41 @@ import {
7
7
  getPluginLockFilePaths,
8
8
  package_default,
9
9
  resolveCommand
10
- } from "./index-smk3st51.js";
11
- import"./index-53z1afgh.js";
10
+ } from "./index-j5c98bd9.js";
11
+ import"./index-npxmfj48.js";
12
12
  import"./index-c8s9a3zh.js";
13
- import"./index-xddysq89.js";
13
+ import"./index-xehrmy76.js";
14
14
  import {
15
15
  DEFAULT_AGENT_CONFIGS
16
- } from "./index-0g5xsrp4.js";
17
- import"./index-j2v3w1ds.js";
16
+ } from "./index-cq2hgvd2.js";
17
+ import"./index-d0w40jm3.js";
18
18
  import"./index-scww5b77.js";
19
- import"./index-yw8qpf51.js";
20
- import"./index-85bacexr.js";
21
- import"./index-cmjq1kg7.js";
22
- import"./index-c483hnn4.js";
23
- import"./index-mvg66d9n.js";
24
- import"./index-yhmt3dw3.js";
25
- import"./index-v8pk35h7.js";
19
+ import"./index-9fxs0rm1.js";
20
+ import"./index-q1jaeynn.js";
21
+ import"./index-b83y9a7r.js";
22
+ import"./index-hg0pamsa.js";
23
+ import"./index-2aqs6daa.js";
24
+ import"./index-cye4g7zj.js";
25
+ import"./index-t7efm8vz.js";
26
26
  import"./index-bfwt3abw.js";
27
- import"./index-40h0yp9e.js";
27
+ import"./index-db1fh1fv.js";
28
28
  import"./index-jt58s751.js";
29
29
  import"./index-wvrj16f0.js";
30
30
  import"./index-q1exe2b3.js";
31
- import"./index-vzzt3ygr.js";
32
- import"./index-dm35e55e.js";
33
- import"./index-r3j3458j.js";
31
+ import"./index-g55nzpwn.js";
32
+ import"./index-fhmw7evd.js";
33
+ import"./index-1rga1vvb.js";
34
34
  import"./index-jtqkh8jf.js";
35
35
  import"./index-5e4e2hvv.js";
36
36
  import"./index-p0arc26j.js";
37
37
  import"./index-zgwm4ryv.js";
38
- import"./index-6jng9c8t.js";
39
- import"./index-1cn967sa.js";
38
+ import"./index-pm992z24.js";
39
+ import"./index-0dab9w37.js";
40
40
  import"./index-293f68mj.js";
41
41
  import"./index-5mkc2f9z.js";
42
42
  import"./index-vn263hqt.js";
43
43
  import"./index-vvk2g744.js";
44
- import"./index-7xgqky26.js";
44
+ import"./index-h91bv3hy.js";
45
45
  import"./index-a76rekgs.js";
46
46
 
47
47
  // src/cli/index.ts
@@ -8,18 +8,18 @@ import {
8
8
  maybeEscalateOnViolation,
9
9
  maybeQuarantineOnContradiction,
10
10
  readRecentEscalations
11
- } from "./index-mvg66d9n.js";
12
- import"./index-yhmt3dw3.js";
13
- import"./index-v8pk35h7.js";
11
+ } from "./index-2aqs6daa.js";
12
+ import"./index-cye4g7zj.js";
13
+ import"./index-t7efm8vz.js";
14
14
  import"./index-bfwt3abw.js";
15
- import"./index-40h0yp9e.js";
15
+ import"./index-db1fh1fv.js";
16
16
  import"./index-jtqkh8jf.js";
17
17
  import"./index-zgwm4ryv.js";
18
- import"./index-1cn967sa.js";
18
+ import"./index-0dab9w37.js";
19
19
  import"./index-5mkc2f9z.js";
20
20
  import"./index-vn263hqt.js";
21
21
  import"./index-vvk2g744.js";
22
- import"./index-7xgqky26.js";
22
+ import"./index-h91bv3hy.js";
23
23
  import"./index-a76rekgs.js";
24
24
  export {
25
25
  readRecentEscalations,
@@ -25,14 +25,14 @@ import {
25
25
  resolveKnowledgeCounterBaselinePath,
26
26
  resolveKnowledgeEventsPath,
27
27
  resolveLegacyApplicationLogPath
28
- } from "./index-yhmt3dw3.js";
29
- import"./index-40h0yp9e.js";
28
+ } from "./index-cye4g7zj.js";
29
+ import"./index-db1fh1fv.js";
30
30
  import"./index-zgwm4ryv.js";
31
- import"./index-1cn967sa.js";
31
+ import"./index-0dab9w37.js";
32
32
  import"./index-5mkc2f9z.js";
33
33
  import"./index-vn263hqt.js";
34
34
  import"./index-vvk2g744.js";
35
- import"./index-7xgqky26.js";
35
+ import"./index-h91bv3hy.js";
36
36
  import"./index-a76rekgs.js";
37
37
  export {
38
38
  resolveLegacyApplicationLogPath,
@@ -32,16 +32,16 @@ import {
32
32
  transactFile,
33
33
  transactKnowledge,
34
34
  wordBigrams
35
- } from "./index-v8pk35h7.js";
35
+ } from "./index-t7efm8vz.js";
36
36
  import"./index-bfwt3abw.js";
37
- import"./index-40h0yp9e.js";
37
+ import"./index-db1fh1fv.js";
38
38
  import"./index-jtqkh8jf.js";
39
39
  import"./index-zgwm4ryv.js";
40
- import"./index-1cn967sa.js";
40
+ import"./index-0dab9w37.js";
41
41
  import"./index-5mkc2f9z.js";
42
42
  import"./index-vn263hqt.js";
43
43
  import"./index-vvk2g744.js";
44
- import"./index-7xgqky26.js";
44
+ import"./index-h91bv3hy.js";
45
45
  import"./index-a76rekgs.js";
46
46
  export {
47
47
  wordBigrams,
@@ -22,17 +22,17 @@ import {
22
22
  validateLesson,
23
23
  validateSkillCandidatePath,
24
24
  validateSkillPath
25
- } from "./index-c483hnn4.js";
26
- import"./index-v8pk35h7.js";
25
+ } from "./index-hg0pamsa.js";
26
+ import"./index-t7efm8vz.js";
27
27
  import"./index-bfwt3abw.js";
28
- import"./index-40h0yp9e.js";
28
+ import"./index-db1fh1fv.js";
29
29
  import"./index-jtqkh8jf.js";
30
30
  import"./index-zgwm4ryv.js";
31
- import"./index-1cn967sa.js";
31
+ import"./index-0dab9w37.js";
32
32
  import"./index-5mkc2f9z.js";
33
33
  import"./index-vn263hqt.js";
34
34
  import"./index-vvk2g744.js";
35
- import"./index-7xgqky26.js";
35
+ import"./index-h91bv3hy.js";
36
36
  import"./index-a76rekgs.js";
37
37
  export {
38
38
  validateSkillPath,
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-r3j3458j.js";
4
+ } from "./index-1rga1vvb.js";
5
5
  import"./index-jtqkh8jf.js";
6
6
  import"./index-5e4e2hvv.js";
7
7
  import"./index-p0arc26j.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./index-5mkc2f9z.js";
18
18
  import"./index-vn263hqt.js";
19
19
  import"./index-vvk2g744.js";
20
- import"./index-7xgqky26.js";
20
+ import"./index-h91bv3hy.js";
21
21
  import"./index-a76rekgs.js";
22
22
 
23
23
  // src/background/pending-delegations.ts
@@ -9,8 +9,8 @@ import {
9
9
  sweepStale,
10
10
  unsubscribe,
11
11
  updateSnapshot
12
- } from "./index-85bacexr.js";
13
- import"./index-r3j3458j.js";
12
+ } from "./index-q1jaeynn.js";
13
+ import"./index-1rga1vvb.js";
14
14
  import"./index-jtqkh8jf.js";
15
15
  import"./index-5e4e2hvv.js";
16
16
  import"./index-p0arc26j.js";
@@ -19,7 +19,7 @@ import"./index-293f68mj.js";
19
19
  import"./index-5mkc2f9z.js";
20
20
  import"./index-vn263hqt.js";
21
21
  import"./index-vvk2g744.js";
22
- import"./index-7xgqky26.js";
22
+ import"./index-h91bv3hy.js";
23
23
  import"./index-a76rekgs.js";
24
24
  export {
25
25
  updateSnapshot,
@@ -86,7 +86,7 @@ import {
86
86
  resolveGeneratedAgentRole,
87
87
  resolveGuardrailsConfig,
88
88
  stripKnownSwarmPrefix
89
- } from "./index-0g5xsrp4.js";
89
+ } from "./index-cq2hgvd2.js";
90
90
  import"./index-bfwt3abw.js";
91
91
  import"./index-p0arc26j.js";
92
92
  import"./index-293f68mj.js";
@@ -6,9 +6,9 @@ import {
6
6
  readScopeFromDisk,
7
7
  resolveScopeWithFallbacks,
8
8
  writeScopeToDisk
9
- } from "./index-vzzt3ygr.js";
9
+ } from "./index-g55nzpwn.js";
10
10
  import"./index-vvk2g744.js";
11
- import"./index-7xgqky26.js";
11
+ import"./index-h91bv3hy.js";
12
12
  import"./index-a76rekgs.js";
13
13
  export {
14
14
  writeScopeToDisk,
@@ -33,19 +33,19 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-cmjq1kg7.js";
37
- import"./index-c483hnn4.js";
38
- import"./index-yhmt3dw3.js";
39
- import"./index-v8pk35h7.js";
36
+ } from "./index-b83y9a7r.js";
37
+ import"./index-hg0pamsa.js";
38
+ import"./index-cye4g7zj.js";
39
+ import"./index-t7efm8vz.js";
40
40
  import"./index-bfwt3abw.js";
41
- import"./index-40h0yp9e.js";
41
+ import"./index-db1fh1fv.js";
42
42
  import"./index-jtqkh8jf.js";
43
43
  import"./index-zgwm4ryv.js";
44
- import"./index-1cn967sa.js";
44
+ import"./index-0dab9w37.js";
45
45
  import"./index-5mkc2f9z.js";
46
46
  import"./index-vn263hqt.js";
47
47
  import"./index-vvk2g744.js";
48
- import"./index-7xgqky26.js";
48
+ import"./index-h91bv3hy.js";
49
49
  import"./index-a76rekgs.js";
50
50
  export {
51
51
  writeEvalStub,
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Handle /swarm ci-simulate command.
3
+ *
4
+ * Simulates CI by merging a PR branch into a temporary worktree created from
5
+ * the detected default remote branch (origin/main, origin/master, etc.), then
6
+ * running the full validation suite:
7
+ * bun run typecheck
8
+ * bun run lint
9
+ * bun run build
10
+ * bun test
11
+ *
12
+ * This reproduces the merge-group CI environment locally, catching integration
13
+ * failures (pass on PR branch, fail on merged result) before they cause
14
+ * merge-queue kick-outs.
15
+ *
16
+ * Input contract:
17
+ * /swarm ci-simulate → uses current HEAD branch
18
+ * /swarm ci-simulate <pr-ref> → uses the specified branch/ref
19
+ */
20
+ import * as fs from 'node:fs';
21
+ import { getDefaultBaseBranch } from '../git/branch.js';
22
+ import { runExternalTool } from '../utils/external-tool-runner.js';
23
+ export declare const _internals: {
24
+ runExternalTool: typeof runExternalTool;
25
+ getDefaultBaseBranch: typeof getDefaultBaseBranch;
26
+ platform: string;
27
+ osTmpdir: () => string;
28
+ fs: {
29
+ existsSync: typeof fs.existsSync;
30
+ rmSync: typeof fs.rmSync;
31
+ };
32
+ };
33
+ /**
34
+ * Handle /swarm ci-simulate command.
35
+ *
36
+ * @param directory - Project root (absolute path to the git working tree).
37
+ * @param args - Command arguments; first positional is the PR ref (optional).
38
+ * @returns Human-readable report string.
39
+ */
40
+ export declare function handleCiSimulateCommand(directory: string, args: string[]): Promise<string>;
@@ -7,6 +7,7 @@ export { handleAutoProceedCommand } from './auto-proceed';
7
7
  export { handleBenchmarkCommand } from './benchmark';
8
8
  export { handleBrainstormCommand } from './brainstorm';
9
9
  export { handleCheckpointCommand } from './checkpoint';
10
+ export { handleCiSimulateCommand } from './ci-simulate';
10
11
  export { handleClarifyCommand } from './clarify';
11
12
  export { handleCloseCommand } from './close';
12
13
  export { handleCodebaseReviewCommand } from './codebase-review';
@@ -10,6 +10,15 @@
10
10
  * /swarm pr status → show session subscriptions
11
11
  */
12
12
  import { listActive } from '../background/pr-subscriptions.js';
13
+ type MergeGroupRun = {
14
+ databaseId: number;
15
+ headBranch: string;
16
+ status: string;
17
+ conclusion: string | null;
18
+ url: string;
19
+ displayTitle?: string;
20
+ name?: string;
21
+ };
13
22
  /**
14
23
  * Format an epoch-ms timestamp as a human-friendly relative time string.
15
24
  *
@@ -17,12 +26,27 @@ import { listActive } from '../background/pr-subscriptions.js';
17
26
  * uses the largest whole unit (seconds, minutes, hours, or days).
18
27
  */
19
28
  declare function formatRelativeTime(epochMs: number): string;
29
+ declare function parseMergeGroupRuns(raw: string, prNumber: number): MergeGroupRun[];
30
+ declare function listMergeGroupRuns(directory: string, repoFullName: string, prNumber: number): Promise<{
31
+ runs: MergeGroupRun[];
32
+ error?: string;
33
+ }>;
34
+ /**
35
+ * Format merge-group run status for display.
36
+ *
37
+ * Shows the run status (queued/in_progress/completed), conclusion if available,
38
+ * and a link reference.
39
+ */
40
+ declare function formatMergeGroupStatus(status?: string, conclusion?: string, htmlUrl?: string): string;
20
41
  /**
21
42
  * Exposed for unit testing via _internals.
22
43
  */
23
44
  export declare const _internals: {
24
45
  formatRelativeTime: typeof formatRelativeTime;
46
+ formatMergeGroupStatus: typeof formatMergeGroupStatus;
25
47
  listActive: typeof listActive;
48
+ listMergeGroupRuns: typeof listMergeGroupRuns;
49
+ parseMergeGroupRuns: typeof parseMergeGroupRuns;
26
50
  };
27
51
  /**
28
52
  * Show PR monitor subscription status for the current session.
@@ -548,6 +548,14 @@ export declare const COMMAND_REGISTRY: {
548
548
  readonly aliasOf: "pr status";
549
549
  readonly deprecated: true;
550
550
  };
551
+ readonly 'ci-simulate': {
552
+ readonly handler: (ctx: CommandContext) => Promise<string>;
553
+ readonly description: "Create a temporary merge-result worktree and run CI before merge queue entry";
554
+ readonly args: "[--base origin/main] [--head <ref>]";
555
+ readonly details: "Creates a detached temporary worktree under .swarm/ci-simulate from the base ref, merges the current worktree HEAD (or --head ref), runs fixed local CI gates (typecheck, Biome CI, build, unit/integration/security/smoke tests, drift check), then removes the worktree and prunes metadata. Intended as a pre-queue merge_group simulation helper.";
556
+ readonly category: "agent";
557
+ readonly toolPolicy: "agent";
558
+ };
551
559
  readonly 'deep-dive': {
552
560
  readonly handler: (ctx: CommandContext) => CommandResult;
553
561
  readonly description: "Launch deep codebase audit with parallel explorer waves, dual reviewers, and critic challenge [scope]";
@@ -1,4 +1,4 @@
1
- export declare const BUNDLED_PROJECT_SKILLS: readonly ["brainstorm", "specify", "clarify-spec", "resume", "clarify", "discover", "consult", "pre-phase-briefing", "council", "deep-dive", "deep-research", "codebase-review-swarm", "swarm-implement", "design-docs", "swarm-pr-review", "swarm", "swarm-pr-feedback", "swarm-pr-subscribe", "swarm-ci-monitor", "issue-ingest", "plan", "critic-gate", "execute", "phase-wrap", "loop", "writing-tests", "running-tests", "engineering-conventions", "commit-pr", "worktree-retry-cleanup", "skill-edit-validation", "merge-queue-readiness", "gate-attribution", "ci-failure-batching"];
1
+ export declare const BUNDLED_PROJECT_SKILLS: readonly ["brainstorm", "specify", "clarify-spec", "resume", "clarify", "discover", "consult", "pre-phase-briefing", "council", "deep-dive", "deep-research", "codebase-review-swarm", "swarm-implement", "design-docs", "swarm-pr-review", "swarm", "swarm-pr-feedback", "swarm-pr-subscribe", "swarm-ci-monitor", "issue-ingest", "plan", "critic-gate", "execute", "phase-wrap", "loop", "writing-tests", "running-tests", "engineering-conventions", "commit-pr", "ci-failure-batching", "gate-attribution", "merge-queue-readiness", "skill-edit-validation", "worktree-retry-cleanup"];
2
2
  interface CopyState {
3
3
  files: number;
4
4
  bytes: number;
@@ -273,6 +273,7 @@ export declare const PlaceholderScanConfigSchema: z.ZodObject<{
273
273
  deny_patterns: z.ZodDefault<z.ZodArray<z.ZodString>>;
274
274
  allow_globs: z.ZodDefault<z.ZodArray<z.ZodString>>;
275
275
  max_allowed_findings: z.ZodDefault<z.ZodNumber>;
276
+ sentinel_allowlist: z.ZodDefault<z.ZodArray<z.ZodString>>;
276
277
  }, z.core.$strip>;
277
278
  export type PlaceholderScanConfig = z.infer<typeof PlaceholderScanConfigSchema>;
278
279
  export declare const QualityBudgetConfigSchema: z.ZodObject<{
@@ -302,6 +303,7 @@ export declare const GateConfigSchema: z.ZodObject<{
302
303
  deny_patterns: z.ZodDefault<z.ZodArray<z.ZodString>>;
303
304
  allow_globs: z.ZodDefault<z.ZodArray<z.ZodString>>;
304
305
  max_allowed_findings: z.ZodDefault<z.ZodNumber>;
306
+ sentinel_allowlist: z.ZodDefault<z.ZodArray<z.ZodString>>;
305
307
  }, z.core.$strip>>;
306
308
  sast_scan: z.ZodDefault<z.ZodObject<{
307
309
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -1622,6 +1624,7 @@ export declare const PluginConfigSchema: z.ZodObject<{
1622
1624
  deny_patterns: z.ZodDefault<z.ZodArray<z.ZodString>>;
1623
1625
  allow_globs: z.ZodDefault<z.ZodArray<z.ZodString>>;
1624
1626
  max_allowed_findings: z.ZodDefault<z.ZodNumber>;
1627
+ sentinel_allowlist: z.ZodDefault<z.ZodArray<z.ZodString>>;
1625
1628
  }, z.core.$strip>>;
1626
1629
  sast_scan: z.ZodDefault<z.ZodObject<{
1627
1630
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -2416,6 +2419,8 @@ export declare const PluginConfigSchema: z.ZodObject<{
2416
2419
  every_tool_calls: z.ZodDefault<z.ZodNumber>;
2417
2420
  every_architect_turns: z.ZodDefault<z.ZodNumber>;
2418
2421
  every_minutes: z.ZodDefault<z.ZodNumber>;
2422
+ max_dispatch_retries: z.ZodDefault<z.ZodNumber>;
2423
+ max_consecutive_dispatch_failures: z.ZodDefault<z.ZodNumber>;
2419
2424
  }, z.core.$strip>>;
2420
2425
  }, z.core.$strip>>>;
2421
2426
  pr_monitor: z.ZodOptional<z.ZodObject<{
@@ -44,6 +44,10 @@ export interface DispatchFullAutoOversightInput {
44
44
  */
45
45
  fullAutoConfig?: {
46
46
  fail_closed?: boolean;
47
+ /** Override for max dispatch retries (default from schema: 2). */
48
+ max_dispatch_retries?: number;
49
+ /** Override for max consecutive dispatch failures (default from schema: 3). */
50
+ max_consecutive_dispatch_failures?: number;
47
51
  };
48
52
  }
49
53
  export declare function parseFullAutoCriticResponse(rawResponse: string): FullAutoCriticResult;
@@ -13,6 +13,7 @@ export interface FullAutoCounters {
13
13
  testFailures: number;
14
14
  oversightChecks: number;
15
15
  consecutiveNoProgressTurns: number;
16
+ consecutiveOversightFailures: number;
16
17
  }
17
18
  export interface FullAutoRunState {
18
19
  status: FullAutoStatus;
@@ -34,6 +35,8 @@ export interface FullAutoRunState {
34
35
  counters: FullAutoCounters;
35
36
  pauseReason?: string;
36
37
  terminateReason?: string;
38
+ /** Consecutive oversight dispatch failures for auto-degrade. */
39
+ consecutiveOversightFailures?: number;
37
40
  }
38
41
  export interface FullAutoPersistedState {
39
42
  version: 2;
@@ -104,6 +107,15 @@ export declare function terminateFullAutoRun(directory: string, sessionID: strin
104
107
  export declare function isFullAutoRunActive(directory: string, sessionID: string): boolean;
105
108
  export type FullAutoCounterKey = keyof FullAutoCounters;
106
109
  export declare function incrementFullAutoCounter(directory: string, sessionID: string, counter: FullAutoCounterKey, delta?: number): FullAutoRunState | undefined;
110
+ /**
111
+ * Increment the consecutive-oversight-failure counter.
112
+ * Returns the new value after incrementing.
113
+ */
114
+ export declare function incrementOversightFailureCounter(directory: string, sessionID: string): number;
115
+ /**
116
+ * Reset the consecutive-oversight-failure counter to 0.
117
+ */
118
+ export declare function resetOversightFailureCounter(directory: string, sessionID: string): void;
107
119
  export declare function recordFullAutoDenial(directory: string, sessionID: string, denial: {
108
120
  tool?: string;
109
121
  code?: string;
package/dist/git/pr.d.ts CHANGED
@@ -69,6 +69,7 @@ export declare const _internals: {
69
69
  spawnSyncWithTransientRetry: typeof spawnSyncWithTransientRetry;
70
70
  spawnSync: typeof __spawnSyncSeam.spawnSync;
71
71
  readLaneEnvFileFromDiskSync: typeof readLaneEnvFileFromDiskSync;
72
+ getMergeGroupRun: typeof getMergeGroupRun;
72
73
  };
73
74
  /**
74
75
  * Check if gh CLI is available
@@ -107,6 +108,7 @@ export interface PRStatusResult {
107
108
  name: string;
108
109
  status: string;
109
110
  conclusion: string | null;
111
+ detailsUrl?: string;
110
112
  }>;
111
113
  }
112
114
  export interface PRCheckResult {
@@ -156,4 +158,25 @@ export declare function getMergeState(prNumber: number, repoFullName: string, cw
156
158
  * Uses async ghExecAsync to avoid blocking the event loop.
157
159
  */
158
160
  export declare function getPRReviewState(prNumber: number, repoFullName: string, cwd: string): Promise<ReviewStateResult>;
161
+ /**
162
+ * Result of fetching a GitHub Actions run for a PR's merge group.
163
+ */
164
+ export interface MergeGroupRunResult {
165
+ /** Run status: queued, in_progress, completed. */
166
+ status: string;
167
+ /** Run conclusion: success, failure, cancelled, etc. */
168
+ conclusion: string | null;
169
+ /** HTML URL to the run. */
170
+ htmlUrl: string;
171
+ }
172
+ /**
173
+ * Fetch the merge group GitHub Actions run for a PR.
174
+ *
175
+ * Searches the PR's statusCheckRollup for the "Merge pull request" check,
176
+ * extracts the run ID from its detailsUrl, and fetches the run details
177
+ * via `gh run view`.
178
+ *
179
+ * Returns null if no merge group check is found (PR not in a merge queue).
180
+ */
181
+ export declare function getMergeGroupRun(statusCheckRollup: PRStatusResult['statusCheckRollup'], repoFullName: string, cwd: string): Promise<MergeGroupRunResult | null>;
159
182
  export {};