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.
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/agents/architect.d.ts +8 -0
- package/dist/cli/{capability-probe-pdwwz8gs.js → capability-probe-8k8ebeyp.js} +2 -2
- package/dist/cli/{coder-settlement-c0kysest.js → coder-settlement-d2bfb25j.js} +13 -13
- package/dist/cli/{config-doctor-bqwse4pd.js → config-doctor-905x2s1c.js} +4 -4
- package/dist/cli/{core-e6vtme4x.js → core-k7wfx1wx.js} +4 -4
- package/dist/cli/{curation-policy-d8s9w1z8.js → curation-policy-n4hd2wsa.js} +5 -5
- package/dist/cli/{curator-drift-4m984tvy.js → curator-drift-smqmej5v.js} +4 -4
- package/dist/cli/curator-llm-factory-qhhxev17.js +72 -0
- package/dist/cli/{curator-2xb1d80j.js → curator-wyadq69k.js} +40 -40
- package/dist/cli/{evidence-summary-service-9yxm6jkq.js → evidence-summary-service-r3wcprfk.js} +19 -19
- package/dist/cli/{gate-evidence-43bnst3v.js → gate-evidence-tq9rb2aj.js} +8 -8
- package/dist/cli/guardrail-explain-kvgejh24.js +73 -0
- package/dist/cli/{guardrail-log-j7cj3rjy.js → guardrail-log-m6twga6x.js} +9 -9
- package/dist/cli/{guardrail-reset-jcsyfvf4.js → guardrail-reset-86esv8cr.js} +40 -40
- package/dist/cli/hive-promoter-s87hkb40.js +87 -0
- package/dist/cli/{index-m0cdjvtv.js → index-18hjycr1.js} +1 -1
- package/dist/cli/{index-cv191ybt.js → index-29begjkp.js} +8 -8
- package/dist/cli/{index-7nsvszwn.js → index-2b1whj28.js} +2 -2
- package/dist/cli/{index-hp5eet6g.js → index-2bmhe2jn.js} +4 -4
- package/dist/cli/{index-634pjhe4.js → index-2mdk6nt9.js} +7 -7
- package/dist/cli/{index-67amf4my.js → index-2vhkwy6v.js} +3 -3
- package/dist/cli/{index-fpbcxykc.js → index-6b295cas.js} +87 -1
- package/dist/cli/{index-yzjaj53h.js → index-9rwhas09.js} +1 -1
- package/dist/cli/{index-k330631a.js → index-at0ygwwp.js} +5 -5
- package/dist/cli/{index-t6q73twc.js → index-azy3tw6c.js} +2 -2
- package/dist/cli/{index-eefz8ghz.js → index-bfz1jvcn.js} +1 -1
- package/dist/cli/{index-yrs4wwfq.js → index-d5dexrv1.js} +4 -4
- package/dist/cli/{index-wemtrnch.js → index-ffqy30e5.js} +2 -2
- package/dist/cli/{index-7ntcak58.js → index-gg44hytk.js} +9 -9
- package/dist/cli/{index-yepxmq4f.js → index-heg4em8j.js} +590 -260
- package/dist/cli/{index-t2nf57mv.js → index-j1v54ahd.js} +2 -2
- package/dist/cli/{index-tj0sdxg9.js → index-j3rkh9mp.js} +2 -2
- package/dist/cli/{index-4ygb35m1.js → index-jzxeymr0.js} +13 -13
- package/dist/cli/{index-drgt81xf.js → index-ke3m026z.js} +6 -6
- package/dist/cli/{index-fnq5ac3f.js → index-kfk403mc.js} +5 -5
- package/dist/cli/{index-n7nzwz0q.js → index-m2n1rhgv.js} +8 -0
- package/dist/cli/{index-k6bjkqw8.js → index-mpcp6rmj.js} +1 -1
- package/dist/cli/{index-j82xdrqp.js → index-p27az2hc.js} +4 -4
- package/dist/cli/{index-5d2avnj9.js → index-pm7c6f66.js} +2 -2
- package/dist/cli/{index-vfp9hjgv.js → index-q9vb5e7n.js} +1 -1
- package/dist/cli/{index-epsy1rh1.js → index-qk29b7s4.js} +42 -42
- package/dist/cli/{index-fgv6qp10.js → index-qs8eth8h.js} +37 -6
- package/dist/cli/{index-bqmxxbrw.js → index-rp0jk48x.js} +7 -7
- package/dist/cli/{index-fnw6zfh0.js → index-sqngtwyq.js} +1 -1
- package/dist/cli/{index-bc4x76z7.js → index-swxaa0zs.js} +40 -40
- package/dist/cli/{index-xnednxvm.js → index-tnjmn0dn.js} +1 -1
- package/dist/cli/{index-1042jnb9.js → index-vfc7d22n.js} +7 -3
- package/dist/cli/{index-1bq6hkw5.js → index-w4yjy3vp.js} +1 -1
- package/dist/cli/{index-e48h8m73.js → index-wbkxbgk8.js} +9 -5
- package/dist/cli/{index-2jtmevrr.js → index-wfbh1bx8.js} +3 -3
- package/dist/cli/{index-822hhbkc.js → index-wkde35ej.js} +9 -9
- package/dist/cli/{index-76qm2c2y.js → index-wvghb3x6.js} +4 -4
- package/dist/cli/{index-v2he8xfj.js → index-y6a2bkp1.js} +2 -2
- package/dist/cli/{index-eya03h5m.js → index-y74n1sy8.js} +7 -7
- package/dist/cli/{index-tbswvz8s.js → index-yeh78c1g.js} +2 -2
- package/dist/cli/{index-en0p0hqp.js → index-yj1kr0ft.js} +1 -1
- package/dist/cli/{index-7c24bb1r.js → index-zex7644g.js} +2 -2
- package/dist/cli/{index-exhm2ztr.js → index-zmb8fjp5.js} +1 -1
- package/dist/cli/{index-qgf5xexz.js → index-zsm8h8y1.js} +4 -4
- package/dist/cli/{index-yhaxn5r7.js → index-zsp9de3k.js} +2 -2
- package/dist/cli/index.js +41 -41
- package/dist/cli/{knowledge-escalator-j4jcpver.js → knowledge-escalator-rgz471df.js} +13 -13
- package/dist/cli/{knowledge-events-fcpzfp2m.js → knowledge-events-4mq0ypx9.js} +11 -11
- package/dist/cli/{knowledge-link-9z3fha35.js → knowledge-link-npk50523.js} +4 -4
- package/dist/cli/{knowledge-store-6evy197p.js → knowledge-store-gft25s5t.js} +5 -5
- package/dist/cli/{knowledge-validator-s28b1ddg.js → knowledge-validator-ejqacbx4.js} +7 -7
- package/dist/cli/{mcp-9kqsnehc.js → mcp-emaeeq4s.js} +48 -7
- package/dist/cli/mcp.d.ts +9 -0
- package/dist/cli/{model-preflight-1pp1a4yf.js → model-preflight-kh9dwts2.js} +1 -1
- package/dist/cli/{pending-delegations-e15f26e0.js → pending-delegations-4bhkcykk.js} +11 -11
- package/dist/cli/{pr-subscriptions-mqv51zvm.js → pr-subscriptions-h1n6dbds.js} +11 -11
- package/dist/cli/{pr-workflow-gate-fj31btdv.js → pr-workflow-gate-wn6v5za8.js} +40 -40
- package/dist/cli/{runner-yhfmejzb.js → runner-ffy5ahhz.js} +5 -5
- package/dist/cli/{scan-cursor-tpnq7e56.js → scan-cursor-e63t0g5b.js} +6 -6
- package/dist/cli/{schema-1wwcyaxp.js → schema-4k4hr33y.js} +4 -2
- package/dist/cli/{scope-persistence-332nvn9b.js → scope-persistence-qcw3rtxq.js} +16 -16
- package/dist/cli/{server-19bpfaps.js → server-58s1wwap.js} +2055 -736
- package/dist/cli/{skill-generator-gn1k4yxj.js → skill-generator-fhj13jmq.js} +15 -15
- package/dist/cli/{snapshot-coordination-init-6ztt4v99.js → snapshot-coordination-init-5fawrj35.js} +40 -40
- package/dist/cli/{telemetry-w774xb8g.js → telemetry-ca8dmn26.js} +1 -1
- package/dist/cli/{workspace-snapshot-9gqna7gq.js → workspace-snapshot-v5qyjxg0.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-q2ydb0ph.js → worktree-collision-ownership-hjk0jx19.js} +12 -12
- package/dist/cli/{worktree-isolation-fsqe1qdv.js → worktree-isolation-aj20bs6q.js} +40 -40
- package/dist/commands/dashboard.d.ts +15 -0
- package/dist/commands/registry.d.ts +7 -0
- package/dist/config/schema.d.ts +16 -0
- package/dist/dashboard/assets.d.ts +12 -0
- package/dist/dashboard/index.d.ts +74 -0
- package/dist/dashboard/server.d.ts +94 -0
- package/dist/dashboard/views.d.ts +131 -0
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/tool-summarizer.d.ts +7 -2
- package/dist/index.js +435 -274
- package/dist/mcp/adapters/knowledge-add.d.ts +19 -0
- package/dist/mcp/adapters/receipt-status.d.ts +3 -0
- package/dist/mcp/adapters/scope-validation.d.ts +3 -0
- package/dist/mcp/registry.d.ts +26 -14
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/write-receipts.d.ts +168 -0
- package/dist/summaries/index.d.ts +1 -1
- package/dist/summaries/manager.d.ts +27 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/knowledge-receipt-status.d.ts +8 -0
- package/dist/tools/manifest.d.ts +2 -0
- package/dist/tools/scope-validate.d.ts +55 -0
- package/dist/tools/tool-metadata.d.ts +8 -0
- package/dist/utils/path-security.d.ts +21 -0
- package/opencode-swarm.schema.json +14 -0
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-fywmb8jh.js +0 -72
- package/dist/cli/guardrail-explain-gm69b76w.js +0 -73
- 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-
|
|
36
|
+
} from "./index-zsm8h8y1.js";
|
|
37
37
|
import"./index-q7sjgr1y.js";
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
38
|
+
import"./index-29begjkp.js";
|
|
39
|
+
import"./index-zmb8fjp5.js";
|
|
40
40
|
import"./index-2s7dvzff.js";
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
41
|
+
import"./index-d5dexrv1.js";
|
|
42
|
+
import"./index-ffqy30e5.js";
|
|
43
43
|
import"./index-rtry5xyf.js";
|
|
44
|
-
import"./index-
|
|
44
|
+
import"./index-2vhkwy6v.js";
|
|
45
45
|
import"./index-frcemc0b.js";
|
|
46
46
|
import"./index-wrt875kh.js";
|
|
47
|
-
import"./index-
|
|
48
|
-
import"./index-
|
|
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-
|
|
52
|
-
import"./index-
|
|
51
|
+
import"./index-yj1kr0ft.js";
|
|
52
|
+
import"./index-j3rkh9mp.js";
|
|
53
53
|
import"./index-7g4c7s5r.js";
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
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-
|
|
58
|
+
import"./index-18hjycr1.js";
|
|
59
59
|
import"./index-zz7gzw57.js";
|
|
60
60
|
import"./index-4ddpvd5c.js";
|
|
61
|
-
import"./index-
|
|
62
|
-
import"./index-
|
|
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";
|
package/dist/cli/{snapshot-coordination-init-6ztt4v99.js → snapshot-coordination-init-5fawrj35.js}
RENAMED
|
@@ -8,70 +8,70 @@ import {
|
|
|
8
8
|
markSnapshotCoordinationClosing,
|
|
9
9
|
retrySnapshotCoordinationInitialization,
|
|
10
10
|
startSnapshotCoordinationInitialization
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-heg4em8j.js";
|
|
12
12
|
import"./index-hnvmj9wx.js";
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-
|
|
15
|
-
import"./index-
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-
|
|
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-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
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-
|
|
26
|
+
import"./index-y74n1sy8.js";
|
|
27
27
|
import"./index-549wxbe1.js";
|
|
28
28
|
import"./index-zsrtt42s.js";
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
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-
|
|
35
|
-
import"./index-
|
|
36
|
-
import"./index-
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
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-
|
|
41
|
-
import"./index-
|
|
40
|
+
import"./index-d5dexrv1.js";
|
|
41
|
+
import"./index-ffqy30e5.js";
|
|
42
42
|
import"./index-rtry5xyf.js";
|
|
43
|
-
import"./index-
|
|
43
|
+
import"./index-2vhkwy6v.js";
|
|
44
44
|
import"./index-frcemc0b.js";
|
|
45
45
|
import"./index-wrt875kh.js";
|
|
46
|
-
import"./index-
|
|
47
|
-
import"./index-
|
|
48
|
-
import"./index-
|
|
49
|
-
import"./index-
|
|
50
|
-
import"./index-
|
|
51
|
-
import"./index-
|
|
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-
|
|
55
|
-
import"./index-
|
|
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-
|
|
59
|
-
import"./index-
|
|
58
|
+
import"./index-yj1kr0ft.js";
|
|
59
|
+
import"./index-j3rkh9mp.js";
|
|
60
60
|
import"./index-7g4c7s5r.js";
|
|
61
|
-
import"./index-
|
|
62
|
-
import"./index-
|
|
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-
|
|
65
|
+
import"./index-18hjycr1.js";
|
|
66
66
|
import"./index-zz7gzw57.js";
|
|
67
67
|
import"./index-4ddpvd5c.js";
|
|
68
|
-
import"./index-
|
|
69
|
-
import"./index-
|
|
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-
|
|
74
|
-
import"./index-
|
|
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 {
|
|
@@ -45,10 +45,10 @@ import {
|
|
|
45
45
|
shouldSkipSnapshot,
|
|
46
46
|
switchPrFeedbackTrackingCandidateAsync,
|
|
47
47
|
workspaceSnapshotMatches
|
|
48
|
-
} from "./index-
|
|
49
|
-
import"./index-
|
|
48
|
+
} from "./index-pm7c6f66.js";
|
|
49
|
+
import"./index-zmb8fjp5.js";
|
|
50
50
|
import"./index-2s7dvzff.js";
|
|
51
|
-
import"./index-
|
|
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-
|
|
12
|
+
} from "./index-2b1whj28.js";
|
|
13
13
|
import {
|
|
14
14
|
scanDelegationFallbacksForRecovery,
|
|
15
15
|
scanDelegationsForRecovery
|
|
16
|
-
} from "./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
} from "./index-rp0jk48x.js";
|
|
17
|
+
import"./index-zmb8fjp5.js";
|
|
18
18
|
import"./index-2s7dvzff.js";
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
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-
|
|
25
|
-
import"./index-
|
|
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-
|
|
29
|
-
import"./index-
|
|
28
|
+
import"./index-yj1kr0ft.js";
|
|
29
|
+
import"./index-j3rkh9mp.js";
|
|
30
30
|
import"./index-7g4c7s5r.js";
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
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-
|
|
24
|
+
} from "./index-heg4em8j.js";
|
|
25
25
|
import"./index-hnvmj9wx.js";
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
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-
|
|
35
|
-
import"./index-
|
|
36
|
-
import"./index-
|
|
37
|
-
import"./index-
|
|
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-
|
|
39
|
+
import"./index-y74n1sy8.js";
|
|
40
40
|
import"./index-549wxbe1.js";
|
|
41
41
|
import"./index-zsrtt42s.js";
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
44
|
-
import"./index-
|
|
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-
|
|
48
|
-
import"./index-
|
|
49
|
-
import"./index-
|
|
50
|
-
import"./index-
|
|
51
|
-
import"./index-
|
|
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-
|
|
54
|
-
import"./index-
|
|
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-
|
|
58
|
+
} from "./index-2vhkwy6v.js";
|
|
59
59
|
import"./index-frcemc0b.js";
|
|
60
60
|
import"./index-wrt875kh.js";
|
|
61
|
-
import"./index-
|
|
62
|
-
import"./index-
|
|
63
|
-
import"./index-
|
|
64
|
-
import"./index-
|
|
65
|
-
import"./index-
|
|
66
|
-
import"./index-
|
|
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-
|
|
70
|
-
import"./index-
|
|
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-
|
|
74
|
-
import"./index-
|
|
73
|
+
import"./index-yj1kr0ft.js";
|
|
74
|
+
import"./index-j3rkh9mp.js";
|
|
75
75
|
import"./index-7g4c7s5r.js";
|
|
76
|
-
import"./index-
|
|
77
|
-
import"./index-
|
|
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-
|
|
80
|
+
import"./index-18hjycr1.js";
|
|
81
81
|
import"./index-zz7gzw57.js";
|
|
82
82
|
import"./index-4ddpvd5c.js";
|
|
83
|
-
import"./index-
|
|
84
|
-
import"./index-
|
|
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-
|
|
89
|
-
import"./index-
|
|
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";
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -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 {};
|