opencode-swarm 7.188.1 → 7.188.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/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  2. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  3. package/dist/cli/{auto-checkpoint-w2mjh5m3.js → auto-checkpoint-9scxvjvr.js} +7 -7
  4. package/dist/cli/{checkpoint-eac282hg.js → checkpoint-rq5eqyft.js} +12 -12
  5. package/dist/cli/{coder-settlement-40qspmep.js → coder-settlement-9rkvamnp.js} +8 -8
  6. package/dist/cli/{config-doctor-p21xsvfn.js → config-doctor-ewbdfafa.js} +11 -11
  7. package/dist/cli/{core-z7qs8s32.js → core-ytxbej6s.js} +1 -1
  8. package/dist/cli/{curation-policy-v64ctcbd.js → curation-policy-n5kzg460.js} +5 -5
  9. package/dist/cli/{curator-csg36d2a.js → curator-60ftt4mg.js} +35 -35
  10. package/dist/cli/{curator-drift-z6c2ctqr.js → curator-drift-jbjjkkbg.js} +5 -5
  11. package/dist/cli/{curator-llm-factory-dtyyh77f.js → curator-llm-factory-6r5vkvts.js} +35 -35
  12. package/dist/cli/{doctor-knowledge-receipt-phase-id-gps8dpqr.js → doctor-knowledge-receipt-phase-id-f1b7ah16.js} +6 -6
  13. package/dist/cli/{evidence-summary-service-txbkchx6.js → evidence-summary-service-vgtsevph.js} +15 -15
  14. package/dist/cli/{gate-evidence-bwyxrk3z.js → gate-evidence-2reyjm1v.js} +5 -5
  15. package/dist/cli/{guardrail-explain-gxzdr8w4.js → guardrail-explain-b1ck5ey3.js} +36 -36
  16. package/dist/cli/{guardrail-log-ra5qbb4b.js → guardrail-log-9c078ms0.js} +6 -6
  17. package/dist/cli/{guardrail-reset-b0s11ban.js → guardrail-reset-h844v5k3.js} +35 -35
  18. package/dist/cli/{hive-promoter-avvddtgc.js → hive-promoter-hndtg0g9.js} +35 -35
  19. package/dist/cli/{index-5m06enb0.js → index-0vhaejxa.js} +1 -1
  20. package/dist/cli/{index-c66ywect.js → index-1wfychd6.js} +1 -1
  21. package/dist/cli/{index-z4zznftq.js → index-1xedjkyy.js} +2 -2
  22. package/dist/cli/{index-w4q0sw5g.js → index-2y4v88xp.js} +4 -4
  23. package/dist/cli/{index-936d3ny7.js → index-322afz1z.js} +1 -1
  24. package/dist/cli/{index-zhnywrhs.js → index-5jm1nkv7.js} +6 -6
  25. package/dist/cli/{index-aqe9x8ga.js → index-63pm3wa2.js} +3 -3
  26. package/dist/cli/{index-a1tpp2fs.js → index-685ypb7s.js} +2 -2
  27. package/dist/cli/{index-61pxv4sk.js → index-78vg2tgj.js} +35 -35
  28. package/dist/cli/{index-cdakr0yh.js → index-7n7775g7.js} +37 -37
  29. package/dist/cli/{index-zvrfvtp3.js → index-82q5nv5h.js} +4 -4
  30. package/dist/cli/{index-mdbqm6w1.js → index-91ajdtc6.js} +4 -4
  31. package/dist/cli/{index-jd3hvnqn.js → index-9dp2zhvj.js} +2 -2
  32. package/dist/cli/{index-mb1reyw3.js → index-9kaerjtj.js} +1 -1
  33. package/dist/cli/{index-rwabrcsg.js → index-ats43ttc.js} +1 -1
  34. package/dist/cli/{index-0v2svrev.js → index-bt11gbj8.js} +1 -1
  35. package/dist/cli/{index-swagbt0g.js → index-crkx7tta.js} +1 -1
  36. package/dist/cli/{index-7sbyvk99.js → index-e3ddxfh4.js} +1 -1
  37. package/dist/cli/{index-dxhd7dsr.js → index-ebhxj1dk.js} +7 -7
  38. package/dist/cli/{index-9bjf0bhd.js → index-gjnt7sfc.js} +2 -2
  39. package/dist/cli/{index-cb72p9w2.js → index-h3sty9qx.js} +2 -2
  40. package/dist/cli/{index-4m6k2r0v.js → index-jgkcsykf.js} +4 -4
  41. package/dist/cli/{index-wkxhhyej.js → index-jh7s55h1.js} +75 -75
  42. package/dist/cli/{index-8pbtv6ea.js → index-nbmvxaa2.js} +1 -1
  43. package/dist/cli/{index-gy57hcy2.js → index-p9y1t8tk.js} +1 -1
  44. package/dist/cli/{index-qgvmq92m.js → index-pah0zema.js} +2 -2
  45. package/dist/cli/{index-pswvtgdx.js → index-pya6v67j.js} +3 -3
  46. package/dist/cli/{index-fdx38afm.js → index-q1ymkdnc.js} +6 -6
  47. package/dist/cli/{index-edaj9qxn.js → index-q2nydddh.js} +1 -1
  48. package/dist/cli/{index-4htcpbs4.js → index-qx0npayj.js} +3 -3
  49. package/dist/cli/{index-zwgh0gty.js → index-r06m1jps.js} +1 -1
  50. package/dist/cli/{index-41v699sv.js → index-rszpn3zf.js} +3 -3
  51. package/dist/cli/{index-cs6g43qy.js → index-rw8bq18z.js} +4 -4
  52. package/dist/cli/{index-x73e0zkb.js → index-rysj8e3x.js} +1 -1
  53. package/dist/cli/{index-ztq5ag7q.js → index-s51gwkgd.js} +4 -4
  54. package/dist/cli/{index-9007eaeh.js → index-tqdjsvrm.js} +3 -3
  55. package/dist/cli/{index-xrsfbr31.js → index-vz6cjc6f.js} +3 -3
  56. package/dist/cli/{index-jn08bcaa.js → index-vzd1a06e.js} +3 -3
  57. package/dist/cli/{index-b9pz70d0.js → index-yd36m8y5.js} +2 -2
  58. package/dist/cli/{index-4rjw95qw.js → index-z7k42wpb.js} +4 -4
  59. package/dist/cli/index.js +36 -36
  60. package/dist/cli/{knowledge-escalator-02z57h57.js → knowledge-escalator-n0k4zjgy.js} +12 -12
  61. package/dist/cli/{knowledge-events-yqfwghad.js → knowledge-events-ywqkth1n.js} +10 -10
  62. package/dist/cli/{knowledge-link-9gx2djyd.js → knowledge-link-rv41fqwp.js} +4 -4
  63. package/dist/cli/{knowledge-store-85rcyme4.js → knowledge-store-0svng5s4.js} +5 -5
  64. package/dist/cli/{knowledge-validator-0fax9dq4.js → knowledge-validator-s2ddkgxg.js} +7 -7
  65. package/dist/cli/{mcp-rt2qxyc1.js → mcp-2xhqha8p.js} +1 -1
  66. package/dist/cli/{model-preflight-yf57x1x7.js → model-preflight-zz20c518.js} +35 -35
  67. package/dist/cli/{pending-delegations-3emmnz2y.js → pending-delegations-72k8zeye.js} +7 -7
  68. package/dist/cli/{pr-subscriptions-mpwtbpdd.js → pr-subscriptions-9eftakcv.js} +7 -7
  69. package/dist/cli/{pr-workflow-gate-0qzc2dbr.js → pr-workflow-gate-90j60vp7.js} +35 -35
  70. package/dist/cli/{runner-x8sbydkw.js → runner-zhnj544n.js} +5 -5
  71. package/dist/cli/{scan-cursor-w0m9zjrr.js → scan-cursor-swrnhys8.js} +6 -6
  72. package/dist/cli/{schema-0w9q2h6j.js → schema-g5qw8zv2.js} +1 -1
  73. package/dist/cli/{scope-persistence-3mc615t3.js → scope-persistence-nd32ryps.js} +11 -11
  74. package/dist/cli/{server-h36cgr2m.js → server-nez5478r.js} +35 -35
  75. package/dist/cli/{skill-generator-qaskynvt.js → skill-generator-tr5femt4.js} +14 -14
  76. package/dist/cli/{snapshot-coordination-init-j226zrvz.js → snapshot-coordination-init-c82a9gd1.js} +35 -35
  77. package/dist/cli/{speckit-checkoff-6xa1f1qr.js → speckit-checkoff-fr3jnnah.js} +3 -3
  78. package/dist/cli/{telemetry-d0j31j5d.js → telemetry-wb54p3hn.js} +1 -1
  79. package/dist/cli/{worktree-collision-ownership-frtjkhms.js → worktree-collision-ownership-q0kn3g0k.js} +7 -7
  80. package/dist/cli/{worktree-isolation-c07qk28m.js → worktree-isolation-zz26e66q.js} +35 -35
  81. package/dist/context-map/post-agent-update.d.ts +16 -1
  82. package/dist/host/v2/agents-commands.d.ts +41 -0
  83. package/dist/host/v2/events.d.ts +39 -0
  84. package/dist/host/v2/guidance.d.ts +30 -0
  85. package/dist/host/v2/hooks.d.ts +31 -0
  86. package/dist/host/v2/setup.d.ts +61 -0
  87. package/dist/host/v2/tools.d.ts +41 -0
  88. package/dist/host/v2/types.d.ts +291 -0
  89. package/dist/index.d.ts +1 -0
  90. package/dist/index.js +7 -6
  91. package/dist/types/context-map.d.ts +1 -1
  92. package/package.json +1 -1
@@ -8,74 +8,74 @@ import {
8
8
  markSnapshotCoordinationClosing,
9
9
  retrySnapshotCoordinationInitialization,
10
10
  startSnapshotCoordinationInitialization
11
- } from "./index-wkxhhyej.js";
12
- import"./index-jn08bcaa.js";
13
- import"./index-qgvmq92m.js";
14
- import"./index-xrsfbr31.js";
11
+ } from "./index-jh7s55h1.js";
12
+ import"./index-vzd1a06e.js";
13
+ import"./index-pah0zema.js";
14
+ import"./index-vz6cjc6f.js";
15
15
  import"./index-vx8a8w3b.js";
16
- import"./index-x73e0zkb.js";
17
- import"./index-jd3hvnqn.js";
16
+ import"./index-rysj8e3x.js";
17
+ import"./index-9dp2zhvj.js";
18
18
  import"./index-txdagbh7.js";
19
- import"./index-z4zznftq.js";
19
+ import"./index-1xedjkyy.js";
20
20
  import"./index-rdec0y3z.js";
21
- import"./index-gy57hcy2.js";
22
- import"./index-ztq5ag7q.js";
23
- import"./index-aqe9x8ga.js";
24
- import"./index-zhnywrhs.js";
21
+ import"./index-p9y1t8tk.js";
22
+ import"./index-s51gwkgd.js";
23
+ import"./index-63pm3wa2.js";
24
+ import"./index-5jm1nkv7.js";
25
25
  import"./index-mf19yqss.js";
26
- import"./index-41v699sv.js";
26
+ import"./index-rszpn3zf.js";
27
27
  import"./index-cjapb4hy.js";
28
28
  import"./index-a8gvszr2.js";
29
29
  import"./index-pt7h91zc.js";
30
30
  import"./index-q7sjgr1y.js";
31
- import"./index-zvrfvtp3.js";
32
- import"./index-dxhd7dsr.js";
31
+ import"./index-82q5nv5h.js";
32
+ import"./index-ebhxj1dk.js";
33
33
  import"./index-6b295cas.js";
34
34
  import"./index-9nyqt3kb.js";
35
- import"./index-swagbt0g.js";
35
+ import"./index-crkx7tta.js";
36
36
  import"./index-zsrtt42s.js";
37
- import"./index-c66ywect.js";
38
- import"./index-9007eaeh.js";
39
- import"./index-edaj9qxn.js";
37
+ import"./index-1wfychd6.js";
38
+ import"./index-tqdjsvrm.js";
39
+ import"./index-q2nydddh.js";
40
40
  import"./index-g4fs6z4e.js";
41
- import"./index-w4q0sw5g.js";
42
- import"./index-mdbqm6w1.js";
43
- import"./index-4m6k2r0v.js";
41
+ import"./index-2y4v88xp.js";
42
+ import"./index-91ajdtc6.js";
43
+ import"./index-jgkcsykf.js";
44
44
  import"./index-m9zzj4ee.js";
45
45
  import"./index-bejxkee0.js";
46
46
  import"./index-2s7dvzff.js";
47
- import"./index-cs6g43qy.js";
48
- import"./index-rwabrcsg.js";
47
+ import"./index-rw8bq18z.js";
48
+ import"./index-ats43ttc.js";
49
49
  import"./index-rtry5xyf.js";
50
- import"./index-cb72p9w2.js";
50
+ import"./index-h3sty9qx.js";
51
51
  import"./index-kbkk7vnh.js";
52
52
  import"./index-0725jpp7.js";
53
- import"./index-9bjf0bhd.js";
54
- import"./index-4rjw95qw.js";
55
- import"./index-b9pz70d0.js";
53
+ import"./index-gjnt7sfc.js";
54
+ import"./index-z7k42wpb.js";
55
+ import"./index-yd36m8y5.js";
56
56
  import"./index-m1qy7f1e.js";
57
57
  import"./index-cc1vzq4m.js";
58
58
  import"./index-9hag235h.js";
59
59
  import"./index-ry16d01s.js";
60
60
  import"./index-rdm3px0g.js";
61
61
  import"./index-7pmbnjvj.js";
62
- import"./index-mb1reyw3.js";
63
- import"./index-fdx38afm.js";
62
+ import"./index-9kaerjtj.js";
63
+ import"./index-q1ymkdnc.js";
64
64
  import"./index-vzm6zre7.js";
65
65
  import"./index-ae75rja9.js";
66
- import"./index-zwgh0gty.js";
67
- import"./index-7sbyvk99.js";
68
- import"./index-0v2svrev.js";
66
+ import"./index-r06m1jps.js";
67
+ import"./index-e3ddxfh4.js";
68
+ import"./index-bt11gbj8.js";
69
69
  import"./index-t7hmqgjy.js";
70
- import"./index-4htcpbs4.js";
70
+ import"./index-qx0npayj.js";
71
71
  import"./index-fzpt2djt.js";
72
72
  import"./index-ejhxgyvm.js";
73
73
  import"./index-7g4c7s5r.js";
74
74
  import"./index-r6e8syr3.js";
75
75
  import"./index-gx2vp8gx.js";
76
- import"./index-936d3ny7.js";
76
+ import"./index-322afz1z.js";
77
77
  import"./index-zxdawwc7.js";
78
- import"./index-5m06enb0.js";
78
+ import"./index-0vhaejxa.js";
79
79
  import"./index-bstjg81q.js";
80
80
  import"./index-bk5tah7q.js";
81
81
  import"./index-gknz3bv1.js";
@@ -7,13 +7,13 @@ import {
7
7
  parseSpeckitTasksContent,
8
8
  propagateSpeckitCheckoff,
9
9
  writeSpeckitCheckoffLedger
10
- } from "./index-c66ywect.js";
10
+ } from "./index-1wfychd6.js";
11
11
  import"./index-ejhxgyvm.js";
12
12
  import"./index-7g4c7s5r.js";
13
13
  import"./index-r6e8syr3.js";
14
- import"./index-936d3ny7.js";
14
+ import"./index-322afz1z.js";
15
15
  import"./index-zxdawwc7.js";
16
- import"./index-5m06enb0.js";
16
+ import"./index-0vhaejxa.js";
17
17
  import"./index-bstjg81q.js";
18
18
  import"./index-bk5tah7q.js";
19
19
  import"./index-gknz3bv1.js";
@@ -14,7 +14,7 @@ import {
14
14
  startHeartbeatTracking,
15
15
  stopHeartbeatTracking,
16
16
  telemetry
17
- } from "./index-4htcpbs4.js";
17
+ } from "./index-qx0npayj.js";
18
18
  import"./index-fzpt2djt.js";
19
19
  import"./index-gknz3bv1.js";
20
20
  import"./index-zpsr8rpc.js";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  scanDelegationFallbacksForRecovery,
15
15
  scanDelegationsForRecovery
16
- } from "./index-w4q0sw5g.js";
16
+ } from "./index-2y4v88xp.js";
17
17
  import"./index-bejxkee0.js";
18
18
  import"./index-2s7dvzff.js";
19
19
  import"./index-m1qy7f1e.js";
@@ -22,15 +22,15 @@ import"./index-9hag235h.js";
22
22
  import"./index-ry16d01s.js";
23
23
  import"./index-rdm3px0g.js";
24
24
  import"./index-7pmbnjvj.js";
25
- import"./index-mb1reyw3.js";
26
- import"./index-fdx38afm.js";
25
+ import"./index-9kaerjtj.js";
26
+ import"./index-q1ymkdnc.js";
27
27
  import"./index-vzm6zre7.js";
28
28
  import"./index-ae75rja9.js";
29
- import"./index-zwgh0gty.js";
30
- import"./index-7sbyvk99.js";
31
- import"./index-0v2svrev.js";
29
+ import"./index-r06m1jps.js";
30
+ import"./index-e3ddxfh4.js";
31
+ import"./index-bt11gbj8.js";
32
32
  import"./index-t7hmqgjy.js";
33
- import"./index-4htcpbs4.js";
33
+ import"./index-qx0npayj.js";
34
34
  import {
35
35
  canonicalRootKeyFresh
36
36
  } from "./index-fzpt2djt.js";
@@ -21,76 +21,76 @@ import {
21
21
  sanitizeWorktreeTaskId,
22
22
  standardWorktreeByCallID,
23
23
  standardWorktreeSerializationSessions
24
- } from "./index-wkxhhyej.js";
25
- import"./index-jn08bcaa.js";
26
- import"./index-qgvmq92m.js";
27
- import"./index-xrsfbr31.js";
24
+ } from "./index-jh7s55h1.js";
25
+ import"./index-vzd1a06e.js";
26
+ import"./index-pah0zema.js";
27
+ import"./index-vz6cjc6f.js";
28
28
  import"./index-vx8a8w3b.js";
29
- import"./index-x73e0zkb.js";
30
- import"./index-jd3hvnqn.js";
29
+ import"./index-rysj8e3x.js";
30
+ import"./index-9dp2zhvj.js";
31
31
  import"./index-txdagbh7.js";
32
- import"./index-z4zznftq.js";
32
+ import"./index-1xedjkyy.js";
33
33
  import"./index-rdec0y3z.js";
34
- import"./index-gy57hcy2.js";
35
- import"./index-ztq5ag7q.js";
36
- import"./index-aqe9x8ga.js";
37
- import"./index-zhnywrhs.js";
34
+ import"./index-p9y1t8tk.js";
35
+ import"./index-s51gwkgd.js";
36
+ import"./index-63pm3wa2.js";
37
+ import"./index-5jm1nkv7.js";
38
38
  import"./index-mf19yqss.js";
39
- import"./index-41v699sv.js";
39
+ import"./index-rszpn3zf.js";
40
40
  import"./index-cjapb4hy.js";
41
41
  import"./index-a8gvszr2.js";
42
42
  import"./index-pt7h91zc.js";
43
43
  import"./index-q7sjgr1y.js";
44
- import"./index-zvrfvtp3.js";
45
- import"./index-dxhd7dsr.js";
44
+ import"./index-82q5nv5h.js";
45
+ import"./index-ebhxj1dk.js";
46
46
  import"./index-6b295cas.js";
47
47
  import"./index-9nyqt3kb.js";
48
- import"./index-swagbt0g.js";
48
+ import"./index-crkx7tta.js";
49
49
  import"./index-zsrtt42s.js";
50
- import"./index-c66ywect.js";
51
- import"./index-9007eaeh.js";
52
- import"./index-edaj9qxn.js";
50
+ import"./index-1wfychd6.js";
51
+ import"./index-tqdjsvrm.js";
52
+ import"./index-q2nydddh.js";
53
53
  import"./index-g4fs6z4e.js";
54
- import"./index-w4q0sw5g.js";
55
- import"./index-mdbqm6w1.js";
56
- import"./index-4m6k2r0v.js";
54
+ import"./index-2y4v88xp.js";
55
+ import"./index-91ajdtc6.js";
56
+ import"./index-jgkcsykf.js";
57
57
  import"./index-m9zzj4ee.js";
58
58
  import"./index-bejxkee0.js";
59
59
  import"./index-2s7dvzff.js";
60
- import"./index-cs6g43qy.js";
61
- import"./index-rwabrcsg.js";
60
+ import"./index-rw8bq18z.js";
61
+ import"./index-ats43ttc.js";
62
62
  import"./index-rtry5xyf.js";
63
63
  import {
64
64
  resolveWorktreeIsolationConfig
65
- } from "./index-cb72p9w2.js";
65
+ } from "./index-h3sty9qx.js";
66
66
  import"./index-kbkk7vnh.js";
67
67
  import"./index-0725jpp7.js";
68
- import"./index-9bjf0bhd.js";
69
- import"./index-4rjw95qw.js";
70
- import"./index-b9pz70d0.js";
68
+ import"./index-gjnt7sfc.js";
69
+ import"./index-z7k42wpb.js";
70
+ import"./index-yd36m8y5.js";
71
71
  import"./index-m1qy7f1e.js";
72
72
  import"./index-cc1vzq4m.js";
73
73
  import"./index-9hag235h.js";
74
74
  import"./index-ry16d01s.js";
75
75
  import"./index-rdm3px0g.js";
76
76
  import"./index-7pmbnjvj.js";
77
- import"./index-mb1reyw3.js";
78
- import"./index-fdx38afm.js";
77
+ import"./index-9kaerjtj.js";
78
+ import"./index-q1ymkdnc.js";
79
79
  import"./index-vzm6zre7.js";
80
80
  import"./index-ae75rja9.js";
81
- import"./index-zwgh0gty.js";
82
- import"./index-7sbyvk99.js";
83
- import"./index-0v2svrev.js";
81
+ import"./index-r06m1jps.js";
82
+ import"./index-e3ddxfh4.js";
83
+ import"./index-bt11gbj8.js";
84
84
  import"./index-t7hmqgjy.js";
85
- import"./index-4htcpbs4.js";
85
+ import"./index-qx0npayj.js";
86
86
  import"./index-fzpt2djt.js";
87
87
  import"./index-ejhxgyvm.js";
88
88
  import"./index-7g4c7s5r.js";
89
89
  import"./index-r6e8syr3.js";
90
90
  import"./index-gx2vp8gx.js";
91
- import"./index-936d3ny7.js";
91
+ import"./index-322afz1z.js";
92
92
  import"./index-zxdawwc7.js";
93
- import"./index-5m06enb0.js";
93
+ import"./index-0vhaejxa.js";
94
94
  import"./index-bstjg81q.js";
95
95
  import"./index-bk5tah7q.js";
96
96
  import"./index-gknz3bv1.js";
@@ -16,7 +16,7 @@
16
16
  * No `bun:` imports — this module is Node-ESM-loadable (Invariant 2).
17
17
  */
18
18
  import * as fs from 'node:fs';
19
- import type { ContextMap } from '../types/context-map';
19
+ import type { ContextMap, DecisionEntry } from '../types/context-map';
20
20
  import { extractFileSummary } from './file-summary';
21
21
  import { appendDecision, appendTaskHistory, createEmptyContextMap, loadContextMap, saveContextMap } from './persistence';
22
22
  /**
@@ -49,6 +49,21 @@ export interface PostAgentUpdateParams {
49
49
  /** Project root directory */
50
50
  directory: string;
51
51
  }
52
+ /**
53
+ * Allocate the next durable decision ID for a context map.
54
+ *
55
+ * Derived from the decisions already present in the map being updated:
56
+ * the max numeric suffix among existing `A<n>` IDs + 1, computed with BigInt
57
+ * so suffixes past 2^53 stay exact. Mirrors `allocateSummaryId` in
58
+ * src/summaries/manager.ts (issue #2576 / #2720): after a process restart
59
+ * the map is reloaded from disk, so allocation continues after the persisted
60
+ * IDs instead of restarting at A1 and duplicating identity in
61
+ * `.swarm/context-map.json`.
62
+ *
63
+ * IDs that do not match `^A\d+$` (foreign prefixes, non-strings) are ignored
64
+ * rather than crashing allocation.
65
+ */
66
+ export declare function allocateDecisionId(decisions: readonly DecisionEntry[]): string;
52
67
  /**
53
68
  * Test-only dependency-injection seam. Production code calls through this
54
69
  * object so tests can replace the underlying implementations without
@@ -0,0 +1,41 @@
1
+ /**
2
+ * v2 agent + command registration (issue #3004 / #2910).
3
+ *
4
+ * Single-source design: the v1 `config` hook IS the shared builder. This
5
+ * module invokes `hooks.config` against a synthetic `opencodeConfig` object
6
+ * and registers the resulting `.agent` / `.command` tables onto the v2 agent
7
+ * and command domains — the auto-select promotions and the entire v1 command table are reused with
8
+ * zero extraction from src/index.ts (the v1 TUI shortcut block stays
9
+ * byte-pinned). DELTA: the lane-permission mutations the v1 hook writes into
10
+ * the config object (applyLanePermissions) have no v2 destination here and
11
+ * are dropped - external-directory lane scoping is a #2910 follow-up row in
12
+ * docs/host/v2-hook-inventory.md.
13
+ *
14
+ * Mappings (docs/host/v2-hook-inventory.md rows 4-5):
15
+ * - v1 AgentConfig → v2 Agent.Info: `prompt`→`system`, `mode` preserved
16
+ * (multi-swarm `*_architect` primary semantics — AGENTS.md invariant 11),
17
+ * `model` string 'provider/model' → Model.Ref, `tools` allowlist →
18
+ * per-tool allow permission rules (best-effort; see inventory).
19
+ * - Entries the v1 hook marks `disable: true` (auto-select disabling the
20
+ * `build`/`plan` built-ins) are REMOVED on the v2 agent editor.
21
+ * - v1 command entries `{template, description}` → v2 CommandDefinition
22
+ * whose `execute` submits the expanded template through
23
+ * `ctx.session.prompt` (TUI-side $ARGUMENTS expansion is replaced by
24
+ * direct substitution — inventory row).
25
+ */
26
+ import type { V1HooksSubset, V2AgentInfo, V2PluginContext, V2Registration } from './types';
27
+ interface V1AgentConfigLike {
28
+ mode?: unknown;
29
+ prompt?: unknown;
30
+ description?: unknown;
31
+ model?: unknown;
32
+ tools?: unknown;
33
+ disable?: unknown;
34
+ }
35
+ /** Map one v1 AgentConfig entry to a v2 Agent.Info. */
36
+ export declare function mapV1AgentToV2(name: string, config: V1AgentConfigLike): V2AgentInfo;
37
+ /** Expand a v1 TUI template for a v2 command execution. */
38
+ export declare function expandV1Template(template: string, argumentsText: string): string;
39
+ /** Register agents + commands via the synthetic config-hook run. */
40
+ export declare function registerV2AgentsAndCommands(ctx: V2PluginContext, hooks: V1HooksSubset, directory: string, registrations: V2Registration[]): Promise<void>;
41
+ export {};
@@ -0,0 +1,39 @@
1
+ /**
2
+ * v2 event subscription pump (issue #3004 / #2910).
3
+ *
4
+ * Consumes the v2 host's event stream (async iterable from
5
+ * `ctx.event.subscribe()`) and maps host events onto the plugin's existing v1
6
+ * event handler. The pump runs detached; the returned stop function breaks
7
+ * iteration (called by the v2 cleanup).
8
+ *
9
+ * Event-name map (full table in docs/host/v2-hook-inventory.md row 14):
10
+ *
11
+ * v2 event → v1 handler input
12
+ * ------------------------+-------------------------------------------
13
+ * session.idle → { type: 'session.idle', properties }
14
+ * session.status.updated → { type: 'session.idle', properties } (state watch)
15
+ * session.text.delta → { type: 'message.part.updated', properties }
16
+ * session.text.ended → { type: 'message.updated', properties }
17
+ * session.tool.called → { type: 'message.part.updated', properties }
18
+ * session.tool.success → { type: 'message.updated', properties }
19
+ * session.tool.failed → { type: 'message.updated', properties }
20
+ * session.execution.failed → { type: 'session.error', properties }
21
+ * session.deleted / session.created → same-name v1 types
22
+ *
23
+ * Unmapped event types are counted in a bounded debug log, never silently
24
+ * assumed. This module is named deferred-/startDeferred- per the C6 await
25
+ * convention (its awaits live in deferred-named helpers).
26
+ */
27
+ import type { V1HooksSubset, V2EventEnvelope, V2PluginContext } from './types';
28
+ interface MappedEvent {
29
+ type: string;
30
+ properties: Record<string, unknown>;
31
+ }
32
+ /** Map a v2 event envelope onto the v1 handler input (or undefined). */
33
+ export declare function mapV2EventToV1(envelope: V2EventEnvelope): MappedEvent | undefined;
34
+ /**
35
+ * Start the detached event pump. Returns a stop function. Named per the C6
36
+ * convention (deferred).
37
+ */
38
+ export declare function startDeferredEventPump(ctx: V2PluginContext, hooks: V1HooksSubset): () => void;
39
+ export {};
@@ -0,0 +1,30 @@
1
+ /**
2
+ * v2 guidance delivery — the session `context` hook (issue #3004 / #2910, R1
3
+ * in ADR-0003).
4
+ *
5
+ * Transport mapping (docs/host/v2-hook-inventory.md row 6/7):
6
+ *
7
+ * - The v1 MESSAGES transform chain runs first against a translated view of
8
+ * `event.messages`. On v1 its guidance injections ride USER-role carrier
9
+ * messages (`swarm-guidance:*` ids, fenced text) because the v1 host drops
10
+ * role:'system' entries (#2526). The v2 host renders `event.system`
11
+ * natively, so those carriers are RE-HOMED here into `event.system` as
12
+ * text parts and removed from the message list — each guidance unit has
13
+ * exactly one destination.
14
+ * - The v1 SYSTEM transform chain then runs with a translated input and its
15
+ * (unfenced) strings are appended as further `event.system` text parts —
16
+ * exactly what the v1 system surface receives.
17
+ *
18
+ * `event.agent` is an Agent.Info-shaped object on v2; it is normalized to a
19
+ * name before any v1 agent comparison (frozen C4 header requirement).
20
+ *
21
+ * Part-kind mapping (R10): text parts map 1:1; non-text content kinds
22
+ * (media, tool-call, tool-result, reasoning, step-start, compaction, effort)
23
+ * are preserved untouched on their message — the v1 chain's steps only read
24
+ * and write `type === 'text'` parts.
25
+ */
26
+ import type { V1HooksSubset, V2PluginContext, V2Registration, V2SessionContextEvent } from './types';
27
+ /** The v2 context hook body. */
28
+ export declare function onV2ContextEvent(event: V2SessionContextEvent, hooks: V1HooksSubset, directory: string): Promise<void>;
29
+ /** Register the context hook on the v2 session domain. */
30
+ export declare function registerV2ContextHook(ctx: V2PluginContext, hooks: V1HooksSubset, directory: string, registrations: V2Registration[]): Promise<void>;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * v2 lifecycle hook adapters — tool execute.before/after, session compaction,
3
+ * session prompt (issue #3004 / #2910).
4
+ *
5
+ * Each adapter wraps the SAME v1 handler functions with payload translation:
6
+ *
7
+ * - `tool.execute.before`: v2 `{tool, sessionID, agent, messageID, id,
8
+ * input}` → v1 `{tool, sessionID, callID, agent}` + mutable output
9
+ * `{args}`; the v1 chain's `output.args` mutation is applied back onto
10
+ * `event.input` in place.
11
+ * - `tool.execute.after`: v1 `{title, output, metadata}` mutable output is
12
+ * fed a best-effort translation of the v2 completed/error result.
13
+ * (v2 has no title surface; the translation targets the fields the v1
14
+ * toolAfter chain reads.)
15
+ * - `compaction`: translated session/model identity; the v1 customizer's
16
+ * directive output has no v1→v2 mapping yet — the turn-generation advance
17
+ * and the customizer still run (inventory row).
18
+ * - `prompt`: the v1 `chat.message` chain (model fallback preflight,
19
+ * delegation ledger, cache-cohort seeding) runs against a translated
20
+ * envelope. The #2989 chat-boundary model override writes
21
+ * `output.message.model`, which the v2 SessionPrompt has no field for —
22
+ * v1-only for now (inventory row).
23
+ *
24
+ * Denial semantics: a v1 hook throw propagates as the v2 hook error
25
+ * (fail-closed preserved; documented v2 delta in the inventory).
26
+ */
27
+ import type { V1HooksSubset, V2PluginContext, V2Registration } from './types';
28
+ /** Register the tool hooks (execute.before/after). */
29
+ export declare function registerV2ToolHooks(ctx: V2PluginContext, hooks: V1HooksSubset, directory: string, registrations: V2Registration[]): Promise<void>;
30
+ /** Register the compaction + prompt session hooks. */
31
+ export declare function registerV2SessionHooks(ctx: V2PluginContext, hooks: V1HooksSubset, directory: string, registrations: V2Registration[]): Promise<void>;
@@ -0,0 +1,61 @@
1
+ /**
2
+ * OpenCode 2 (v2 plugin API) setup entrypoint — issue #3004 / #2910.
3
+ *
4
+ * The v2 host validates the plugin's default export against
5
+ * `{ id, setup | effect }` (sst/opencode v2 line, packages/core/src/plugin/
6
+ * module.ts). The v1 `server()` path stays byte-stable for OpenCode 1 hosts;
7
+ * this module is what `setup(ctx)` runs on OpenCode 2 hosts.
8
+ *
9
+ * Architecture (ADR-0003): the adapter reuses the SAME initialization core and
10
+ * the SAME v1 hook set — it only TRANSLATES registration surfaces:
11
+ *
12
+ * - tools: `hooks.tool` map → `ctx.tool.transform(editor.add)` (one source,
13
+ * `buildPluginToolObject`; no parallel name list — enforced by
14
+ * scripts/check-tool-registration.ts);
15
+ * - agents + commands: the v1 `config` hook is invoked against a synthetic
16
+ * `opencodeConfig` object, making the config hook itself the shared
17
+ * builder (auto-select promotions and the command table are reused
18
+ * verbatim — zero extraction from src/index.ts);
19
+ * - guidance: the v1 messages/system transform chains run against a
20
+ * translated session event; the #2526 USER-role guidance carriers the
21
+ * messages chain materializes are re-homed into `event.system` (v2 renders
22
+ * system natively — the user→system transport delta is recorded in
23
+ * docs/host/v2-hook-inventory.md);
24
+ * - lifecycle: tool execute.before/after, compaction, prompt hooks and the
25
+ * event subscription are wired with payload translation; `setup` returns
26
+ * a single Cleanup that disposes every Registration and runs the v1
27
+ * dispose teardown.
28
+ *
29
+ * Init boundedness (AGENTS.md invariant 1): every `await` in src/host/** is
30
+ * either on the same physical line as a `withTimeout(` call or inside a
31
+ * function named deferred-…/cleanup-… (the frozen C6 source-scan convention).
32
+ * The shared initialization wrapper (`deps.runInit`) is injected by
33
+ * src/index.ts so no module cycle is created and the FATAL-fail surface stays
34
+ * with the v1 wrapper.
35
+ */
36
+ import type { V1HooksSubset, V2PluginContext } from './types';
37
+ /** Dependencies injected from src/index.ts (avoids an index↔host cycle). */
38
+ export interface V2SetupDependencies {
39
+ /** The shared server-initialization wrapper (begin-interval → init core → schedule deferred → end-interval). */
40
+ runInit: (input: unknown) => Promise<V1HooksSubset>;
41
+ }
42
+ /** Normalize a v2 agent reference (Agent.Info object or bare string) to a name. */
43
+ export declare function normalizeV2AgentRef(agent: unknown): string | undefined;
44
+ /**
45
+ * Register the plugin on an OpenCode 2 host. Throws propagate to the v2 host
46
+ * (which skips the plugin) after a FATAL stderr line from the shared wrapper —
47
+ * the same posture the v1 server() path has (issue #675).
48
+ */
49
+ export declare function openCodeSwarmV2Setup(ctx: V2PluginContext, deps: V2SetupDependencies): Promise<() => Promise<void>>;
50
+ /**
51
+ * Seed the v1 session state a translated hook event implies. Shared by the
52
+ * guidance/prompt/tool-hook adapters so the v1 chain sees the same session
53
+ * identity the v1 host would have seeded via chat.message.
54
+ */
55
+ export declare function seedV1SessionState(sessionID: string | undefined, agentRef: unknown, directory: string): string | undefined;
56
+ /**
57
+ * Convert a v1 zod args shape into the JSON-schema-ish `input` value the v2
58
+ * tool editor accepts. Cached per tool at registration time (transforms must
59
+ * be synchronous and cheap).
60
+ */
61
+ export declare function v2ToolInputSchema(args: unknown): unknown;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * v2 tool registration — issue #3004 / #2910.
3
+ *
4
+ * Registers every tool from the SAME map the v1 host receives
5
+ * (`hooks.tool`, built by `buildPluginToolObject` from `TOOL_MANIFEST` — the
6
+ * single source; scripts/check-tool-registration.ts enforces that no parallel
7
+ * name list exists here).
8
+ *
9
+ * The execute adapter synthesizes the FULL v1 `ToolContext` (AGENTS.md
10
+ * invariant 4: `.swarm/` must resolve against the project root captured at
11
+ * setup, never `process.cwd()`): `directory`/`worktree` are injected, the v2
12
+ * `signal` becomes the v1 `abort`, `progress` bridges v1 `metadata({title?,
13
+ * metadata?})`, and `ask` bridges to the v2 permission domain when available
14
+ * and fails closed otherwise.
15
+ *
16
+ * Result mapping: v1 `string | {title?, output, metadata?, attachments?}` →
17
+ * v2 `{content, metadata}` (v2 has no title/attachment surface — inventory
18
+ * row in docs/host/v2-hook-inventory.md).
19
+ */
20
+ import type { V1HooksSubset, V2PluginContext, V2Registration, V2ToolContext } from './types';
21
+ interface V1ToolContextShape {
22
+ sessionID: string;
23
+ messageID: string;
24
+ agent: string;
25
+ directory: string;
26
+ worktree: string;
27
+ abort: AbortSignal;
28
+ metadata: (input: {
29
+ title?: string;
30
+ metadata?: Record<string, unknown>;
31
+ }) => void;
32
+ ask: (input: unknown) => Promise<void>;
33
+ }
34
+ /** Synthesize the v1 ToolContext the plugin's tools expect (R2 in ADR-0003). */
35
+ declare function synthesizeV1ToolContext(context: V2ToolContext, projectRoot: string, permissionBridge: ((input: unknown) => Promise<void>) | undefined): V1ToolContextShape;
36
+ /** Register all v1 tools on the v2 tool domain. */
37
+ export declare function registerV2Tools(ctx: V2PluginContext, hooks: V1HooksSubset, projectRoot: string, registrations: V2Registration[]): Promise<void>;
38
+ export declare const _internals: {
39
+ synthesizeV1ToolContext: typeof synthesizeV1ToolContext;
40
+ };
41
+ export {};