opencode-swarm 7.200.1 → 7.200.3

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 (92) hide show
  1. package/README.md +1 -1
  2. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  3. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  4. package/dist/cli/{attest-task-sg8b5a5j.js → attest-task-k7b87zk8.js} +29 -29
  5. package/dist/cli/{auto-checkpoint-bywgxh27.js → auto-checkpoint-pzsrkk2q.js} +4 -4
  6. package/dist/cli/{checkpoint-k2092cbw.js → checkpoint-sb3f8jfv.js} +9 -9
  7. package/dist/cli/{coder-settlement-y0hkcngn.js → coder-settlement-5jh2erx1.js} +6 -6
  8. package/dist/cli/{config-doctor-0fnrwkga.js → config-doctor-8keyw62b.js} +8 -8
  9. package/dist/cli/{core-mfyaj8b4.js → core-7240e0vh.js} +2 -2
  10. package/dist/cli/{curator-1s64jkc3.js → curator-1jhwv0ce.js} +29 -29
  11. package/dist/cli/{curator-drift-famx6p6s.js → curator-drift-r4yttpe9.js} +6 -6
  12. package/dist/cli/{curator-llm-factory-vya4epq6.js → curator-llm-factory-wcv6x9pq.js} +29 -29
  13. package/dist/cli/{doctor-knowledge-receipt-phase-id-v4y6pbek.js → doctor-knowledge-receipt-phase-id-1v5fx0rk.js} +5 -5
  14. package/dist/cli/{evidence-summary-service-rd7y6yjq.js → evidence-summary-service-zkbzsjbf.js} +10 -10
  15. package/dist/cli/{gate-evidence-kama66h5.js → gate-evidence-j4jemrv7.js} +3 -3
  16. package/dist/cli/{guardrail-explain-8fkhq0cg.js → guardrail-explain-g95j8z79.js} +30 -30
  17. package/dist/cli/{guardrail-log-gdj19fq5.js → guardrail-log-0xjg12y1.js} +3 -3
  18. package/dist/cli/{guardrail-reset-bmg6czzk.js → guardrail-reset-rgbt0zgy.js} +29 -29
  19. package/dist/cli/{hive-promoter-ychygdgc.js → hive-promoter-f0rzkbww.js} +29 -29
  20. package/dist/cli/{index-1v277wxc.js → index-0vv7vzp8.js} +1 -1
  21. package/dist/cli/{index-wgf1780e.js → index-1j14kbak.js} +1 -1
  22. package/dist/cli/{index-nawp90n7.js → index-275w8rfx.js} +3 -3
  23. package/dist/cli/{index-0tygsk8b.js → index-2nq7h5cj.js} +4 -4
  24. package/dist/cli/{index-3exe6k66.js → index-2r6d72m6.js} +2 -2
  25. package/dist/cli/{index-sz67z90q.js → index-44z8mv05.js} +1 -1
  26. package/dist/cli/{index-bn3aa5q1.js → index-5c6zse74.js} +4 -4
  27. package/dist/cli/{index-rzkmg02a.js → index-5g0nrnyd.js} +4 -4
  28. package/dist/cli/{index-p6v544jn.js → index-5ph10kdd.js} +5 -3
  29. package/dist/cli/{index-xyvsdn07.js → index-5q3hg1pk.js} +19 -0
  30. package/dist/cli/{index-2w5grmmj.js → index-6r93sy2k.js} +2 -2
  31. package/dist/cli/{index-b4kdms7x.js → index-7rpcbnp8.js} +1 -1
  32. package/dist/cli/{index-3zspah3v.js → index-8f7wgcpz.js} +1 -1
  33. package/dist/cli/{index-z9mysg5m.js → index-8x90j950.js} +1 -1
  34. package/dist/cli/{index-2hnnkj64.js → index-95k0fkhp.js} +112 -67
  35. package/dist/cli/{index-s8eac99p.js → index-9cffn82s.js} +2 -2
  36. package/dist/cli/{index-b0d8ra32.js → index-9dbxpr2j.js} +1 -1
  37. package/dist/cli/{index-dgyddtje.js → index-bcn30s7q.js} +6 -6
  38. package/dist/cli/{index-qzakbjcg.js → index-bft3404e.js} +1 -1
  39. package/dist/cli/{index-w2bhrp6z.js → index-dgv5xy0b.js} +6 -6
  40. package/dist/cli/{index-2dm42tgp.js → index-dygkt0ne.js} +31 -31
  41. package/dist/cli/{index-2m740hyt.js → index-eac47j2q.js} +1 -1
  42. package/dist/cli/{index-parkaa70.js → index-encs4mdm.js} +3 -3
  43. package/dist/cli/{index-sva5swrs.js → index-j2x2ajz7.js} +2 -2
  44. package/dist/cli/{index-pe77h482.js → index-mff4szvk.js} +2 -2
  45. package/dist/cli/{index-51dw4bjc.js → index-pmcvznag.js} +2 -2
  46. package/dist/cli/{index-12h2rtdj.js → index-q49vqmzh.js} +2 -2
  47. package/dist/cli/{index-3020n6d9.js → index-tmhwpzdg.js} +1 -1
  48. package/dist/cli/{index-0ptf66x5.js → index-v5nh2fhv.js} +2 -2
  49. package/dist/cli/{index-vtkgg2qn.js → index-vyb5xf36.js} +3 -3
  50. package/dist/cli/{index-f6nrw8am.js → index-x48h0zsw.js} +29 -29
  51. package/dist/cli/{index-th667k1y.js → index-xxvman1m.js} +3 -3
  52. package/dist/cli/{index-qaqyq25k.js → index-y46b7a5g.js} +6 -6
  53. package/dist/cli/{index-c9g3hkjz.js → index-yg4923ga.js} +3 -3
  54. package/dist/cli/index.js +30 -30
  55. package/dist/cli/{knowledge-escalator-zxd76jna.js → knowledge-escalator-s25vhfrt.js} +8 -8
  56. package/dist/cli/{knowledge-events-z8h0wmaw.js → knowledge-events-qd39qwy1.js} +6 -6
  57. package/dist/cli/{knowledge-store-g2gm13s8.js → knowledge-store-y02hfxq9.js} +1 -1
  58. package/dist/cli/{knowledge-validator-2sech2sx.js → knowledge-validator-d7ysvdmw.js} +2 -2
  59. package/dist/cli/{mcp-t88363gj.js → mcp-5py3efbs.js} +1 -1
  60. package/dist/cli/{model-preflight-akj8g1m2.js → model-preflight-2zqrjnnh.js} +29 -29
  61. package/dist/cli/{pending-delegations-bqp6b6as.js → pending-delegations-9rt59skt.js} +3 -3
  62. package/dist/cli/{pr-subscriptions-wxjvkg56.js → pr-subscriptions-q51ze9rn.js} +3 -3
  63. package/dist/cli/{pr-workflow-gate-2wcrfa6g.js → pr-workflow-gate-3vj3f93g.js} +29 -29
  64. package/dist/cli/{scan-cursor-8br4x41t.js → scan-cursor-0fr17e5q.js} +2 -2
  65. package/dist/cli/{schema-mc419qh8.js → schema-10j951xn.js} +1 -1
  66. package/dist/cli/{scope-persistence-5gyjt70q.js → scope-persistence-jewjr6zg.js} +5 -5
  67. package/dist/cli/{server-bp247fqe.js → server-0s65qjx7.js} +29 -29
  68. package/dist/cli/{skill-generator-q4afafh3.js → skill-generator-7hxqq63r.js} +9 -9
  69. package/dist/cli/{snapshot-coordination-init-b4kmrgh7.js → snapshot-coordination-init-kh4dayg5.js} +29 -29
  70. package/dist/cli/{speckit-checkoff-1v02b2dt.js → speckit-checkoff-n8s920fs.js} +3 -3
  71. package/dist/cli/{workspace-snapshot-93gzfac2.js → workspace-snapshot-veqaqrjr.js} +2 -2
  72. package/dist/cli/{worktree-collision-ownership-84m9f5an.js → worktree-collision-ownership-7cz0a2sr.js} +4 -4
  73. package/dist/cli/{worktree-isolation-xwbszhja.js → worktree-isolation-4dbza44f.js} +29 -29
  74. package/dist/config/schema.d.ts +2 -0
  75. package/dist/full-auto/code-mode-program.d.ts +31 -0
  76. package/dist/full-auto/critic-tools.d.ts +18 -0
  77. package/dist/full-auto/policy.d.ts +17 -0
  78. package/dist/hooks/code-mode-wrapper.d.ts +28 -0
  79. package/dist/hooks/full-auto-intercept.d.ts +5 -0
  80. package/dist/hooks/full-auto-permission.d.ts +25 -0
  81. package/dist/hooks/pr-workflow-gate.d.ts +21 -1
  82. package/dist/hooks/utils.d.ts +15 -0
  83. package/dist/host/v2/agents-commands.d.ts +133 -7
  84. package/dist/host/v2/hook-budget.d.ts +37 -0
  85. package/dist/host/v2/hooks.d.ts +25 -2
  86. package/dist/host/v2/model-apply.d.ts +16 -6
  87. package/dist/host/v2/setup.d.ts +38 -0
  88. package/dist/host/v2/types.d.ts +27 -3
  89. package/dist/index.d.ts +15 -0
  90. package/dist/index.js +102 -98
  91. package/opencode-swarm.schema.json +8 -0
  92. package/package.json +1 -1
@@ -33,20 +33,20 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-th667k1y.js";
36
+ } from "./index-xxvman1m.js";
37
37
  import"./index-q7sjgr1y.js";
38
- import"./index-0ptf66x5.js";
39
- import"./index-parkaa70.js";
38
+ import"./index-v5nh2fhv.js";
39
+ import"./index-encs4mdm.js";
40
40
  import"./index-m9zzj4ee.js";
41
- import"./index-xyvsdn07.js";
42
- import"./index-sz67z90q.js";
41
+ import"./index-5q3hg1pk.js";
42
+ import"./index-44z8mv05.js";
43
43
  import"./index-v1h70r3y.js";
44
44
  import"./index-rtry5xyf.js";
45
- import"./index-51dw4bjc.js";
45
+ import"./index-pmcvznag.js";
46
46
  import"./index-g22dps7x.js";
47
47
  import"./index-0725jpp7.js";
48
48
  import"./index-ypxq0x7r.js";
49
- import"./index-bn3aa5q1.js";
49
+ import"./index-5c6zse74.js";
50
50
  import"./index-vzm6zre7.js";
51
51
  import"./index-ae75rja9.js";
52
52
  import"./index-g57p8p1k.js";
@@ -59,11 +59,11 @@ import"./index-ejhxgyvm.js";
59
59
  import"./index-7g4c7s5r.js";
60
60
  import"./index-epzadpmm.js";
61
61
  import"./index-3t46mez1.js";
62
- import"./index-3020n6d9.js";
62
+ import"./index-tmhwpzdg.js";
63
63
  import"./index-sp2cxpaq.js";
64
64
  import"./index-qbxk2rn6.js";
65
65
  import"./index-zgwm4ryv.js";
66
- import"./index-p6v544jn.js";
66
+ import"./index-5ph10kdd.js";
67
67
  import"./index-xfzkq1k4.js";
68
68
  import"./index-bk5tah7q.js";
69
69
  import"./index-gknz3bv1.js";
@@ -8,51 +8,51 @@ import {
8
8
  markSnapshotCoordinationClosing,
9
9
  retrySnapshotCoordinationInitialization,
10
10
  startSnapshotCoordinationInitialization
11
- } from "./index-2hnnkj64.js";
11
+ } from "./index-95k0fkhp.js";
12
12
  import"./index-s3w41p1x.js";
13
- import"./index-qzakbjcg.js";
14
- import"./index-c9g3hkjz.js";
15
- import"./index-pe77h482.js";
13
+ import"./index-bft3404e.js";
14
+ import"./index-yg4923ga.js";
15
+ import"./index-mff4szvk.js";
16
16
  import"./index-5snwc3dz.js";
17
17
  import"./index-axqyjreb.js";
18
18
  import"./index-txdagbh7.js";
19
- import"./index-dgyddtje.js";
20
- import"./index-z9mysg5m.js";
19
+ import"./index-bcn30s7q.js";
20
+ import"./index-8x90j950.js";
21
21
  import"./index-rdec0y3z.js";
22
- import"./index-12h2rtdj.js";
23
- import"./index-qaqyq25k.js";
24
- import"./index-th667k1y.js";
25
- import"./index-1v277wxc.js";
26
- import"./index-wgf1780e.js";
22
+ import"./index-q49vqmzh.js";
23
+ import"./index-y46b7a5g.js";
24
+ import"./index-xxvman1m.js";
25
+ import"./index-0vv7vzp8.js";
26
+ import"./index-1j14kbak.js";
27
27
  import"./index-x5jwegqw.js";
28
- import"./index-b4kdms7x.js";
29
- import"./index-0tygsk8b.js";
28
+ import"./index-7rpcbnp8.js";
29
+ import"./index-2nq7h5cj.js";
30
30
  import"./index-pt7h91zc.js";
31
31
  import"./index-q7sjgr1y.js";
32
- import"./index-rzkmg02a.js";
33
- import"./index-w2bhrp6z.js";
32
+ import"./index-5g0nrnyd.js";
33
+ import"./index-dgv5xy0b.js";
34
34
  import"./index-6b295cas.js";
35
35
  import"./index-9nyqt3kb.js";
36
- import"./index-vtkgg2qn.js";
36
+ import"./index-vyb5xf36.js";
37
37
  import"./index-v3bmwmqw.js";
38
38
  import"./index-8mrentmw.js";
39
- import"./index-3zspah3v.js";
40
- import"./index-sva5swrs.js";
41
- import"./index-3exe6k66.js";
39
+ import"./index-8f7wgcpz.js";
40
+ import"./index-j2x2ajz7.js";
41
+ import"./index-2r6d72m6.js";
42
42
  import"./index-spggmr30.js";
43
- import"./index-0ptf66x5.js";
44
- import"./index-parkaa70.js";
43
+ import"./index-v5nh2fhv.js";
44
+ import"./index-encs4mdm.js";
45
45
  import"./index-m9zzj4ee.js";
46
- import"./index-xyvsdn07.js";
47
- import"./index-sz67z90q.js";
46
+ import"./index-5q3hg1pk.js";
47
+ import"./index-44z8mv05.js";
48
48
  import"./index-v1h70r3y.js";
49
49
  import"./index-rtry5xyf.js";
50
- import"./index-51dw4bjc.js";
50
+ import"./index-pmcvznag.js";
51
51
  import"./index-g22dps7x.js";
52
52
  import"./index-0725jpp7.js";
53
- import"./index-2m740hyt.js";
53
+ import"./index-eac47j2q.js";
54
54
  import"./index-s9y49avf.js";
55
- import"./index-s8eac99p.js";
55
+ import"./index-9cffn82s.js";
56
56
  import"./index-na6ph1fp.js";
57
57
  import"./index-ves1rtqt.js";
58
58
  import"./index-ry16d01s.js";
@@ -61,7 +61,7 @@ import"./index-nzfq1ms2.js";
61
61
  import"./index-7pmbnjvj.js";
62
62
  import"./index-9rwhas09.js";
63
63
  import"./index-ypxq0x7r.js";
64
- import"./index-bn3aa5q1.js";
64
+ import"./index-5c6zse74.js";
65
65
  import"./index-vzm6zre7.js";
66
66
  import"./index-ae75rja9.js";
67
67
  import"./index-g57p8p1k.js";
@@ -74,11 +74,11 @@ import"./index-ejhxgyvm.js";
74
74
  import"./index-7g4c7s5r.js";
75
75
  import"./index-epzadpmm.js";
76
76
  import"./index-3t46mez1.js";
77
- import"./index-3020n6d9.js";
77
+ import"./index-tmhwpzdg.js";
78
78
  import"./index-sp2cxpaq.js";
79
79
  import"./index-qbxk2rn6.js";
80
80
  import"./index-zgwm4ryv.js";
81
- import"./index-p6v544jn.js";
81
+ import"./index-5ph10kdd.js";
82
82
  import"./index-xfzkq1k4.js";
83
83
  import"./index-bk5tah7q.js";
84
84
  import"./index-gknz3bv1.js";
@@ -7,15 +7,15 @@ import {
7
7
  parseSpeckitTasksContent,
8
8
  propagateSpeckitCheckoff,
9
9
  writeSpeckitCheckoffLedger
10
- } from "./index-3zspah3v.js";
10
+ } from "./index-8f7wgcpz.js";
11
11
  import"./index-ejhxgyvm.js";
12
12
  import"./index-7g4c7s5r.js";
13
13
  import"./index-epzadpmm.js";
14
- import"./index-3020n6d9.js";
14
+ import"./index-tmhwpzdg.js";
15
15
  import"./index-sp2cxpaq.js";
16
16
  import"./index-qbxk2rn6.js";
17
17
  import"./index-zgwm4ryv.js";
18
- import"./index-p6v544jn.js";
18
+ import"./index-5ph10kdd.js";
19
19
  import"./index-xfzkq1k4.js";
20
20
  import"./index-bk5tah7q.js";
21
21
  import"./index-gknz3bv1.js";
@@ -52,8 +52,8 @@ import {
52
52
  shouldSkipSnapshot,
53
53
  switchPrFeedbackTrackingCandidateAsync,
54
54
  workspaceSnapshotMatches
55
- } from "./index-1v277wxc.js";
56
- import"./index-xyvsdn07.js";
55
+ } from "./index-0vv7vzp8.js";
56
+ import"./index-5q3hg1pk.js";
57
57
  import"./index-te9hq2f4.js";
58
58
  import"./index-epzadpmm.js";
59
59
  import"./index-sp2cxpaq.js";
@@ -6,15 +6,15 @@ import {
6
6
  WORKTREE_PROVISIONING_OWNER_LEASE_MS,
7
7
  removeWorktreeProvisioningOwner,
8
8
  scanWorktreeProvisioningOwnersForRecovery
9
- } from "./index-b4kdms7x.js";
9
+ } from "./index-7rpcbnp8.js";
10
10
  import {
11
11
  scanDelegationFallbacksForRecovery,
12
12
  scanDelegationsForRecovery
13
- } from "./index-0tygsk8b.js";
13
+ } from "./index-2nq7h5cj.js";
14
14
  import {
15
15
  scanWorktreeMergeFailuresForRecovery
16
16
  } from "./index-v3bmwmqw.js";
17
- import"./index-xyvsdn07.js";
17
+ import"./index-5q3hg1pk.js";
18
18
  import"./index-s9y49avf.js";
19
19
  import"./index-na6ph1fp.js";
20
20
  import"./index-ves1rtqt.js";
@@ -23,7 +23,7 @@ import"./index-rdm3px0g.js";
23
23
  import"./index-nzfq1ms2.js";
24
24
  import"./index-7pmbnjvj.js";
25
25
  import"./index-ypxq0x7r.js";
26
- import"./index-bn3aa5q1.js";
26
+ import"./index-5c6zse74.js";
27
27
  import"./index-vzm6zre7.js";
28
28
  import"./index-ae75rja9.js";
29
29
  import"./index-g57p8p1k.js";
@@ -25,53 +25,53 @@ import {
25
25
  sanitizeWorktreeTaskId,
26
26
  standardWorktreeByCallID,
27
27
  standardWorktreeSerializationSessions
28
- } from "./index-2hnnkj64.js";
28
+ } from "./index-95k0fkhp.js";
29
29
  import"./index-s3w41p1x.js";
30
- import"./index-qzakbjcg.js";
31
- import"./index-c9g3hkjz.js";
32
- import"./index-pe77h482.js";
30
+ import"./index-bft3404e.js";
31
+ import"./index-yg4923ga.js";
32
+ import"./index-mff4szvk.js";
33
33
  import"./index-5snwc3dz.js";
34
34
  import"./index-axqyjreb.js";
35
35
  import"./index-txdagbh7.js";
36
- import"./index-dgyddtje.js";
37
- import"./index-z9mysg5m.js";
36
+ import"./index-bcn30s7q.js";
37
+ import"./index-8x90j950.js";
38
38
  import"./index-rdec0y3z.js";
39
- import"./index-12h2rtdj.js";
40
- import"./index-qaqyq25k.js";
41
- import"./index-th667k1y.js";
42
- import"./index-1v277wxc.js";
43
- import"./index-wgf1780e.js";
39
+ import"./index-q49vqmzh.js";
40
+ import"./index-y46b7a5g.js";
41
+ import"./index-xxvman1m.js";
42
+ import"./index-0vv7vzp8.js";
43
+ import"./index-1j14kbak.js";
44
44
  import"./index-x5jwegqw.js";
45
- import"./index-b4kdms7x.js";
46
- import"./index-0tygsk8b.js";
45
+ import"./index-7rpcbnp8.js";
46
+ import"./index-2nq7h5cj.js";
47
47
  import"./index-pt7h91zc.js";
48
48
  import"./index-q7sjgr1y.js";
49
- import"./index-rzkmg02a.js";
50
- import"./index-w2bhrp6z.js";
49
+ import"./index-5g0nrnyd.js";
50
+ import"./index-dgv5xy0b.js";
51
51
  import"./index-6b295cas.js";
52
52
  import"./index-9nyqt3kb.js";
53
- import"./index-vtkgg2qn.js";
53
+ import"./index-vyb5xf36.js";
54
54
  import"./index-v3bmwmqw.js";
55
55
  import"./index-8mrentmw.js";
56
- import"./index-3zspah3v.js";
57
- import"./index-sva5swrs.js";
58
- import"./index-3exe6k66.js";
56
+ import"./index-8f7wgcpz.js";
57
+ import"./index-j2x2ajz7.js";
58
+ import"./index-2r6d72m6.js";
59
59
  import"./index-spggmr30.js";
60
- import"./index-0ptf66x5.js";
61
- import"./index-parkaa70.js";
60
+ import"./index-v5nh2fhv.js";
61
+ import"./index-encs4mdm.js";
62
62
  import"./index-m9zzj4ee.js";
63
- import"./index-xyvsdn07.js";
64
- import"./index-sz67z90q.js";
63
+ import"./index-5q3hg1pk.js";
64
+ import"./index-44z8mv05.js";
65
65
  import"./index-v1h70r3y.js";
66
66
  import"./index-rtry5xyf.js";
67
67
  import {
68
68
  resolveWorktreeIsolationConfig
69
- } from "./index-51dw4bjc.js";
69
+ } from "./index-pmcvznag.js";
70
70
  import"./index-g22dps7x.js";
71
71
  import"./index-0725jpp7.js";
72
- import"./index-2m740hyt.js";
72
+ import"./index-eac47j2q.js";
73
73
  import"./index-s9y49avf.js";
74
- import"./index-s8eac99p.js";
74
+ import"./index-9cffn82s.js";
75
75
  import"./index-na6ph1fp.js";
76
76
  import"./index-ves1rtqt.js";
77
77
  import"./index-ry16d01s.js";
@@ -80,7 +80,7 @@ import"./index-nzfq1ms2.js";
80
80
  import"./index-7pmbnjvj.js";
81
81
  import"./index-9rwhas09.js";
82
82
  import"./index-ypxq0x7r.js";
83
- import"./index-bn3aa5q1.js";
83
+ import"./index-5c6zse74.js";
84
84
  import"./index-vzm6zre7.js";
85
85
  import"./index-ae75rja9.js";
86
86
  import"./index-g57p8p1k.js";
@@ -93,11 +93,11 @@ import"./index-ejhxgyvm.js";
93
93
  import"./index-7g4c7s5r.js";
94
94
  import"./index-epzadpmm.js";
95
95
  import"./index-3t46mez1.js";
96
- import"./index-3020n6d9.js";
96
+ import"./index-tmhwpzdg.js";
97
97
  import"./index-sp2cxpaq.js";
98
98
  import"./index-qbxk2rn6.js";
99
99
  import"./index-zgwm4ryv.js";
100
- import"./index-p6v544jn.js";
100
+ import"./index-5ph10kdd.js";
101
101
  import"./index-xfzkq1k4.js";
102
102
  import"./index-bk5tah7q.js";
103
103
  import"./index-gknz3bv1.js";
@@ -3380,6 +3380,7 @@ export declare const PluginConfigSchema: z.ZodObject<{
3380
3380
  trusted_domains: z.ZodDefault<z.ZodArray<z.ZodString>>;
3381
3381
  protected_paths: z.ZodDefault<z.ZodArray<z.ZodString>>;
3382
3382
  allow_defaults: z.ZodDefault<z.ZodBoolean>;
3383
+ trust_code_mode_wrapper: z.ZodOptional<z.ZodBoolean>;
3383
3384
  }, z.core.$strip>>;
3384
3385
  denials: z.ZodDefault<z.ZodObject<{
3385
3386
  max_consecutive: z.ZodDefault<z.ZodNumber>;
@@ -3402,6 +3403,7 @@ export declare const PluginConfigSchema: z.ZodObject<{
3402
3403
  max_consecutive_dispatch_failures: z.ZodDefault<z.ZodNumber>;
3403
3404
  total_timeout_ms: z.ZodDefault<z.ZodNumber>;
3404
3405
  cleanup_timeout_ms: z.ZodDefault<z.ZodNumber>;
3406
+ hook_timeout_ms: z.ZodOptional<z.ZodNumber>;
3405
3407
  }, z.core.$strip>>;
3406
3408
  }, z.core.$strip>>>;
3407
3409
  pr_feedback_loop: z.ZodOptional<z.ZodObject<{
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Strict recogniser for the only OpenCode v2 Code Mode programs Full-Auto may
3
+ * pass through without a critic (#3446).
4
+ *
5
+ * The Code Mode sandbox is not limited to hooked tools: it also exposes
6
+ * `fetch`, `Function`, `crypto`, `URL`, `Promise`, `JSON`, `Math` and `Date`
7
+ * (observed on OpenCode 2.1.4), so "the wrapper only routes nested tool calls"
8
+ * is false in general. A denylist over arbitrary JS cannot be made safe
9
+ * (`Function(...)`, computed member access, string concatenation). Instead,
10
+ * this module ACCEPTS a tiny grammar and rejects everything else:
11
+ *
12
+ * program := ws [`return` ws] [`await` ws] callee ws `(` ws [value] ws `)` ws [`;`] ws
13
+ * callee := `search` | `tools` segment+
14
+ * segment := `.` ident | `[` ws string ws `]`
15
+ * value := string | number | `true` | `false` | `null` | object | array
16
+ * object := `{` ws [pair (ws `,` ws pair)* [ws `,`]] ws `}`
17
+ * pair := (ident | string) ws `:` ws value
18
+ *
19
+ * That is exactly one tool call whose argument is plain data: no identifiers
20
+ * other than the callee path and object keys, so no other call, no member
21
+ * access on a value, no computed keys, no templates, comments, regexes or
22
+ * functions can appear. The nested call itself is still dispatched through the
23
+ * same tool.execute.before chain under its own name and classified there.
24
+ * Anything else (multi-statement, loops, variables, `fetch`, ...) returns
25
+ * false and Full-Auto keeps escalating it to the critic.
26
+ */
27
+ /**
28
+ * True only when `code` is exactly one `tools.<path>(<plain data>)` or
29
+ * `search(<plain data>)` call, optionally prefixed by `return` and/or `await`.
30
+ */
31
+ export declare function isSingleToolCallProgram(code: unknown): boolean;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Tools denied to the Full-Auto critic agent (#3446).
3
+ *
4
+ * The critic's task is "verify using read-only tools only", but `shell`/`bash`
5
+ * are not read-only and — worse for latency — let the critic wander: on
6
+ * OpenCode 2 every observed critic session ran `grep -rl` / `find ~` over the
7
+ * user's home directory until the oversight deadline killed it, so no verdict
8
+ * was ever produced and Full-Auto paused. Shell is denied alongside the
9
+ * mutating tools; the critic keeps read/grep/glob and the swarm's own
10
+ * read-only verification tools (diff, evidence, test_impact, symbols).
11
+ *
12
+ * Limit, stated plainly: `execute` (OpenCode 2 Code Mode, which reaches plugin
13
+ * tools such as diff/evidence/test_impact) stays available to the critic by
14
+ * design, and its sandbox also exposes `fetch`/`Function`, which no hook sees.
15
+ * This denial list therefore bounds shell and mutating tools only; it is not a
16
+ * sandbox. A restricted critic Code Mode surface is a follow-up.
17
+ */
18
+ export declare const FULL_AUTO_CRITIC_DENIED_TOOLS: Readonly<Record<string, false>>;
@@ -31,6 +31,8 @@ export interface FullAutoPolicyConfig {
31
31
  trusted_domains?: string[];
32
32
  protected_paths?: string[];
33
33
  allow_defaults?: boolean;
34
+ /** Opt in to passing the marked OpenCode 2 Code Mode wrapper (#3446). */
35
+ trust_code_mode_wrapper?: boolean;
34
36
  };
35
37
  oversight?: {
36
38
  on_high_risk_action?: boolean;
@@ -52,6 +54,21 @@ export interface FullAutoClassifierInput {
52
54
  planSummary?: string;
53
55
  changedFiles?: string[];
54
56
  fullAutoConfig: FullAutoPolicyConfig | undefined;
57
+ /**
58
+ * True for a call the OpenCode v2 adapter marked as the host's Code Mode
59
+ * `execute` wrapper (see `src/hooks/code-mode-wrapper.ts`). The mark is not
60
+ * proof of provenance (a same-named third-party tool is marked too), so it
61
+ * is only honoured with the operator opt-in `trust_code_mode_wrapper`.
62
+ */
63
+ hostCodeModeWrapper?: boolean;
64
+ /**
65
+ * True when this `swarm_command` is on the explicit read-only allowlist
66
+ * (`READ_ONLY_SWARM_COMMANDS`) AND the tool's own policy allows it. Computed
67
+ * by the permission hook so this module stays free of the command
68
+ * registry's import graph. Absent or false means the call is escalated like
69
+ * any unclassified tool.
70
+ */
71
+ swarmCommandReadOnly?: boolean;
55
72
  pluginConfig?: {
56
73
  memory?: {
57
74
  enabled?: boolean;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Per-call marker for the OpenCode v2 Code Mode `execute` wrapper (#3446).
3
+ *
4
+ * OpenCode v2 reaches plugin and MCP tools through one host-owned `execute`
5
+ * tool whose input is a JS program (`{ code }`); every nested `tools.<name>()`
6
+ * call is dispatched through the tool.execute.before chain under its own name.
7
+ * Only the v2 adapter sees the host's real tool id, so only the adapter can
8
+ * mark a call. The mark is NOT proof of provenance: a v2 tool event is just
9
+ * {tool, sessionID, agent, messageID, id, input}, so a plugin- or MCP-provided
10
+ * tool that shares the name `execute` and takes a string `code` is marked too.
11
+ * That is why the Full-Auto classifier only honours the mark when the operator
12
+ * opts in (`permission_policy.trust_code_mode_wrapper`, default false) and the
13
+ * program is exactly one plain-data tool call. On a v1 host nothing is marked.
14
+ *
15
+ * Side-channel shape mirrors `src/sandbox/skip-state.ts` (keyed by
16
+ * session + call, bounded, FIFO-evicted) so session state stays bounded
17
+ * (invariant 8).
18
+ */
19
+ /** Hard cap on retained marks; oldest are evicted first. */
20
+ export declare const MAX_CODE_MODE_WRAPPER_MARKS = 256;
21
+ /** Record that this exact call is the host's Code Mode `execute` wrapper. */
22
+ export declare function recordCodeModeWrapperCall(sessionID: string, callID: string): void;
23
+ /** True only for a call the v2 adapter marked as the Code Mode wrapper. */
24
+ export declare function isCodeModeWrapperCall(sessionID: string, callID: string | undefined): boolean;
25
+ /** Drop a mark once the call has completed. */
26
+ export declare function clearCodeModeWrapperCall(sessionID: string, callID: string): void;
27
+ /** Test seam: drop every mark. */
28
+ export declare function resetCodeModeWrapperCalls(): void;
@@ -69,4 +69,9 @@ export declare function createFullAutoInterceptHook(config: PluginConfig, direct
69
69
  messages?: MessageWithParts[];
70
70
  }) => Promise<void>;
71
71
  };
72
+ /**
73
+ * Builds additional context to append to the autonomous oversight prompt.
74
+ * This provides the architect's question/output for the critic to evaluate.
75
+ */
76
+ export declare function buildCriticContext(architectOutput: string, escalationType: 'phase_completion' | 'question'): string;
72
77
  export {};
@@ -35,6 +35,31 @@ export interface FullAutoPermissionHookOptions {
35
35
  config: PluginConfig;
36
36
  directory: string;
37
37
  }
38
+ /**
39
+ * `/swarm` commands that only read and display state. Deliberately SEPARATE from
40
+ * the tool policy's agent allowlist, which also contains state-changing and
41
+ * process-spawning commands (`auto-proceed`, `guardrail reset`, `attest`,
42
+ * `ci-simulate`, `gate-audit`, `review`, `post-mortem`, `pr subscribe`,
43
+ * `sdd project`, `*-opt` runs, ...). Canonical keys.
44
+ *
45
+ * The invariant is: no change to source, plan, gates or any operator-visible
46
+ * state, and no process spawn or network egress. Some of these commands do
47
+ * refresh bookkeeping under `.swarm/` (e.g. `report` writes `.swarm/swarm.db`
48
+ * and a cohort manifest, `memory *` create `.swarm/memory/memory.db`, and
49
+ * commands that load the plan may regenerate `plan.md`): writes are confined
50
+ * to `.swarm/`, which `tests/unit/hooks/full-auto-swarm-command-policy-3446.test.ts`
51
+ * pins by running every key and diffing the tree outside `.swarm/`. Keys that
52
+ * were shown to spawn processes (`diagnose`, `doctor tools`) or contact
53
+ * GitHub (`pr status`) are NOT in this set.
54
+ */
55
+ export declare const READ_ONLY_SWARM_COMMANDS: ReadonlySet<string>;
56
+ /**
57
+ * Is this `swarm_command` call on the read-only allowlist AND permitted by the
58
+ * tool's own policy for this exact command + args? Anything else (unknown,
59
+ * human-only, restricted, bad args, or any state-changing command) returns
60
+ * false and falls through to the normal escalation.
61
+ */
62
+ export declare function isSwarmCommandReadOnly(args: unknown): boolean;
38
63
  export declare function createFullAutoPermissionHook(options: FullAutoPermissionHookOptions): {
39
64
  toolBefore: (input: {
40
65
  tool: string;
@@ -31,7 +31,7 @@ export { PR_REVIEW_BASE_DIMENSION_IDS };
31
31
  export declare const PR_REVIEW_REQUIRED_MICRO_LANE_IDS: ("auth-identity-secrets" | "untrusted-input-boundaries" | "subprocess-platform" | "concurrency-state" | "dependencies-build-release" | "api-schema-migrations" | "test-infrastructure" | "ui-accessibility-i18n" | "privacy-observability" | "generated-provenance" | "unclassified-risk")[];
32
32
  export type PrReviewBaseDimensionId = (typeof PR_REVIEW_BASE_DIMENSION_IDS)[number];
33
33
  export type PrWorkflowMode = 'PR_REVIEW' | 'PR_FEEDBACK';
34
- export type PrReviewLaneValidationPredicate = 'batch.validated_at' | 'batch.expected_lane_unique' | 'record.missing' | 'record.duplicate_lane' | 'record.subagent_session_id' | 'record.duplicate_subagent_session_id' | 'record.forbidden_subagent_session_id' | 'record.created_at' | 'record.workflow_lane' | 'record.owned_workflow_lanes' | 'record.mode' | 'record.pr_head_sha' | 'record.git_head' | 'record.status' | 'result.output_degraded' | 'result.transcript_incomplete' | 'result.chars' | 'result.digest' | 'result.output_ref' | 'artifact.readable' | 'artifact.ref' | 'artifact.batch_id' | 'artifact.lane_id' | 'artifact.mode' | 'artifact.session_id' | 'artifact.parent_session_id' | 'artifact.agent' | 'artifact.role' | 'artifact.source' | 'artifact.workflow_lane_record' | 'artifact.workflow_lane_expected' | 'artifact.pr_head_sha' | 'artifact.git_head' | 'artifact.revision_digest' | 'record.scope' | 'artifact.scope' | 'artifact.digest' | 'artifact.chars' | 'discovery.header' | 'discovery.row' | 'discovery.coverage' | 'discovery.duplicate_evidence' | 'reviewer.verdict_rows' | 'critic.verdict_rows';
34
+ export type PrReviewLaneValidationPredicate = 'batch.validated_at' | 'batch.expected_lane_unique' | 'record.missing' | 'record.duplicate_lane' | 'record.subagent_session_id' | 'record.duplicate_subagent_session_id' | 'record.forbidden_subagent_session_id' | 'record.created_at' | 'record.workflow_lane' | 'record.owned_workflow_lanes' | 'record.mode' | 'record.normalized_agent' | 'record.pr_head_sha' | 'record.git_head' | 'record.status' | 'result.output_degraded' | 'result.transcript_incomplete' | 'result.chars' | 'result.digest' | 'result.output_ref' | 'artifact.readable' | 'artifact.ref' | 'artifact.batch_id' | 'artifact.lane_id' | 'artifact.mode' | 'artifact.session_id' | 'artifact.parent_session_id' | 'artifact.agent' | 'artifact.role' | 'artifact.source' | 'artifact.workflow_lane_record' | 'artifact.workflow_lane_expected' | 'artifact.pr_head_sha' | 'artifact.git_head' | 'artifact.revision_digest' | 'record.scope' | 'artifact.scope' | 'artifact.digest' | 'artifact.chars' | 'discovery.header' | 'discovery.row' | 'discovery.coverage' | 'discovery.duplicate_evidence' | 'reviewer.verdict_rows' | 'critic.verdict_rows';
35
35
  export interface PrReviewLaneValidationFailure {
36
36
  predicate: PrReviewLaneValidationPredicate;
37
37
  expected: string;
@@ -182,6 +182,15 @@ export interface PrWorkflowLaneSpec {
182
182
  laneId?: string;
183
183
  workflowLane?: string;
184
184
  reviewItemIds?: string[];
185
+ /**
186
+ * The agent this lane declares it will run (threaded from the dispatch
187
+ * lane's `agent`). The critic-phase recorder asserts its canonical role
188
+ * (issue #3340 AC1): PR_REVIEW critic batches are refused unless every
189
+ * lane declares an agent whose resolved role is exactly `critic`, so the
190
+ * role rule holds at the persisting boundary instead of only at the
191
+ * dispatch call site (#3310). Persisted on the batch record for audit.
192
+ */
193
+ agent?: string;
185
194
  /**
186
195
  * Complete dimension/family set this lane covers under a consolidated depth
187
196
  * tier. Must contain workflowLane. Absent means the singleton [workflowLane].
@@ -425,6 +434,8 @@ interface PrReviewValidationBatchRecord {
425
434
  laneId: string;
426
435
  workflowLane: string;
427
436
  reviewItemIds?: string[];
437
+ /** Declared lane agent (issue #3340 audit trail; critic batches refuse non-critic roles at record time). */
438
+ agent?: string;
428
439
  }>;
429
440
  validatedAt: string;
430
441
  }
@@ -1357,6 +1368,14 @@ export declare function recordPrReviewValidationBatch(directory: string, session
1357
1368
  * closed so the prompt can never misrepresent the stamped receipt.
1358
1369
  */
1359
1370
  expectedPresentationOrder?: 'A' | 'B';
1371
+ /**
1372
+ * Issue #3340 AC1: the generated-agent-name registry the dispatch
1373
+ * caller resolves lane roles against. When supplied, the critic-phase
1374
+ * admission below resolves declared agents through the identical
1375
+ * strict resolver, so the gate verdict matches the dispatch verdict
1376
+ * for prefixed generated names (e.g. `mega_critic`).
1377
+ */
1378
+ generatedAgentNames?: readonly string[];
1360
1379
  }): Promise<PrWorkflowGateState>;
1361
1380
  /**
1362
1381
  * Validate that every declared council obligation has a successful retry, and
@@ -1835,6 +1854,7 @@ export declare const _test_exports: {
1835
1854
  laneId: string;
1836
1855
  workflowLane: string;
1837
1856
  reviewItemIds?: string[] | undefined;
1857
+ agent?: string | undefined;
1838
1858
  }[];
1839
1859
  validatedAt: string;
1840
1860
  }[] | undefined;
@@ -25,6 +25,21 @@ type HookHandler<I, O> = (input: I, output: O) => Promise<void>;
25
25
  export declare function markFailClosed<I, O>(fn: HookHandler<I, O>): HookHandler<I, O> & {
26
26
  __failClosed?: true;
27
27
  };
28
+ /**
29
+ * Read-once accessor for the swallowed-command-error registry (#3318 AC6):
30
+ * returns the recorded error message for the exact (sessionID, command) pair
31
+ * and consumes the entry, or undefined when nothing is recorded (a miss
32
+ * consumes nothing). The v2 command dispatcher is the sole designed reader.
33
+ *
34
+ * `sinceMs` (#2910 W6 / review PRR-006): when provided, a record OLDER than
35
+ * this timestamp is STALE timeout residue (a timed-out dispatch's handler
36
+ * throwing after its dispatch already returned) — it is consumed and ignored
37
+ * (undefined) so it cannot poison this dispatch. Records created at or after
38
+ * `sinceMs` are fresh failures of THIS dispatch.
39
+ */
40
+ export declare function getLastSwallowedCommandError(sessionID: string, command: string, sinceMs?: number): string | undefined;
41
+ /** Empty the swallowed-command-error registry (v2 setup cleanup / tests). */
42
+ export declare function clearSwallowedCommandErrorRegistry(): void;
28
43
  export declare function safeHook<I, O>(fn: HookHandler<I, O>): HookHandler<I, O>;
29
44
  /**
30
45
  * `composeHandlers` runs handlers sequentially, wrapping EACH handler in