opencode-swarm 7.177.1 → 7.178.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) 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/agents/architect.d.ts +8 -0
  4. package/dist/cli/{capability-probe-pdwwz8gs.js → capability-probe-8k8ebeyp.js} +2 -2
  5. package/dist/cli/{coder-settlement-c0kysest.js → coder-settlement-d2bfb25j.js} +13 -13
  6. package/dist/cli/{config-doctor-bqwse4pd.js → config-doctor-905x2s1c.js} +4 -4
  7. package/dist/cli/{core-e6vtme4x.js → core-k7wfx1wx.js} +4 -4
  8. package/dist/cli/{curation-policy-d8s9w1z8.js → curation-policy-n4hd2wsa.js} +5 -5
  9. package/dist/cli/{curator-drift-4m984tvy.js → curator-drift-smqmej5v.js} +4 -4
  10. package/dist/cli/curator-llm-factory-qhhxev17.js +72 -0
  11. package/dist/cli/{curator-2xb1d80j.js → curator-wyadq69k.js} +40 -40
  12. package/dist/cli/{evidence-summary-service-9yxm6jkq.js → evidence-summary-service-r3wcprfk.js} +19 -19
  13. package/dist/cli/{gate-evidence-43bnst3v.js → gate-evidence-tq9rb2aj.js} +8 -8
  14. package/dist/cli/guardrail-explain-kvgejh24.js +73 -0
  15. package/dist/cli/{guardrail-log-j7cj3rjy.js → guardrail-log-m6twga6x.js} +9 -9
  16. package/dist/cli/{guardrail-reset-jcsyfvf4.js → guardrail-reset-86esv8cr.js} +40 -40
  17. package/dist/cli/hive-promoter-s87hkb40.js +87 -0
  18. package/dist/cli/{index-m0cdjvtv.js → index-18hjycr1.js} +1 -1
  19. package/dist/cli/{index-cv191ybt.js → index-29begjkp.js} +8 -8
  20. package/dist/cli/{index-7nsvszwn.js → index-2b1whj28.js} +2 -2
  21. package/dist/cli/{index-hp5eet6g.js → index-2bmhe2jn.js} +4 -4
  22. package/dist/cli/{index-634pjhe4.js → index-2mdk6nt9.js} +7 -7
  23. package/dist/cli/{index-67amf4my.js → index-2vhkwy6v.js} +3 -3
  24. package/dist/cli/{index-fpbcxykc.js → index-6b295cas.js} +87 -1
  25. package/dist/cli/{index-yzjaj53h.js → index-9rwhas09.js} +1 -1
  26. package/dist/cli/{index-k330631a.js → index-at0ygwwp.js} +5 -5
  27. package/dist/cli/{index-t6q73twc.js → index-azy3tw6c.js} +2 -2
  28. package/dist/cli/{index-eefz8ghz.js → index-bfz1jvcn.js} +1 -1
  29. package/dist/cli/{index-yrs4wwfq.js → index-d5dexrv1.js} +4 -4
  30. package/dist/cli/{index-wemtrnch.js → index-ffqy30e5.js} +2 -2
  31. package/dist/cli/{index-7ntcak58.js → index-gg44hytk.js} +9 -9
  32. package/dist/cli/{index-yepxmq4f.js → index-heg4em8j.js} +590 -260
  33. package/dist/cli/{index-t2nf57mv.js → index-j1v54ahd.js} +2 -2
  34. package/dist/cli/{index-tj0sdxg9.js → index-j3rkh9mp.js} +2 -2
  35. package/dist/cli/{index-4ygb35m1.js → index-jzxeymr0.js} +13 -13
  36. package/dist/cli/{index-drgt81xf.js → index-ke3m026z.js} +6 -6
  37. package/dist/cli/{index-fnq5ac3f.js → index-kfk403mc.js} +5 -5
  38. package/dist/cli/{index-n7nzwz0q.js → index-m2n1rhgv.js} +8 -0
  39. package/dist/cli/{index-k6bjkqw8.js → index-mpcp6rmj.js} +1 -1
  40. package/dist/cli/{index-j82xdrqp.js → index-p27az2hc.js} +4 -4
  41. package/dist/cli/{index-5d2avnj9.js → index-pm7c6f66.js} +2 -2
  42. package/dist/cli/{index-vfp9hjgv.js → index-q9vb5e7n.js} +1 -1
  43. package/dist/cli/{index-epsy1rh1.js → index-qk29b7s4.js} +42 -42
  44. package/dist/cli/{index-fgv6qp10.js → index-qs8eth8h.js} +37 -6
  45. package/dist/cli/{index-bqmxxbrw.js → index-rp0jk48x.js} +7 -7
  46. package/dist/cli/{index-fnw6zfh0.js → index-sqngtwyq.js} +1 -1
  47. package/dist/cli/{index-bc4x76z7.js → index-swxaa0zs.js} +40 -40
  48. package/dist/cli/{index-xnednxvm.js → index-tnjmn0dn.js} +1 -1
  49. package/dist/cli/{index-1042jnb9.js → index-vfc7d22n.js} +7 -3
  50. package/dist/cli/{index-1bq6hkw5.js → index-w4yjy3vp.js} +1 -1
  51. package/dist/cli/{index-e48h8m73.js → index-wbkxbgk8.js} +9 -5
  52. package/dist/cli/{index-2jtmevrr.js → index-wfbh1bx8.js} +3 -3
  53. package/dist/cli/{index-822hhbkc.js → index-wkde35ej.js} +9 -9
  54. package/dist/cli/{index-76qm2c2y.js → index-wvghb3x6.js} +4 -4
  55. package/dist/cli/{index-v2he8xfj.js → index-y6a2bkp1.js} +2 -2
  56. package/dist/cli/{index-eya03h5m.js → index-y74n1sy8.js} +7 -7
  57. package/dist/cli/{index-tbswvz8s.js → index-yeh78c1g.js} +2 -2
  58. package/dist/cli/{index-en0p0hqp.js → index-yj1kr0ft.js} +1 -1
  59. package/dist/cli/{index-7c24bb1r.js → index-zex7644g.js} +2 -2
  60. package/dist/cli/{index-exhm2ztr.js → index-zmb8fjp5.js} +1 -1
  61. package/dist/cli/{index-qgf5xexz.js → index-zsm8h8y1.js} +4 -4
  62. package/dist/cli/{index-yhaxn5r7.js → index-zsp9de3k.js} +2 -2
  63. package/dist/cli/index.js +41 -41
  64. package/dist/cli/{knowledge-escalator-j4jcpver.js → knowledge-escalator-rgz471df.js} +13 -13
  65. package/dist/cli/{knowledge-events-fcpzfp2m.js → knowledge-events-4mq0ypx9.js} +11 -11
  66. package/dist/cli/{knowledge-link-9z3fha35.js → knowledge-link-npk50523.js} +4 -4
  67. package/dist/cli/{knowledge-store-6evy197p.js → knowledge-store-gft25s5t.js} +5 -5
  68. package/dist/cli/{knowledge-validator-s28b1ddg.js → knowledge-validator-ejqacbx4.js} +7 -7
  69. package/dist/cli/{mcp-9kqsnehc.js → mcp-emaeeq4s.js} +48 -7
  70. package/dist/cli/mcp.d.ts +9 -0
  71. package/dist/cli/{model-preflight-1pp1a4yf.js → model-preflight-kh9dwts2.js} +1 -1
  72. package/dist/cli/{pending-delegations-e15f26e0.js → pending-delegations-4bhkcykk.js} +11 -11
  73. package/dist/cli/{pr-subscriptions-mqv51zvm.js → pr-subscriptions-h1n6dbds.js} +11 -11
  74. package/dist/cli/{pr-workflow-gate-fj31btdv.js → pr-workflow-gate-wn6v5za8.js} +40 -40
  75. package/dist/cli/{runner-yhfmejzb.js → runner-ffy5ahhz.js} +5 -5
  76. package/dist/cli/{scan-cursor-tpnq7e56.js → scan-cursor-e63t0g5b.js} +6 -6
  77. package/dist/cli/{schema-1wwcyaxp.js → schema-4k4hr33y.js} +4 -2
  78. package/dist/cli/{scope-persistence-332nvn9b.js → scope-persistence-qcw3rtxq.js} +16 -16
  79. package/dist/cli/{server-19bpfaps.js → server-58s1wwap.js} +2055 -736
  80. package/dist/cli/{skill-generator-gn1k4yxj.js → skill-generator-fhj13jmq.js} +15 -15
  81. package/dist/cli/{snapshot-coordination-init-6ztt4v99.js → snapshot-coordination-init-5fawrj35.js} +40 -40
  82. package/dist/cli/{telemetry-w774xb8g.js → telemetry-ca8dmn26.js} +1 -1
  83. package/dist/cli/{workspace-snapshot-9gqna7gq.js → workspace-snapshot-v5qyjxg0.js} +3 -3
  84. package/dist/cli/{worktree-collision-ownership-q2ydb0ph.js → worktree-collision-ownership-hjk0jx19.js} +12 -12
  85. package/dist/cli/{worktree-isolation-fsqe1qdv.js → worktree-isolation-aj20bs6q.js} +40 -40
  86. package/dist/commands/dashboard.d.ts +15 -0
  87. package/dist/commands/registry.d.ts +7 -0
  88. package/dist/config/schema.d.ts +16 -0
  89. package/dist/dashboard/assets.d.ts +12 -0
  90. package/dist/dashboard/index.d.ts +74 -0
  91. package/dist/dashboard/server.d.ts +94 -0
  92. package/dist/dashboard/views.d.ts +131 -0
  93. package/dist/hooks/index.d.ts +1 -1
  94. package/dist/hooks/tool-summarizer.d.ts +7 -2
  95. package/dist/index.js +435 -274
  96. package/dist/mcp/adapters/knowledge-add.d.ts +19 -0
  97. package/dist/mcp/adapters/receipt-status.d.ts +3 -0
  98. package/dist/mcp/adapters/scope-validation.d.ts +3 -0
  99. package/dist/mcp/registry.d.ts +26 -14
  100. package/dist/mcp/server.d.ts +5 -0
  101. package/dist/mcp/write-receipts.d.ts +168 -0
  102. package/dist/summaries/index.d.ts +1 -1
  103. package/dist/summaries/manager.d.ts +27 -1
  104. package/dist/tools/index.d.ts +2 -0
  105. package/dist/tools/knowledge-receipt-status.d.ts +8 -0
  106. package/dist/tools/manifest.d.ts +2 -0
  107. package/dist/tools/scope-validate.d.ts +55 -0
  108. package/dist/tools/tool-metadata.d.ts +8 -0
  109. package/dist/utils/path-security.d.ts +21 -0
  110. package/opencode-swarm.schema.json +14 -0
  111. package/package.json +1 -1
  112. package/dist/cli/curator-llm-factory-fywmb8jh.js +0 -72
  113. package/dist/cli/guardrail-explain-gm69b76w.js +0 -73
  114. package/dist/cli/hive-promoter-hc0r0z9h.js +0 -87
@@ -33,33 +33,33 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-qgf5xexz.js";
36
+ } from "./index-zsm8h8y1.js";
37
37
  import"./index-q7sjgr1y.js";
38
- import"./index-cv191ybt.js";
39
- import"./index-exhm2ztr.js";
38
+ import"./index-29begjkp.js";
39
+ import"./index-zmb8fjp5.js";
40
40
  import"./index-2s7dvzff.js";
41
- import"./index-yrs4wwfq.js";
42
- import"./index-wemtrnch.js";
41
+ import"./index-d5dexrv1.js";
42
+ import"./index-ffqy30e5.js";
43
43
  import"./index-rtry5xyf.js";
44
- import"./index-67amf4my.js";
44
+ import"./index-2vhkwy6v.js";
45
45
  import"./index-frcemc0b.js";
46
46
  import"./index-wrt875kh.js";
47
- import"./index-tbswvz8s.js";
48
- import"./index-634pjhe4.js";
47
+ import"./index-yeh78c1g.js";
48
+ import"./index-2mdk6nt9.js";
49
49
  import"./index-vzm6zre7.js";
50
50
  import"./index-ae75rja9.js";
51
- import"./index-en0p0hqp.js";
52
- import"./index-tj0sdxg9.js";
51
+ import"./index-yj1kr0ft.js";
52
+ import"./index-j3rkh9mp.js";
53
53
  import"./index-7g4c7s5r.js";
54
- import"./index-2jtmevrr.js";
55
- import"./index-yhaxn5r7.js";
54
+ import"./index-wfbh1bx8.js";
55
+ import"./index-zsp9de3k.js";
56
56
  import"./index-1xnse449.js";
57
57
  import"./index-c1ggtmpm.js";
58
- import"./index-m0cdjvtv.js";
58
+ import"./index-18hjycr1.js";
59
59
  import"./index-zz7gzw57.js";
60
60
  import"./index-4ddpvd5c.js";
61
- import"./index-e48h8m73.js";
62
- import"./index-n7nzwz0q.js";
61
+ import"./index-wbkxbgk8.js";
62
+ import"./index-m2n1rhgv.js";
63
63
  import"./index-bk5tah7q.js";
64
64
  import"./index-gknz3bv1.js";
65
65
  import"./index-zpsr8rpc.js";
@@ -8,70 +8,70 @@ import {
8
8
  markSnapshotCoordinationClosing,
9
9
  retrySnapshotCoordinationInitialization,
10
10
  startSnapshotCoordinationInitialization
11
- } from "./index-yepxmq4f.js";
11
+ } from "./index-heg4em8j.js";
12
12
  import"./index-hnvmj9wx.js";
13
- import"./index-vfp9hjgv.js";
14
- import"./index-fgv6qp10.js";
15
- import"./index-eefz8ghz.js";
16
- import"./index-1042jnb9.js";
17
- import"./index-4ygb35m1.js";
18
- import"./index-k6bjkqw8.js";
13
+ import"./index-q9vb5e7n.js";
14
+ import"./index-qs8eth8h.js";
15
+ import"./index-bfz1jvcn.js";
16
+ import"./index-vfc7d22n.js";
17
+ import"./index-jzxeymr0.js";
18
+ import"./index-mpcp6rmj.js";
19
19
  import"./index-txdagbh7.js";
20
20
  import"./index-n1tcj1q7.js";
21
- import"./index-fpbcxykc.js";
22
- import"./index-qgf5xexz.js";
23
- import"./index-k330631a.js";
24
- import"./index-7c24bb1r.js";
21
+ import"./index-6b295cas.js";
22
+ import"./index-zsm8h8y1.js";
23
+ import"./index-at0ygwwp.js";
24
+ import"./index-zex7644g.js";
25
25
  import"./index-fyfbpz4f.js";
26
- import"./index-eya03h5m.js";
26
+ import"./index-y74n1sy8.js";
27
27
  import"./index-549wxbe1.js";
28
28
  import"./index-zsrtt42s.js";
29
- import"./index-822hhbkc.js";
30
- import"./index-5d2avnj9.js";
31
- import"./index-7nsvszwn.js";
29
+ import"./index-wkde35ej.js";
30
+ import"./index-pm7c6f66.js";
31
+ import"./index-2b1whj28.js";
32
32
  import"./index-pt7h91zc.js";
33
33
  import"./index-q7sjgr1y.js";
34
- import"./index-fnq5ac3f.js";
35
- import"./index-j82xdrqp.js";
36
- import"./index-bqmxxbrw.js";
37
- import"./index-cv191ybt.js";
38
- import"./index-exhm2ztr.js";
34
+ import"./index-kfk403mc.js";
35
+ import"./index-p27az2hc.js";
36
+ import"./index-rp0jk48x.js";
37
+ import"./index-29begjkp.js";
38
+ import"./index-zmb8fjp5.js";
39
39
  import"./index-2s7dvzff.js";
40
- import"./index-yrs4wwfq.js";
41
- import"./index-wemtrnch.js";
40
+ import"./index-d5dexrv1.js";
41
+ import"./index-ffqy30e5.js";
42
42
  import"./index-rtry5xyf.js";
43
- import"./index-67amf4my.js";
43
+ import"./index-2vhkwy6v.js";
44
44
  import"./index-frcemc0b.js";
45
45
  import"./index-wrt875kh.js";
46
- import"./index-7ntcak58.js";
47
- import"./index-drgt81xf.js";
48
- import"./index-t2nf57mv.js";
49
- import"./index-v2he8xfj.js";
50
- import"./index-1bq6hkw5.js";
51
- import"./index-xnednxvm.js";
46
+ import"./index-gg44hytk.js";
47
+ import"./index-ke3m026z.js";
48
+ import"./index-j1v54ahd.js";
49
+ import"./index-y6a2bkp1.js";
50
+ import"./index-w4yjy3vp.js";
51
+ import"./index-tnjmn0dn.js";
52
52
  import"./index-rdm3px0g.js";
53
53
  import"./index-ry16d01s.js";
54
- import"./index-tbswvz8s.js";
55
- import"./index-634pjhe4.js";
54
+ import"./index-yeh78c1g.js";
55
+ import"./index-2mdk6nt9.js";
56
56
  import"./index-vzm6zre7.js";
57
57
  import"./index-ae75rja9.js";
58
- import"./index-en0p0hqp.js";
59
- import"./index-tj0sdxg9.js";
58
+ import"./index-yj1kr0ft.js";
59
+ import"./index-j3rkh9mp.js";
60
60
  import"./index-7g4c7s5r.js";
61
- import"./index-2jtmevrr.js";
62
- import"./index-yhaxn5r7.js";
61
+ import"./index-wfbh1bx8.js";
62
+ import"./index-zsp9de3k.js";
63
63
  import"./index-1xnse449.js";
64
64
  import"./index-c1ggtmpm.js";
65
- import"./index-m0cdjvtv.js";
65
+ import"./index-18hjycr1.js";
66
66
  import"./index-zz7gzw57.js";
67
67
  import"./index-4ddpvd5c.js";
68
- import"./index-e48h8m73.js";
69
- import"./index-n7nzwz0q.js";
68
+ import"./index-wbkxbgk8.js";
69
+ import"./index-m2n1rhgv.js";
70
70
  import"./index-bk5tah7q.js";
71
71
  import"./index-gknz3bv1.js";
72
72
  import"./index-zpsr8rpc.js";
73
- import"./index-76qm2c2y.js";
74
- import"./index-yzjaj53h.js";
73
+ import"./index-wvghb3x6.js";
74
+ import"./index-9rwhas09.js";
75
75
  import"./index-zgwm4ryv.js";
76
76
  import"./index-a76rekgs.js";
77
77
  export {
@@ -14,7 +14,7 @@ import {
14
14
  startHeartbeatTracking,
15
15
  stopHeartbeatTracking,
16
16
  telemetry
17
- } from "./index-2jtmevrr.js";
17
+ } from "./index-wfbh1bx8.js";
18
18
  import"./index-1xnse449.js";
19
19
  import"./index-c1ggtmpm.js";
20
20
  import"./index-gknz3bv1.js";
@@ -45,10 +45,10 @@ import {
45
45
  shouldSkipSnapshot,
46
46
  switchPrFeedbackTrackingCandidateAsync,
47
47
  workspaceSnapshotMatches
48
- } from "./index-5d2avnj9.js";
49
- import"./index-exhm2ztr.js";
48
+ } from "./index-pm7c6f66.js";
49
+ import"./index-zmb8fjp5.js";
50
50
  import"./index-2s7dvzff.js";
51
- import"./index-yhaxn5r7.js";
51
+ import"./index-zsp9de3k.js";
52
52
  import"./index-1xnse449.js";
53
53
  import"./index-c1ggtmpm.js";
54
54
  import"./index-zz7gzw57.js";
@@ -9,27 +9,27 @@ import {
9
9
  WORKTREE_PROVISIONING_OWNER_LEASE_MS,
10
10
  removeWorktreeProvisioningOwner,
11
11
  scanWorktreeProvisioningOwnersForRecovery
12
- } from "./index-7nsvszwn.js";
12
+ } from "./index-2b1whj28.js";
13
13
  import {
14
14
  scanDelegationFallbacksForRecovery,
15
15
  scanDelegationsForRecovery
16
- } from "./index-bqmxxbrw.js";
17
- import"./index-exhm2ztr.js";
16
+ } from "./index-rp0jk48x.js";
17
+ import"./index-zmb8fjp5.js";
18
18
  import"./index-2s7dvzff.js";
19
- import"./index-v2he8xfj.js";
20
- import"./index-1bq6hkw5.js";
21
- import"./index-xnednxvm.js";
19
+ import"./index-y6a2bkp1.js";
20
+ import"./index-w4yjy3vp.js";
21
+ import"./index-tnjmn0dn.js";
22
22
  import"./index-rdm3px0g.js";
23
23
  import"./index-ry16d01s.js";
24
- import"./index-tbswvz8s.js";
25
- import"./index-634pjhe4.js";
24
+ import"./index-yeh78c1g.js";
25
+ import"./index-2mdk6nt9.js";
26
26
  import"./index-vzm6zre7.js";
27
27
  import"./index-ae75rja9.js";
28
- import"./index-en0p0hqp.js";
29
- import"./index-tj0sdxg9.js";
28
+ import"./index-yj1kr0ft.js";
29
+ import"./index-j3rkh9mp.js";
30
30
  import"./index-7g4c7s5r.js";
31
- import"./index-2jtmevrr.js";
32
- import"./index-yhaxn5r7.js";
31
+ import"./index-wfbh1bx8.js";
32
+ import"./index-zsp9de3k.js";
33
33
  import {
34
34
  canonicalRootKeyFresh
35
35
  } from "./index-1xnse449.js";
@@ -21,72 +21,72 @@ import {
21
21
  sanitizeWorktreeTaskId,
22
22
  standardWorktreeByCallID,
23
23
  standardWorktreeSerializationSessions
24
- } from "./index-yepxmq4f.js";
24
+ } from "./index-heg4em8j.js";
25
25
  import"./index-hnvmj9wx.js";
26
- import"./index-vfp9hjgv.js";
27
- import"./index-fgv6qp10.js";
28
- import"./index-eefz8ghz.js";
29
- import"./index-1042jnb9.js";
30
- import"./index-4ygb35m1.js";
31
- import"./index-k6bjkqw8.js";
26
+ import"./index-q9vb5e7n.js";
27
+ import"./index-qs8eth8h.js";
28
+ import"./index-bfz1jvcn.js";
29
+ import"./index-vfc7d22n.js";
30
+ import"./index-jzxeymr0.js";
31
+ import"./index-mpcp6rmj.js";
32
32
  import"./index-txdagbh7.js";
33
33
  import"./index-n1tcj1q7.js";
34
- import"./index-fpbcxykc.js";
35
- import"./index-qgf5xexz.js";
36
- import"./index-k330631a.js";
37
- import"./index-7c24bb1r.js";
34
+ import"./index-6b295cas.js";
35
+ import"./index-zsm8h8y1.js";
36
+ import"./index-at0ygwwp.js";
37
+ import"./index-zex7644g.js";
38
38
  import"./index-fyfbpz4f.js";
39
- import"./index-eya03h5m.js";
39
+ import"./index-y74n1sy8.js";
40
40
  import"./index-549wxbe1.js";
41
41
  import"./index-zsrtt42s.js";
42
- import"./index-822hhbkc.js";
43
- import"./index-5d2avnj9.js";
44
- import"./index-7nsvszwn.js";
42
+ import"./index-wkde35ej.js";
43
+ import"./index-pm7c6f66.js";
44
+ import"./index-2b1whj28.js";
45
45
  import"./index-pt7h91zc.js";
46
46
  import"./index-q7sjgr1y.js";
47
- import"./index-fnq5ac3f.js";
48
- import"./index-j82xdrqp.js";
49
- import"./index-bqmxxbrw.js";
50
- import"./index-cv191ybt.js";
51
- import"./index-exhm2ztr.js";
47
+ import"./index-kfk403mc.js";
48
+ import"./index-p27az2hc.js";
49
+ import"./index-rp0jk48x.js";
50
+ import"./index-29begjkp.js";
51
+ import"./index-zmb8fjp5.js";
52
52
  import"./index-2s7dvzff.js";
53
- import"./index-yrs4wwfq.js";
54
- import"./index-wemtrnch.js";
53
+ import"./index-d5dexrv1.js";
54
+ import"./index-ffqy30e5.js";
55
55
  import"./index-rtry5xyf.js";
56
56
  import {
57
57
  resolveWorktreeIsolationConfig
58
- } from "./index-67amf4my.js";
58
+ } from "./index-2vhkwy6v.js";
59
59
  import"./index-frcemc0b.js";
60
60
  import"./index-wrt875kh.js";
61
- import"./index-7ntcak58.js";
62
- import"./index-drgt81xf.js";
63
- import"./index-t2nf57mv.js";
64
- import"./index-v2he8xfj.js";
65
- import"./index-1bq6hkw5.js";
66
- import"./index-xnednxvm.js";
61
+ import"./index-gg44hytk.js";
62
+ import"./index-ke3m026z.js";
63
+ import"./index-j1v54ahd.js";
64
+ import"./index-y6a2bkp1.js";
65
+ import"./index-w4yjy3vp.js";
66
+ import"./index-tnjmn0dn.js";
67
67
  import"./index-rdm3px0g.js";
68
68
  import"./index-ry16d01s.js";
69
- import"./index-tbswvz8s.js";
70
- import"./index-634pjhe4.js";
69
+ import"./index-yeh78c1g.js";
70
+ import"./index-2mdk6nt9.js";
71
71
  import"./index-vzm6zre7.js";
72
72
  import"./index-ae75rja9.js";
73
- import"./index-en0p0hqp.js";
74
- import"./index-tj0sdxg9.js";
73
+ import"./index-yj1kr0ft.js";
74
+ import"./index-j3rkh9mp.js";
75
75
  import"./index-7g4c7s5r.js";
76
- import"./index-2jtmevrr.js";
77
- import"./index-yhaxn5r7.js";
76
+ import"./index-wfbh1bx8.js";
77
+ import"./index-zsp9de3k.js";
78
78
  import"./index-1xnse449.js";
79
79
  import"./index-c1ggtmpm.js";
80
- import"./index-m0cdjvtv.js";
80
+ import"./index-18hjycr1.js";
81
81
  import"./index-zz7gzw57.js";
82
82
  import"./index-4ddpvd5c.js";
83
- import"./index-e48h8m73.js";
84
- import"./index-n7nzwz0q.js";
83
+ import"./index-wbkxbgk8.js";
84
+ import"./index-m2n1rhgv.js";
85
85
  import"./index-bk5tah7q.js";
86
86
  import"./index-gknz3bv1.js";
87
87
  import"./index-zpsr8rpc.js";
88
- import"./index-76qm2c2y.js";
89
- import"./index-yzjaj53h.js";
88
+ import"./index-wvghb3x6.js";
89
+ import"./index-9rwhas09.js";
90
90
  import"./index-zgwm4ryv.js";
91
91
  import"./index-a76rekgs.js";
92
92
  export {
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `/swarm dashboard` — report the opt-in local mission-control dashboard's
3
+ * state (issue #2509, Workstream G5).
4
+ *
5
+ * Read-only. Three outcomes:
6
+ * - LISTENING: prints the tokened browsing URL (token from the in-process
7
+ * registry only — it is never persisted).
8
+ * - DISABLED (port conflict / bind failure): explains why and how to fix.
9
+ * - OFF (default): explains the `dashboard.port` opt-in.
10
+ *
11
+ * The command never starts or stops the listener; lifecycle belongs to the
12
+ * post-resolution init task in `src/index.ts`.
13
+ */
14
+ import type { CommandResult } from './registry';
15
+ export declare function handleDashboardCommand(directory: string, _args: string[] | string): CommandResult;
@@ -497,6 +497,13 @@ export declare const COMMAND_REGISTRY: {
497
497
  readonly category: "diagnostics";
498
498
  readonly toolPolicy: "agent";
499
499
  };
500
+ readonly dashboard: {
501
+ readonly handler: (ctx: CommandContext) => CommandResult;
502
+ readonly description: "Show the opt-in local mission-control dashboard URL and status (issue #2509)";
503
+ readonly details: "Read-only status for the opt-in loopback dashboard over durable swarm state (gates & circuits, delegation age bands, lane liveness, task board, activity timeline). Disabled by default; enable with dashboard.port > 0 in opencode-swarm.json. Never starts or stops the listener — lifecycle belongs to plugin init; the dashboard itself performs no mutations.";
504
+ readonly category: "diagnostics";
505
+ readonly toolPolicy: "agent";
506
+ };
500
507
  readonly learning: {
501
508
  readonly handler: (ctx: CommandContext) => Promise<string>;
502
509
  readonly description: "Show learning metrics and violation trends";
@@ -1977,6 +1977,19 @@ export declare const DispatchProtectionConfigSchema: z.ZodObject<{
1977
1977
  burst_capacity: z.ZodDefault<z.ZodNumber>;
1978
1978
  }, z.core.$strict>;
1979
1979
  export type DispatchProtectionConfig = z.infer<typeof DispatchProtectionConfigSchema>;
1980
+ /**
1981
+ * Local mission-control dashboard (issue #2509, Workstream G5). The port IS
1982
+ * the opt-in: absent config or `port: 0` leaves the dashboard fully disabled
1983
+ * with zero footprint (no listener, no post-resolution task, no `.swarm`
1984
+ * artifact). When `port > 0`, a loopback-only, capability-token HTTP server
1985
+ * starts from the post-resolution init queue and renders read-only views over
1986
+ * the project's durable swarm state. Inline-asset architecture per ADR 0002
1987
+ * (REIMPLEMENT — no upstream code ported).
1988
+ */
1989
+ export declare const DashboardConfigSchema: z.ZodObject<{
1990
+ port: z.ZodDefault<z.ZodNumber>;
1991
+ }, z.core.$strict>;
1992
+ export type DashboardConfig = z.infer<typeof DashboardConfigSchema>;
1980
1993
  /**
1981
1994
  * Issue #2384: deprecated transcript-row settlement for Profile A PR-review
1982
1995
  * base/micro discovery lanes is an explicit compatibility opt-in. Omitted
@@ -3160,6 +3173,9 @@ export declare const PluginConfigSchema: z.ZodObject<{
3160
3173
  deadband: z.ZodDefault<z.ZodNumber>;
3161
3174
  retirement_min_age_days: z.ZodDefault<z.ZodNumber>;
3162
3175
  }, z.core.$strict>>;
3176
+ dashboard: z.ZodOptional<z.ZodObject<{
3177
+ port: z.ZodDefault<z.ZodNumber>;
3178
+ }, z.core.$strict>>;
3163
3179
  }, z.core.$strip>;
3164
3180
  export type PluginConfig = z.infer<typeof PluginConfigSchema>;
3165
3181
  export type { AgentName, PipelineAgentName, QAAgentName, } from './constants';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Inline dashboard assets (issue #2509).
3
+ *
4
+ * The HTML/JS below is served verbatim from this TS string module — the
5
+ * inline-asset architecture credited to opencode-ensemble by ADR 0002
6
+ * (REIMPLEMENT decision: ideas adopted, no upstream code/strings/UI assets
7
+ * ported). No frontend build step, no framework dependency, no external
8
+ * requests: the page is a static shell that fetches the read-only JSON API
9
+ * on the same token-scoped origin path it was served from.
10
+ */
11
+ /** Static HTML shell for the mission-control view. */
12
+ export declare function renderDashboardHtml(): string;
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Dashboard lifecycle entry (issue #2509).
3
+ *
4
+ * `startDashboardServer` is the single production start surface, called from
5
+ * the post-resolution init task in `src/index.ts` (never from the awaited
6
+ * `server()` path — AGENTS invariant 1) and directly by tests. The handle it
7
+ * returns satisfies the frozen driver contract: `port`/`url`/`token` plus an
8
+ * idempotent `close()`.
9
+ *
10
+ * Runtime state posture:
11
+ * - The only durable artifact is `.swarm/dashboard-status.json` — a
12
+ * one-record notice file (status/port/url-without-token/startedAt). The
13
+ * capability token is NEVER persisted; the `/swarm dashboard` command reads
14
+ * it from the in-process registry below.
15
+ * - The registry is keyed by canonical project key with FIFO eviction
16
+ * (session-state boundedness, AGENTS invariant 8); one listener per project
17
+ * root per process, closed on plugin dispose / process exit by
18
+ * `closeDashboardServerForRoot`.
19
+ */
20
+ export interface DashboardStartOptions {
21
+ /** TCP port; the opt-in knob itself (0/absent never reaches this module). */
22
+ port: number;
23
+ /** Bind host — always loopback; defaults to 127.0.0.1. */
24
+ host?: string;
25
+ /** Project root (any of the accepted aliases; `directory` wins). */
26
+ directory?: string;
27
+ projectRoot?: string;
28
+ root?: string;
29
+ }
30
+ export interface DashboardHandle {
31
+ /** Bound port; undefined when the server did not come up. */
32
+ readonly port: number | undefined;
33
+ /** Tokened browsing URL; undefined when the server did not come up. */
34
+ readonly url: string | undefined;
35
+ /** Per-boot capability token; undefined when the server did not come up. */
36
+ readonly token: string | undefined;
37
+ readonly listening: boolean;
38
+ readonly enabled: boolean;
39
+ /** Machine-readable state, e.g. 'listening' | 'disabled_port_conflict'. */
40
+ readonly status: string;
41
+ close(): Promise<void>;
42
+ }
43
+ /**
44
+ * Start the opt-in dashboard for one project root.
45
+ *
46
+ * Never throws: a bind conflict (or any listen error) resolves to a disabled
47
+ * handle carrying a positive notice signal (`enabled:false`, `listening:false`
48
+ * plus a `disabled_port_conflict` status) and the `.swarm/dashboard-status.json`
49
+ * notice file — the disable-with-notice contract in issue #2509 AC3/AC7.
50
+ */
51
+ export declare function startDashboardServer(options: DashboardStartOptions): Promise<DashboardHandle>;
52
+ /**
53
+ * Conventional module entry point: the frozen #2509 driver contract resolves
54
+ * the module's start surface by function name, preferring exactly
55
+ * `startDashboard`. Same function as `startDashboardServer` — an alias, not a
56
+ * second implementation.
57
+ */
58
+ export declare const startDashboard: typeof startDashboardServer;
59
+ /** Live handle for a project root (for the `/swarm dashboard` command). */
60
+ export declare function getDashboardHandle(directory: string): DashboardHandle | null;
61
+ /**
62
+ * Sync best-effort close used by the plugin dispose/exit cleanup path
63
+ * (cannot await there). Safe when nothing is running.
64
+ */
65
+ export declare function closeDashboardServerForRoot(directory: string): void;
66
+ /**
67
+ * Owner-guarded close for multi-instance hosts (review round 2, finding F-A —
68
+ * the PRR-011 pattern from src/background/pr-subscriptions.ts): closes the
69
+ * root's listener ONLY when the registered handle is the caller's own. A
70
+ * stale dispose from instance A (whose start was overwritten by instance B's
71
+ * later start on the same root) becomes a no-op instead of tearing down B's
72
+ * live listener. Returns true when this call performed the close.
73
+ */
74
+ export declare function closeDashboardServerForRootIfOwner(directory: string, expectedHandle: DashboardHandle | null): boolean;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Loopback HTTP server for the opt-in dashboard (issue #2509).
3
+ *
4
+ * Portability: `node:http` ONLY — the bundle must stay Node-ESM-loadable
5
+ * (AGENTS invariant 2); no Bun-specific server API exists anywhere in the
6
+ * dashboard.
7
+ *
8
+ * Security boundary (AC3/AC6/AC7):
9
+ * - GET/HEAD only; every other method is 405 — the server has NO
10
+ * state-changing verb, which is the CSRF policy (a cross-site request
11
+ * can only ever re-read what its origin checks already block).
12
+ * - Host allowlist (DNS-rebinding defense): the Host header hostname must be
13
+ * a loopback name (127.0.0.1 / localhost / ::1); the server itself only
14
+ * ever binds 127.0.0.1. House standard: src/commands/_shared/url-security.ts
15
+ * (named by issue #2509) governs the outbound-URL posture this surface
16
+ * composes with — `isPrivateHost` there is the loopback BLOCKLIST for
17
+ * outbound links; this listener needs the INVERSE (an inbound loopback
18
+ * ALLOWLIST), so the posture is reused rather than the helpers imported.
19
+ * - Origin allowlist: a present Origin header must parse to a loopback host.
20
+ * - Capability token: every route requires the per-boot token via query
21
+ * (`token`/`t`/`cap`/`capability`) or path (`/{token}/…`, `/t/{token}/…`);
22
+ * comparison is constant-time over SHA-256 digests. Failure is a plain 404.
23
+ * - Responses are fully materialized, byte-capped, `no-store`, `nosniff`.
24
+ */
25
+ import type { IncomingMessage, ServerResponse } from 'node:http';
26
+ import { type Server } from 'node:http';
27
+ export interface DashboardRouteContext {
28
+ directory: string;
29
+ token: string;
30
+ }
31
+ type JsonBody = Record<string, unknown>;
32
+ export interface DashboardRequestOutcome {
33
+ status: number;
34
+ body: string;
35
+ contentType: string;
36
+ }
37
+ /** Host header → loopback hostname decision (port suffix tolerated). */
38
+ export declare function hostHeaderAllowed(hostHeader: string | undefined): boolean;
39
+ /** Origin header (when present) → loopback origin decision. */
40
+ export declare function originHeaderAllowed(originHeader: string | undefined): boolean;
41
+ /** Constant-time token comparison over fixed-length digests. */
42
+ export declare function tokenMatches(expected: string, presented: string): boolean;
43
+ /**
44
+ * Extract (token, route) from a request URL. Accepts the token as a query
45
+ * parameter (`token|t|cap|capability`) or as the first path segment
46
+ * (`/{token}/route`) or under the explicit prefix (`/t/{token}/route`).
47
+ */
48
+ export declare function extractTokenAndRoute(rawUrl: string): {
49
+ token: string;
50
+ route: string;
51
+ } | null;
52
+ /**
53
+ * Bring an over-budget JSON payload back under MAX_RESPONSE_BYTES while
54
+ * keeping it VALID JSON: drop elements from the tail of the largest array
55
+ * (the volume driver in every view) and re-serialize, instead of splicing the
56
+ * serialized text (a splice lands mid-element and yields unparseable JSON —
57
+ * issue #2509 review round 2, finding F-B). Terminates: every iteration
58
+ * removes at least one array element. Marks the payload so clients can tell.
59
+ */
60
+ export declare function shrinkJsonToBudget(root: JsonBody): string;
61
+ /**
62
+ * Resolve one authorized route to its response. Read-only by construction:
63
+ * the handlers only call the view layer.
64
+ */
65
+ export declare function resolveRoute(route: string, ctx: DashboardRouteContext): Promise<DashboardRequestOutcome>;
66
+ export interface DashboardServerOptions {
67
+ port: number;
68
+ host?: string;
69
+ directory: string;
70
+ token: string;
71
+ }
72
+ export interface DashboardServerHandle {
73
+ server: Server;
74
+ port: number;
75
+ }
76
+ /**
77
+ * Create the dashboard request handler. Exported for direct testing; the
78
+ * security middleware order is part of the frozen contract (method → host →
79
+ * origin → token → route).
80
+ */
81
+ export declare function createDashboardRequestHandler(ctx: DashboardRouteContext): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
82
+ /**
83
+ * Bind the dashboard listener on the loopback interface. Resolves with the
84
+ * bound port; rejects on bind errors (EADDRINUSE surfaces here). The server
85
+ * is unref'd and every connection socket is unref'd + tracked so neither the
86
+ * listener nor an idle browser tab can keep the host process alive.
87
+ */
88
+ export declare function listenDashboardServer(options: DashboardServerOptions): Promise<DashboardServerHandle>;
89
+ /**
90
+ * Close a dashboard server: stop listening, destroy tracked sockets,
91
+ * resolve once closed. Idempotent and never throws.
92
+ */
93
+ export declare function closeDashboardServer(server: Server): Promise<void>;
94
+ export {};