opencode-swarm 7.200.5 → 7.200.7

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 (75) hide show
  1. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  2. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  3. package/dist/cli/{attest-task-0k72fh70.js → attest-task-rp4xn5wh.js} +31 -27
  4. package/dist/cli/{auto-checkpoint-8g004dar.js → auto-checkpoint-a6x7bw5k.js} +4 -4
  5. package/dist/cli/{checkpoint-18wx2473.js → checkpoint-kpgmse11.js} +8 -8
  6. package/dist/cli/{coder-settlement-r2q6pkxc.js → coder-settlement-f54sfmaj.js} +4 -3
  7. package/dist/cli/{config-doctor-h071vxsj.js → config-doctor-hpakt9zz.js} +7 -7
  8. package/dist/cli/{core-6767154r.js → core-m2x9w49f.js} +1 -1
  9. package/dist/cli/{curator-drift-gd7tckag.js → curator-drift-hxfzkkhg.js} +5 -5
  10. package/dist/cli/{curator-pf0edk2z.js → curator-ghjq55v7.js} +25 -25
  11. package/dist/cli/{curator-llm-factory-mf701qb7.js → curator-llm-factory-b3hk73vd.js} +25 -25
  12. package/dist/cli/{doctor-knowledge-receipt-phase-id-zz0tz3pt.js → doctor-knowledge-receipt-phase-id-wk9vry5a.js} +4 -4
  13. package/dist/cli/{evidence-summary-service-awjxt2am.js → evidence-summary-service-gf50zpwx.js} +9 -9
  14. package/dist/cli/{gate-evidence-tvkhkqwy.js → gate-evidence-7my0f82h.js} +7 -2
  15. package/dist/cli/{guardrail-explain-m70anx1g.js → guardrail-explain-e1ck0csp.js} +26 -26
  16. package/dist/cli/{guardrail-log-3sf6n33b.js → guardrail-log-hkkkwmj1.js} +3 -3
  17. package/dist/cli/{guardrail-reset-t94jbv1q.js → guardrail-reset-wwnbcexb.js} +25 -25
  18. package/dist/cli/{hive-promoter-60h9tqgs.js → hive-promoter-4nzbfwcd.js} +25 -25
  19. package/dist/cli/{index-hfnj4s6r.js → index-0fbtnkyw.js} +25 -25
  20. package/dist/cli/{index-ryrg48c7.js → index-223g5dj9.js} +5 -5
  21. package/dist/cli/{index-yamz6830.js → index-39pge60a.js} +1 -1
  22. package/dist/cli/{index-cy2gbs5b.js → index-5djd4vrn.js} +1 -1
  23. package/dist/cli/{index-1by2qd8n.js → index-6e75mvmn.js} +1 -1
  24. package/dist/cli/{index-b4amh1n3.js → index-6phyfsvn.js} +3 -3
  25. package/dist/cli/{index-se501ytb.js → index-7r9yg7h1.js} +1 -1
  26. package/dist/cli/{index-8c51asrp.js → index-87kk5dqm.js} +232 -97
  27. package/dist/cli/{index-687c2ze1.js → index-8k6jd7a9.js} +3 -3
  28. package/dist/cli/{index-10myvh2k.js → index-bgcanr26.js} +1 -1
  29. package/dist/cli/{index-5qajesjq.js → index-c0dbzf9v.js} +3 -3
  30. package/dist/cli/{index-3x8mz39c.js → index-f3ed5wde.js} +1 -1
  31. package/dist/cli/{index-twwdx79t.js → index-f4tht67a.js} +1 -1
  32. package/dist/cli/{index-74n7sz4s.js → index-g5hghxgw.js} +1 -1
  33. package/dist/cli/{index-dsqavehz.js → index-h9hgxbsw.js} +1 -1
  34. package/dist/cli/{index-k01n01sc.js → index-jfkzhyqs.js} +3 -3
  35. package/dist/cli/{index-1asbb0r4.js → index-k69vjyfm.js} +1 -1
  36. package/dist/cli/{index-xh861gf3.js → index-kmnyh4r1.js} +2 -2
  37. package/dist/cli/{index-ee59rzwk.js → index-mkkwhrtn.js} +2 -2
  38. package/dist/cli/{index-vxbj42j0.js → index-mnpcwcqf.js} +2 -2
  39. package/dist/cli/{index-g1b5xxzc.js → index-p61vaebj.js} +5 -4
  40. package/dist/cli/{index-826kptfe.js → index-q8fy8cxa.js} +3 -3
  41. package/dist/cli/{index-h8419k5d.js → index-qc3qqknb.js} +4 -4
  42. package/dist/cli/{index-4mjfdpte.js → index-ramxwbtt.js} +6 -6
  43. package/dist/cli/{index-1akazdbj.js → index-rjtf507t.js} +48 -3
  44. package/dist/cli/{index-pvj101jx.js → index-sy15gtjr.js} +3 -3
  45. package/dist/cli/{index-xdk3cxs9.js → index-vhkk8grb.js} +27 -27
  46. package/dist/cli/{index-phz90w3t.js → index-vsqc38a0.js} +1 -1
  47. package/dist/cli/{index-vz1fh1v3.js → index-wkz6w3yy.js} +3 -3
  48. package/dist/cli/{index-wyfag7r7.js → index-y76sev7j.js} +2 -2
  49. package/dist/cli/index.js +26 -26
  50. package/dist/cli/{knowledge-escalator-3096yt7j.js → knowledge-escalator-cx03qhmc.js} +7 -7
  51. package/dist/cli/{knowledge-events-st3j22za.js → knowledge-events-cfdd3syn.js} +5 -5
  52. package/dist/cli/{knowledge-store-9q8jvd0p.js → knowledge-store-fgwc40g2.js} +1 -1
  53. package/dist/cli/{knowledge-validator-fak1fvdm.js → knowledge-validator-hvah3jxx.js} +2 -2
  54. package/dist/cli/{mcp-shvt5c9b.js → mcp-1crekab3.js} +1 -1
  55. package/dist/cli/{model-preflight-cxhdzc9c.js → model-preflight-knjgtnwb.js} +25 -25
  56. package/dist/cli/{pending-delegations-tjj8nhmm.js → pending-delegations-3a2tgmgq.js} +2 -2
  57. package/dist/cli/{pr-subscriptions-xtnbfg8m.js → pr-subscriptions-8yprtmt7.js} +1 -1
  58. package/dist/cli/{pr-workflow-gate-24ytg64p.js → pr-workflow-gate-fcpvkwg8.js} +25 -25
  59. package/dist/cli/{scan-cursor-drax4dt3.js → scan-cursor-a776c7b6.js} +2 -2
  60. package/dist/cli/{schema-epr5xxb0.js → schema-evj1vbxz.js} +1 -1
  61. package/dist/cli/{scope-persistence-pyn9vb4r.js → scope-persistence-s1e120ba.js} +5 -5
  62. package/dist/cli/{server-c5b651kg.js → server-exd3q95h.js} +25 -25
  63. package/dist/cli/{skill-generator-r8kvvbh2.js → skill-generator-6r8pxx5z.js} +8 -8
  64. package/dist/cli/{snapshot-coordination-init-wnt85258.js → snapshot-coordination-init-z8b9twvf.js} +25 -25
  65. package/dist/cli/{speckit-checkoff-64p4d5hf.js → speckit-checkoff-hhbcq87w.js} +3 -3
  66. package/dist/cli/{worktree-collision-ownership-eej2phhm.js → worktree-collision-ownership-waf8d48d.js} +2 -2
  67. package/dist/cli/{worktree-isolation-xsc0k2n3.js → worktree-isolation-ea4qe5f5.js} +25 -25
  68. package/dist/gate-evidence.d.ts +20 -0
  69. package/dist/hooks/guardrails/tool-before.d.ts +1 -1
  70. package/dist/hooks/shell-executor-context.d.ts +17 -0
  71. package/dist/hooks/shell-write-detect.d.ts +26 -0
  72. package/dist/host/v2/hooks.d.ts +20 -0
  73. package/dist/host/v2/types.d.ts +27 -0
  74. package/dist/index.js +17 -17
  75. package/package.json +1 -1
@@ -33,21 +33,21 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-b4amh1n3.js";
36
+ } from "./index-6phyfsvn.js";
37
37
  import"./index-q7sjgr1y.js";
38
- import"./index-ee59rzwk.js";
39
- import"./index-wyfag7r7.js";
38
+ import"./index-mkkwhrtn.js";
39
+ import"./index-y76sev7j.js";
40
40
  import"./index-m9zzj4ee.js";
41
41
  import"./index-4krkevgc.js";
42
- import"./index-10myvh2k.js";
42
+ import"./index-bgcanr26.js";
43
43
  import"./index-mhd6kdzr.js";
44
44
  import"./index-rtry5xyf.js";
45
- import"./index-xh861gf3.js";
45
+ import"./index-kmnyh4r1.js";
46
46
  import"./index-g22dps7x.js";
47
47
  import"./index-0725jpp7.js";
48
48
  import"./index-8srvdpw6.js";
49
49
  import"./index-9rwhas09.js";
50
- import"./index-h8419k5d.js";
50
+ import"./index-qc3qqknb.js";
51
51
  import"./index-vzm6zre7.js";
52
52
  import"./index-ae75rja9.js";
53
53
  import"./index-4fkxdnc7.js";
@@ -60,11 +60,11 @@ import"./index-ejhxgyvm.js";
60
60
  import"./index-7g4c7s5r.js";
61
61
  import"./index-mn75z39t.js";
62
62
  import"./index-3t46mez1.js";
63
- import"./index-dsqavehz.js";
63
+ import"./index-h9hgxbsw.js";
64
64
  import"./index-sp2cxpaq.js";
65
65
  import"./index-qbxk2rn6.js";
66
66
  import"./index-zgwm4ryv.js";
67
- import"./index-se501ytb.js";
67
+ import"./index-7r9yg7h1.js";
68
68
  import"./index-xfzkq1k4.js";
69
69
  import"./index-bk5tah7q.js";
70
70
  import"./index-gknz3bv1.js";
@@ -8,51 +8,51 @@ import {
8
8
  markSnapshotCoordinationClosing,
9
9
  retrySnapshotCoordinationInitialization,
10
10
  startSnapshotCoordinationInitialization
11
- } from "./index-8c51asrp.js";
11
+ } from "./index-87kk5dqm.js";
12
12
  import"./index-p2dst45x.js";
13
- import"./index-1by2qd8n.js";
14
- import"./index-k01n01sc.js";
15
- import"./index-cy2gbs5b.js";
13
+ import"./index-6e75mvmn.js";
14
+ import"./index-jfkzhyqs.js";
15
+ import"./index-5djd4vrn.js";
16
16
  import"./index-4ph7ad0b.js";
17
17
  import"./index-axqyjreb.js";
18
18
  import"./index-txdagbh7.js";
19
- import"./index-4mjfdpte.js";
20
- import"./index-3x8mz39c.js";
19
+ import"./index-ramxwbtt.js";
20
+ import"./index-f3ed5wde.js";
21
21
  import"./index-rdec0y3z.js";
22
- import"./index-74n7sz4s.js";
23
- import"./index-826kptfe.js";
24
- import"./index-b4amh1n3.js";
22
+ import"./index-g5hghxgw.js";
23
+ import"./index-q8fy8cxa.js";
24
+ import"./index-6phyfsvn.js";
25
25
  import"./index-bk8r4m9j.js";
26
26
  import"./index-tecp3a77.js";
27
27
  import"./index-x5jwegqw.js";
28
28
  import"./index-7h22y3ew.js";
29
- import"./index-pvj101jx.js";
29
+ import"./index-sy15gtjr.js";
30
30
  import"./index-pt7h91zc.js";
31
31
  import"./index-q7sjgr1y.js";
32
- import"./index-687c2ze1.js";
33
- import"./index-ryrg48c7.js";
32
+ import"./index-8k6jd7a9.js";
33
+ import"./index-223g5dj9.js";
34
34
  import"./index-6b295cas.js";
35
35
  import"./index-9nyqt3kb.js";
36
- import"./index-5qajesjq.js";
36
+ import"./index-c0dbzf9v.js";
37
37
  import"./index-697mg68b.js";
38
38
  import"./index-8mrentmw.js";
39
- import"./index-phz90w3t.js";
40
- import"./index-1akazdbj.js";
41
- import"./index-twwdx79t.js";
39
+ import"./index-vsqc38a0.js";
40
+ import"./index-rjtf507t.js";
41
+ import"./index-f4tht67a.js";
42
42
  import"./index-spggmr30.js";
43
- import"./index-ee59rzwk.js";
44
- import"./index-wyfag7r7.js";
43
+ import"./index-mkkwhrtn.js";
44
+ import"./index-y76sev7j.js";
45
45
  import"./index-m9zzj4ee.js";
46
46
  import"./index-4krkevgc.js";
47
- import"./index-10myvh2k.js";
47
+ import"./index-bgcanr26.js";
48
48
  import"./index-mhd6kdzr.js";
49
49
  import"./index-rtry5xyf.js";
50
- import"./index-xh861gf3.js";
50
+ import"./index-kmnyh4r1.js";
51
51
  import"./index-g22dps7x.js";
52
52
  import"./index-0725jpp7.js";
53
- import"./index-1asbb0r4.js";
53
+ import"./index-k69vjyfm.js";
54
54
  import"./index-v839c9mv.js";
55
- import"./index-vxbj42j0.js";
55
+ import"./index-mnpcwcqf.js";
56
56
  import"./index-2x015vjy.js";
57
57
  import"./index-y7c4hqcj.js";
58
58
  import"./index-ry16d01s.js";
@@ -61,7 +61,7 @@ import"./index-vtpt8yns.js";
61
61
  import"./index-7pmbnjvj.js";
62
62
  import"./index-8srvdpw6.js";
63
63
  import"./index-9rwhas09.js";
64
- import"./index-h8419k5d.js";
64
+ import"./index-qc3qqknb.js";
65
65
  import"./index-vzm6zre7.js";
66
66
  import"./index-ae75rja9.js";
67
67
  import"./index-4fkxdnc7.js";
@@ -74,11 +74,11 @@ import"./index-ejhxgyvm.js";
74
74
  import"./index-7g4c7s5r.js";
75
75
  import"./index-mn75z39t.js";
76
76
  import"./index-3t46mez1.js";
77
- import"./index-dsqavehz.js";
77
+ import"./index-h9hgxbsw.js";
78
78
  import"./index-sp2cxpaq.js";
79
79
  import"./index-qbxk2rn6.js";
80
80
  import"./index-zgwm4ryv.js";
81
- import"./index-se501ytb.js";
81
+ import"./index-7r9yg7h1.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-phz90w3t.js";
10
+ } from "./index-vsqc38a0.js";
11
11
  import"./index-ejhxgyvm.js";
12
12
  import"./index-7g4c7s5r.js";
13
13
  import"./index-mn75z39t.js";
14
- import"./index-dsqavehz.js";
14
+ import"./index-h9hgxbsw.js";
15
15
  import"./index-sp2cxpaq.js";
16
16
  import"./index-qbxk2rn6.js";
17
17
  import"./index-zgwm4ryv.js";
18
- import"./index-se501ytb.js";
18
+ import"./index-7r9yg7h1.js";
19
19
  import"./index-xfzkq1k4.js";
20
20
  import"./index-bk5tah7q.js";
21
21
  import"./index-gknz3bv1.js";
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  scanDelegationFallbacksForRecovery,
12
12
  scanDelegationsForRecovery
13
- } from "./index-pvj101jx.js";
13
+ } from "./index-sy15gtjr.js";
14
14
  import {
15
15
  scanWorktreeMergeFailuresForRecovery
16
16
  } from "./index-697mg68b.js";
@@ -23,7 +23,7 @@ import"./index-rdm3px0g.js";
23
23
  import"./index-vtpt8yns.js";
24
24
  import"./index-7pmbnjvj.js";
25
25
  import"./index-8srvdpw6.js";
26
- import"./index-h8419k5d.js";
26
+ import"./index-qc3qqknb.js";
27
27
  import"./index-vzm6zre7.js";
28
28
  import"./index-ae75rja9.js";
29
29
  import"./index-4fkxdnc7.js";
@@ -25,53 +25,53 @@ import {
25
25
  sanitizeWorktreeTaskId,
26
26
  standardWorktreeByCallID,
27
27
  standardWorktreeSerializationSessions
28
- } from "./index-8c51asrp.js";
28
+ } from "./index-87kk5dqm.js";
29
29
  import"./index-p2dst45x.js";
30
- import"./index-1by2qd8n.js";
31
- import"./index-k01n01sc.js";
32
- import"./index-cy2gbs5b.js";
30
+ import"./index-6e75mvmn.js";
31
+ import"./index-jfkzhyqs.js";
32
+ import"./index-5djd4vrn.js";
33
33
  import"./index-4ph7ad0b.js";
34
34
  import"./index-axqyjreb.js";
35
35
  import"./index-txdagbh7.js";
36
- import"./index-4mjfdpte.js";
37
- import"./index-3x8mz39c.js";
36
+ import"./index-ramxwbtt.js";
37
+ import"./index-f3ed5wde.js";
38
38
  import"./index-rdec0y3z.js";
39
- import"./index-74n7sz4s.js";
40
- import"./index-826kptfe.js";
41
- import"./index-b4amh1n3.js";
39
+ import"./index-g5hghxgw.js";
40
+ import"./index-q8fy8cxa.js";
41
+ import"./index-6phyfsvn.js";
42
42
  import"./index-bk8r4m9j.js";
43
43
  import"./index-tecp3a77.js";
44
44
  import"./index-x5jwegqw.js";
45
45
  import"./index-7h22y3ew.js";
46
- import"./index-pvj101jx.js";
46
+ import"./index-sy15gtjr.js";
47
47
  import"./index-pt7h91zc.js";
48
48
  import"./index-q7sjgr1y.js";
49
- import"./index-687c2ze1.js";
50
- import"./index-ryrg48c7.js";
49
+ import"./index-8k6jd7a9.js";
50
+ import"./index-223g5dj9.js";
51
51
  import"./index-6b295cas.js";
52
52
  import"./index-9nyqt3kb.js";
53
- import"./index-5qajesjq.js";
53
+ import"./index-c0dbzf9v.js";
54
54
  import"./index-697mg68b.js";
55
55
  import"./index-8mrentmw.js";
56
- import"./index-phz90w3t.js";
57
- import"./index-1akazdbj.js";
58
- import"./index-twwdx79t.js";
56
+ import"./index-vsqc38a0.js";
57
+ import"./index-rjtf507t.js";
58
+ import"./index-f4tht67a.js";
59
59
  import"./index-spggmr30.js";
60
- import"./index-ee59rzwk.js";
61
- import"./index-wyfag7r7.js";
60
+ import"./index-mkkwhrtn.js";
61
+ import"./index-y76sev7j.js";
62
62
  import"./index-m9zzj4ee.js";
63
63
  import"./index-4krkevgc.js";
64
- import"./index-10myvh2k.js";
64
+ import"./index-bgcanr26.js";
65
65
  import"./index-mhd6kdzr.js";
66
66
  import"./index-rtry5xyf.js";
67
67
  import {
68
68
  resolveWorktreeIsolationConfig
69
- } from "./index-xh861gf3.js";
69
+ } from "./index-kmnyh4r1.js";
70
70
  import"./index-g22dps7x.js";
71
71
  import"./index-0725jpp7.js";
72
- import"./index-1asbb0r4.js";
72
+ import"./index-k69vjyfm.js";
73
73
  import"./index-v839c9mv.js";
74
- import"./index-vxbj42j0.js";
74
+ import"./index-mnpcwcqf.js";
75
75
  import"./index-2x015vjy.js";
76
76
  import"./index-y7c4hqcj.js";
77
77
  import"./index-ry16d01s.js";
@@ -80,7 +80,7 @@ import"./index-vtpt8yns.js";
80
80
  import"./index-7pmbnjvj.js";
81
81
  import"./index-8srvdpw6.js";
82
82
  import"./index-9rwhas09.js";
83
- import"./index-h8419k5d.js";
83
+ import"./index-qc3qqknb.js";
84
84
  import"./index-vzm6zre7.js";
85
85
  import"./index-ae75rja9.js";
86
86
  import"./index-4fkxdnc7.js";
@@ -93,11 +93,11 @@ import"./index-ejhxgyvm.js";
93
93
  import"./index-7g4c7s5r.js";
94
94
  import"./index-mn75z39t.js";
95
95
  import"./index-3t46mez1.js";
96
- import"./index-dsqavehz.js";
96
+ import"./index-h9hgxbsw.js";
97
97
  import"./index-sp2cxpaq.js";
98
98
  import"./index-qbxk2rn6.js";
99
99
  import"./index-zgwm4ryv.js";
100
- import"./index-se501ytb.js";
100
+ import"./index-7r9yg7h1.js";
101
101
  import"./index-xfzkq1k4.js";
102
102
  import"./index-bk5tah7q.js";
103
103
  import"./index-gknz3bv1.js";
@@ -119,6 +119,8 @@ export interface TaskEvidence {
119
119
  requirements_state?: 'known' | 'unknown';
120
120
  /** Durable proof that the coder dispatch was classified as exact Markdown-only. */
121
121
  test_engineer_exempt?: boolean;
122
+ planId?: string;
123
+ planIdentityHash?: string;
122
124
  /** Exact-task workflow metadata. Missing on legacy evidence written before #2098. */
123
125
  workflow?: TaskWorkflowMetadata;
124
126
  /** Immutable source identity for an idempotent fail-closed evidence repair. */
@@ -341,6 +343,24 @@ export declare const ExternalEvidenceBundleSchema: z.ZodObject<{
341
343
  }, z.core.$strip>;
342
344
  export type ExternalEvidenceBundle = z.infer<typeof ExternalEvidenceBundleSchema>;
343
345
  export declare function parseTaskEvidence(raw: string, expectedTaskId: string): TaskEvidence;
346
+ /**
347
+ * Stage B wedge fix (Class E): resolve the current plan identity from
348
+ * {directory}/.swarm/plan.json. Returns null when the plan is missing or
349
+ * unreadable; callers must treat null as "identity unknown" and never
350
+ * block evidence writes on it.
351
+ */
352
+ export declare function resolveCurrentPlanIdentitySync(directory: string | undefined): {
353
+ planId: string;
354
+ planIdentityHash: string;
355
+ } | null;
356
+ /**
357
+ * Stage B wedge fix (Class E): true iff the evidence carries a plan-identity
358
+ * stamp that names a DIFFERENT plan than the current one. An absent stamp
359
+ * (legacy evidence written before stamping, or a plan.json that could not be
360
+ * read at write time) means "unknown", never "prior campaign": only a positive
361
+ * mismatch classifies evidence as predating the current campaign.
362
+ */
363
+ export declare function evidenceStampedForDifferentPlan(evidence: TaskEvidence | null | undefined, currentPlanIdentityHash: string | null | undefined): boolean;
344
364
  export declare const DEFAULT_REQUIRED_GATES: string[];
345
365
  export interface GateDerivationContext {
346
366
  /** Trusted pre/post workspace classification; false/absent fails closed. */
@@ -115,7 +115,7 @@ export declare function isEmptyDirectoryRemovalWithinWorkspace(targetPath: strin
115
115
  * checkShellWriteScope, and a mirror that diverges answers "allow" for
116
116
  * commands the gate blocks (#3099 review finding).
117
117
  */
118
- export declare function resolveWindowsWriteAuthority(tool: string, command: string, detectedShellType: 'posix' | 'powershell' | 'cmd' | 'unix' | 'bash', shaped: boolean, platform?: NodeJS.Platform): 'powershell' | 'cmd' | null;
118
+ export declare function resolveWindowsWriteAuthority(tool: string, command: string, detectedShellType: 'posix' | 'powershell' | 'cmd' | 'unix' | 'bash', shaped: boolean, platform?: NodeJS.Platform, hostShell?: string): 'powershell' | 'cmd' | null;
119
119
  /**
120
120
  * Creates a toolBefore handler with the given shared context.
121
121
  *
@@ -41,3 +41,20 @@ export declare const CMD_BUILTIN_PREFIX: RegExp;
41
41
  export declare const CMD_STRIP_PREFIX: RegExp;
42
42
  /** Strip pattern for a powershell/pwsh -Command/-c wrapper with switches. */
43
43
  export declare const PS_STRIP_PREFIX: RegExp;
44
+ /** Record the host-reported shell for the `shell` tool (latest wins). */
45
+ export declare function recordObservedHostShell(shell: string): void;
46
+ /** The host-reported shell for the `shell` tool, when one has been observed. */
47
+ export declare function getObservedHostShell(): string | undefined;
48
+ /** Test seam: clear the observed host shell. */
49
+ export declare function resetObservedHostShell(): void;
50
+ /**
51
+ * Classify a host-reported shell path into the grammar family the write
52
+ * detectors should apply for the `shell` tool: a PowerShell-family binary
53
+ * (powershell/pwsh) or cmd.exe keeps a Windows grammar eligible; ANY other
54
+ * basename (bash, zsh, sh, dash, ksh, fish, nu, …) is a POSIX-family
55
+ * executor. Separator-independent basename: the host may report a Windows
56
+ * path while the gate evaluates under an injected POSIX platform (and vice
57
+ * versa), so `path.basename` — which is separator-bound to the host — is
58
+ * never used here (mirrors `basenameAnySep` in shell-write-detect.ts).
59
+ */
60
+ export declare function hostShellGrammarFamily(hostShell: string): 'windows' | 'posix';
@@ -22,6 +22,17 @@ export interface WriteTarget {
22
22
  operator: string;
23
23
  /** The file path written to, or null when the path cannot be determined statically. */
24
24
  path: string | null;
25
+ /**
26
+ * Present ONLY on inspectable POSIX inline-code interpreter evals
27
+ * (`python -c`, `node -e`, `bash -c`, `eval`, … — the detectInterpreterEval
28
+ * sites). Marks a capability write whose target the gate routes through
29
+ * declared scope / file authority at the eval's working directory
30
+ * (#1902/#3347). The opaque interpreter_eval classes (PowerShell
31
+ * -EncodedCommand, nested script blocks, dynamic `&`/IEX invocation,
32
+ * unsafe-text parse failures) deliberately do NOT set it and keep the
33
+ * blanket block.
34
+ */
35
+ capability?: true;
25
36
  /**
26
37
  * Set only for a bare POSIX `rmdir <dir>`: no options, exactly one literal
27
38
  * operand (no expansion, glob, brace or quote characters). rmdir(2) refuses
@@ -63,6 +74,13 @@ export interface ResolvedWriteTarget {
63
74
  * contains command substitution ($(cmd) or `cmd`).
64
75
  */
65
76
  resolved: boolean;
77
+ /**
78
+ * For capability interpreter-eval writes only: the working directory the
79
+ * eval runs at, tracked through subshell `cd` commands (the starting cwd
80
+ * when none precedes it). The gate authorizes the eval against this
81
+ * directory (#1902/#3347); absent for every other write kind.
82
+ */
83
+ evalDirectory?: string;
66
84
  }
67
85
  /**
68
86
  * Issue #3099 R2 (executor context): merge a POSIX analysis with a Windows
@@ -108,6 +126,14 @@ export declare function isPowerShellShaped(command: string): boolean;
108
126
  * detectors cannot see) fails and the command stays blocked.
109
127
  */
110
128
  export declare function isPowerShellReadOnlyPipeline(command: string): boolean;
129
+ /**
130
+ * Separator-independent basename: splits on BOTH `/` and `\` so a Windows
131
+ * path (`C:\Python311\python.exe`) yields the same leaf under any host
132
+ * platform, then strips a case-insensitive `.exe` suffix. Used by the
133
+ * interpreter-spelling normalizer (#3343) and the host-shell classifier
134
+ * (#3346) — never `path.basename`, which is separator-bound to the host.
135
+ */
136
+ export declare function basenameAnySep(word: string): string;
111
137
  /**
112
138
  * Detect interactive/session tools that should be denied regardless of scope.
113
139
  *
@@ -77,3 +77,23 @@ export declare function registerV2ToolHooks(ctx: V2PluginContext, hooks: V1Hooks
77
77
  * warns, and only a double failure rejects.
78
78
  */
79
79
  export declare function registerV2SessionHooks(ctx: V2PluginContext, hooks: V1HooksSubset, directory: string, registrations: V2Registration[]): Promise<void>;
80
+ /**
81
+ * Register the shell-executor observer hook (#3346).
82
+ *
83
+ * The v2 host reports the shell a `shell`-tool command will actually execute
84
+ * through `ctx.shell` "create.before" (payload carries the resolved `shell`
85
+ * path). Recording it in the observed-host-shell store lets the write gate
86
+ * and `/swarm guardrail explain` key cmd/powershell grammar inheritance on
87
+ * the real executor instead of the platform — closing the Git-Bash-on-Windows
88
+ * false-positive class from #3323/#3346.
89
+ *
90
+ * Contract (mirrors registerV2SessionHooks' bounded registration, with a
91
+ * softer failure mode): a host without the shell domain (pre-2.0.29-era
92
+ * hosts; the vendored member is optional) is a SKIP, not a failure — the
93
+ * gate falls back to the platform-keyed interim, never wider than today. A
94
+ * present-but-REJECTING registration warns through the shared
95
+ * warnV2HookRegistrationFailure path and is likewise non-fatal; a successful
96
+ * registration lands in the disposal sink. Authoritative hook observations
97
+ * only — this module performs no environment probing (plan-critic r2).
98
+ */
99
+ export declare function registerV2ShellHooks(ctx: V2PluginContext, registrations: V2Registration[]): Promise<void>;
@@ -97,6 +97,24 @@ export interface V2ToolEditor {
97
97
  readonly description: string;
98
98
  }): void;
99
99
  }
100
+ /**
101
+ * v2 `ShellCreateBefore` payload (dist/promise/shell.d.ts @2.0.29). The
102
+ * `shell` field is the resolved shell PATH the host will execute the
103
+ * command with (upstream `ShellSelect` resolution) — the authoritative
104
+ * executor report the write gate keys cmd/powershell grammar inheritance
105
+ * on (#3346).
106
+ */
107
+ export interface V2ShellCreateBefore {
108
+ readonly command: string;
109
+ readonly cwd: string;
110
+ readonly timeout: number;
111
+ readonly shell: string;
112
+ readonly env: Record<string, string | undefined>;
113
+ }
114
+ /** v2 `ShellDomain` (dist/promise/shell.d.ts @2.0.29) — hook payloads inline. */
115
+ export interface V2ShellDomain {
116
+ readonly hook: <K extends 'create.before'>(event: K, handler: (payload: V2ShellCreateBefore) => Promise<void> | void) => Promise<unknown> | unknown;
117
+ }
100
118
  /** v2 `ToolDomain` (dist/promise/tool.d.ts) — hook payloads inline. */
101
119
  export interface V2ToolDomain {
102
120
  readonly transform: (callback: (editor: V2ToolEditor) => void) => Promise<V2Registration>;
@@ -522,6 +540,15 @@ export interface V2PluginContext {
522
540
  readonly permission?: V2PermissionDomain;
523
541
  /** Present on 2.0.26 hosts; no Phase 1 code path consumes it (issue #3169). */
524
542
  readonly worktree?: V2WorktreeDomain;
543
+ /**
544
+ * v2 `ShellDomain` (dist/promise/shell.d.ts @2.0.29; the
545
+ * `shell.create.before` hook was added upstream 2026-07-29 and is present
546
+ * across the vendored 2.0.26 pin). OPTIONAL: hosts predating the domain —
547
+ * and the structural-type discipline of this file — treat it as absent.
548
+ * Consumed by `registerV2ShellHooks` (src/host/v2/hooks.ts) to observe
549
+ * the shell the `shell` tool actually executes (#3346).
550
+ */
551
+ readonly shell?: V2ShellDomain;
525
552
  readonly [key: string]: unknown;
526
553
  }
527
554
  /** v2 `Cleanup` — the return of `setup`. */