opencode-swarm 7.192.1 → 7.192.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.
- package/.opencode/skills/critic-gate/SKILL.md +2 -1
- package/.opencode/skills/execute/SKILL.md +1 -1
- package/README.md +5 -3
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/agents/critic.d.ts +2 -2
- package/dist/cli/{auto-checkpoint-kkakqktp.js → auto-checkpoint-8c7hpz0z.js} +8 -8
- package/dist/cli/{capability-probe-3mgxcfr9.js → capability-probe-rty1315z.js} +1 -1
- package/dist/cli/{checkpoint-cefw75xe.js → checkpoint-98h7ftn4.js} +16 -16
- package/dist/cli/{coder-settlement-tgdjczyp.js → coder-settlement-0nhsjfh1.js} +12 -12
- package/dist/cli/{config-doctor-sns7gbj2.js → config-doctor-ah661gsm.js} +15 -15
- package/dist/cli/{core-q8xvp8bw.js → core-eyk369jx.js} +3 -3
- package/dist/cli/{curation-policy-2q5xs0xg.js → curation-policy-yzdznz4z.js} +6 -6
- package/dist/cli/{curator-drift-1n3akmda.js → curator-drift-k6f7mnj5.js} +8 -8
- package/dist/cli/curator-llm-factory-9g9p90jz.js +82 -0
- package/dist/cli/{curator-mgdsxrpv.js → curator-t9cwtz64.js} +43 -43
- package/dist/cli/{doctor-knowledge-receipt-phase-id-33bp8fcs.js → doctor-knowledge-receipt-phase-id-dwygxv2m.js} +8 -8
- package/dist/cli/{evidence-summary-service-sb888pg8.js → evidence-summary-service-b9xq092m.js} +19 -19
- package/dist/cli/{gate-evidence-rmk87c6m.js → gate-evidence-g3qpsr62.js} +7 -7
- package/dist/cli/guardrail-explain-784a2m4p.js +83 -0
- package/dist/cli/{guardrail-log-d18dcweh.js → guardrail-log-b862hykr.js} +7 -7
- package/dist/cli/{guardrail-reset-1xeeetk7.js → guardrail-reset-avehjarw.js} +43 -43
- package/dist/cli/{hive-promoter-44grgbq4.js → hive-promoter-0zv095rz.js} +43 -43
- package/dist/cli/{index-cje7tt58.js → index-043r3t12.js} +1 -1
- package/dist/cli/{index-b79a8pc2.js → index-04knttpn.js} +2 -2
- package/dist/cli/{index-xjqa26fs.js → index-0e1nxkte.js} +1 -1
- package/dist/cli/{index-63v3gmgr.js → index-1n7sf9gz.js} +2 -2
- package/dist/cli/{index-km4x7yfb.js → index-31bd6hrm.js} +11 -11
- package/dist/cli/{index-95hc7xn4.js → index-3bst6f3c.js} +3 -3
- package/dist/cli/{index-edk2sgse.js → index-4bpnf2eg.js} +2 -2
- package/dist/cli/{index-w52xyp9v.js → index-4e8xcgkx.js} +2 -2
- package/dist/cli/{index-advcaree.js → index-4g39c948.js} +4 -4
- package/dist/cli/{index-k6h66zm3.js → index-4twjbsfw.js} +2 -2
- package/dist/cli/{index-xw19x0t7.js → index-5dws7eyb.js} +1 -1
- package/dist/cli/{index-t0se5zwe.js → index-5gy5dc2n.js} +2 -2
- package/dist/cli/{index-vt8hk0pt.js → index-5m64x65w.js} +244 -106
- package/dist/cli/{index-af3nmk6c.js → index-5mrvx2vm.js} +7 -7
- package/dist/cli/{index-v3bmeqqh.js → index-6a4t4p4p.js} +12 -7
- package/dist/cli/{index-f32hs2vt.js → index-83swjsyd.js} +4 -4
- package/dist/cli/{index-nb1c3342.js → index-8z8cj2rz.js} +7 -7
- package/dist/cli/{index-ga1pcs49.js → index-8zj647hc.js} +1 -1
- package/dist/cli/{index-d4cjbm4p.js → index-a9m7h5v0.js} +2 -2
- package/dist/cli/{index-fsm9gv1p.js → index-aqvsxjwn.js} +43 -43
- package/dist/cli/{index-pkgbrrn7.js → index-azr0092e.js} +1 -1
- package/dist/cli/{index-ysazjncb.js → index-b67200rm.js} +6 -6
- package/dist/cli/{index-ajp4dabz.js → index-b7nb6c0p.js} +5 -5
- package/dist/cli/{index-6shk3n43.js → index-bccf3c0h.js} +2 -2
- package/dist/cli/{index-kvtwwj8b.js → index-bgzpw6ge.js} +1 -1
- package/dist/cli/{index-vf6pqke0.js → index-bxtyg46p.js} +45 -45
- package/dist/cli/{index-sgxbqba0.js → index-bzfn85kq.js} +119 -55
- package/dist/cli/{index-r3gphy10.js → index-cme96pja.js} +5 -5
- package/dist/cli/{index-4cm1p2kj.js → index-dt4cjxbz.js} +1 -1
- package/dist/cli/{index-f6e44xh2.js → index-dtet46e6.js} +7 -7
- package/dist/cli/{index-8bx6vhzk.js → index-e8k0v19e.js} +1 -1
- package/dist/cli/{index-mhqh2dc9.js → index-eaess7dm.js} +1 -1
- package/dist/cli/{index-yfmgbhwz.js → index-ef0tgsgj.js} +20 -6
- package/dist/cli/{index-0yrsvwdf.js → index-f6am4ypq.js} +6 -6
- package/dist/cli/{index-ejfmgkt0.js → index-fayfa263.js} +3 -3
- package/dist/cli/{index-bwh9196c.js → index-fzcr2s01.js} +7 -7
- package/dist/cli/{index-t433r606.js → index-fzqn2kk8.js} +2 -2
- package/dist/cli/{index-jdw63xyd.js → index-g7vd2azv.js} +2 -2
- package/dist/cli/{index-28zgn6sm.js → index-g8jd3h4r.js} +2 -2
- package/dist/cli/{index-2wps5fec.js → index-hmgx2bsy.js} +3 -3
- package/dist/cli/{index-9b6bxe9b.js → index-mbn4vn3z.js} +1 -1
- package/dist/cli/{index-7vnr5cmp.js → index-mtqwyjrg.js} +1 -1
- package/dist/cli/{index-867d9dhf.js → index-nd4kkbjw.js} +3 -3
- package/dist/cli/{index-025wg2re.js → index-nwswxes7.js} +3 -3
- package/dist/cli/{index-s81tvz98.js → index-pq5962z7.js} +3 -3
- package/dist/cli/{index-ney8qpg3.js → index-rhjzq6kw.js} +1 -1
- package/dist/cli/{index-3txrbsa1.js → index-yc8v81ab.js} +4 -4
- package/dist/cli/{index-50b8f6qz.js → index-zdt5m9n2.js} +4 -4
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +60 -54
- package/dist/cli/{knowledge-escalator-naq700x5.js → knowledge-escalator-y879xx4c.js} +14 -14
- package/dist/cli/{knowledge-events-mmh5cya6.js → knowledge-events-07vpvmmr.js} +12 -12
- package/dist/cli/{knowledge-link-76egdqc9.js → knowledge-link-a5tvjqdt.js} +5 -5
- package/dist/cli/{knowledge-store-9dxr9jb9.js → knowledge-store-wae6s3ef.js} +6 -6
- package/dist/cli/{knowledge-validator-eze3s6fn.js → knowledge-validator-v13cjze1.js} +8 -8
- package/dist/cli/{mcp-1x2tpk71.js → mcp-5ns32ees.js} +1 -1
- package/dist/cli/{model-preflight-hgb7kf5d.js → model-preflight-06jexzsa.js} +43 -43
- package/dist/cli/{pending-delegations-zg4q1k5q.js → pending-delegations-8g7nne79.js} +12 -12
- package/dist/cli/{pr-subscriptions-zw8aev5s.js → pr-subscriptions-yp71fzeb.js} +12 -12
- package/dist/cli/{pr-workflow-gate-dcbpd451.js → pr-workflow-gate-rcfwt8jd.js} +43 -43
- package/dist/cli/{runner-y529qa4d.js → runner-8qybgy4n.js} +6 -6
- package/dist/cli/{scan-cursor-pdxmndd0.js → scan-cursor-9xqrqgbs.js} +7 -7
- package/dist/cli/{schema-hzz32642.js → schema-qxgn4xzy.js} +1 -1
- package/dist/cli/{scope-persistence-h4b6p951.js → scope-persistence-9dscq6a2.js} +15 -15
- package/dist/cli/{server-7gd7tqt5.js → server-v1s76pa3.js} +43 -43
- package/dist/cli/{skill-generator-7g7sca90.js → skill-generator-yjeam2kn.js} +16 -16
- package/dist/cli/{snapshot-coordination-init-4q5ykq22.js → snapshot-coordination-init-jqkew1cw.js} +43 -43
- package/dist/cli/{speckit-checkoff-5bfxs8r7.js → speckit-checkoff-atm1ftz7.js} +4 -4
- package/dist/cli/{telemetry-9szfdfqv.js → telemetry-qaymh4gg.js} +1 -1
- package/dist/cli/{workspace-snapshot-nre732xt.js → workspace-snapshot-vfpnxjsp.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-327d06qw.js → worktree-collision-ownership-ftg1bnx6.js} +13 -13
- package/dist/cli/{worktree-isolation-zqzs3wkk.js → worktree-isolation-ttqkatgg.js} +49 -43
- package/dist/commands/turbo.d.ts +4 -3
- package/dist/config/constants.d.ts +2 -2
- package/dist/config/plan-schema.d.ts +16 -0
- package/dist/epic/phase-readiness.d.ts +4 -2
- package/dist/evaluation/ephemeral-agent-dispatcher.d.ts +11 -0
- package/dist/failures/provider-message-error.d.ts +32 -0
- package/dist/hooks/delegation-gate/worktree-isolation.d.ts +40 -0
- package/dist/hooks/delegation-gate.d.ts +13 -0
- package/dist/hooks/extractors.d.ts +2 -0
- package/dist/hooks/guardrails/index.d.ts +2 -0
- package/dist/hooks/guardrails/parallel-gate-attribution.d.ts +10 -0
- package/dist/index.js +415 -412
- package/dist/plan/ledger.d.ts +21 -3
- package/dist/sandbox/linux/bubblewrap-executor.d.ts +24 -0
- package/dist/services/skill-optimizer/store.d.ts +2 -2
- package/dist/tools/phase-complete.d.ts +4 -0
- package/dist/turbo/lean/runner.d.ts +2 -0
- package/opencode-swarm.schema.json +1 -1
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-tfn0cp68.js +0 -82
- package/dist/cli/guardrail-explain-n9ndp99q.js +0 -83
package/dist/cli/{snapshot-coordination-init-4q5ykq22.js → snapshot-coordination-init-jqkew1cw.js}
RENAMED
|
@@ -8,79 +8,79 @@ import {
|
|
|
8
8
|
markSnapshotCoordinationClosing,
|
|
9
9
|
retrySnapshotCoordinationInitialization,
|
|
10
10
|
startSnapshotCoordinationInitialization
|
|
11
|
-
} from "./index-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-
|
|
11
|
+
} from "./index-5m64x65w.js";
|
|
12
|
+
import"./index-nd4kkbjw.js";
|
|
13
|
+
import"./index-3bst6f3c.js";
|
|
14
|
+
import"./index-b7nb6c0p.js";
|
|
15
15
|
import"./index-j2vv0h13.js";
|
|
16
|
-
import"./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
import"./index-0e1nxkte.js";
|
|
17
|
+
import"./index-5gy5dc2n.js";
|
|
18
18
|
import"./index-txdagbh7.js";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-4e8xcgkx.js";
|
|
20
20
|
import"./index-rdec0y3z.js";
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
21
|
+
import"./index-hmgx2bsy.js";
|
|
22
|
+
import"./index-8z8cj2rz.js";
|
|
23
|
+
import"./index-zdt5m9n2.js";
|
|
24
|
+
import"./index-f6am4ypq.js";
|
|
25
|
+
import"./index-fzqn2kk8.js";
|
|
26
|
+
import"./index-dtet46e6.js";
|
|
27
27
|
import"./index-cjapb4hy.js";
|
|
28
|
-
import"./index-
|
|
28
|
+
import"./index-g8jd3h4r.js";
|
|
29
29
|
import"./index-pt7h91zc.js";
|
|
30
30
|
import"./index-q7sjgr1y.js";
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
31
|
+
import"./index-b67200rm.js";
|
|
32
|
+
import"./index-31bd6hrm.js";
|
|
33
33
|
import"./index-6b295cas.js";
|
|
34
34
|
import"./index-9nyqt3kb.js";
|
|
35
|
-
import"./index-
|
|
35
|
+
import"./index-azr0092e.js";
|
|
36
36
|
import"./index-v3bmwmqw.js";
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
37
|
+
import"./index-g7vd2azv.js";
|
|
38
|
+
import"./index-83swjsyd.js";
|
|
39
|
+
import"./index-fayfa263.js";
|
|
40
40
|
import"./index-g4fs6z4e.js";
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
41
|
+
import"./index-fzcr2s01.js";
|
|
42
|
+
import"./index-4g39c948.js";
|
|
43
|
+
import"./index-6a4t4p4p.js";
|
|
44
44
|
import"./index-m9zzj4ee.js";
|
|
45
|
-
import"./index-
|
|
45
|
+
import"./index-eaess7dm.js";
|
|
46
46
|
import"./index-2s7dvzff.js";
|
|
47
|
-
import"./index-
|
|
48
|
-
import"./index-
|
|
47
|
+
import"./index-yc8v81ab.js";
|
|
48
|
+
import"./index-5dws7eyb.js";
|
|
49
49
|
import"./index-rtry5xyf.js";
|
|
50
|
-
import"./index-
|
|
50
|
+
import"./index-bccf3c0h.js";
|
|
51
51
|
import"./index-g22dps7x.js";
|
|
52
52
|
import"./index-0725jpp7.js";
|
|
53
|
-
import"./index-
|
|
54
|
-
import"./index-
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
57
|
-
import"./index-
|
|
58
|
-
import"./index-
|
|
53
|
+
import"./index-cme96pja.js";
|
|
54
|
+
import"./index-ef0tgsgj.js";
|
|
55
|
+
import"./index-a9m7h5v0.js";
|
|
56
|
+
import"./index-dt4cjxbz.js";
|
|
57
|
+
import"./index-mbn4vn3z.js";
|
|
58
|
+
import"./index-8zj647hc.js";
|
|
59
59
|
import"./index-ry16d01s.js";
|
|
60
60
|
import"./index-rdm3px0g.js";
|
|
61
61
|
import"./index-7pmbnjvj.js";
|
|
62
|
-
import"./index-
|
|
63
|
-
import"./index-
|
|
62
|
+
import"./index-4twjbsfw.js";
|
|
63
|
+
import"./index-5mrvx2vm.js";
|
|
64
64
|
import"./index-vzm6zre7.js";
|
|
65
65
|
import"./index-ae75rja9.js";
|
|
66
|
-
import"./index-
|
|
67
|
-
import"./index-
|
|
68
|
-
import"./index-
|
|
66
|
+
import"./index-bgzpw6ge.js";
|
|
67
|
+
import"./index-1n7sf9gz.js";
|
|
68
|
+
import"./index-e8k0v19e.js";
|
|
69
69
|
import"./index-t7hmqgjy.js";
|
|
70
|
-
import"./index-
|
|
70
|
+
import"./index-mtqwyjrg.js";
|
|
71
71
|
import"./index-fzpt2djt.js";
|
|
72
72
|
import"./index-ejhxgyvm.js";
|
|
73
73
|
import"./index-7g4c7s5r.js";
|
|
74
|
-
import"./index-
|
|
74
|
+
import"./index-nwswxes7.js";
|
|
75
75
|
import"./index-gx2vp8gx.js";
|
|
76
|
-
import"./index-
|
|
76
|
+
import"./index-rhjzq6kw.js";
|
|
77
77
|
import"./index-zxdawwc7.js";
|
|
78
|
-
import"./index-
|
|
78
|
+
import"./index-04knttpn.js";
|
|
79
79
|
import"./index-py8wpe81.js";
|
|
80
80
|
import"./index-bk5tah7q.js";
|
|
81
81
|
import"./index-gknz3bv1.js";
|
|
82
82
|
import"./index-zpsr8rpc.js";
|
|
83
|
-
import"./index-
|
|
83
|
+
import"./index-bzfn85kq.js";
|
|
84
84
|
import"./index-9rwhas09.js";
|
|
85
85
|
import"./index-zgwm4ryv.js";
|
|
86
86
|
import"./index-a76rekgs.js";
|
|
@@ -7,13 +7,13 @@ import {
|
|
|
7
7
|
parseSpeckitTasksContent,
|
|
8
8
|
propagateSpeckitCheckoff,
|
|
9
9
|
writeSpeckitCheckoffLedger
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-g7vd2azv.js";
|
|
11
11
|
import"./index-ejhxgyvm.js";
|
|
12
12
|
import"./index-7g4c7s5r.js";
|
|
13
|
-
import"./index-
|
|
14
|
-
import"./index-
|
|
13
|
+
import"./index-nwswxes7.js";
|
|
14
|
+
import"./index-rhjzq6kw.js";
|
|
15
15
|
import"./index-zxdawwc7.js";
|
|
16
|
-
import"./index-
|
|
16
|
+
import"./index-04knttpn.js";
|
|
17
17
|
import"./index-py8wpe81.js";
|
|
18
18
|
import"./index-bk5tah7q.js";
|
|
19
19
|
import"./index-gknz3bv1.js";
|
|
@@ -46,11 +46,11 @@ import {
|
|
|
46
46
|
shouldSkipSnapshot,
|
|
47
47
|
switchPrFeedbackTrackingCandidateAsync,
|
|
48
48
|
workspaceSnapshotMatches
|
|
49
|
-
} from "./index-
|
|
50
|
-
import"./index-
|
|
49
|
+
} from "./index-fzqn2kk8.js";
|
|
50
|
+
import"./index-eaess7dm.js";
|
|
51
51
|
import"./index-2s7dvzff.js";
|
|
52
52
|
import"./index-fzpt2djt.js";
|
|
53
|
-
import"./index-
|
|
53
|
+
import"./index-nwswxes7.js";
|
|
54
54
|
import"./index-zxdawwc7.js";
|
|
55
55
|
import"./index-zpsr8rpc.js";
|
|
56
56
|
import"./index-zgwm4ryv.js";
|
|
@@ -6,37 +6,37 @@ import {
|
|
|
6
6
|
WORKTREE_PROVISIONING_OWNER_LEASE_MS,
|
|
7
7
|
removeWorktreeProvisioningOwner,
|
|
8
8
|
scanWorktreeProvisioningOwnersForRecovery
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-g8jd3h4r.js";
|
|
10
10
|
import {
|
|
11
11
|
scanWorktreeMergeFailuresForRecovery
|
|
12
12
|
} from "./index-v3bmwmqw.js";
|
|
13
13
|
import {
|
|
14
14
|
scanDelegationFallbacksForRecovery,
|
|
15
15
|
scanDelegationsForRecovery
|
|
16
|
-
} from "./index-
|
|
17
|
-
import"./index-
|
|
16
|
+
} from "./index-fzcr2s01.js";
|
|
17
|
+
import"./index-eaess7dm.js";
|
|
18
18
|
import"./index-2s7dvzff.js";
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
19
|
+
import"./index-dt4cjxbz.js";
|
|
20
|
+
import"./index-mbn4vn3z.js";
|
|
21
|
+
import"./index-8zj647hc.js";
|
|
22
22
|
import"./index-ry16d01s.js";
|
|
23
23
|
import"./index-rdm3px0g.js";
|
|
24
24
|
import"./index-7pmbnjvj.js";
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
25
|
+
import"./index-4twjbsfw.js";
|
|
26
|
+
import"./index-5mrvx2vm.js";
|
|
27
27
|
import"./index-vzm6zre7.js";
|
|
28
28
|
import"./index-ae75rja9.js";
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
29
|
+
import"./index-bgzpw6ge.js";
|
|
30
|
+
import"./index-1n7sf9gz.js";
|
|
31
|
+
import"./index-e8k0v19e.js";
|
|
32
32
|
import"./index-t7hmqgjy.js";
|
|
33
|
-
import"./index-
|
|
33
|
+
import"./index-mtqwyjrg.js";
|
|
34
34
|
import {
|
|
35
35
|
canonicalRootKeyFresh
|
|
36
36
|
} from "./index-fzpt2djt.js";
|
|
37
37
|
import"./index-ejhxgyvm.js";
|
|
38
38
|
import"./index-7g4c7s5r.js";
|
|
39
|
-
import"./index-
|
|
39
|
+
import"./index-nwswxes7.js";
|
|
40
40
|
import"./index-zxdawwc7.js";
|
|
41
41
|
import"./index-bk5tah7q.js";
|
|
42
42
|
import"./index-gknz3bv1.js";
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
MAX_TRACKED_STANDARD_WORKTREE_CALLS,
|
|
4
4
|
_internals1 as _internals,
|
|
5
5
|
abortStandardWorktreeDispatch,
|
|
6
|
+
assertTaskIdNotForeignLaneSession,
|
|
6
7
|
awaitingMergeByCallID,
|
|
7
8
|
checkStandardWorktreeSerializationRelease,
|
|
8
9
|
cleanupStandardWorktreeForCallId,
|
|
@@ -10,6 +11,7 @@ import {
|
|
|
10
11
|
finishStandardWorktreeDispatch,
|
|
11
12
|
getStandardWorktreeDegradationReason,
|
|
12
13
|
isLaneOwnedByCurrentSession,
|
|
14
|
+
laneChildSessionAgents,
|
|
13
15
|
parseLeanLaneIndex,
|
|
14
16
|
preProvisionCollisionCheck,
|
|
15
17
|
precreateStandardWorktreeSession,
|
|
@@ -17,86 +19,87 @@ import {
|
|
|
17
19
|
preserveDirtyWorktreeAtPath,
|
|
18
20
|
preserveDirtyWorktreeForCallId,
|
|
19
21
|
readLaneEnvFileFromDisk,
|
|
22
|
+
recordLaneChildSession,
|
|
20
23
|
resetStandardWorktreeIsolationState,
|
|
21
24
|
runSerializedWithMergeBacks,
|
|
22
25
|
sanitizeWorktreeTaskId,
|
|
23
26
|
standardWorktreeByCallID,
|
|
24
27
|
standardWorktreeSerializationSessions
|
|
25
|
-
} from "./index-
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
28
|
+
} from "./index-5m64x65w.js";
|
|
29
|
+
import"./index-nd4kkbjw.js";
|
|
30
|
+
import"./index-3bst6f3c.js";
|
|
31
|
+
import"./index-b7nb6c0p.js";
|
|
29
32
|
import"./index-j2vv0h13.js";
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
33
|
+
import"./index-0e1nxkte.js";
|
|
34
|
+
import"./index-5gy5dc2n.js";
|
|
32
35
|
import"./index-txdagbh7.js";
|
|
33
|
-
import"./index-
|
|
36
|
+
import"./index-4e8xcgkx.js";
|
|
34
37
|
import"./index-rdec0y3z.js";
|
|
35
|
-
import"./index-
|
|
36
|
-
import"./index-
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
40
|
-
import"./index-
|
|
38
|
+
import"./index-hmgx2bsy.js";
|
|
39
|
+
import"./index-8z8cj2rz.js";
|
|
40
|
+
import"./index-zdt5m9n2.js";
|
|
41
|
+
import"./index-f6am4ypq.js";
|
|
42
|
+
import"./index-fzqn2kk8.js";
|
|
43
|
+
import"./index-dtet46e6.js";
|
|
41
44
|
import"./index-cjapb4hy.js";
|
|
42
|
-
import"./index-
|
|
45
|
+
import"./index-g8jd3h4r.js";
|
|
43
46
|
import"./index-pt7h91zc.js";
|
|
44
47
|
import"./index-q7sjgr1y.js";
|
|
45
|
-
import"./index-
|
|
46
|
-
import"./index-
|
|
48
|
+
import"./index-b67200rm.js";
|
|
49
|
+
import"./index-31bd6hrm.js";
|
|
47
50
|
import"./index-6b295cas.js";
|
|
48
51
|
import"./index-9nyqt3kb.js";
|
|
49
|
-
import"./index-
|
|
52
|
+
import"./index-azr0092e.js";
|
|
50
53
|
import"./index-v3bmwmqw.js";
|
|
51
|
-
import"./index-
|
|
52
|
-
import"./index-
|
|
53
|
-
import"./index-
|
|
54
|
+
import"./index-g7vd2azv.js";
|
|
55
|
+
import"./index-83swjsyd.js";
|
|
56
|
+
import"./index-fayfa263.js";
|
|
54
57
|
import"./index-g4fs6z4e.js";
|
|
55
|
-
import"./index-
|
|
56
|
-
import"./index-
|
|
57
|
-
import"./index-
|
|
58
|
+
import"./index-fzcr2s01.js";
|
|
59
|
+
import"./index-4g39c948.js";
|
|
60
|
+
import"./index-6a4t4p4p.js";
|
|
58
61
|
import"./index-m9zzj4ee.js";
|
|
59
|
-
import"./index-
|
|
62
|
+
import"./index-eaess7dm.js";
|
|
60
63
|
import"./index-2s7dvzff.js";
|
|
61
|
-
import"./index-
|
|
62
|
-
import"./index-
|
|
64
|
+
import"./index-yc8v81ab.js";
|
|
65
|
+
import"./index-5dws7eyb.js";
|
|
63
66
|
import"./index-rtry5xyf.js";
|
|
64
67
|
import {
|
|
65
68
|
resolveWorktreeIsolationConfig
|
|
66
|
-
} from "./index-
|
|
69
|
+
} from "./index-bccf3c0h.js";
|
|
67
70
|
import"./index-g22dps7x.js";
|
|
68
71
|
import"./index-0725jpp7.js";
|
|
69
|
-
import"./index-
|
|
70
|
-
import"./index-
|
|
71
|
-
import"./index-
|
|
72
|
-
import"./index-
|
|
73
|
-
import"./index-
|
|
74
|
-
import"./index-
|
|
72
|
+
import"./index-cme96pja.js";
|
|
73
|
+
import"./index-ef0tgsgj.js";
|
|
74
|
+
import"./index-a9m7h5v0.js";
|
|
75
|
+
import"./index-dt4cjxbz.js";
|
|
76
|
+
import"./index-mbn4vn3z.js";
|
|
77
|
+
import"./index-8zj647hc.js";
|
|
75
78
|
import"./index-ry16d01s.js";
|
|
76
79
|
import"./index-rdm3px0g.js";
|
|
77
80
|
import"./index-7pmbnjvj.js";
|
|
78
|
-
import"./index-
|
|
79
|
-
import"./index-
|
|
81
|
+
import"./index-4twjbsfw.js";
|
|
82
|
+
import"./index-5mrvx2vm.js";
|
|
80
83
|
import"./index-vzm6zre7.js";
|
|
81
84
|
import"./index-ae75rja9.js";
|
|
82
|
-
import"./index-
|
|
83
|
-
import"./index-
|
|
84
|
-
import"./index-
|
|
85
|
+
import"./index-bgzpw6ge.js";
|
|
86
|
+
import"./index-1n7sf9gz.js";
|
|
87
|
+
import"./index-e8k0v19e.js";
|
|
85
88
|
import"./index-t7hmqgjy.js";
|
|
86
|
-
import"./index-
|
|
89
|
+
import"./index-mtqwyjrg.js";
|
|
87
90
|
import"./index-fzpt2djt.js";
|
|
88
91
|
import"./index-ejhxgyvm.js";
|
|
89
92
|
import"./index-7g4c7s5r.js";
|
|
90
|
-
import"./index-
|
|
93
|
+
import"./index-nwswxes7.js";
|
|
91
94
|
import"./index-gx2vp8gx.js";
|
|
92
|
-
import"./index-
|
|
95
|
+
import"./index-rhjzq6kw.js";
|
|
93
96
|
import"./index-zxdawwc7.js";
|
|
94
|
-
import"./index-
|
|
97
|
+
import"./index-04knttpn.js";
|
|
95
98
|
import"./index-py8wpe81.js";
|
|
96
99
|
import"./index-bk5tah7q.js";
|
|
97
100
|
import"./index-gknz3bv1.js";
|
|
98
101
|
import"./index-zpsr8rpc.js";
|
|
99
|
-
import"./index-
|
|
102
|
+
import"./index-bzfn85kq.js";
|
|
100
103
|
import"./index-9rwhas09.js";
|
|
101
104
|
import"./index-zgwm4ryv.js";
|
|
102
105
|
import"./index-a76rekgs.js";
|
|
@@ -107,6 +110,7 @@ export {
|
|
|
107
110
|
runSerializedWithMergeBacks,
|
|
108
111
|
resolveWorktreeIsolationConfig,
|
|
109
112
|
resetStandardWorktreeIsolationState,
|
|
113
|
+
recordLaneChildSession,
|
|
110
114
|
readLaneEnvFileFromDisk,
|
|
111
115
|
preserveDirtyWorktreeForCallId,
|
|
112
116
|
preserveDirtyWorktreeAtPath,
|
|
@@ -114,6 +118,7 @@ export {
|
|
|
114
118
|
precreateStandardWorktreeSession,
|
|
115
119
|
preProvisionCollisionCheck,
|
|
116
120
|
parseLeanLaneIndex,
|
|
121
|
+
laneChildSessionAgents,
|
|
117
122
|
isLaneOwnedByCurrentSession,
|
|
118
123
|
getStandardWorktreeDegradationReason,
|
|
119
124
|
finishStandardWorktreeDispatch,
|
|
@@ -121,6 +126,7 @@ export {
|
|
|
121
126
|
cleanupStandardWorktreeForCallId,
|
|
122
127
|
checkStandardWorktreeSerializationRelease,
|
|
123
128
|
awaitingMergeByCallID,
|
|
129
|
+
assertTaskIdNotForeignLaneSession,
|
|
124
130
|
abortStandardWorktreeDispatch,
|
|
125
131
|
_internals,
|
|
126
132
|
MAX_TRACKED_STANDARD_WORKTREE_CALLS
|
package/dist/commands/turbo.d.ts
CHANGED
|
@@ -19,9 +19,10 @@ export declare const _internals: {
|
|
|
19
19
|
export declare const TURBO_EPIC_REDIRECT_MESSAGE = "Epic is no longer combined with Turbo; use `/swarm epic start` (it enables neither Lean nor Turbo, and per-task QA is never waived). Turbo state is unchanged.";
|
|
20
20
|
/**
|
|
21
21
|
* Reply to any Turbo-enabling invocation while an Epic is open for the
|
|
22
|
-
* project: Turbo/Lean
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* project: Turbo/Lean relax gates that Epic keeps (phase_complete Gates 1–5,
|
|
23
|
+
* the coder re-dispatch block before Stage A; per-task Stage B is required in
|
|
24
|
+
* every mode), so enabling is refused until the Epic is closed. Disabling
|
|
25
|
+
* Turbo stays available.
|
|
25
26
|
*/
|
|
26
27
|
export declare const TURBO_EPIC_OPEN_REFUSAL = "Turbo Mode NOT enabled \u2014 epic-open: close the epic first (/swarm epic close). Turbo state is unchanged.";
|
|
27
28
|
/**
|
|
@@ -135,7 +135,7 @@ export declare const COMPACTION_DEFAULTS: {
|
|
|
135
135
|
readonly emergencyThreshold: 80;
|
|
136
136
|
readonly preserveLastNTurns: 5;
|
|
137
137
|
};
|
|
138
|
-
export declare const TURBO_MODE_BANNER = "## \uD83D\uDE80 TURBO MODE ACTIVE\n\n**Speed optimization enabled for this session.**\n\nWhile Turbo Mode is active:\n- **Stage A gates** (lint, imports, pre_check_batch) are still REQUIRED for ALL tasks\n- **Tier 3 tasks** (security-sensitive files matching: architect*.ts, delegation*.ts, guardrails*.ts, adversarial*.ts, sanitiz*.ts, security*.ts; exact basenames: auth, authenticate, authentication, authorization, permission(s), crypto, secret(s), secretscan; keyword prefixes: auth-*, permission-*, crypto-*, secret-*, security-*; or files under auth/, security/, crypto/, permission/, secret/ directories)
|
|
138
|
+
export declare const TURBO_MODE_BANNER = "## \uD83D\uDE80 TURBO MODE ACTIVE\n\n**Speed optimization enabled for this session.**\n\nWhile Turbo Mode is active:\n- **Stage A gates** (lint, imports, pre_check_batch) are still REQUIRED for ALL tasks\n- **Stage B** (reviewer + test_engineer) is NOT bypassed by Turbo: `update_task_status(completed)` applies the same Stage B rule whether or not Turbo is active, so a task needs Stage B exactly when it would without Turbo\n- **Tier 3 tasks** (security-sensitive files matching: architect*.ts, delegation*.ts, guardrails*.ts, adversarial*.ts, sanitiz*.ts, security*.ts; exact basenames: auth, authenticate, authentication, authorization, permission(s), crypto, secret(s), secretscan; keyword prefixes: auth-*, permission-*, crypto-*, secret-*, security-*; or files under auth/, security/, crypto/, permission/, secret/ directories) also keep the coder re-dispatch block until Stage A passes; other tasks whose planned files_touched are known may be re-dispatched to the coder before Stage A (a task with unknown or empty files_touched keeps the block)\n- **Phase completion gates** (Gates 1\u20135: completion-verify, drift-verifier, hallucination-guard, mutation-gate, phase-council) are automatically bypassed by phase_complete's gate table (`src/tools/phase-complete.ts`) when turbo is active; Gate 5b (architecture-supervisor), Gate 6 (final-council), and Gate 7 (full-auto) remain enforced. Note: turbo bypass is session-scoped; one session's turbo does not affect other sessions.\n\nClassification still determines the pipeline:\n- TIER 0 (metadata): lint + diff only \u2014 no change\n- TIER 1 (docs): Stage A + reviewer \u2014 no change\n- TIER 2 (standard code): Stage A + reviewer + test_engineer \u2014 no change\n- TIER 3 (critical): Stage A + 2x reviewer + 2x test_engineer \u2014 no change\n\nDo NOT skip Stage A or Stage B gates.\n";
|
|
139
139
|
export declare const FULL_AUTO_BANNER = "## \u26A1 FULL-AUTO MODE ACTIVE\n\nYou are operating without a human in the loop. All escalations route to the Autonomous Oversight Critic instead of a user.\n\nBehavioral changes:\n- TIER 3 escalations go to the critic, not a human. Frame your questions technically, not conversationally.\n- Phase completion approval comes from the critic. Ensure all evidence is written before requesting.\n- The critic defaults to REJECT. Do not attempt to pressure, negotiate, or shortcut. Complete the evidence trail.\n- If the critic returns ESCALATE_TO_HUMAN, the session will pause or terminate. Only the critic can trigger this.\n- Do NOT ask \"Ready for Phase N+1?\" \u2014 call phase_complete directly. The critic reviews automatically.\n";
|
|
140
140
|
export declare const AUTO_PROCEED_BANNER = "## \u23ED\uFE0F AUTO-PROCEED STATUS\n\nAuto-proceed controls whether the architect advances to the next phase automatically (skipping the \"Ready for Phase N+1?\" confirmation).\n\nBehavioral rules:\n- Session override (set via /swarm auto-proceed on|off) wins over the plan default.\n- If neither is set, auto-proceed defaults to OFF and the architect asks before advancing.\n- Full-auto mode (critic oversight) is independent \u2014 while active it suppresses the \"Ready for Phase N+1?\" confirmation itself (it never delegates tasks or runs phases for you); the auto_proceed setting adds nothing on top.\n- autoProceedNudgeDone prevents the FR-004 first-boundary nudge from re-firing in this session.\n\nTo toggle at runtime: call swarm_command({ command: \"auto-proceed\", args: [\"on\"|\"off\"] }) from the architect.\n";
|
|
141
141
|
/**
|
|
@@ -171,5 +171,5 @@ export declare const DEFAULT_LEAN_TURBO_CONFIG: LeanTurboConfig;
|
|
|
171
171
|
*/
|
|
172
172
|
export declare const SWARM_WORKTREE_DIR_NAME = ".swarm-worktrees";
|
|
173
173
|
export declare const DEFAULT_WORKTREE_ISOLATION_CONFIG: WorktreeIsolationConfig;
|
|
174
|
-
export declare const LEAN_TURBO_BANNER = "## \uD83D\uDEE4\uFE0F LEAN TURBO ACTIVE\n\nLane-based parallel execution is enabled for this phase.\n\nBehavioral changes:\n- Tasks are partitioned into parallel lanes based on file-scope conflicts. Tasks in the same lane run sequentially; tasks in different lanes run concurrently (up to max_parallel_coders).\n- **Lane dispatch overrides the one-agent-per-message rule**: for lean lane dispatch only, you may send multiple Task tool calls concurrently (one per lane).\n- **Lane tasks
|
|
174
|
+
export declare const LEAN_TURBO_BANNER = "## \uD83D\uDEE4\uFE0F LEAN TURBO ACTIVE\n\nLane-based parallel execution is enabled for this phase.\n\nBehavioral changes:\n- Tasks are partitioned into parallel lanes based on file-scope conflicts. Tasks in the same lane run sequentially; tasks in different lanes run concurrently (up to max_parallel_coders).\n- **Lane dispatch overrides the one-agent-per-message rule**: for lean lane dispatch only, you may send multiple Task tool calls concurrently (one per lane).\n- **Lane tasks still need per-task Stage B** (reviewer + test_engineer) before `update_task_status(completed)`; the phase reviewer and critic add a holistic gate at phase end.\n- **Degraded tasks** (global files, protected paths, high-risk patterns) and **serialized tasks** (lock-conflicted) run through standard serial workflow with full Stage B gates.\n- **Phase reviewer and critic are REQUIRED** before phase_complete when lean turbo is active \u2014 they serve as the holistic quality gate for all lane work.\n- **Full-Auto composition**: if Full-Auto is also active, lane dispatch is subject to Full-Auto delegation policy and phase approval.\n- Use the lean_turbo_run_phase tool to execute a phase with parallel lanes\n\nDo NOT skip phase reviewer/critic when configured. Every task, in a lane or not, MUST still go through full Stage B.\n";
|
|
175
175
|
export declare const EPIC_MODE_BANNER = "## \uD83E\uDDED EPIC MODE ACTIVE \u2014 an epic is open for this plan\n\n**\u26D4 THE USER ALWAYS COMES FIRST \u2014 this overrides everything below.** The user can message you at ANY time, including mid-wave while coders are running or retrying. The instant a user message arrives \u2014 a question, a slash command, a comment, anything \u2014 STOP advancing the flow: no dispatch, no retry, no further tool call. Answer them directly, in plain conversation, first \u2014 ignoring the user is the worst failure mode here. Then resume; if mid-wave, tell them the state (\"3.1 and 3.2 are still running; I'll continue once I've answered you\") rather than going silent.\n\n**An open epic \u2260 start.** The user opened it with `/swarm epic start`; until they ask for execution (\"start phase N\", \"run task X\", \"continue\"): do nothing. On `/swarm epic *` and any slash status/config command: call the named tool ONCE, surface its output VERBATIM, then stop. Don't infer intent \u2014 if unsure, ASK. Only the user opens or closes an epic. Epic enables neither Turbo nor Lean.\n\n**Talk to the user as you work.** Once they ask you to run the plan, say a sentence before each step about what you're doing and why \u2014 never go silent and tool-only.\n\n### How to run it: call `epic_next_wave` and do exactly what its `status` says\n\nIt plans every wave, closes finished waves, and keeps phases in order. Never plan waves yourself; never call `lean_turbo_run_phase` / `lean_turbo_plan_lanes`.\n- `dispatch` \u2192 follow its `instructions`: one `Task` per `taskId`, ALL in ONE message; per task Stage A (`pre_check_batch`) \u2192 Stage B (`reviewer` + `test_engineer`) \u2192 `update_task_status(completed)`; then call `epic_next_wave` again.\n- `declare-scopes` \u2192 `declare_scope` once per listed `taskId` (start from `suggestedFiles`), then call again.\n- `in-progress` \u2192 finish the listed tasks, then call again.\n- `blocked` \u2192 relay `message` to the user and apply its remedy.\n- `phase-ready-for-review` \u2192 `epic_phase_review(phase)` ONCE (phase reviewer, then critic). Both APPROVED \u2192 your normal PHASE-WRAP (phase-wrap skill: docs agent, `write_retro`, \u2026) \u2192 `phase_complete` \u2192 `epic_next_wave`; otherwise add each fix as a NEW pending task of that phase (`save_plan`) and call `epic_next_wave` (it runs them as a fix wave), then re-run it. Never re-dispatch a coder outside a wave.\n- `epic-complete` \u2192 tell the user to close the epic with `/swarm epic close`.\n- `refused` \u2192 relay `message`; run tasks per-task serially.\n\nPer-task QA (Stage A + Stage B) is NEVER waived in Epic. Audit (no architect needed): `/swarm epic status | learning`.\n";
|
|
@@ -256,3 +256,19 @@ export declare function normalizeCurrentPhaseInPlace(plan: Plan): void;
|
|
|
256
256
|
* @returns The current phase number, or inferred value, or 1 as last resort
|
|
257
257
|
*/
|
|
258
258
|
export declare function getCurrentPhase(plan: Plan): number;
|
|
259
|
+
/**
|
|
260
|
+
* Whether `phaseId` is in its PHASE-WRAP window: the phase's work is done and
|
|
261
|
+
* the cursor has already moved past it, but nothing after it has started.
|
|
262
|
+
*
|
|
263
|
+
* Completing a phase's last task advances the cursor (#2532) BEFORE the
|
|
264
|
+
* phase-wrap steps run (docs dispatch, directive override, phase_complete),
|
|
265
|
+
* so those steps act on phase N while the cursor names a later phase. This
|
|
266
|
+
* is the window in which they still belong to N: N is effectively terminal,
|
|
267
|
+
* the cursor is later in plan order (ids need not be contiguous), and every
|
|
268
|
+
* phase between them was skipped: every task closed without work (a phase
|
|
269
|
+
* with no tasks counts when its status is terminal). A phase between them
|
|
270
|
+
* with completed work has a wrap of its own, so it ends N's window: one wrap
|
|
271
|
+
* step never stands in for an older phase. Phase status alone cannot tell
|
|
272
|
+
* the two apart, because savePlan derives `complete` from completed tasks.
|
|
273
|
+
*/
|
|
274
|
+
export declare function isPhaseInWrapWindow(plan: Plan, phaseId: number): boolean;
|
|
@@ -61,8 +61,10 @@ export declare const EPIC_PHASE_REVIEW_TOOL = "epic_phase_review";
|
|
|
61
61
|
* every mutating and plugin tool) surfaces ANY provider-side error as a
|
|
62
62
|
* `completed` response with no text (or, where it reads the assistant
|
|
63
63
|
* message's `info.error`, as an `error` with a `providerError`) — so the
|
|
64
|
-
* retry fires on every empty completion and every structured
|
|
65
|
-
* refusal
|
|
64
|
+
* retry fires on every empty completion and every structured
|
|
65
|
+
* authentication/configuration refusal (HTTP 403 class, or the host's
|
|
66
|
+
* statusless `ProviderAuthError`), not only the Zen 403; a rate limit, quota or outage `providerError` is not retried with
|
|
67
|
+
* `bash` (the model-fallback chain owns it); a second refusal stays a fail-closed
|
|
66
68
|
* REJECTED. Every other tool stays denied, so this profile is
|
|
67
69
|
* still narrower than the standard per-task reviewer/critic agents (whose
|
|
68
70
|
* own config denies only write/edit/patch among the built-ins). Their shell
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OpencodeClient } from '@opencode-ai/sdk';
|
|
2
|
+
import { type ProviderMessageError } from '../failures/provider-message-error.js';
|
|
2
3
|
import type { DelegationCostFields } from '../services/cost-accounting.js';
|
|
3
4
|
import { type PricingConfig } from '../services/cost-accounting.js';
|
|
4
5
|
import { log } from '../utils/logger.js';
|
|
@@ -53,11 +54,21 @@ export type EphemeralAgentDispatchResult = {
|
|
|
53
54
|
modelId?: string;
|
|
54
55
|
text: string;
|
|
55
56
|
error?: string;
|
|
57
|
+
/**
|
|
58
|
+
* The provider error OpenCode recorded on the assistant message
|
|
59
|
+
* (`info.error`), when there was one. `status` is then `'error'`.
|
|
60
|
+
*/
|
|
61
|
+
providerError?: EphemeralProviderError;
|
|
56
62
|
durationMs: number;
|
|
57
63
|
promptBytes: number;
|
|
58
64
|
responseBytes: number;
|
|
59
65
|
costFields?: DelegationCostFields;
|
|
60
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* The provider error OpenCode recorded on the assistant message, read by the
|
|
69
|
+
* shared {@link readProviderMessageError}.
|
|
70
|
+
*/
|
|
71
|
+
export type EphemeralProviderError = ProviderMessageError;
|
|
61
72
|
/**
|
|
62
73
|
* Bounded graceful abort of an ephemeral session. opencode's
|
|
63
74
|
* `POST /session/{id}/abort` resolves only after `Fiber.interrupt` on the
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type ProviderMessageError = {
|
|
2
|
+
name: string;
|
|
3
|
+
statusCode?: number;
|
|
4
|
+
/** Bounded display text from {@link classifyProviderFailure}. */
|
|
5
|
+
message: string;
|
|
6
|
+
/** Provider failure category, e.g. `provider.rate_limit`. */
|
|
7
|
+
category: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Read the provider error OpenCode records on an assistant message, or
|
|
11
|
+
* `null` when the message carries none.
|
|
12
|
+
*/
|
|
13
|
+
export declare function readProviderMessageError(info: unknown): ProviderMessageError | null;
|
|
14
|
+
/** `<prefix>: <name> (HTTP <status>): <message>`. */
|
|
15
|
+
export declare function formatProviderMessageError(prefix: string, error: ProviderMessageError): string;
|
|
16
|
+
/**
|
|
17
|
+
* An `Error` for a provider message error. Its message carries the status
|
|
18
|
+
* and provider text (what the message-based transient/quota classifiers
|
|
19
|
+
* read), and it carries `status` / `category` so `classifyProviderFailure`
|
|
20
|
+
* recovers the same structured category.
|
|
21
|
+
*/
|
|
22
|
+
export type ProviderMessageErrorObject = Error & {
|
|
23
|
+
status?: number;
|
|
24
|
+
category: string;
|
|
25
|
+
providerError: ProviderMessageError;
|
|
26
|
+
};
|
|
27
|
+
export declare function providerMessageErrorToError(prefix: string, error: ProviderMessageError): ProviderMessageErrorObject;
|
|
28
|
+
/**
|
|
29
|
+
* Throw when the assistant message carries a provider error; for consumers
|
|
30
|
+
* whose error path is a thrown error.
|
|
31
|
+
*/
|
|
32
|
+
export declare function throwIfProviderMessageError(prefix: string, info: unknown): void;
|
|
@@ -138,6 +138,14 @@ export interface AwaitingMergeRecord {
|
|
|
138
138
|
export declare const awaitingMergeByCallID: Map<string, AwaitingMergeRecord>;
|
|
139
139
|
export declare const standardWorktreeByCallID: Map<string, StandardWorktreeDispatch>;
|
|
140
140
|
export declare const standardWorktreeSerializationSessions: Set<string>;
|
|
141
|
+
export declare const laneChildSessionAgents: Map<string, string>;
|
|
142
|
+
export declare function recordLaneChildSession(sessionId: string, agent: string): void;
|
|
143
|
+
/**
|
|
144
|
+
* Refuse a Task dispatch whose `task_id` resumes a lane child session the
|
|
145
|
+
* plugin created for a DIFFERENT agent. Resuming the same agent's session
|
|
146
|
+
* stays allowed; ids the plugin did not create are not judged here.
|
|
147
|
+
*/
|
|
148
|
+
export declare function assertTaskIdNotForeignLaneSession(args: Record<string, unknown> | undefined): void;
|
|
141
149
|
/**
|
|
142
150
|
* FR-104 SC-111/SC-112: Per-session state tracking for serialization release.
|
|
143
151
|
* Maps sessionID → serialization state for that session.
|
|
@@ -167,6 +175,33 @@ interface CleanupStandardWorktreeResult {
|
|
|
167
175
|
cleanedBranch: boolean;
|
|
168
176
|
preservedRecoveryLane: boolean;
|
|
169
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* How long a lane dispatch waits for the worktree lifecycle lock.
|
|
180
|
+
*
|
|
181
|
+
* A holder can keep the lock across a recovery-lane session.create, bounded by
|
|
182
|
+
* `worktree.session_create_timeout_ms` (plus the settle grace), and the
|
|
183
|
+
* stale-lane cleanup after it. The wait therefore follows that budget plus a
|
|
184
|
+
* margin. Up to a 30s session.create budget (the default) it is capped so
|
|
185
|
+
* that the wait, this dispatch's own session.create, its settle grace and the
|
|
186
|
+
* provisioning work still fit in the host hook budget (10s at the default):
|
|
187
|
+
* a dispatch that overruns the hook is abandoned mid-provisioning, while a
|
|
188
|
+
* dispatch that stops here fails cleanly with STANDARD_WORKTREE_LIFECYCLE_BUSY.
|
|
189
|
+
* Above 30s there is no room left and the wait stays at its 10s floor, so the
|
|
190
|
+
* worst case exceeds the hook budget (61s at a 31s budget, 90s at 60s): a
|
|
191
|
+
* session.create budget that long is itself what overruns the hook.
|
|
192
|
+
*/
|
|
193
|
+
declare function resolveWorktreeLifecycleLockWaitMs(sessionCreateTimeoutMs: number): number;
|
|
194
|
+
/**
|
|
195
|
+
* Acquire the worktree lifecycle lock, retrying within `waitMs`.
|
|
196
|
+
*
|
|
197
|
+
* The lock is held across the collision check (a git spawn) and the owner
|
|
198
|
+
* write, by every lane being provisioned and by init orphan recovery.
|
|
199
|
+
* `tryAcquireLock` alone gives up after about 310ms (5 retries, 10ms→500ms
|
|
200
|
+
* backoff, no jitter), so parallel coder dispatches that provision lanes at
|
|
201
|
+
* the same moment hard-stopped each other. Retry with jitter until the lock
|
|
202
|
+
* is free or the bounded wait is spent.
|
|
203
|
+
*/
|
|
204
|
+
declare function acquireWorktreeLifecycleLockWithin(directory: string, taskId: string, waitMs: number): ReturnType<typeof tryAcquireLock>;
|
|
170
205
|
export declare function getStandardWorktreeDegradationReason(sessionID: string): {
|
|
171
206
|
reason: string;
|
|
172
207
|
at: number;
|
|
@@ -411,6 +446,11 @@ export declare const _internals: {
|
|
|
411
446
|
/** Background launch durability fallback: tag ownership without racing the child. */
|
|
412
447
|
preserveBackgroundWorktreeOwnershipForCallId: typeof preserveBackgroundWorktreeOwnershipForCallId;
|
|
413
448
|
tryAcquireWorktreeLifecycleLock: typeof tryAcquireLock;
|
|
449
|
+
acquireWorktreeLifecycleLockWithin: typeof acquireWorktreeLifecycleLockWithin;
|
|
450
|
+
/** Bounded wait for the lifecycle lock, derived from the session-create budget. */
|
|
451
|
+
resolveWorktreeLifecycleLockWaitMs: typeof resolveWorktreeLifecycleLockWaitMs;
|
|
452
|
+
now: () => number;
|
|
453
|
+
sleep: (ms: number) => Promise<void>;
|
|
414
454
|
recordWorktreeProvisioningOwner: typeof recordWorktreeProvisioningOwner;
|
|
415
455
|
removeWorktreeProvisioningOwner: typeof removeWorktreeProvisioningOwner;
|
|
416
456
|
lookupWorktreeRecoveryAuthoritiesByTask: typeof lookupWorktreeRecoveryAuthoritiesByTask;
|
|
@@ -51,6 +51,18 @@ export declare function getPendingCoderScope(directory: string, taskId: string):
|
|
|
51
51
|
* circular import `state.ts ↔ delegation-gate.ts`. Called by `resetSwarmState`.
|
|
52
52
|
*/
|
|
53
53
|
export declare function clearPendingCoderScope(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Whether Turbo may skip the Stage A re-delegation block for `taskId`.
|
|
56
|
+
*
|
|
57
|
+
* Tier 3 is defined by the files a task touches (security-sensitive paths,
|
|
58
|
+
* src/parallel/tier3-classifier.ts), the rule update_task_status already
|
|
59
|
+
* applies to Turbo's Stage B bypass. The gate used to guess it from the task
|
|
60
|
+
* id (`startsWith('3.')`): every phase-3 task was treated as Tier 3 and a
|
|
61
|
+
* security-sensitive task in any other phase was bypassed. Only a task whose
|
|
62
|
+
* planned `files_touched` are known and contain no Tier 3 path is bypassable;
|
|
63
|
+
* an unknown task, an empty file list or an unreadable plan is not.
|
|
64
|
+
*/
|
|
65
|
+
declare function turboMayBypassTask(directory: string, taskId: string): Promise<boolean>;
|
|
54
66
|
/**
|
|
55
67
|
* Issue #1151: OpenCode v1.16.2 background subagents.
|
|
56
68
|
*
|
|
@@ -539,6 +551,7 @@ export declare const _internals: {
|
|
|
539
551
|
buildParallelExecutionGuidance: typeof buildParallelExecutionGuidance;
|
|
540
552
|
extractTaskFileDirectives: typeof extractTaskFileDirectives;
|
|
541
553
|
loadPlanJsonOnly: typeof loadPlanJsonOnly;
|
|
554
|
+
turboMayBypassTask: typeof turboMayBypassTask;
|
|
542
555
|
recordPendingDelegationForBackground: typeof import("../background/pending-delegations.js").recordPendingDelegationDetailed;
|
|
543
556
|
writeDelegationFallbackForBackground: typeof import("../background/pending-delegations.js").writeDelegationFallback;
|
|
544
557
|
reserveBackgroundCoderSlotForDispatch: typeof import("../background/pending-delegations.js").reserveBackgroundCoderSlot;
|
|
@@ -63,6 +63,8 @@ export declare function extractPatterns(contextContent: string, maxChars?: numbe
|
|
|
63
63
|
* never suppress the summary — the honest active phase is reported instead.
|
|
64
64
|
*/
|
|
65
65
|
export declare function extractCurrentPhaseFromPlan(plan: Plan): string | null;
|
|
66
|
+
/** The sanitized `Phase N: name [STATUS]` label for one phase of the plan. */
|
|
67
|
+
export declare function extractPhaseLabelFromPlan(plan: Plan, phaseId: number): string | null;
|
|
66
68
|
/**
|
|
67
69
|
* Parse the stable numeric phase id embedded in a stored phase label.
|
|
68
70
|
*
|