@overdeck/desktop 0.45.23 → 0.45.24
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/drizzle/overdeck/0000_overdeck_init.sql +2 -0
- package/package.json +1 -1
- package/server/{acceptance-criteria-DOA0KgXx.js → acceptance-criteria-DDCnXF58.js} +2 -2
- package/server/{advancing-selfheal-BBu6DSNm.js → advancing-selfheal-BVwW4qRn.js} +6 -6
- package/server/{agent-gc-BV1q_2EV.js → agent-gc-CHcnvonI.js} +4 -4
- package/server/agent-state-Bc3tzUC8.js +3 -0
- package/server/{agent-state-service-HoK8U4jW.js → agent-state-service-BsgWxZuB.js} +5 -5
- package/server/{agent-state-service-CnzFKSAQ.js → agent-state-service-D5UGKIJL.js} +1 -1
- package/server/{agents-B4Bjbkfv.js → agents-EbI0zCJl.js} +4 -4
- package/server/agents-wi9NWzs2.js +3 -0
- package/server/{archive-planning-zkJb3BeM.js → archive-planning-BZDgzoEj.js} +1 -1
- package/server/{archive-planning-DYrYojxl.js → archive-planning-Du25Jtst.js} +4 -4
- package/server/{artifact-index-jobs-C-xy7Z5v.js → artifact-index-jobs-CbEDfCDu.js} +2 -2
- package/server/assemble-J2ZZ2C15.js +339 -0
- package/server/{backlog-auto-trigger-GtG71X8H.js → backlog-auto-trigger-2R2jog7n.js} +3 -3
- package/server/{behavior-B_-4EKF3.js → behavior-B3exJ42O.js} +2 -2
- package/server/{briefing-freshness-DWdW7vUm.js → briefing-freshness-D1wzUIWv.js} +2 -2
- package/server/{build-info-DgTqZkL5.js → build-info-CZk_TITh.js} +1 -1
- package/server/{build-info-BT096lEl.js → build-info-Ie_D0_BT.js} +3 -3
- package/server/{checkpoint-manager-DDqcGyu8.js → checkpoint-manager-BI1Wxoku.js} +2 -2
- package/server/{checkpoint-manager-B7Bt29J0.js → checkpoint-manager-DwbQoqrC.js} +1 -1
- package/server/checkpoint-worker.js +1 -1
- package/server/{checkpoints-CpgCjAlN.js → checkpoints-BJIs5QIA.js} +1 -1
- package/server/{checkpoints-C-AXLfYT.js → checkpoints-CQB1h765.js} +2 -2
- package/server/{claude-hooks-provision-C8wdRnN1.js → claude-hooks-provision-8Ngo8TpT.js} +1 -1
- package/server/{claude-hooks-provision-but-_qGY.js → claude-hooks-provision-D8GXF3_s.js} +2 -2
- package/server/{claude-permissions-H_5wHQZQ.js → claude-permissions-DNWEVV6z.js} +2 -2
- package/server/{claude-settings-overlay-CbSz0Dvb.js → claude-settings-overlay-CEdaqpWI.js} +2 -2
- package/server/{claude-settings-overlay-BTENVmYf.js → claude-settings-overlay-DWy-Bb4Y.js} +1 -1
- package/server/cli-B86rejVV.js +3 -0
- package/server/{cli-vBeXbPrq.js → cli-RoOx5DUf.js} +9 -9
- package/server/{cliproxy-Bgb2XCqi.js → cliproxy-C8a1vtTU.js} +2 -2
- package/server/{cliproxy-DW0V86F8.js → cliproxy-fHfIeiGd.js} +1 -1
- package/server/{close-issue-Dn_4c4G8.js → close-issue-DoOifFIK.js} +5 -5
- package/server/{closed-issue-reaper-hANY_ehE.js → closed-issue-reaper-Bk3SU4RC.js} +9 -9
- package/server/{closed-issue-reaper-CWpY2uBw.js → closed-issue-reaper-CktPXo8m.js} +1 -1
- package/server/{codex-TmSi-yTv.js → codex-BZXGhUVB.js} +7 -7
- package/server/{codex-Dg7Is5yb.js → codex-GcHuUF-k.js} +1 -1
- package/server/{codex-parser-C4gSH-IR.js → codex-parser-CFZ1_1Jl.js} +2 -2
- package/server/{config-CCvjQf27.js → config-BZ0sHTju.js} +2 -2
- package/server/{config-DjLOdbgT.js → config-CKxYiCmX.js} +2 -2
- package/server/{config-DUIhMN_T.js → config-DzV30TOm.js} +1 -1
- package/server/{config-yaml-DvyMuOle.js → config-yaml-DySPNmKN.js} +23 -9
- package/server/{conflict-gate-CmrYpa47.js → conflict-gate-BaCVrH-N.js} +3 -3
- package/server/{conflict-gate-BSJkNTdp.js → conflict-gate-BhAY7TUd.js} +1 -1
- package/server/context-layers-BrPmE__h.js +4 -0
- package/server/context-layers-igZ4FI4_.js +37 -0
- package/server/{control-settings-aP1ANIlI.js → control-settings-BQp7_4uD.js} +4 -4
- package/server/{conversation-compaction-CNbTLB86.js → conversation-compaction-CgrR8YYp.js} +8 -8
- package/server/{conversation-compaction-DiG5zWQq.js → conversation-compaction-eQB5CkOe.js} +1 -1
- package/server/{conversation-service-Up7FEzIC.js → conversation-service-BLd3MYsG.js} +1 -1
- package/server/{conversation-service-Du-MTNpJ.js → conversation-service-DPJ71F33.js} +329 -19
- package/server/{conversations-DbOs1e9Q.js → conversations-6AfUfbwc.js} +5 -5
- package/server/{conversations-6mPANqvL.js → conversations-CAsJF9kh.js} +1 -1
- package/server/{cost-Ca0YTWDw.js → cost-B2ddP6wq.js} +2 -2
- package/server/{cost-CW4WSe72.js → cost-R-m6Yi-W.js} +3 -3
- package/server/{cost-sync-C0VdGme1.js → cost-sync-BsN6ER0n.js} +3 -3
- package/server/{dag-CdOjJVDT.js → dag-B1ucnjDU.js} +2 -2
- package/server/{dangerous-git-ops-CT-IypG3.js → dangerous-git-ops-BXqeWVSf.js} +1 -1
- package/server/dashboard-db-worker.js +7 -7
- package/server/{deacon-pRnyD5w9.js → deacon-CU_cAYSR.js} +254 -144
- package/server/{deacon-DYSEJb48.js → deacon-kiQrb4ZT.js} +3 -3
- package/server/{deacon-nudge-log-Bjg8U4Y9.js → deacon-nudge-log-6wVqAaqz.js} +3 -3
- package/server/{deacon-swarm-DftYRDo8.js → deacon-swarm-BXZZ1Z2-.js} +13 -13
- package/server/deacon-swarm-C-GwfjJy.js +2 -0
- package/server/deacon.js +8 -8
- package/server/{deploy-patrol-Bjsho_ha.js → deploy-patrol-AiFoP8dw.js} +6 -6
- package/server/{deploy-window-DeP_OIRk.js → deploy-window-C3F-tihF.js} +6 -6
- package/server/{deploy-window-CM6W1-c6.js → deploy-window-DkZraDyj.js} +1 -1
- package/server/{dev-supervisor-BpMoHlkR.js → dev-supervisor-bcOWqdQE.js} +2 -2
- package/server/{devcontainer-renderer-CtUgrVKW.js → devcontainer-renderer-_d6XhyND.js} +3 -3
- package/server/dist-Bzy0y69j.js +3 -0
- package/server/{dist-DyRx4cI7.js → dist-Cb_0uvpS.js} +1 -1
- package/server/{docker-BK7HIcBj.js → docker-DcMTFTUC.js} +2 -2
- package/server/{dod-BrSfUHm0.js → dod-C6n9RV3G.js} +1 -1
- package/server/{ensure-devcontainer-DRqaAkBR.js → ensure-devcontainer-BZgOhRo7.js} +1 -1
- package/server/{ensure-devcontainer-DseivYEy.js → ensure-devcontainer-DNi-ono3.js} +4 -4
- package/server/{esm-shims-CbI3BVkl.js → esm-shims-OSHAYaS1.js} +1 -1
- package/server/{event-store-tdiY5eDZ.js → event-store-CQL6NeqB.js} +3 -3
- package/server/{event-store-Cr5PQwFC.js → event-store-EV2cMiXj.js} +1 -1
- package/server/{events-CvvGK6LT.js → events-BTdrdEq8.js} +1 -1
- package/server/{events-CC1dgUpx.js → events-DTfAe4My.js} +3 -3
- package/server/{factory-CynerjXO.js → factory-CFibJuaw.js} +4 -4
- package/server/{feature-registry-population-B0pmAz0a.js → feature-registry-population-DKZFMbFt.js} +4 -4
- package/server/{feature-registry-storage-_wUBRD3J.js → feature-registry-storage-BdPuLcBX.js} +2 -2
- package/server/{features-Dhxz-wLc.js → features-ez2271oH.js} +2 -2
- package/server/{feedback-target-CPS15Vte.js → feedback-target-7mqqwrX6.js} +7 -7
- package/server/{feedback-target-iygZwmMc.js → feedback-target-CoFDHiM8.js} +1 -1
- package/server/{feedback-writer-C9b6ccN1.js → feedback-writer-CY5L1lB7.js} +5 -5
- package/server/{feedback-writer-qmiMbqTZ.js → feedback-writer-D3a22RCd.js} +1 -1
- package/server/flywheel-DHrgCphM.js +1084 -0
- package/server/flywheel-DzGtWnJ1.js +477 -0
- package/server/flywheel-SVF02Jpq.js +2 -0
- package/server/{flywheel-merge-order-DxbQKE1d.js → flywheel-merge-order-UU0tiUld.js} +9 -8
- package/server/{flywheel-merge-order-C-6zRLvM.js → flywheel-merge-order-UUcsCDb6.js} +1 -1
- package/server/{forge-Ch9gCFod.js → forge-CNFnyqps.js} +2 -2
- package/server/forge-DXnS_YFH.js +2 -0
- package/server/{from-CJ_aH5jD.js → from-kNxT0bZC.js} +1 -1
- package/server/{fts-db-CKgg0VKg.js → fts-db-CE46vDkZ.js} +2 -2
- package/server/{fts-operations-BrL_VTRr.js → fts-operations-CqY6zl-i.js} +2 -2
- package/server/{git-utils-BVa07a4a.js → git-utils-CRw2zLPC.js} +68 -3
- package/server/git-utils-D0_yhCgF.js +3 -0
- package/server/{github-app-CMBdIFBQ.js → github-app-C3QrAUd0.js} +18 -7
- package/server/{github-app-CPfoFAdV.js → github-app-ClZ2lk8D.js} +1 -1
- package/server/{github-client--XVlDpwM.js → github-client-BnIsSrEN.js} +2 -2
- package/server/{github-client-B4QsdE-X.js → github-client-DfQYVUaw.js} +1 -1
- package/server/{github-pr-lookup-BRbDW-qk.js → github-pr-lookup-D16NGsSO.js} +2 -2
- package/server/{harness-binary-CVio2m-u.js → harness-binary-DPUi-Pv8.js} +32 -6
- package/server/{harness-resolve-qHJBhy3Z.js → harness-resolve-3lNZkyT4.js} +18 -9
- package/server/{health-events-C9B8y1Hm.js → health-events-BBcTYQKU.js} +2 -2
- package/server/{health-events-CpfvuVmm.js → health-events-BDOHby5Q.js} +1 -1
- package/server/{hooks-DUXw8A0-.js → hooks-CKZgXlJb.js} +2 -2
- package/server/{hooks-ltecuFqZ.js → hooks-DPVX1rwQ.js} +1 -1
- package/server/{hume-BEq0bUDg.js → hume-Cz8igP9E.js} +2 -2
- package/server/hume-ccTf4wTX.js +3 -0
- package/server/{idle-stack-reaper-D7w9t3fE.js → idle-stack-reaper-CuLF0j2H.js} +1 -1
- package/server/{idle-stack-reaper-w1ISSlhs.js → idle-stack-reaper-DDIRwxUY.js} +2 -2
- package/server/{in-flight-guard-aQ1IxeI3.js → in-flight-guard-CAAkqPLu.js} +2 -2
- package/server/{infra-CzaSOgul.js → infra-BEqFxlJc.js} +14 -4
- package/server/{injection-DZ0PfYa4.js → injection-C8aiVJrF.js} +191 -183
- package/server/{injection-oNZeoDhL.js → injection-CPUIqNhI.js} +1 -1
- package/server/{inspect-agent-DJKLWcVT.js → inspect-agent-BLuJ1AkT.js} +135 -79
- package/server/inspect-agent-Brtz0URj.js +2 -0
- package/server/{internal-token-DXdfprGr.js → internal-token-BrcU6qfe.js} +1 -1
- package/server/{internal-token-Bb4XeV2x.js → internal-token-s0-oKybJ.js} +2 -2
- package/server/{io-B3_AHDfr.js → io-C9kF1wtJ.js} +3 -3
- package/server/{issue-closed-zhdvQicO.js → issue-closed-CDJk4pIp.js} +7 -7
- package/server/{issue-lifecycle-Dy4vd0Oa.js → issue-lifecycle-B8sZHVHh.js} +1 -1
- package/server/{issue-lifecycle-CreaCkjW.js → issue-lifecycle-ojZAzDBP.js} +21 -21
- package/server/{issue-service-singleton-DabvBWUp.js → issue-service-singleton-BvJ09SaR.js} +1 -1
- package/server/{issue-service-singleton-B5ushCvE.js → issue-service-singleton-Yx5DdmVJ.js} +8 -8
- package/server/{issues-B6ToV6x1.js → issues-BMmP_77e.js} +2 -2
- package/server/{jsonl-parser-Dhflo1SH.js → jsonl-parser-BXSlHwEh.js} +3 -3
- package/server/{label-cleanup-BKPJm4Hv.js → label-cleanup-B0UJwnv5.js} +3 -3
- package/server/{label-reconciler-DdWbHEBu.js → label-reconciler-B4iOAjlC.js} +4 -4
- package/server/{launcher-generator-CHVm7bGT.js → launcher-generator-BBWG_SiS.js} +101 -7
- package/server/{lifecycle-io-D8iNBcux.js → lifecycle-io-BREGpnLk.js} +5 -5
- package/server/{lifecycle-io-Bsnr2K4F.js → lifecycle-io-DPo7x11I.js} +1 -1
- package/server/{lifecycle-sycO16hj.js → lifecycle-xmBfK2GJ.js} +6 -6
- package/server/{lifecycle-DfeyBDwA.js → lifecycle-yPd___5E.js} +2 -2
- package/server/{linear-client-D4zqMnX7.js → linear-client-BsuUvkdA.js} +2 -2
- package/server/{linear-client-DqhDQO9k.js → linear-client-CTskEeT_.js} +1 -1
- package/server/memory-fts-worker.js +1 -1
- package/server/{merge-DK23JEdS.js → merge-B1DiziGU.js} +1 -1
- package/server/{merge-C_ZEhbqI.js → merge-CefQNAnq.js} +3 -3
- package/server/{merge-agent-XrB80vfT.js → merge-agent-4WOWlSYA.js} +28 -28
- package/server/{merge-agent-BQM3a8z5.js → merge-agent-CKkgIBPB.js} +1 -1
- package/server/{merge-batch-Bwoyr8Je.js → merge-batch-ClFn2T-y.js} +1 -1
- package/server/merge-ops-CR44oU9-.js +2 -0
- package/server/{merge-rebase-C1KIVr0s.js → merge-rebase-BfaTyXsw.js} +2 -2
- package/server/merge-set-DJ8-UErs.js +83 -0
- package/server/{merge-set-DnSYdBEp.js → merge-set-bUqbm3yc.js} +1 -1
- package/server/{merge-sync-SSv3E-pl.js → merge-sync-BJYeOODr.js} +1 -1
- package/server/{merge-sync-DZ9dojJn.js → merge-sync-VPV28g0g.js} +2 -2
- package/server/{merge-train-DxDfBTjr.js → merge-train-CHopycP0.js} +3 -3
- package/server/{merge-train-deps-CyYQUksx.js → merge-train-deps-D1cOZzy2.js} +4 -4
- package/server/{merge-verification-CSizH3HY.js → merge-verification-BkaOqPsw.js} +4 -4
- package/server/{multipart-parser-Dt8YPN5S.js → multipart-parser-duPAfSBw.js} +2 -2
- package/server/{no-resume-mode-Cx3K0hHi.js → no-resume-mode-Nw29vaFb.js} +1 -1
- package/server/node_modules/.package-lock.json +8 -8
- package/server/node_modules/@effect/platform-node/node_modules/@effect/platform-node-shared/package.json +3 -3
- package/server/node_modules/undici/README.md +5 -0
- package/server/node_modules/undici/docs/docs/api/Client.md +4 -0
- package/server/node_modules/undici/docs/docs/api/Dispatcher.md +6 -0
- package/server/node_modules/undici/docs/docs/api/Interceptors.md +59 -0
- package/server/node_modules/undici/docs/docs/api/MockAgent.md +27 -0
- package/server/node_modules/undici/docs/docs/api/MockPool.md +28 -1
- package/server/node_modules/undici/docs/docs/index.md +5 -0
- package/server/node_modules/undici/lib/core/request.js +1 -1
- package/server/node_modules/undici/lib/core/util.js +6 -1
- package/server/node_modules/undici/lib/dispatcher/agent.js +3 -3
- package/server/node_modules/undici/lib/dispatcher/client-h1.js +31 -6
- package/server/node_modules/undici/lib/dispatcher/client-h2.js +34 -43
- package/server/node_modules/undici/lib/handler/cache-handler.js +93 -5
- package/server/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/server/node_modules/undici/lib/handler/redirect-handler.js +5 -2
- package/server/node_modules/undici/lib/handler/retry-handler.js +6 -4
- package/server/node_modules/undici/lib/interceptor/cache.js +21 -4
- package/server/node_modules/undici/lib/interceptor/decompress.js +4 -0
- package/server/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/server/node_modules/undici/lib/mock/mock-utils.js +39 -10
- package/server/node_modules/undici/lib/util/cache.js +49 -7
- package/server/node_modules/undici/lib/web/fetch/body.js +2 -1
- package/server/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/server/node_modules/undici/package.json +2 -2
- package/server/node_modules/undici/types/client.d.ts +2 -2
- package/server/node_modules/undici/types/dispatcher.d.ts +3 -3
- package/server/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/server/{orphan-proposed-reconciler-neK8dHQk.js → orphan-proposed-reconciler-BvKkWMJQ.js} +12 -12
- package/server/{orphan-proposed-reconciler-BTkDrl4R.js → orphan-proposed-reconciler-CTSGcK8p.js} +1 -1
- package/server/package-lock.json +9 -9
- package/server/package.json +1 -1
- package/server/{pan-dir-DeVUgwA7.js → pan-dir-B0c3w0Ya.js} +3 -3
- package/server/{paths-_zEts6wc.js → paths-D-xWGHdh.js} +2 -2
- package/server/{pickup-Dd0Znxxy.js → pickup-DUCLWrJY.js} +17 -16
- package/server/{pipeline-membership-0HaEGDlH.js → pipeline-membership-mY3GprlK.js} +7 -7
- package/server/{pipeline-notifier-6iCJplFZ.js → pipeline-notifier-BJr8gQX6.js} +1 -1
- package/server/{pipeline-notifier-D0ykk59O.js → pipeline-notifier-BXkJzDC4.js} +2 -2
- package/server/{project-pipelines-2sK1apsO.js → project-pipelines-C0MWUeCU.js} +2 -2
- package/server/project-repos-B6GycDh9.js +94 -0
- package/server/project-repos-DXKQsc_m.js +3 -0
- package/server/{projects-9SkRpES9.js → projects-vjjcmiN8.js} +1 -1
- package/server/{prompts-Dp4Tpk39.js → prompts-DxzFXuLl.js} +2 -2
- package/server/{providers-DV7ec8l7.js → providers-qQAwGQDW.js} +7 -7
- package/server/{providers-DKkBXhxU.js → providers-u4Ga0jOr.js} +1 -1
- package/server/public/assets/{chunk-BO2N2NFS-CltymLRg.js → chunk-BO2N2NFS-BamJdinX.js} +4 -4
- package/server/public/assets/{diagram-OG6HWLK6-D2f6pjgA.js → diagram-OG6HWLK6-DfOB8-w4.js} +1 -1
- package/server/public/assets/{dist-DEmlBBNQ.js → dist-ByIuzMQW.js} +3 -3
- package/server/public/assets/{dist-BWR4qFiV.js → dist-D7zYSEA6.js} +1 -1
- package/server/public/assets/{ganttDiagram-6RSMTGT7-DnfiViPK.js → ganttDiagram-6RSMTGT7-EdmRyXL3.js} +1 -1
- package/server/public/assets/{highlighted-body-OFNGDK62-B8Wrmj9H.js → highlighted-body-OFNGDK62-MerOfTX8.js} +1 -1
- package/server/public/assets/{index-CsSuZQBI.js → index-CWeMerGO.js} +146 -144
- package/server/public/assets/{index-CUr1xv8w.css → index-CenuJ3Cw.css} +1 -1
- package/server/public/assets/{linear-C9zFQpkX.js → linear-BBbArIcK.js} +1 -1
- package/server/public/assets/mermaid-GHXKKRXX-CpPWAFwE.js +1 -0
- package/server/public/assets/{pieDiagram-4H26LBE5-lR8H7Yjd.js → pieDiagram-4H26LBE5-BKIddiJN.js} +1 -1
- package/server/public/assets/{prod-B1jCQihw.js → prod-B8vYiu52.js} +4 -4
- package/server/public/assets/{quadrantDiagram-W4KKPZXB-CVQ2guem.js → quadrantDiagram-W4KKPZXB-D6RtoULk.js} +1 -1
- package/server/public/assets/{sankeyDiagram-5OEKKPKP-eD1RB4gm.js → sankeyDiagram-5OEKKPKP-CLrCedZX.js} +1 -1
- package/server/public/assets/{xychartDiagram-2RQKCTM6-ChEC6dQn.js → xychartDiagram-2RQKCTM6-hznR8DYl.js} +1 -1
- package/server/public/index.html +2 -2
- package/server/{pull-requests--Ib2jTgy.js → pull-requests-7N8WKseP.js} +1 -1
- package/server/{pull-requests-CXIhdCYD.js → pull-requests-_lHueOHW.js} +3 -3
- package/server/{queries-6d7Cdtm7.js → queries-CjNIf-Ub.js} +576 -166
- package/server/{rally-B708-nZn.js → rally-CyWT_lNO.js} +3 -3
- package/server/{rally-api-nY0ZANw3.js → rally-api-C8e_1JRi.js} +2 -2
- package/server/{rally-api-yjQ0TfHd.js → rally-api-ClOSd-Tt.js} +1 -1
- package/server/{rally-client-B1EJhfV0.js → rally-client-lc-nokqr.js} +4 -4
- package/server/{rally-client-CULK2XAY.js → rally-client-sgtVqzNU.js} +1 -1
- package/server/rally-zhhtXuDP.js +3 -0
- package/server/{reap-terminal-sessions-MWnqdLCJ.js → reap-terminal-sessions-7KeHv1R1.js} +1 -1
- package/server/{reap-terminal-sessions-N3BTkmX_.js → reap-terminal-sessions-BtHPo6Xc.js} +1 -1
- package/server/rebuild-stack-CFvcBHsS.js +4 -0
- package/server/{rebuild-stack-Dp4eLkt4.js → rebuild-stack-lwtsW0GO.js} +26 -35
- package/server/{reconstruct-cache-uWbZfjms.js → reconstruct-cache-C3Ui7ojV.js} +6 -6
- package/server/{record-t6V-3Dcj.js → record-CN0pj4_5.js} +1 -1
- package/server/{record-update-DACtKh6_.js → record-update-bLJxAXH4.js} +1 -1
- package/server/{record-update-Dq0t2uBG.js → record-update-dE1Aw83j.js} +2 -2
- package/server/{recovery-trip-BJtIQuag.js → recovery-trip-BvRWfUXM.js} +2 -2
- package/server/{release-engine-DZpmGGzb.js → release-engine-Cx48W7z8.js} +5 -5
- package/server/{release-set-hnXd_kga.js → release-set-CQfuN9-v.js} +3 -3
- package/server/{remote-Br-ZWVIP.js → remote-C_2hasl7.js} +3 -3
- package/server/{remote-4tiENDaI.js → remote-ChgimyYa.js} +3 -3
- package/server/{remote-agents-nmty1mLu.js → remote-agents-By1ige5O.js} +6 -6
- package/server/{remote-agents-CRCg1L4H.js → remote-agents-CA3Ihlxj.js} +1 -1
- package/server/{remote-completion-BbWNd10K.js → remote-completion-fVe9e_3u.js} +12 -12
- package/server/resume-BFv1PGpA.js +3 -0
- package/server/{review-agent-sKkE1FEL.js → review-agent-CIGOQYBD.js} +29 -25
- package/server/{review-agent-DJRO8EG8.js → review-agent-DNboMyW4.js} +1 -1
- package/server/{review-artifacts-BLbSC4ke.js → review-artifacts-nRDPuMxd.js} +5 -5
- package/server/{review-context-BgX3lcCx.js → review-context-2uj-YQ8J.js} +69 -25
- package/server/{review-status-C6n6-9f_.js → review-status-btEYlaxA.js} +1 -1
- package/server/{review-status-enrichment-tbOn_A_u.js → review-status-enrichment-Dci-ZwEt.js} +3 -3
- package/server/{review-status-A7quS5KJ.js → review-status-kZj_KyCk.js} +42 -26
- package/server/{review-status-sync-BhSQ0d0l.js → review-status-sync-BTOpxtTC.js} +10 -5
- package/server/{review-status-sync-To3-iS-N.js → review-status-sync-DSDK3OMy.js} +1 -1
- package/server/{review-verdict-feedback-CTRNtzXO.js → review-verdict-feedback-CCjVA7Uk.js} +6 -6
- package/server/{review-verdict-feedback-C1Kg8n7t.js → review-verdict-feedback-CTd4QMBu.js} +1 -1
- package/server/{rollup-B53Y81xK.js → rollup-BKQC7jp4.js} +1 -1
- package/server/{rollup-WA0VD-Rr.js → rollup-FGsKki9R.js} +8 -8
- package/server/{scanner-D2743cp8.js → scanner-CnqEZeDy.js} +41 -14
- package/server/{sequence-io-Cg0zYj_E.js → sequence-io-D909zgeH.js} +4 -4
- package/server/{sequencer-agent-BGY8gjg-.js → sequencer-agent-CzkcK6P5.js} +5 -5
- package/server/server.js +2194 -341
- package/server/{service-DCpB_SGd.js → service-CLeAoU6G.js} +51 -50
- package/server/{session-fork-BQ8_6H32.js → session-fork-CHI1XvL9.js} +2 -2
- package/server/{session-history-CVZDpS3c.js → session-history-BT3IvqhC.js} +4 -4
- package/server/settings-66A6uvIA.js +2 -0
- package/server/{settings-BZ5m1UCl.js → settings-BTMvpNFU.js} +3 -3
- package/server/{settings-ylxwqwQG.js → settings-C0zgxOGf.js} +2 -2
- package/server/{shadow-engineering-BlxG6Xye.js → shadow-engineering-BJfgm-hX.js} +2 -2
- package/server/{shadow-state-Dh-HzF2J.js → shadow-state-7a-524T8.js} +2 -2
- package/server/{shadow-state-C2_epgx2.js → shadow-state-DnDyjujH.js} +1 -1
- package/server/{shadow-utils-4bvjn9b3.js → shadow-utils-Db3oroFG.js} +2 -2
- package/server/{ship-log-ClSMIzZX.js → ship-log-D9MlVzYU.js} +1 -1
- package/server/{smart-compaction-CHIxLr_d.js → smart-compaction-CV2ukKND.js} +1 -1
- package/server/{smart-compaction-r4pHQBIr.js → smart-compaction-KCYScAU1.js} +7 -7
- package/server/{spawn-planning-session-DWAorh2B.js → spawn-planning-session-DKpdFyOC.js} +30 -23
- package/server/{spawn-planning-session-KC_UduxD.js → spawn-planning-session-qUC2VWu3.js} +1 -1
- package/server/{specialist-completion-BXhav38U.js → specialist-completion-Ky9wCDpb.js} +1 -1
- package/server/{specialist-context-DtrYvGJ-.js → specialist-context-Bn3dCGS2.js} +5 -5
- package/server/{specialist-handoff-logger-C45ouoZ6.js → specialist-handoff-logger-CMEwYxa2.js} +2 -2
- package/server/{specialist-logs-DJ3RzKxW.js → specialist-logs-C5p8G7tx.js} +3 -3
- package/server/{specialists-JVO00bs7.js → specialists-CC4r-c2s.js} +776 -347
- package/server/{specialists-D5fRZXmN.js → specialists-CShuVGWT.js} +1 -1
- package/server/{specialists-DVj0hvaL.js → specialists-DM6bWjsi.js} +1 -1
- package/server/{specialists-DyFeedjn.js → specialists-jiuuyVkp.js} +21 -19
- package/server/specs-C8Wsn2XO.js +3 -0
- package/server/{src-CG9mCkP6.js → src-CXmtj0im.js} +6 -6
- package/server/{src-CMTQGyCK.js → src-CdmnTM2m.js} +5 -5
- package/server/{src-U7_kTPEE.js → src-DtcUOZCq.js} +111 -18
- package/server/stack-health-Bn3o8FBX.js +3 -0
- package/server/{stack-health-puygdaMd.js → stack-health-DxSdG9cW.js} +63 -9
- package/server/{stale-task-claims-BbFwCTb0.js → stale-task-claims-KJKxxiiQ.js} +4 -4
- package/server/{staleness-Cbl_w4Bw.js → staleness-CT34nwr9.js} +1 -1
- package/server/{staleness-Bpy41ngS.js → staleness-DPm7ClwA.js} +1 -1
- package/server/{state-home-CIGjwNfJ.js → state-home-Cn_Qu8IX.js} +2 -2
- package/server/{state-migrate-Dkzaxvny.js → state-migrate-BGg2ZaOt.js} +4 -4
- package/server/{stuck-remediation-CzEov_fq.js → stuck-remediation-DYuPRYYw.js} +300 -23
- package/server/{stuck-remediation-sY_MHHgQ.js → stuck-remediation-s9_2qfi6.js} +1 -1
- package/server/{substrate-bug-weights-service-BH66lhm7.js → substrate-bug-weights-service-B-FwCs5V.js} +3 -3
- package/server/{summary-fork-DHhJIsAL.js → summary-fork-D1RAk9rJ.js} +78 -12
- package/server/{summary-fork-D8bXjCr7.js → summary-fork-DpcxN9tf.js} +2 -2
- package/server/supervisor/{injection-budget-C1iPirFS.js → injection-budget-Csw5tqfJ.js} +2 -41
- package/server/supervisor/pty-supervisor.js +2 -1
- package/server/supervisor/pty-token-x-ea28Us.js +43 -0
- package/server/supervisor-FTJAIsAK.js +2 -0
- package/server/{supervisor-BO-Zk_h-.js → supervisor-wM4ooB5O.js} +3 -3
- package/server/{swarm-readiness-CQ_fwUWF.js → swarm-readiness-DlP_UjHq.js} +3 -3
- package/server/{system-prerequisites-Bza0ffAh.js → system-prerequisites-DUDj1YHf.js} +56 -29
- package/server/{teardown-workspace-CEgauF4U.js → teardown-workspace-DeTTImn-.js} +15 -15
- package/server/{test-agent-queue-DXDt0Xa-.js → test-agent-queue-MbxX5vqq.js} +6 -6
- package/server/{test-verdict-CmUBK5cT.js → test-verdict-bWYBtqBg.js} +1 -1
- package/server/{test-verdict-DFjjIHR5.js → test-verdict-gscuksPv.js} +1 -1
- package/server/{tldr-daemon-DL566HbH.js → tldr-daemon-BYFkts95.js} +1 -1
- package/server/{tldr-daemon-BDtLOIlO.js → tldr-daemon-C-69c3OI.js} +2 -2
- package/server/{tmux-DoThH6aj.js → tmux-B6z7h_vZ.js} +1 -1
- package/server/{tmux-ftABRAmc.js → tmux-R7N7y-Mh.js} +2 -2
- package/server/{token-CsOhvw42.js → token-BK6t8BIT.js} +2 -2
- package/server/token-util-DuPuNriz.js +3 -0
- package/server/{token-util-CTmczIfW.js → token-util-DxXu-vd1.js} +1 -1
- package/server/{tracker-config-B4itFzDo.js → tracker-config-G6latr8C.js} +2 -2
- package/server/{tracker-utils-BePq_oj-.js → tracker-utils-B4ylXZQK.js} +1 -1
- package/server/{tracker-utils-tnxxqROg.js → tracker-utils-DHv5pSDT.js} +2 -2
- package/server/{traefik-connect-m73vGebA.js → traefik-connect-Df2uXPsQ.js} +1 -1
- package/server/{tunnel-B2vxjx_b.js → tunnel-CDVKJpRv.js} +3 -3
- package/server/{tunnel-Cgj-IGIl.js → tunnel-DGdUkGoZ.js} +1 -1
- package/server/{types-BBNjPcqU.js → types-5M0lupud.js} +1 -1
- package/server/{uat-train-cKfM-_WW.js → uat-train-B05BWkp-.js} +1 -1
- package/server/{uat-train-CuEn0t9M.js → uat-train-DDSrSoV1.js} +25 -25
- package/server/validate-IfDGkaVR.js +177 -0
- package/server/{validation-CIi6pnI2.js → validation-CC9OPqJZ.js} +1 -1
- package/server/{validation-B5JxoPUS.js → validation-Dw1pzDzr.js} +4 -4
- package/server/{verification-artifact-C-lIHfUa.js → verification-artifact-B3itKTxu.js} +1 -1
- package/server/{verification-artifact-BcnIbigL.js → verification-artifact-TVFSz_q1.js} +1 -1
- package/server/{verification-runner-CDj4lD4t.js → verification-runner-BW4HOKAz.js} +1 -1
- package/server/{verification-runner-Br0S_Ous.js → verification-runner-CkgX6EtI.js} +91 -106
- package/server/{vtt-parser-DKpNNW5i.js → vtt-parser-DYPbKcIJ.js} +1 -1
- package/server/{work-agent-prompt-Yb2bd3Fq.js → work-agent-prompt-Du8Vh2aJ.js} +9 -9
- package/server/workflows-BQu4RFQ-.js +2 -0
- package/server/{workflows-C9WmILql.js → workflows-mbQzh6mQ.js} +18 -18
- package/server/{workspace-DuUdndHe.js → workspace--8tnhDI0.js} +1 -1
- package/server/{workspace-BVl4rihN.js → workspace-BPUws1-_.js} +3 -3
- package/server/{workspace-config-cEGcO6UT.js → workspace-config-CIVWZOQr.js} +1 -1
- package/server/{workspace-manager-hLUv3ADC.js → workspace-manager-CBhNdzE4.js} +66 -15
- package/server/workspace-manager-CWT55qeI.js +3 -0
- package/server/{workspace-metadata-DNpMixRq.js → workspace-metadata-BzHnwwX4.js} +1 -1
- package/server/{workspace-metadata-CskwzzhL.js → workspace-metadata-_WygnyoX.js} +2 -2
- package/server/{workspaces-hWvy9eKs.js → workspaces-Do_9J0LQ.js} +130 -111
- package/sync-sources/hooks/record-cost-event.js +6 -4
- package/sync-sources/skills/okf/README.md +11 -3
- package/sync-sources/skills/okf/SKILL.md +12 -1
- package/sync-sources/skills/okf/docs/USAGE.md +15 -0
- package/sync-sources/skills/okf/references/overdeck.md +28 -0
- package/sync-sources/skills/pan-flywheel/SKILL.md +18 -1
- package/sync-sources/skills/pan-knowledge/SKILL.md +10 -0
- package/sync-sources/skills/pan-orders/SKILL.md +33 -0
- package/sync-sources/skills/pan-start/SKILL.md +4 -0
- package/sync-sources/templates/traefik/dynamic/overdeck.yml.template +10 -0
- package/server/agent-state-Bg0lhqwj.js +0 -3
- package/server/agents-FlIgQ3ql.js +0 -3
- package/server/cli-BsVIHwzC.js +0 -3
- package/server/context-layers-B3Nt58jl.js +0 -4
- package/server/context-layers-ZYFcWiyc.js +0 -165
- package/server/deacon-swarm-9jRLS5Ke.js +0 -2
- package/server/dist-Bd3vn0Hw.js +0 -3
- package/server/flywheel-DMCUzDWg.js +0 -2
- package/server/flywheel-DSSpWmqF.js +0 -522
- package/server/flywheel-DcBkQvgE.js +0 -207
- package/server/forge-B-ZWyTRm.js +0 -2
- package/server/git-utils-Dry_Ka_D.js +0 -3
- package/server/hume-B_DbflNM.js +0 -3
- package/server/inspect-agent-ch-F-5Ci.js +0 -2
- package/server/layers-DzxSTGNA.js +0 -93
- package/server/merge-blockers-BsFjGrQ8.js +0 -41
- package/server/merge-ops-DlB1IM0Y.js +0 -2
- package/server/merge-set-DLz0MkGT.js +0 -139
- package/server/public/assets/mermaid-GHXKKRXX-BUAB8hqt.js +0 -1
- package/server/rally-njs_mJrt.js +0 -3
- package/server/rebuild-stack-kA7XngID.js +0 -3
- package/server/resume-CcKqnTvE.js +0 -3
- package/server/settings-D0OSwos5.js +0 -2
- package/server/specs-nN45DG2X.js +0 -3
- package/server/stack-health-Df0YEZKa.js +0 -3
- package/server/supervisor-BPy-o1A8.js +0 -2
- package/server/token-util-DrHg8abn.js +0 -3
- package/server/workflows-D90rMOya.js +0 -2
- package/server/workspace-manager-ZTdJAy9M.js +0 -3
|
@@ -28121,7 +28121,8 @@ function validateRoleFields(role, roleConfig) {
|
|
|
28121
28121
|
if (!Number.isInteger(entry.weight) || entry.weight <= 0) throw new Error(`config.yaml: roles.${role}.model[${i}].weight must be a positive integer`);
|
|
28122
28122
|
}
|
|
28123
28123
|
}
|
|
28124
|
-
if (roleConfig.
|
|
28124
|
+
if (roleConfig.autonomousModel !== void 0 && typeof roleConfig.autonomousModel !== "string") throw new Error(`config.yaml: roles.${role}.autonomousModel must be a scalar model reference`);
|
|
28125
|
+
if (roleConfig.harness !== void 0 && roleConfig.harness !== "claude-code" && roleConfig.harness !== "ohmypi" && roleConfig.harness !== "codex" && roleConfig.harness !== "acp") throw new Error(`config.yaml: roles.${role}.harness must be claude-code, ohmypi, codex, or acp`);
|
|
28125
28126
|
if (roleConfig.effort !== void 0 && !ROLE_EFFORTS.includes(roleConfig.effort)) throw new Error(`config.yaml: roles.${role}.effort must be one of ${ROLE_EFFORTS.join(", ")}`);
|
|
28126
28127
|
if (roleConfig.mode !== void 0 && roleConfig.mode !== "quick" && roleConfig.mode !== "full" && roleConfig.mode !== "none") throw new Error(`config.yaml: roles.${role}.mode must be quick, full, or none`);
|
|
28127
28128
|
if (roleConfig.reReviewScope !== void 0 && roleConfig.reReviewScope !== "all" && roleConfig.reReviewScope !== "changed" && roleConfig.reReviewScope !== "blockers") throw new Error(`config.yaml: roles.${role}.reReviewScope must be all, changed, or blockers`);
|
|
@@ -28138,6 +28139,7 @@ function validateRoleModelRefs(config) {
|
|
|
28138
28139
|
}
|
|
28139
28140
|
for (const [role, roleConfig] of Object.entries(config.roles ?? {})) {
|
|
28140
28141
|
validateRoleFields(role, roleConfig);
|
|
28142
|
+
if (typeof roleConfig.autonomousModel === "string") derefWorkhorse(roleConfig.autonomousModel, config, `roles.${role}.autonomousModel`);
|
|
28141
28143
|
if (Array.isArray(roleConfig.model)) for (let i = 0; i < roleConfig.model.length; i++) derefWorkhorse(roleConfig.model[i].model, config, `roles.${role}.model[${i}].model`);
|
|
28142
28144
|
else if (roleConfig.model) {
|
|
28143
28145
|
const resolvedModel = derefWorkhorse(roleConfig.model, config, `roles.${role}.model`);
|
|
@@ -28734,7 +28736,7 @@ const DEFAULT_TIERED_EXECUTION_CONFIG = {
|
|
|
28734
28736
|
difficultyToTier: {}
|
|
28735
28737
|
};
|
|
28736
28738
|
function isRuntimeName(value) {
|
|
28737
|
-
return value === "claude-code" || value === "ohmypi" || value === "codex";
|
|
28739
|
+
return value === "claude-code" || value === "ohmypi" || value === "codex" || value === "acp";
|
|
28738
28740
|
}
|
|
28739
28741
|
function isDifficulty(value) {
|
|
28740
28742
|
return TIERED_EXECUTION_DIFFICULTIES.includes(value);
|
|
@@ -28757,7 +28759,7 @@ function knownModelIds() {
|
|
|
28757
28759
|
return ids;
|
|
28758
28760
|
}
|
|
28759
28761
|
function validateHarness(harness, path) {
|
|
28760
|
-
if (!isRuntimeName(harness)) throw new TieredExecutionConfigError(`${path}.harness '${harness}' is unknown; expected claude-code, ohmypi, or
|
|
28762
|
+
if (!isRuntimeName(harness)) throw new TieredExecutionConfigError(`${path}.harness '${harness}' is unknown; expected claude-code, ohmypi, codex, or acp`);
|
|
28761
28763
|
}
|
|
28762
28764
|
function validateModel(model, path) {
|
|
28763
28765
|
const resolved = resolveModelIdSync(model);
|
|
@@ -29288,7 +29290,7 @@ function normalizeProviderConfig(providerConfig, fallbackKey) {
|
|
|
29288
29290
|
};
|
|
29289
29291
|
}
|
|
29290
29292
|
function validateProviderHarness(provider, harness) {
|
|
29291
|
-
if (harness !== void 0 && harness !== "claude-code" && harness !== "ohmypi" && harness !== "codex") throw new Error(`config.yaml: models.providers.${provider}.harness must be claude-code, ohmypi, or
|
|
29293
|
+
if (harness !== void 0 && harness !== "claude-code" && harness !== "ohmypi" && harness !== "codex" && harness !== "acp") throw new Error(`config.yaml: models.providers.${provider}.harness must be claude-code, ohmypi, codex, or acp`);
|
|
29292
29294
|
}
|
|
29293
29295
|
function applyProviderHarness(result, provider, harness) {
|
|
29294
29296
|
validateProviderHarness(provider, harness);
|
|
@@ -15,14 +15,21 @@ Embedding commands also need Ollama or an API key for the selected provider.
|
|
|
15
15
|
|
|
16
16
|
Overdeck users receive this skill through `pan sync`.
|
|
17
17
|
|
|
18
|
-
Standalone Claude Code users
|
|
18
|
+
Standalone Claude Code users install it from the mirror repo, [eltmon/okf](https://github.com/eltmon/okf) — symlink so `git pull` updates it in place:
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
+
git clone https://github.com/eltmon/okf.git ~/Projects/okf
|
|
21
22
|
mkdir -p ~/.claude/skills
|
|
22
|
-
|
|
23
|
+
ln -s ~/Projects/okf ~/.claude/skills/okf
|
|
23
24
|
```
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
Or copy-install instead of symlinking:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
cp -R ~/Projects/okf ~/.claude/skills/okf
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The skill remains portable. Its core scripts do not import Overdeck and require only git, gh, Python 3, and PyYAML for non-embedding workflows.
|
|
26
33
|
|
|
27
34
|
## 5-Minute Quickstart
|
|
28
35
|
|
|
@@ -61,6 +68,7 @@ The copied skill remains portable. Its core scripts do not import Overdeck and r
|
|
|
61
68
|
| Command | Summary |
|
|
62
69
|
| --- | --- |
|
|
63
70
|
| `/okf init` | Create or connect the knowledge bundle and pointer file. |
|
|
71
|
+
| `/okf open [--no-install] [--no-browser]` | Open the configured bundle in the local visual knowledge viewer. |
|
|
64
72
|
| `/okf author "<topic>"` | Write or update one concept for one idea. |
|
|
65
73
|
| `/okf convert <path>` | Convert existing docs into OKF without destructive edits. |
|
|
66
74
|
| `/okf sync [--topic "<focus>"]` | Update concepts from code or documentation diffs. |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: okf
|
|
3
|
-
description: Maintain a project knowledge wiki in Open Knowledge Format with /okf init, author, convert, sync, study, retro, extract, validate, lint, and embed.
|
|
3
|
+
description: Maintain a project knowledge wiki in Open Knowledge Format with /okf init, open, author, convert, sync, study, retro, extract, validate, lint, and embed.
|
|
4
4
|
triggers:
|
|
5
5
|
- /okf
|
|
6
6
|
- okf
|
|
@@ -26,6 +26,7 @@ The bundle is the source of truth. Keep changes small, cited, and PR-gated. Dete
|
|
|
26
26
|
| Command | Purpose | Primary references |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| `/okf init` | Create or connect a project knowledge bundle. | `references/workflow.md`, `references/spec.md` |
|
|
29
|
+
| `/okf open [--no-install] [--no-browser]` | Open the configured bundle in the local visual knowledge viewer. | `references/overdeck.md` |
|
|
29
30
|
| `/okf author "<topic>"` | Write or refresh one focused concept. | `templates/concept.md`, `references/taxonomy.md`, `references/model-bridges.md` |
|
|
30
31
|
| `/okf convert <path>` | Convert existing docs into OKF concepts without deleting originals. | `references/conversion.md` |
|
|
31
32
|
| `/okf sync [--topic "<focus>"]` | Update concepts from code or documentation changes. | `references/workflow.md`, `references/model-bridges.md` |
|
|
@@ -80,6 +81,16 @@ Create a knowledge bundle and pointer file.
|
|
|
80
81
|
- Add exactly one discovery line to `CLAUDE.md` or `AGENTS.md`, preserving it without duplication on repeated init.
|
|
81
82
|
- Future resolution order is host project config `knowledge_repo`, then `.okf.yml`, then a clear error telling the user to run `/okf init`.
|
|
82
83
|
|
|
84
|
+
## `/okf open [--no-install] [--no-browser]`
|
|
85
|
+
|
|
86
|
+
Open the configured bundle in the local visual knowledge viewer.
|
|
87
|
+
|
|
88
|
+
- Resolve the bundle from `.okf.yml`; under Overdeck, the canonical resolver also honors the project's `knowledge_repo` setting.
|
|
89
|
+
- When `pan` is available, delegate to `pan knowledge open` and pass through `--no-install` and `--no-browser`.
|
|
90
|
+
- By default, an explicit open request progressively installs the separately licensed GPL-3.0 `@inkeep/open-knowledge` program. `--no-install` requires an existing `ok` binary instead.
|
|
91
|
+
- The viewer is an arm's-length subprocess served over HTTP. Overdeck launches it against a disposable snapshot, reuses healthy lock-reported processes, and never lets viewer edits touch the canonical PR-gated bundle.
|
|
92
|
+
- Never import, require, or bundle `@inkeep/open-knowledge` into the portable OKF scripts or Overdeck packages.
|
|
93
|
+
|
|
83
94
|
## `/okf author "<topic>"`
|
|
84
95
|
|
|
85
96
|
Write or update one concept for one idea.
|
|
@@ -16,6 +16,21 @@ Create a knowledge bundle.
|
|
|
16
16
|
- `--dir <path>`: use any external directory.
|
|
17
17
|
- `--local <subdir>`: create an in-repo bundle.
|
|
18
18
|
|
|
19
|
+
## `/okf open [--no-install] [--no-browser]`
|
|
20
|
+
|
|
21
|
+
Open the configured bundle in the local visual viewer.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
/okf open
|
|
25
|
+
/okf open --no-install
|
|
26
|
+
/okf open --no-browser
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- Resolves the bundle from `.okf.yml` (or Overdeck's `knowledge_repo` setting).
|
|
30
|
+
- Delegates to `pan knowledge open` when Overdeck is available.
|
|
31
|
+
- Progressively installs the separate GPL-3.0 `ok` program only after the explicit open request; `--no-install` opts out.
|
|
32
|
+
- `--no-browser` starts or reuses the viewer and prints its URL without launching a browser.
|
|
33
|
+
|
|
19
34
|
## `/okf author "<topic>"`
|
|
20
35
|
|
|
21
36
|
Write or update one concept.
|
|
@@ -11,6 +11,34 @@ Overdeck is available only when:
|
|
|
11
11
|
|
|
12
12
|
Detection is by command execution, never by Python or TypeScript imports.
|
|
13
13
|
|
|
14
|
+
## OpenKnowledge Viewer Runtime
|
|
15
|
+
|
|
16
|
+
`pan knowledge open` and the dashboard Knowledge page use an assisted Node.js 24 resolution flow for the OpenKnowledge viewer. Overdeck first reuses a working `ok`, then checks `OVERDECK_OPEN_KNOWLEDGE_NODE`, then searches installed runtimes under nvm, fnm, Volta, mise, and asdf. If a download is required, the operator sees the exact setup steps and must consent before they run; shell profiles and the ambient/default Node.js version remain unchanged. A fresh nvm bootstrap suppresses profile edits and restores or removes the `default` alias to match its pre-setup state.
|
|
17
|
+
|
|
18
|
+
Set `OVERDECK_OPEN_KNOWLEDGE_NODE=/absolute/path/to/node` to pin the viewer to a specific Node.js 24+ binary. Overdeck rejects relative overrides and resolves the absolute path before writing the shim, so the override affects only the separate `ok` subprocess and cannot drift with `PATH`.
|
|
19
|
+
|
|
20
|
+
## Optional OpenKnowledge MCP Registration
|
|
21
|
+
|
|
22
|
+
The dashboard viewer and `pan knowledge open` never register an MCP server. Their unattended initialization always uses `ok init --no-mcp --no-skills`, so opening the viewer cannot change an editor or agent configuration.
|
|
23
|
+
|
|
24
|
+
MCP registration is a separate, explicit operator action. From the resolved knowledge-bundle root, run:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ok init --mcp --no-skills --scope user
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Use `--scope project` for repository-local configuration, or `--scope both` for both locations. OpenKnowledge v0.34 writes the supported native formats:
|
|
31
|
+
|
|
32
|
+
| Client | User scope | Project scope |
|
|
33
|
+
| --- | --- | --- |
|
|
34
|
+
| Claude Code | `~/.claude.json` | `.mcp.json` |
|
|
35
|
+
| Codex | `~/.codex/config.toml` | `.codex/config.toml` |
|
|
36
|
+
| Cursor | `~/.cursor/mcp.json` | `.cursor/mcp.json` |
|
|
37
|
+
|
|
38
|
+
OpenKnowledge registers only clients it detects. Start or install the intended client, then rerun the explicit command if its config root was previously absent. Review the reported paths before restarting the client; registration is opt-in and Overdeck never performs it automatically.
|
|
39
|
+
|
|
40
|
+
`/okf init` and `ok init` are different commands: `/okf init` creates or connects an OKF knowledge bundle, while the upstream `ok init` command scaffolds OpenKnowledge's local `.ok/` runtime files and optionally registers MCP clients.
|
|
41
|
+
|
|
14
42
|
## Retro Feedstock
|
|
15
43
|
|
|
16
44
|
When Overdeck is detected, `/okf retro` may mine observations for the issue:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pan-flywheel
|
|
3
|
-
description: "pan flywheel — start, pause, resume, stop, inspect, emit, and report on the singleton Fix-All Flywheel orchestrator"
|
|
3
|
+
description: "pan flywheel — start, pause, resume, complete, stop, inspect, emit, and report on the singleton Fix-All Flywheel orchestrator"
|
|
4
4
|
triggers:
|
|
5
5
|
- pan flywheel
|
|
6
6
|
- flywheel orchestrator
|
|
@@ -24,6 +24,7 @@ The Flywheel is not an issue-scoped work agent. It runs as `flywheel-orchestrato
|
|
|
24
24
|
```bash
|
|
25
25
|
pan flywheel start
|
|
26
26
|
pan flywheel start --brief docs/flywheel-brief.md
|
|
27
|
+
pan flywheel start --orders <book-id>
|
|
27
28
|
pan flywheel config --get
|
|
28
29
|
pan flywheel config --get flywheel.require_uat_before_merge
|
|
29
30
|
pan flywheel config --set flywheel.auto_pickup_backlog=true
|
|
@@ -32,6 +33,8 @@ pan flywheel status
|
|
|
32
33
|
pan flywheel status --json
|
|
33
34
|
pan flywheel pause
|
|
34
35
|
pan flywheel resume
|
|
36
|
+
pan flywheel complete
|
|
37
|
+
pan flywheel complete --force
|
|
35
38
|
pan flywheel stop
|
|
36
39
|
pan flywheel abort
|
|
37
40
|
pan flywheel emit-status --file latest.json
|
|
@@ -45,12 +48,15 @@ pan flywheel report
|
|
|
45
48
|
```bash
|
|
46
49
|
pan flywheel start
|
|
47
50
|
pan flywheel start --brief docs/flywheel-brief.md
|
|
51
|
+
pan flywheel start --orders <book-id>
|
|
48
52
|
```
|
|
49
53
|
|
|
50
54
|
Starts `flywheel-orchestrator` and opens a new run under `~/.overdeck/flywheel/runs/<runId>/`.
|
|
51
55
|
|
|
52
56
|
Use the default brief unless the user gives a specific markdown brief. The default is `docs/flywheel-brief.md`. The command validates that the brief path stays inside the project root.
|
|
53
57
|
|
|
58
|
+
`--orders <book-id>` validates a ready order book, stamps the book binding into the run launch metadata, and marks the book running only after the Flywheel start gate succeeds. Validation or gate failures leave the book ready.
|
|
59
|
+
|
|
54
60
|
### Config
|
|
55
61
|
|
|
56
62
|
```bash
|
|
@@ -84,6 +90,17 @@ pan flywheel resume
|
|
|
84
90
|
|
|
85
91
|
If the Flywheel is already paused or already running, these commands report the current gate state and exit successfully.
|
|
86
92
|
|
|
93
|
+
### Complete
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
pan flywheel complete
|
|
97
|
+
pan flywheel complete --force
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Completes an orders-bound run after every book item is closed or parked. The command refuses a non-drained book and names each remaining issue unless `--force` is passed. It writes `report.md`, adds `## Retrospective` from the run's `retro.md` when present or the exact no-findings line otherwise, commits any `docs/FLYWHEEL-STATE.md` change, clears the active-run gate, and marks the book complete.
|
|
101
|
+
|
|
102
|
+
Continuation is mechanical: the next ready book in queue order starts in-process; when no book is ready and `flywheel.auto_pickup_backlog=true`, a bookless backlog run starts; otherwise the command stays stopped and emits `needs-you: pipeline idle — no order book queued and auto-pickup is off`.
|
|
103
|
+
|
|
87
104
|
### Stop
|
|
88
105
|
|
|
89
106
|
```bash
|
|
@@ -9,6 +9,7 @@ triggers:
|
|
|
9
9
|
- knowledge sync
|
|
10
10
|
- knowledge study
|
|
11
11
|
- knowledge retro
|
|
12
|
+
- knowledge open
|
|
12
13
|
allowed-tools:
|
|
13
14
|
- Bash
|
|
14
15
|
- Read
|
|
@@ -30,6 +31,8 @@ pan knowledge PAN-123 --focus "auth flow" # Study a topic, then sync
|
|
|
30
31
|
pan knowledge PAN-123 --retro # Capture retro knowledge, then sync
|
|
31
32
|
pan knowledge PAN-123 --model claude-sonnet-5 # Override the knowledge role model
|
|
32
33
|
pan knowledge PAN-123 --effort high # Raise reasoning effort for the agent
|
|
34
|
+
pan knowledge open # Open this project's OKF bundle in the viewer
|
|
35
|
+
pan knowledge open --no-install --no-browser # Never install or launch a browser
|
|
33
36
|
```
|
|
34
37
|
|
|
35
38
|
## What It Does
|
|
@@ -51,6 +54,13 @@ The command first tries to ensure `mnemos` is available on `PATH` (installing it
|
|
|
51
54
|
on demand if necessary) and ingest the resolved bundle. If mnemos is unavailable,
|
|
52
55
|
it resolves the installed `okf` skill and falls back to its bundled `scripts/` directory.
|
|
53
56
|
|
|
57
|
+
`pan knowledge open` resolves the current project's bundle through
|
|
58
|
+
`projects.yaml` or `.okf.yml`, progressively installs the separately licensed
|
|
59
|
+
`@inkeep/open-knowledge` program when needed, starts or reuses a verified viewer
|
|
60
|
+
against a disposable snapshot, and opens the URL. Viewer edits never touch the
|
|
61
|
+
canonical PR-gated bundle. Use `--no-install` to require a preinstalled `ok` binary and
|
|
62
|
+
`--no-browser` to print the URL without launching a browser.
|
|
63
|
+
|
|
54
64
|
## When to Use
|
|
55
65
|
|
|
56
66
|
- After merging a feature to capture knowledge that would have helped the work
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pan-orders
|
|
3
|
+
description: "pan orders — create, inspect, edit, and start Flywheel order books"
|
|
4
|
+
triggers:
|
|
5
|
+
- pan orders
|
|
6
|
+
- order book
|
|
7
|
+
- special orders
|
|
8
|
+
allowed-tools:
|
|
9
|
+
- Bash
|
|
10
|
+
- Read
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# pan orders
|
|
14
|
+
|
|
15
|
+
Use `pan orders` to manage the operator-owned order book that scopes a Flywheel campaign.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pan orders create "Campaign name"
|
|
19
|
+
pan orders list
|
|
20
|
+
pan orders show <id>
|
|
21
|
+
pan orders add <id> <issue...>
|
|
22
|
+
pan orders add <id> <issue...> --lane B --after <issue> --reverify
|
|
23
|
+
pan orders remove <id> <issue>
|
|
24
|
+
pan orders move <id> <issue> --lane A --order 2
|
|
25
|
+
pan orders start <id>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- `create` makes a draft book with a date-and-name id.
|
|
29
|
+
- `add` defaults to Lane A. `--after` must name an item already in the target lane. `--reverify` requires PRD re-verification before pickup.
|
|
30
|
+
- `move` accepts `--lane <A|B>`, `--order <n>`, or both.
|
|
31
|
+
- `start` validates and starts the same orders-bound path as Flywheel start; validation blocks leave the book unchanged.
|
|
32
|
+
|
|
33
|
+
Order-book reads and mutations go through the canonical resolver and writer. Do not edit `orders/*.json` directly.
|
|
@@ -31,6 +31,7 @@ pan start PAN-123 --fresh # Drop the saved session and start a new one (e.g. sw
|
|
|
31
31
|
pan start PAN-123 --harness codex # Explicitly use the Codex harness
|
|
32
32
|
pan start PAN-123 --model gpt-5.6-sol --swarm off --review-mode full
|
|
33
33
|
pan start PAN-123 --review-model gpt-5.6-sol # Pin the convoy review model
|
|
34
|
+
pan start PAN-123 --plan-model k3 --model k3 # Auto-plan AND work on Kimi k3
|
|
34
35
|
pan start PAN-123 --remote --tier durable # Remote Fly.io workspace with persistent volume
|
|
35
36
|
pan start PAN-123 --remote --tier ephemeral # Remote Fly.io workspace that winds down on stale heartbeat
|
|
36
37
|
```
|
|
@@ -63,6 +64,9 @@ Start-time policy flags are persisted on the issue before planning or work begin
|
|
|
63
64
|
sets the durable work-model override used by later respawns, `--swarm` accepts `off`, `auto`,
|
|
64
65
|
or `always`, `--review-mode` accepts `quick`, `full`, or `none`, and `--review-model` pins the
|
|
65
66
|
model used by the review convoy. Omitted flags leave existing and inherited policy untouched.
|
|
67
|
+
When this start also kicks off planning (no plan exists yet), `--plan-model <model>` overrides
|
|
68
|
+
the planning agent's model for that session only — it is a one-shot override, not persisted
|
|
69
|
+
policy, and it never changes the work agent's model (`--model`).
|
|
66
70
|
|
|
67
71
|
If an agent is paused, `pan start <id>` refuses to spawn until you run `pan unpause <id>`.
|
|
68
72
|
Use `--force` only when you intentionally want to clear that pause gate and start anyway.
|
|
@@ -30,6 +30,16 @@ http:
|
|
|
30
30
|
service: overdeck-api
|
|
31
31
|
tls: {}
|
|
32
32
|
|
|
33
|
+
# Origin-isolated OpenKnowledge viewers. The dashboard server derives the
|
|
34
|
+
# project from the hex-encoded host label and proxies every root-relative
|
|
35
|
+
# HTTP/WebSocket path to that project's viewer process.
|
|
36
|
+
overdeck-knowledge-viewer:
|
|
37
|
+
rule: "HostRegexp(`^knowledge-[a-f0-9]+\\.{{TRAEFIK_DOMAIN}}$`)"
|
|
38
|
+
entryPoints:
|
|
39
|
+
- websecure
|
|
40
|
+
service: overdeck-api
|
|
41
|
+
tls: {}
|
|
42
|
+
|
|
33
43
|
# Published HTML artifacts
|
|
34
44
|
overdeck-artifacts:
|
|
35
45
|
rule: "Host(`artifacts.{{TRAEFIK_DOMAIN}}`) && PathPrefix(`/a/`)"
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { Fn as clearAgentPausedSync, Gn as init_agent_state, Ln as clearAgentTroubledSync, Wn as getAgentStateSync, or as setAgentPausedSync } from "./queries-6d7Cdtm7.js";
|
|
2
|
-
init_agent_state();
|
|
3
|
-
export { clearAgentPausedSync, clearAgentTroubledSync, getAgentStateSync, setAgentPausedSync };
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { $ as appendActivity, $n as recordAgentFailure, $t as OHMYPI_AGENT_READY_TIMEOUT_SECONDS, An as writeChannelsBridgeMcpConfig, At as deliverAgentPermissionDecision, B as detectCrashedAgents, Bn as getAgentDir, Bt as assertWorkspaceStackHealthyForSpawn, C as replayCrashedStandingAgent, Cr as getAgentRuntimeStateSync, Dn as decideChannelsForWorkAgent, En as buildDefaultResumeContinueMessage, Fn as clearAgentPausedSync, G as resumeAgent, Gt as transitionIssueToInProgress, H as restartAgent, Hn as getAgentState, In as clearAgentTroubled, Jn as isRole, Kn as isAgentPaused, Kt as transitionIssueToInReview, Ln as clearAgentTroubledSync, Mn as SESSION_EXITED_BEFORE_KICKOFF, Mt as deliverResumeMessageWithTranscriptConfirmation, Nn as __testInternals, Nt as setAgentDeliveryMethod, On as decideSupervisorForWorkAgent, Pn as clearAgentPaused, Qn as markAgentTroubled, Rn as clearYieldForResumeSync, S as contextWindowForModel, Sr as getAgentRuntimeState, T as shouldReplayCompactAtTierRunBoundary, Tr as saveAgentRuntimeState, U as buildCompactRecoverySeed, Un as getAgentStateFilePath, V as recoverAgent, Vt as buildAgentLaunchConfig, Wn as getAgentStateSync, Wt as retrieveSpawnTimeMemoryContext, X as messageAgent, Xn as markAgentRunningState, Zn as markAgentStoppedState, _n as buildSpawnEnvForModel, _r as isQualifiedAgentId, a as listRunningAgentsSync, an as getRoleRuntimeBaseCommand, ar as setAgentPaused, at as saveSessionId, b as init_agents, bn as getProviderExportsForModel, br as waitForAgentIdle, cn as roleAgentDefinitionPath, cr as wipeAgentStateDirs, en as describeOhmypiSpawnFailure, er as recordAgentFailureSync, et as getActivity, ft as stopAgent, gn as buildCavemanExports, gr as clearReadySignal, i as listRunningAgents, in as getProviderAuthMode, ir as saveAgentStateSync, jn as GOVERNOR_SLOT_PAUSE_REASON_PREFIX, jt as deliverInitialPromptWithRetry, kn as dismissDevChannelsDialog, kt as deliverAgentMessage, ln as waitForPromptReady, lr as writeAgentStateJsonSync, lt as spawnAgent, nr as resetAgentFailureCount, nt as getLatestSessionIdSync, o as warnOnBareNumericIssueIds, or as setAgentPausedSync, pt as stopAgentSync, qn as isAgentTroubled, r as listAgentStates, rr as saveAgentState, rt as getSessionId, sn as injectPiConversationMemory, sr as setAgentYieldedSync, t as dropLegacyAgentStatesMissingRoleAsync, tn as getAgentRuntimeBaseCommand, tt as getLatestSessionId, ut as spawnRun, vn as determineModel, vr as normalizeAgentId, w as replayStandingAgent, x as compactAtTierRunBoundary, xn as getProviderTmuxFlags, xr as waitForReadySignal, yn as getProviderEnvForModel, yr as resolveAgentTargetSync, z as autoRecoverAgents } from "./queries-6d7Cdtm7.js";
|
|
2
|
-
init_agents();
|
|
3
|
-
export { GOVERNOR_SLOT_PAUSE_REASON_PREFIX, OHMYPI_AGENT_READY_TIMEOUT_SECONDS, SESSION_EXITED_BEFORE_KICKOFF, __testInternals, appendActivity, assertWorkspaceStackHealthyForSpawn, autoRecoverAgents, buildAgentLaunchConfig, buildCavemanExports, buildCompactRecoverySeed, buildDefaultResumeContinueMessage, buildSpawnEnvForModel, clearAgentPaused, clearAgentPausedSync, clearAgentTroubled, clearAgentTroubledSync, clearReadySignal, clearYieldForResumeSync, compactAtTierRunBoundary, contextWindowForModel, decideChannelsForWorkAgent, decideSupervisorForWorkAgent, deliverAgentMessage, deliverAgentPermissionDecision, deliverInitialPromptWithRetry, deliverResumeMessageWithTranscriptConfirmation, describeOhmypiSpawnFailure, detectCrashedAgents, determineModel, dismissDevChannelsDialog, dropLegacyAgentStatesMissingRoleAsync, getActivity, getAgentDir, getAgentRuntimeBaseCommand, getAgentRuntimeState, getAgentRuntimeStateSync, getAgentState, getAgentStateFilePath, getAgentStateSync, getLatestSessionId, getLatestSessionIdSync, getProviderAuthMode, getProviderEnvForModel, getProviderExportsForModel, getProviderTmuxFlags, getRoleRuntimeBaseCommand, getSessionId, injectPiConversationMemory, isAgentPaused, isAgentTroubled, isQualifiedAgentId, isRole, listAgentStates, listRunningAgents, listRunningAgentsSync, markAgentRunningState, markAgentStoppedState, markAgentTroubled, messageAgent, normalizeAgentId, recordAgentFailure, recordAgentFailureSync, recoverAgent, replayCrashedStandingAgent, replayStandingAgent, resetAgentFailureCount, resolveAgentTargetSync, restartAgent, resumeAgent, retrieveSpawnTimeMemoryContext, roleAgentDefinitionPath, saveAgentRuntimeState, saveAgentState, saveAgentStateSync, saveSessionId, setAgentDeliveryMethod, setAgentPaused, setAgentPausedSync, setAgentYieldedSync, shouldReplayCompactAtTierRunBoundary, spawnAgent, spawnRun, stopAgent, stopAgentSync, transitionIssueToInProgress, transitionIssueToInReview, waitForAgentIdle, waitForPromptReady, waitForReadySignal, warnOnBareNumericIssueIds, wipeAgentStateDirs, writeAgentStateJsonSync, writeChannelsBridgeMcpConfig };
|
package/server/cli-BsVIHwzC.js
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import { n as __esmMin } from "./rolldown-runtime-DNCzzKnI.js";
|
|
2
|
-
import { Vr as init_paths, mr as init_errors } from "./config-yaml-DvyMuOle.js";
|
|
3
|
-
import { o as init_layers } from "./layers-DzxSTGNA.js";
|
|
4
|
-
import "effect";
|
|
5
|
-
import "fs";
|
|
6
|
-
import "path";
|
|
7
|
-
import "os";
|
|
8
|
-
//#region ../../lib/context-layers/harness.ts
|
|
9
|
-
/**
|
|
10
|
-
* Render a canonical layer body for a single harness.
|
|
11
|
-
*
|
|
12
|
-
* Strips every `{{#harness:*}}` / `{{/harness:*}}` marker and drops the spans
|
|
13
|
-
* that are not covered by the target harness. Runs of 3+ blank lines left by
|
|
14
|
-
* removed spans collapse to a single blank line so output stays tidy.
|
|
15
|
-
*/
|
|
16
|
-
function renderForHarness(content, harness) {
|
|
17
|
-
const target = HARNESS_MARKERS[harness];
|
|
18
|
-
const openCounts = /* @__PURE__ */ new Map();
|
|
19
|
-
let out = "";
|
|
20
|
-
let lastIndex = 0;
|
|
21
|
-
const emit = (text) => {
|
|
22
|
-
let covered = false;
|
|
23
|
-
let anyOpen = false;
|
|
24
|
-
for (const [name, count] of openCounts) if (count > 0) {
|
|
25
|
-
anyOpen = true;
|
|
26
|
-
if (name === target) covered = true;
|
|
27
|
-
}
|
|
28
|
-
if (!anyOpen || covered) out += text;
|
|
29
|
-
};
|
|
30
|
-
MARKER_RE.lastIndex = 0;
|
|
31
|
-
let m;
|
|
32
|
-
while ((m = MARKER_RE.exec(content)) !== null) {
|
|
33
|
-
emit(content.slice(lastIndex, m.index));
|
|
34
|
-
const [, kind, name] = m;
|
|
35
|
-
const delta = kind === "#" ? 1 : -1;
|
|
36
|
-
openCounts.set(name, (openCounts.get(name) ?? 0) + delta);
|
|
37
|
-
lastIndex = m.index + m[0].length;
|
|
38
|
-
}
|
|
39
|
-
emit(content.slice(lastIndex));
|
|
40
|
-
return out.replace(/\n{3,}/g, "\n\n");
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Lint a context-layer template for malformed harness blocks.
|
|
44
|
-
*
|
|
45
|
-
* Errors: an unclosed `{{#harness:x}}` or a stray `{{/harness:x}}` with no
|
|
46
|
-
* matching open. Warnings: a marker naming a harness Overdeck has no
|
|
47
|
-
* adapter for (allowed for forward compatibility, surfaced so typos —
|
|
48
|
-
* `{{#harness:clade}}` — do not pass silently).
|
|
49
|
-
*/
|
|
50
|
-
function validateTemplate(content) {
|
|
51
|
-
const issues = [];
|
|
52
|
-
const openCounts = /* @__PURE__ */ new Map();
|
|
53
|
-
const seen = /* @__PURE__ */ new Set();
|
|
54
|
-
MARKER_RE.lastIndex = 0;
|
|
55
|
-
let m;
|
|
56
|
-
while ((m = MARKER_RE.exec(content)) !== null) {
|
|
57
|
-
const [, kind, name] = m;
|
|
58
|
-
seen.add(name);
|
|
59
|
-
if (kind === "#") openCounts.set(name, (openCounts.get(name) ?? 0) + 1);
|
|
60
|
-
else {
|
|
61
|
-
const next = (openCounts.get(name) ?? 0) - 1;
|
|
62
|
-
openCounts.set(name, next);
|
|
63
|
-
if (next < 0) issues.push({
|
|
64
|
-
severity: "error",
|
|
65
|
-
message: `stray closing marker {{/harness:${name}}} with no matching {{#harness:${name}}}`
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
for (const [name, count] of openCounts) if (count > 0) issues.push({
|
|
70
|
-
severity: "error",
|
|
71
|
-
message: `unclosed block: {{#harness:${name}}} opened ${count} time(s) without a matching {{/harness:${name}}}`
|
|
72
|
-
});
|
|
73
|
-
for (const name of seen) if (!KNOWN_HARNESS_MARKERS.has(name)) issues.push({
|
|
74
|
-
severity: "warning",
|
|
75
|
-
message: `unknown harness "${name}" — Overdeck ships adapters for: ${[...KNOWN_HARNESS_MARKERS].join(", ")}`
|
|
76
|
-
});
|
|
77
|
-
return {
|
|
78
|
-
ok: !issues.some((i) => i.severity === "error"),
|
|
79
|
-
issues
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
var HARNESS_MARKERS, KNOWN_HARNESS_MARKERS, MARKER_RE;
|
|
83
|
-
var init_harness = __esmMin((() => {
|
|
84
|
-
HARNESS_MARKERS = {
|
|
85
|
-
"claude-code": "claude",
|
|
86
|
-
ohmypi: "ohmypi",
|
|
87
|
-
codex: "codex"
|
|
88
|
-
};
|
|
89
|
-
KNOWN_HARNESS_MARKERS = new Set([
|
|
90
|
-
"claude",
|
|
91
|
-
"pi",
|
|
92
|
-
"ohmypi",
|
|
93
|
-
"codex"
|
|
94
|
-
]);
|
|
95
|
-
MARKER_RE = /\{\{([#/])harness:([a-zA-Z0-9_-]+)\}\}/g;
|
|
96
|
-
}));
|
|
97
|
-
//#endregion
|
|
98
|
-
//#region ../../lib/context-layers/rules.ts
|
|
99
|
-
var init_rules = __esmMin((() => {
|
|
100
|
-
init_paths();
|
|
101
|
-
}));
|
|
102
|
-
//#endregion
|
|
103
|
-
//#region ../../lib/context-layers/render.ts
|
|
104
|
-
/** True when `existing` already contains a Overdeck-managed region. */
|
|
105
|
-
function hasManagedRegion(existing) {
|
|
106
|
-
const beginIdx = existing.indexOf(REGION_BEGIN);
|
|
107
|
-
const endIdx = existing.indexOf(REGION_END);
|
|
108
|
-
return beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Return `existing` with the Overdeck-managed region removed — i.e. only the
|
|
112
|
-
* hand-authored content the user owns, trimmed. When there is no region, the
|
|
113
|
-
* whole (trimmed) file is the user's. Used to decide whether a target file has
|
|
114
|
-
* pre-existing content worth preserving and backing up before first injection.
|
|
115
|
-
*/
|
|
116
|
-
function userContentOutsideRegion(existing) {
|
|
117
|
-
const beginIdx = existing.indexOf(REGION_BEGIN);
|
|
118
|
-
const endIdx = existing.lastIndexOf(REGION_END);
|
|
119
|
-
if (beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx) return (existing.slice(0, beginIdx) + existing.slice(endIdx + 29)).trim();
|
|
120
|
-
return existing.trim();
|
|
121
|
-
}
|
|
122
|
-
var REGION_BEGIN, REGION_END;
|
|
123
|
-
var init_render = __esmMin((() => {
|
|
124
|
-
init_rules();
|
|
125
|
-
init_layers();
|
|
126
|
-
REGION_BEGIN = "<!-- BEGIN OVERDECK CONTEXT — managed by `pan sync`; edit the layer source, not this region -->";
|
|
127
|
-
REGION_END = "<!-- END OVERDECK CONTEXT -->";
|
|
128
|
-
}));
|
|
129
|
-
//#endregion
|
|
130
|
-
//#region ../../lib/context-layers/assemble.ts
|
|
131
|
-
var init_assemble = __esmMin((() => {
|
|
132
|
-
init_render();
|
|
133
|
-
}));
|
|
134
|
-
//#endregion
|
|
135
|
-
//#region ../../lib/backup.ts
|
|
136
|
-
var init_backup = __esmMin((() => {
|
|
137
|
-
init_paths();
|
|
138
|
-
init_errors();
|
|
139
|
-
}));
|
|
140
|
-
//#endregion
|
|
141
|
-
//#region ../../lib/context-layers/legacy-beads-cleanup.ts
|
|
142
|
-
var init_legacy_beads_cleanup = __esmMin((() => {
|
|
143
|
-
init_backup();
|
|
144
|
-
init_render();
|
|
145
|
-
}));
|
|
146
|
-
//#endregion
|
|
147
|
-
//#region ../../lib/context-layers/migrate.ts
|
|
148
|
-
var init_migrate = __esmMin((() => {
|
|
149
|
-
init_layers();
|
|
150
|
-
}));
|
|
151
|
-
//#endregion
|
|
152
|
-
//#region ../../lib/context-layers/index.ts
|
|
153
|
-
var init_context_layers = __esmMin((() => {
|
|
154
|
-
init_harness();
|
|
155
|
-
init_layers();
|
|
156
|
-
init_rules();
|
|
157
|
-
init_render();
|
|
158
|
-
init_assemble();
|
|
159
|
-
init_legacy_beads_cleanup();
|
|
160
|
-
init_migrate();
|
|
161
|
-
}));
|
|
162
|
-
//#endregion
|
|
163
|
-
export { init_render as a, KNOWN_HARNESS_MARKERS as c, validateTemplate as d, hasManagedRegion as i, init_harness as l, REGION_BEGIN as n, userContentOutsideRegion as o, REGION_END as r, HARNESS_MARKERS as s, init_context_layers as t, renderForHarness as u };
|
|
164
|
-
|
|
165
|
-
//# sourceMappingURL=context-layers-ZYFcWiyc.js.map
|
package/server/dist-Bd3vn0Hw.js
DELETED