panopticon-cli 0.6.5 → 0.6.7
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/README.md +2 -2
- package/dist/{agents-DfYify9s.js → agents-CfFDs52G.js} +14 -14
- package/dist/{agents-DfYify9s.js.map → agents-CfFDs52G.js.map} +1 -1
- package/dist/{agents-BKsVoIc9.js → agents-D_2oRFVf.js} +1 -1
- package/dist/{archive-planning-BJrZ3tmN.js → archive-planning-D97ziGec.js} +3 -3
- package/dist/{archive-planning-BJrZ3tmN.js.map → archive-planning-D97ziGec.js.map} +1 -1
- package/dist/{archive-planning-C3m3hfa5.js → archive-planning-DK90wn9Q.js} +1 -1
- package/dist/{browser-Cvdznzc0.js → browser-CX7jXfXX.js} +1 -1
- package/dist/{browser-Cvdznzc0.js.map → browser-CX7jXfXX.js.map} +1 -1
- package/dist/{clean-planning-DvhZAUv4.js → clean-planning-D_lz4aQq.js} +2 -2
- package/dist/{clean-planning-DvhZAUv4.js.map → clean-planning-D_lz4aQq.js.map} +1 -1
- package/dist/clean-planning-x1S-JdmO.js +2 -0
- package/dist/cli/index.js +291 -760
- package/dist/cli/index.js.map +1 -1
- package/dist/{close-issue-Dr7yZmrr.js → close-issue-CaFE0stN.js} +11 -7
- package/dist/close-issue-CaFE0stN.js.map +1 -0
- package/dist/close-issue-CjcfZI9s.js +2 -0
- package/dist/compact-beads-B0_qE1w3.js +2 -0
- package/dist/{compact-beads-BCOtIIRl.js → compact-beads-CjFkteSU.js} +2 -2
- package/dist/{compact-beads-BCOtIIRl.js.map → compact-beads-CjFkteSU.js.map} +1 -1
- package/dist/{config-CRzMQRgA.js → config-BQNKsi9G.js} +2 -2
- package/dist/{config-CRzMQRgA.js.map → config-BQNKsi9G.js.map} +1 -1
- package/dist/{config-BYgUzQ21.js → config-agyKgF5C.js} +1 -1
- package/dist/{config-yaml-BgOACZAB.js → config-yaml-DGbLSMCa.js} +1 -1
- package/dist/{config-yaml-BgOACZAB.js.map → config-yaml-DGbLSMCa.js.map} +1 -1
- package/dist/{config-yaml-fdyvyL0S.js → config-yaml-Dqt4FWQH.js} +1 -1
- package/dist/dashboard/{acceptance-criteria-e5iiHlRx.js → acceptance-criteria-Dk9hhiYj.js} +1 -1
- package/dist/dashboard/{acceptance-criteria-e5iiHlRx.js.map → acceptance-criteria-Dk9hhiYj.js.map} +1 -1
- package/dist/dashboard/{agent-enrichment-C67LJBgD.js → agent-enrichment-DdO7ZqjI.js} +11 -7
- package/dist/dashboard/agent-enrichment-DdO7ZqjI.js.map +1 -0
- package/dist/dashboard/{agent-enrichment-Cq0P1cNZ.js → agent-enrichment-dLeGE1fX.js} +1 -1
- package/dist/dashboard/{agents-YyO6t5Xa.js → agents-DCpQQ_W5.js} +14 -14
- package/dist/dashboard/{agents-YyO6t5Xa.js.map → agents-DCpQQ_W5.js.map} +1 -1
- package/dist/dashboard/{agents-BVBVCyat.js → agents-Dgh2TjSp.js} +1 -1
- package/dist/dashboard/{archive-planning-h-hAjk0P.js → archive-planning-BmW9UDTr.js} +3 -3
- package/dist/dashboard/{archive-planning-h-hAjk0P.js.map → archive-planning-BmW9UDTr.js.map} +1 -1
- package/dist/dashboard/{archive-planning-CScs1MOC.js → archive-planning-C3Ebf9yC.js} +1 -1
- package/dist/dashboard/{beads-qNB0yAHV.js → beads-Bv-AdX7G.js} +3 -3
- package/dist/dashboard/{beads-qNB0yAHV.js.map → beads-Bv-AdX7G.js.map} +1 -1
- package/dist/dashboard/{beads-D_FRedEJ.js → beads-By6-X07V.js} +1 -1
- package/dist/dashboard/clean-planning-D60L8rPY.js +2 -0
- package/dist/dashboard/{clean-planning-qafw99vY.js → clean-planning-VEJu5suh.js} +2 -2
- package/dist/dashboard/{clean-planning-qafw99vY.js.map → clean-planning-VEJu5suh.js.map} +1 -1
- package/dist/dashboard/close-issue-C2KeSKKJ.js +2 -0
- package/dist/dashboard/{close-issue-DfIggeZD.js → close-issue-DtKdsSTm.js} +11 -7
- package/dist/dashboard/close-issue-DtKdsSTm.js.map +1 -0
- package/dist/dashboard/compact-beads-C7BN5N11.js +2 -0
- package/dist/dashboard/{compact-beads-Dt0qTqsC.js → compact-beads-D8Vt3qyv.js} +2 -2
- package/dist/dashboard/{compact-beads-Dt0qTqsC.js.map → compact-beads-D8Vt3qyv.js.map} +1 -1
- package/dist/dashboard/{config-CUREjHP7.js → config-CDkGjnwy.js} +2 -2
- package/dist/dashboard/{config-CUREjHP7.js.map → config-CDkGjnwy.js.map} +1 -1
- package/dist/dashboard/{config-BeI3uy-8.js → config-CTXkBATQ.js} +1 -1
- package/dist/dashboard/{database-CozA13Wy.js → database-DhqASALP.js} +1 -1
- package/dist/dashboard/{database-C0y0hXBx.js → database-cxmQryoh.js} +2 -2
- package/dist/dashboard/{database-C0y0hXBx.js.map → database-cxmQryoh.js.map} +1 -1
- package/dist/dashboard/{dist-src-oG2iHzgI.js → dist-src-DTm11oQr.js} +1 -1
- package/dist/dashboard/{dist-src-oG2iHzgI.js.map → dist-src-DTm11oQr.js.map} +1 -1
- package/dist/dashboard/{event-store-D7kLBd07.js → event-store-VWWUmOfn.js} +1 -1
- package/dist/dashboard/{event-store-O9q0Gweh.js → event-store-vSmAA3Zp.js} +9 -4
- package/dist/dashboard/event-store-vSmAA3Zp.js.map +1 -0
- package/dist/dashboard/{factory-BnLdiQW-.js → factory-C8nhLGHB.js} +3 -3
- package/dist/dashboard/{factory-BnLdiQW-.js.map → factory-C8nhLGHB.js.map} +1 -1
- package/dist/dashboard/{feedback-writer-DyovUANg.js → feedback-writer-CudSe1WK.js} +2 -2
- package/dist/dashboard/{feedback-writer-DyovUANg.js.map → feedback-writer-CudSe1WK.js.map} +1 -1
- package/dist/dashboard/{feedback-writer-gSUv_W0h.js → feedback-writer-Wgv1cd1r.js} +1 -1
- package/dist/dashboard/{git-utils-BJRioREj.js → git-utils-C1m4SwAe.js} +1 -1
- package/dist/dashboard/{git-utils-BJRioREj.js.map → git-utils-C1m4SwAe.js.map} +1 -1
- package/dist/dashboard/{git-utils-BtCRddq3.js → git-utils-DQI8EYoj.js} +1 -1
- package/dist/dashboard/{github-app-XO-LBUGk.js → github-app-DClWjjHr.js} +1 -1
- package/dist/dashboard/{github-app-XO-LBUGk.js.map → github-app-DClWjjHr.js.map} +1 -1
- package/dist/dashboard/{health-events-db-584nYgJB.js → health-events-db-BMXQfInV.js} +1 -1
- package/dist/dashboard/{health-events-db-B3ChzN65.js → health-events-db-Do4NrOhC.js} +2 -2
- package/dist/dashboard/{health-events-db-B3ChzN65.js.map → health-events-db-Do4NrOhC.js.map} +1 -1
- package/dist/dashboard/{hooks-CKhs3N68.js → hooks-CB4T47NC.js} +1 -1
- package/dist/dashboard/{hooks-CErbP8Oq.js → hooks-CjqXOlNb.js} +2 -2
- package/dist/dashboard/{hooks-CErbP8Oq.js.map → hooks-CjqXOlNb.js.map} +1 -1
- package/dist/dashboard/hume-CA2pftu_.js +3 -0
- package/dist/dashboard/{hume-CX_U3Qha.js → hume-JsAlMOJC.js} +2 -2
- package/dist/dashboard/{hume-CX_U3Qha.js.map → hume-JsAlMOJC.js.map} +1 -1
- package/dist/dashboard/{inspect-agent-B57kGDUV.js → inspect-agent-7eour7EA.js} +3 -3
- package/dist/dashboard/{inspect-agent-B57kGDUV.js.map → inspect-agent-7eour7EA.js.map} +1 -1
- package/dist/dashboard/{io-yGovuG4U.js → io-CWlFW78i.js} +1 -1
- package/dist/dashboard/{io-AJg-mzFi.js → io-DKS6359z.js} +1 -1
- package/dist/dashboard/{io-AJg-mzFi.js.map → io-DKS6359z.js.map} +1 -1
- package/dist/dashboard/issue-id-vwYJdsf8.js +62 -0
- package/dist/dashboard/issue-id-vwYJdsf8.js.map +1 -0
- package/dist/dashboard/{issue-service-singleton-DQK42EqH.js → issue-service-singleton-Co__-6kL.js} +1 -1
- package/dist/dashboard/{issue-service-singleton-sb2HkB9f.js → issue-service-singleton-Wv4xBm3y.js} +7 -7
- package/dist/dashboard/{issue-service-singleton-sb2HkB9f.js.map → issue-service-singleton-Wv4xBm3y.js.map} +1 -1
- package/dist/dashboard/{label-cleanup-CZEsbtq9.js → label-cleanup-nVKTmIIW.js} +7 -4
- package/dist/dashboard/label-cleanup-nVKTmIIW.js.map +1 -0
- package/dist/dashboard/lifecycle-BcUmtkR4.js +7 -0
- package/dist/dashboard/{merge-agent-GLtMEsTu.js → merge-agent-CGN3TT0a.js} +1 -1
- package/dist/dashboard/{merge-agent-twroFuAh.js → merge-agent-yudQOPZc.js} +148 -46
- package/dist/dashboard/merge-agent-yudQOPZc.js.map +1 -0
- package/dist/dashboard/{paths-COdEvoXR.js → paths-BDyJ7BiV.js} +19 -2
- package/dist/dashboard/{paths-COdEvoXR.js.map → paths-BDyJ7BiV.js.map} +1 -1
- package/dist/dashboard/{pipeline-notifier-DM5AHG5Q.js → pipeline-notifier-CCSN-jar.js} +1 -1
- package/dist/dashboard/{pipeline-notifier-DM5AHG5Q.js.map → pipeline-notifier-CCSN-jar.js.map} +1 -1
- package/dist/dashboard/{plan-utils-BkCIhn3B.js → plan-utils-Bkcsqr_s.js} +3 -3
- package/dist/dashboard/{plan-utils-BkCIhn3B.js.map → plan-utils-Bkcsqr_s.js.map} +1 -1
- package/dist/dashboard/{prd-draft-D09Afalc.js → prd-draft-BD8oMkZ1.js} +2 -2
- package/dist/dashboard/{prd-draft-D09Afalc.js.map → prd-draft-BD8oMkZ1.js.map} +1 -1
- package/dist/dashboard/{projection-cache-DQ9zegkK.js → projection-cache-C0EL8s8h.js} +1 -1
- package/dist/dashboard/{projection-cache-DQ9zegkK.js.map → projection-cache-C0EL8s8h.js.map} +1 -1
- package/dist/dashboard/{projects-DyT3vSy-.js → projects-C5ozxjwP.js} +1 -1
- package/dist/dashboard/{projects-Cq3TWdPS.js → projects-CFVl4oHn.js} +25 -13
- package/dist/dashboard/projects-CFVl4oHn.js.map +1 -0
- package/dist/dashboard/{providers-Ck2sQd_F.js → providers-B5Y4H2Mg.js} +4 -4
- package/dist/dashboard/providers-B5Y4H2Mg.js.map +1 -0
- package/dist/dashboard/{providers-DVQnDekG.js → providers-csVZVPkE.js} +1 -1
- package/dist/dashboard/public/assets/{dist-CCJbQrSB.js → dist-CXaO6nOE.js} +1 -1
- package/dist/dashboard/public/assets/index-CzFZIb87.js +212 -0
- package/dist/dashboard/public/assets/index-OEEbThNN.css +1 -0
- package/dist/dashboard/public/index.html +2 -2
- package/dist/dashboard/rally-6McpKKRa.js +3 -0
- package/dist/dashboard/{rally-Cwuae-4C.js → rally-YjFRxIiC.js} +2 -2
- package/dist/dashboard/{rally-Cwuae-4C.js.map → rally-YjFRxIiC.js.map} +1 -1
- package/dist/dashboard/{rally-api-DSUxm7EO.js → rally-api-C0WqCSkT.js} +1 -1
- package/dist/dashboard/{rally-api-DSUxm7EO.js.map → rally-api-C0WqCSkT.js.map} +1 -1
- package/dist/dashboard/{rally-api-CEH5KZi4.js → rally-api-DNttdCW4.js} +1 -1
- package/dist/dashboard/{remote-BHTTMpJJ.js → remote-Cigqjj3f.js} +2 -2
- package/dist/dashboard/{remote-BXo_iIku.js → remote-ObpNZ7hF.js} +2 -2
- package/dist/dashboard/{remote-BXo_iIku.js.map → remote-ObpNZ7hF.js.map} +1 -1
- package/dist/dashboard/{remote-agents-CTKVhFFY.js → remote-agents-Bf3GuM7t.js} +1 -1
- package/dist/dashboard/{remote-agents-C0_0LLNd.js → remote-agents-DFyjT1Le.js} +1 -1
- package/dist/dashboard/{remote-agents-C0_0LLNd.js.map → remote-agents-DFyjT1Le.js.map} +1 -1
- package/dist/dashboard/{review-status-CK3eBGyb.js → review-status-BtXqWBhS.js} +1 -1
- package/dist/dashboard/{review-status-CV55Tl-n.js → review-status-Bymwzh2i.js} +44 -4
- package/dist/dashboard/{review-status-CV55Tl-n.js.map → review-status-Bymwzh2i.js.map} +1 -1
- package/dist/dashboard/server.js +559 -253
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/{settings-CuHV-wcv.js → settings-BHlDG7TK.js} +2 -2
- package/dist/dashboard/settings-BHlDG7TK.js.map +1 -0
- package/dist/dashboard/settings-XWvDcj-D.js +2 -0
- package/dist/dashboard/{shadow-engineering-BUeZunaE.js → shadow-engineering-lIn1W_95.js} +1 -1
- package/dist/dashboard/{shadow-engineering-BUeZunaE.js.map → shadow-engineering-lIn1W_95.js.map} +1 -1
- package/dist/dashboard/{shadow-state-DHQ-kASN.js → shadow-state-BIexcxkv.js} +1 -1
- package/dist/dashboard/{shadow-state-DHQ-kASN.js.map → shadow-state-BIexcxkv.js.map} +1 -1
- package/dist/dashboard/{spawn-planning-session-8FFAqLdK.js → spawn-planning-session-33Jf-d5T.js} +6 -6
- package/dist/dashboard/{spawn-planning-session-8FFAqLdK.js.map → spawn-planning-session-33Jf-d5T.js.map} +1 -1
- package/dist/dashboard/{spawn-planning-session-U0Lqpjen.js → spawn-planning-session-D5hrVdWM.js} +1 -1
- package/dist/dashboard/{specialist-context-ColzlmGE.js → specialist-context-DGukHSn8.js} +6 -6
- package/dist/dashboard/{specialist-context-ColzlmGE.js.map → specialist-context-DGukHSn8.js.map} +1 -1
- package/dist/dashboard/{specialist-logs-BhmDpFIq.js → specialist-logs-CIw4qfTy.js} +1 -1
- package/dist/dashboard/{specialists-C6s3U6tX.js → specialists-B_zrayaP.js} +37 -36
- package/dist/dashboard/specialists-B_zrayaP.js.map +1 -0
- package/dist/dashboard/{specialists-Cny632-T.js → specialists-Cp-PgspS.js} +1 -1
- package/dist/dashboard/{test-agent-queue-tqI4VDsu.js → test-agent-queue-ypF_ecHo.js} +4 -4
- package/dist/dashboard/{test-agent-queue-tqI4VDsu.js.map → test-agent-queue-ypF_ecHo.js.map} +1 -1
- package/dist/dashboard/{tldr-daemon-BNFyS7W_.js → tldr-daemon-B_oLRD8z.js} +2 -2
- package/dist/dashboard/{tldr-daemon-BNFyS7W_.js.map → tldr-daemon-B_oLRD8z.js.map} +1 -1
- package/dist/dashboard/{tldr-daemon-A6JqC59u.js → tldr-daemon-Cfs0bXTi.js} +1 -1
- package/dist/dashboard/{tmux-DYGAVJfb.js → tmux-BzxdKItf.js} +1 -1
- package/dist/dashboard/{tmux-IlN1Slv-.js → tmux-LwG0tHhU.js} +2 -2
- package/dist/dashboard/{tmux-IlN1Slv-.js.map → tmux-LwG0tHhU.js.map} +1 -1
- package/dist/dashboard/{tracker-config-BzNLnmcE.js → tracker-config-BP59uH4V.js} +1 -1
- package/dist/dashboard/{tracker-config-CNM_5rEf.js → tracker-config-e7ph1QqT.js} +2 -2
- package/dist/dashboard/{tracker-config-CNM_5rEf.js.map → tracker-config-e7ph1QqT.js.map} +1 -1
- package/dist/dashboard/{tunnel-D2BkwU7k.js → tunnel-0RzzuXPf.js} +1 -1
- package/dist/dashboard/{tunnel-Dub2hiAA.js → tunnel-DldbBPWL.js} +2 -2
- package/dist/dashboard/{tunnel-Dub2hiAA.js.map → tunnel-DldbBPWL.js.map} +1 -1
- package/dist/dashboard/{types-CWA-o4UN.js → types-RKZjGE5N.js} +1 -1
- package/dist/dashboard/{types-CWA-o4UN.js.map → types-RKZjGE5N.js.map} +1 -1
- package/dist/dashboard/{vtt-parser-BAXygRf0.js → vtt-parser-99vFekRQ.js} +1 -1
- package/dist/dashboard/{vtt-parser-BAXygRf0.js.map → vtt-parser-99vFekRQ.js.map} +1 -1
- package/dist/dashboard/{work-agent-prompt-JYq_OugP.js → work-agent-prompt-fCg67nyo.js} +65 -10
- package/dist/dashboard/{work-agent-prompt-JYq_OugP.js.map → work-agent-prompt-fCg67nyo.js.map} +1 -1
- package/dist/dashboard/{work-type-router-Cxp8_ur2.js → work-type-router-CWVW2Wk_.js} +1 -1
- package/dist/dashboard/{work-type-router-Cxp8_ur2.js.map → work-type-router-CWVW2Wk_.js.map} +1 -1
- package/dist/dashboard/{work-type-router-Com2amST.js → work-type-router-Di5gCQwh.js} +1 -1
- package/dist/dashboard/{workflows-N1UTipYl.js → workflows-BSMipN07.js} +35 -17
- package/dist/dashboard/workflows-BSMipN07.js.map +1 -0
- package/dist/dashboard/workflows-DaYWQIS2.js +2 -0
- package/dist/dashboard/{workspace-config-cmp5_ipD.js → workspace-config-DVDR-Ukh.js} +1 -1
- package/dist/dashboard/workspace-config-DVDR-Ukh.js.map +1 -0
- package/dist/dashboard/{workspace-manager-CjpWPgzL.js → workspace-manager-BYfzs_t2.js} +1 -1
- package/dist/dashboard/{workspace-manager-D_y9ZmW_.js → workspace-manager-C7OfT62A.js} +44 -24
- package/dist/dashboard/workspace-manager-C7OfT62A.js.map +1 -0
- package/dist/{dns-BKzHm-2q.js → dns-D_aKQJjb.js} +1 -1
- package/dist/{dns-DZwOWvVO.js → dns-Yxq4NNS7.js} +1 -1
- package/dist/{dns-DZwOWvVO.js.map → dns-Yxq4NNS7.js.map} +1 -1
- package/dist/{factory-DFu3IT4r.js → factory-BRBGw6OB.js} +1 -1
- package/dist/{factory-DfzczxN1.js → factory-DzsOiZVc.js} +3 -3
- package/dist/{factory-DfzczxN1.js.map → factory-DzsOiZVc.js.map} +1 -1
- package/dist/{feedback-writer-CwdnOkPO.js → feedback-writer-ygXN5F9N.js} +2 -2
- package/dist/{feedback-writer-CwdnOkPO.js.map → feedback-writer-ygXN5F9N.js.map} +1 -1
- package/dist/{github-app-CHKwxOeQ.js → github-app-DykduJ0X.js} +1 -1
- package/dist/{github-app-CHKwxOeQ.js.map → github-app-DykduJ0X.js.map} +1 -1
- package/dist/hume-9nv1VmMV.js +3 -0
- package/dist/{hume-DnV-tDsh.js → hume-DoCbph2h.js} +2 -2
- package/dist/{hume-DnV-tDsh.js.map → hume-DoCbph2h.js.map} +1 -1
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -7
- package/dist/issue-id-CAcekoIw.js +62 -0
- package/dist/issue-id-CAcekoIw.js.map +1 -0
- package/dist/{label-cleanup-31ElPqqv.js → label-cleanup-C8R9Rspn.js} +7 -4
- package/dist/label-cleanup-C8R9Rspn.js.map +1 -0
- package/dist/{manifest-DL0oDbpv.js → manifest-B4ghOD-V.js} +1 -1
- package/dist/{manifest-DL0oDbpv.js.map → manifest-B4ghOD-V.js.map} +1 -1
- package/dist/{merge-agent-VQH9z9t8.js → merge-agent-DlUiUanN.js} +86 -33
- package/dist/merge-agent-DlUiUanN.js.map +1 -0
- package/dist/{paths-lMaxrYtT.js → paths-CDJ_HsbN.js} +19 -2
- package/dist/{paths-lMaxrYtT.js.map → paths-CDJ_HsbN.js.map} +1 -1
- package/dist/{pipeline-notifier-OJ-d3Y60.js → pipeline-notifier-XgDdCdvT.js} +1 -1
- package/dist/{pipeline-notifier-OJ-d3Y60.js.map → pipeline-notifier-XgDdCdvT.js.map} +1 -1
- package/dist/{projects-CvLepaxC.js → projects-Bk-5QhFQ.js} +25 -13
- package/dist/projects-Bk-5QhFQ.js.map +1 -0
- package/dist/{projects-DMWmPeIU.js → projects-DhU7rAVN.js} +1 -1
- package/dist/{providers-DcCPZ5K4.js → providers-DSU1vfQF.js} +4 -4
- package/dist/providers-DSU1vfQF.js.map +1 -0
- package/dist/rally-DdPvGa-w.js +3 -0
- package/dist/{rally-uUUZXp1h.js → rally-Dy00NElU.js} +1 -1
- package/dist/{rally-uUUZXp1h.js.map → rally-Dy00NElU.js.map} +1 -1
- package/dist/{remote-CkLBqLJc.js → remote-CYiOJg0q.js} +2 -2
- package/dist/{remote-CkLBqLJc.js.map → remote-CYiOJg0q.js.map} +1 -1
- package/dist/{remote-agents-C5Bd2fgt.js → remote-agents-CZXrUF4f.js} +1 -1
- package/dist/{remote-agents-C5Bd2fgt.js.map → remote-agents-CZXrUF4f.js.map} +1 -1
- package/dist/{remote-agents-BTzD-wMQ.js → remote-agents-ycHHVsgf.js} +1 -1
- package/dist/{remote-workspace-Dxghqiti.js → remote-workspace-CA33UuVI.js} +4 -4
- package/dist/{remote-workspace-Dxghqiti.js.map → remote-workspace-CA33UuVI.js.map} +1 -1
- package/dist/{review-status-2TdtHNcs.js → review-status-D6H2WOw8.js} +1 -1
- package/dist/{review-status-Bm1bWNEa.js → review-status-DEDvCKMP.js} +44 -4
- package/dist/{review-status-Bm1bWNEa.js.map → review-status-DEDvCKMP.js.map} +1 -1
- package/dist/{tracker-C_62ukEq.js → settings-BcWPTrua.js} +7 -199
- package/dist/settings-BcWPTrua.js.map +1 -0
- package/dist/shadow-state-BZzxfEGw.js +2 -0
- package/dist/{shadow-state-CFFHf05M.js → shadow-state-CE3dQfll.js} +1 -1
- package/dist/{shadow-state-CFFHf05M.js.map → shadow-state-CE3dQfll.js.map} +1 -1
- package/dist/{specialist-context-BdNFsfMG.js → specialist-context-BAUWL1Fl.js} +6 -6
- package/dist/{specialist-context-BdNFsfMG.js.map → specialist-context-BAUWL1Fl.js.map} +1 -1
- package/dist/{specialist-logs-CLztE_bE.js → specialist-logs-DQKKQV9B.js} +1 -1
- package/dist/{specialists-aUoUVWsN.js → specialists-Bfb9ATzw.js} +1 -1
- package/dist/{specialists-DEKqgkxp.js → specialists-D7Kj5o6s.js} +35 -34
- package/dist/specialists-D7Kj5o6s.js.map +1 -0
- package/dist/sync-DMfgd389.js +693 -0
- package/dist/sync-DMfgd389.js.map +1 -0
- package/dist/sync-TL6y-8K6.js +2 -0
- package/dist/{tldr-daemon-BCEFPItr.js → tldr-daemon-CFx4LXAl.js} +2 -2
- package/dist/{tldr-daemon-BCEFPItr.js.map → tldr-daemon-CFx4LXAl.js.map} +1 -1
- package/dist/{tldr-daemon-xBAx4cBE.js → tldr-daemon-D_EooADG.js} +1 -1
- package/dist/{tmux-DN6H886Y.js → tmux-CBtui_Cl.js} +1 -1
- package/dist/{tmux-CKdNxxJx.js → tmux-D6Ah4I8z.js} +2 -2
- package/dist/{tmux-CKdNxxJx.js.map → tmux-D6Ah4I8z.js.map} +1 -1
- package/dist/tracker-BhYYvU3p.js +198 -0
- package/dist/tracker-BhYYvU3p.js.map +1 -0
- package/dist/{tracker-utils-CVU2W1sX.js → tracker-utils-ChQyut8w.js} +34 -12
- package/dist/tracker-utils-ChQyut8w.js.map +1 -0
- package/dist/{traefik-DHgBoWXX.js → traefik-C80EbDu_.js} +4 -4
- package/dist/{traefik-DHgBoWXX.js.map → traefik-C80EbDu_.js.map} +1 -1
- package/dist/{traefik-BR-edbZv.js → traefik-CgHl7Bge.js} +1 -1
- package/dist/{tunnel-BZO9Q5oe.js → tunnel-DXOJ1wMM.js} +1 -1
- package/dist/{tunnel-Bl1qNSyQ.js → tunnel-DzXEPwIc.js} +2 -2
- package/dist/{tunnel-Bl1qNSyQ.js.map → tunnel-DzXEPwIc.js.map} +1 -1
- package/dist/{types-DewGdaIP.js → types-BhJj1SP1.js} +1 -1
- package/dist/{types-DewGdaIP.js.map → types-BhJj1SP1.js.map} +1 -1
- package/dist/{work-type-router-CS2BB1vS.js → work-type-router-CHjciPyS.js} +3 -3
- package/dist/{work-type-router-CS2BB1vS.js.map → work-type-router-CHjciPyS.js.map} +1 -1
- package/dist/{workspace-config-CNXOpKuj.js → workspace-config-fUafvYMp.js} +1 -1
- package/dist/workspace-config-fUafvYMp.js.map +1 -0
- package/dist/workspace-manager-B9jS4Dsq.js +3 -0
- package/dist/{workspace-manager-CncdZkIy.js → workspace-manager-DuLhnzJV.js} +112 -27
- package/dist/workspace-manager-DuLhnzJV.js.map +1 -0
- package/package.json +2 -1
- package/scripts/post-merge-deploy.sh +25 -5
- package/scripts/record-cost-event.js +57 -7
- package/scripts/record-cost-event.js.map +1 -1
- package/skills/pan-help/SKILL.md +1 -1
- package/skills/pan-sync/SKILL.md +6 -6
- package/skills/workspace-add-repo/skill.md +46 -0
- package/templates/claude-md/sections/warnings.md +15 -2
- package/dist/clean-planning-sZXvy3Y5.js +0 -2
- package/dist/close-issue-Dml437qV.js +0 -2
- package/dist/close-issue-Dr7yZmrr.js.map +0 -1
- package/dist/compact-beads-iu218JcO.js +0 -2
- package/dist/dashboard/agent-enrichment-C67LJBgD.js.map +0 -1
- package/dist/dashboard/clean-planning-DCu3cOTu.js +0 -2
- package/dist/dashboard/close-issue-DfIggeZD.js.map +0 -1
- package/dist/dashboard/close-issue-DwdwYtar.js +0 -2
- package/dist/dashboard/compact-beads-DXY2fK2s.js +0 -2
- package/dist/dashboard/event-store-O9q0Gweh.js.map +0 -1
- package/dist/dashboard/hume-MZndNDVU.js +0 -3
- package/dist/dashboard/label-cleanup-CZEsbtq9.js.map +0 -1
- package/dist/dashboard/lifecycle-ZTYdrr2O.js +0 -7
- package/dist/dashboard/merge-agent-twroFuAh.js.map +0 -1
- package/dist/dashboard/projects-Cq3TWdPS.js.map +0 -1
- package/dist/dashboard/providers-Ck2sQd_F.js.map +0 -1
- package/dist/dashboard/public/assets/index-CpSmB2ts.css +0 -1
- package/dist/dashboard/public/assets/index-yarWhi0M.js +0 -214
- package/dist/dashboard/rally-CQ1OBJrJ.js +0 -3
- package/dist/dashboard/settings-CuHV-wcv.js.map +0 -1
- package/dist/dashboard/settings-DMeGBRsk.js +0 -2
- package/dist/dashboard/specialists-C6s3U6tX.js.map +0 -1
- package/dist/dashboard/workflows-B2ARUpOa.js +0 -2
- package/dist/dashboard/workflows-N1UTipYl.js.map +0 -1
- package/dist/dashboard/workspace-config-cmp5_ipD.js.map +0 -1
- package/dist/dashboard/workspace-manager-D_y9ZmW_.js.map +0 -1
- package/dist/hume-BjmwmJ9E.js +0 -3
- package/dist/label-cleanup-31ElPqqv.js.map +0 -1
- package/dist/merge-agent-VQH9z9t8.js.map +0 -1
- package/dist/projects-CvLepaxC.js.map +0 -1
- package/dist/providers-DcCPZ5K4.js.map +0 -1
- package/dist/rally-DR9x8--6.js +0 -3
- package/dist/shadow-state-p3jpGRPJ.js +0 -2
- package/dist/specialists-DEKqgkxp.js.map +0 -1
- package/dist/tracker-C_62ukEq.js.map +0 -1
- package/dist/tracker-utils-CVU2W1sX.js.map +0 -1
- package/dist/workspace-config-CNXOpKuj.js.map +0 -1
- package/dist/workspace-manager-CncdZkIy.js.map +0 -1
- package/dist/workspace-manager-Cx0r2Jnv.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive-planning-BJrZ3tmN.js","names":[],"sources":["../src/lib/lifecycle/archive-planning.ts"],"sourcesContent":["/**\n * archive-planning — PRD active→completed + .planning/ preservation.\n *\n * Consolidates PRD moving from close-out.ts, merge-agent.ts, and the\n * approve endpoint into a single idempotent operation.\n *\n * Steps:\n * 1. Move PRD from docs/prds/active/ → docs/prds/completed/ (git mv, fallback to copy)\n * 2. Archive workspace .planning/ artifacts to ~/.panopticon/archives/<issue>/\n * 3. Rotate previous archives to prevent overwrite\n */\n\nimport { existsSync, mkdirSync, cpSync, rmSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n ARCHIVES_DIR,\n PROJECT_DOCS_SUBDIR,\n PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_ACTIVE_SUBDIR,\n PROJECT_PRDS_COMPLETED_SUBDIR,\n} from '../paths.js';\nimport type { LifecycleContext, StepResult, ArchiveOptions } from './types.js';\nimport { stepOk, stepSkipped, stepFailed } from './types.js';\n\nconst execAsync = promisify(exec);\n\n/**\n * Find the workspace path for an issue.\n * Checks multiple conventional locations, including legacy numeric-suffix naming.\n */\nexport function findWorkspacePath(projectPath: string, issueLower: string): string | null {\n // e.g. \"pan-488\" → \"488\" for legacy workspaces named feature-488\n const numericSuffix = issueLower.replace(/^[a-z]+-/, '');\n const candidates = [\n join(projectPath, 'workspaces', `feature-${issueLower}`),\n join(projectPath, 'workspaces', `feature-${numericSuffix}`),\n join(projectPath, 'workspaces', issueLower),\n join(projectPath, '.worktrees', issueLower),\n join(dirname(projectPath), `feature-${issueLower}`),\n ];\n for (const p of candidates) {\n if (existsSync(p)) return p;\n }\n return null;\n}\n\n/**\n * Move PRD from active/ to completed/ directory.\n * Uses git mv with fallback to plain copy. Idempotent — skips if already completed.\n */\nexport async function movePrd(\n ctx: LifecycleContext,\n opts: ArchiveOptions = {},\n): Promise<StepResult> {\n const { pushToRemote = true } = opts;\n const issueLower = ctx.issueId.toLowerCase();\n const step = 'archive-planning:move-prd';\n\n // Per-issue subdirectory paths (new format: docs/prds/active/<issue-id>/STATE.md)\n const activeIssueDir = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_ACTIVE_SUBDIR, issueLower,\n );\n const completedIssueDir = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_COMPLETED_SUBDIR, issueLower,\n );\n\n // Legacy flat paths (old format: docs/prds/active/<issue-id>-plan.md)\n const legacyActivePrdPath = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_ACTIVE_SUBDIR, `${issueLower}-plan.md`,\n );\n const legacyCompletedPrdPath = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_COMPLETED_SUBDIR, `${issueLower}-plan.md`,\n );\n\n // Already in completed (either format) — idempotent skip\n if (existsSync(completedIssueDir) || existsSync(legacyCompletedPrdPath)) {\n return stepSkipped(step, ['PRD already in completed/']);\n }\n\n // Determine source: prefer new subdirectory format, fall back to legacy flat file\n const useNewFormat = existsSync(activeIssueDir);\n const useLegacyFormat = !useNewFormat && existsSync(legacyActivePrdPath);\n\n if (!useNewFormat && !useLegacyFormat) {\n return stepSkipped(step, ['No PRD found in active/ (may not have had one)']);\n }\n\n if (useNewFormat) {\n // Move entire issue subdirectory\n const completedParent = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR, PROJECT_PRDS_COMPLETED_SUBDIR,\n );\n if (!existsSync(completedParent)) {\n mkdirSync(completedParent, { recursive: true });\n }\n try {\n await execAsync(`git mv \"${activeIssueDir}\" \"${completedIssueDir}\"`, { cwd: ctx.projectPath });\n await execAsync(`git commit -m \"Move ${ctx.issueId} PRD to completed\"`, { cwd: ctx.projectPath });\n if (pushToRemote) {\n await execAsync('git push', { cwd: ctx.projectPath });\n }\n return stepOk(step, [`Moved PRD subdirectory from active/ to completed/ via git mv`]);\n } catch {\n // git mv failed — fall back to copy\n try {\n cpSync(activeIssueDir, completedIssueDir, { recursive: true });\n return stepOk(step, ['Copied PRD subdirectory to completed/ (git mv failed, plain copy succeeded)']);\n } catch (err) {\n return stepFailed(step, `Failed to preserve PRD: ${(err as Error).message}`);\n }\n }\n } else {\n // Legacy flat file: move single file\n const completedDir = dirname(legacyCompletedPrdPath);\n if (!existsSync(completedDir)) {\n mkdirSync(completedDir, { recursive: true });\n }\n try {\n await execAsync(`git mv \"${legacyActivePrdPath}\" \"${legacyCompletedPrdPath}\"`, { cwd: ctx.projectPath });\n await execAsync(`git commit -m \"Move ${ctx.issueId} PRD to completed\"`, { cwd: ctx.projectPath });\n if (pushToRemote) {\n await execAsync('git push', { cwd: ctx.projectPath });\n }\n return stepOk(step, [`Moved PRD from active/ to completed/ via git mv`]);\n } catch {\n try {\n cpSync(legacyActivePrdPath, legacyCompletedPrdPath);\n if (!existsSync(legacyCompletedPrdPath)) {\n return stepFailed(step, 'PRD copy appeared to succeed but file not found at destination');\n }\n return stepOk(step, ['Copied PRD to completed/ (git mv failed, plain copy succeeded)']);\n } catch (err) {\n return stepFailed(step, `Failed to preserve PRD: ${(err as Error).message}`);\n }\n }\n }\n\n}\n\n/**\n * Archive workspace .planning/ artifacts to ~/.panopticon/archives/<issue>/.\n * Rotates previous archives to prevent overwrite.\n * Returns a hard failure if archiving fails — callers must NOT proceed with\n * workspace deletion after an archive failure.\n */\nexport async function archiveWorkspaceArtifacts(\n ctx: LifecycleContext,\n): Promise<StepResult> {\n const issueLower = ctx.issueId.toLowerCase();\n const step = 'archive-planning:archive-artifacts';\n\n const workspacePath = findWorkspacePath(ctx.projectPath, issueLower);\n if (!workspacePath || !existsSync(workspacePath)) {\n return stepSkipped(step, ['No workspace found to archive']);\n }\n\n try {\n let archiveDir = join(ARCHIVES_DIR, issueLower);\n\n // Rotate previous archive if it exists\n if (existsSync(archiveDir)) {\n let version = 1;\n while (existsSync(`${archiveDir}.${version}`)) {\n version++;\n }\n const rotatedDir = `${archiveDir}.${version}`;\n cpSync(archiveDir, rotatedDir, { recursive: true });\n rmSync(archiveDir, { recursive: true, force: true });\n }\n\n mkdirSync(archiveDir, { recursive: true });\n const details: string[] = [];\n\n // Archive .planning/feedback/\n const feedbackDir = join(workspacePath, '.planning', 'feedback');\n if (existsSync(feedbackDir)) {\n cpSync(feedbackDir, join(archiveDir, 'feedback'), { recursive: true });\n details.push('Archived feedback/');\n }\n\n // Archive STATE.md\n const stateMd = join(workspacePath, '.planning', 'STATE.md');\n if (existsSync(stateMd)) {\n cpSync(stateMd, join(archiveDir, 'STATE.md'));\n details.push('Archived STATE.md');\n }\n\n // Archive beads/\n const beadsDir = join(workspacePath, '.planning', 'beads');\n if (existsSync(beadsDir)) {\n cpSync(beadsDir, join(archiveDir, 'beads'), { recursive: true });\n details.push('Archived beads/');\n }\n\n // Archive PRD.md (workspace copy — the docs/prds/ copy is canonical,\n // but this preserves the workspace-specific version with agent annotations)\n const prdMd = join(workspacePath, '.planning', 'PRD.md');\n if (existsSync(prdMd)) {\n cpSync(prdMd, join(archiveDir, 'PRD.md'));\n details.push('Archived workspace PRD.md');\n }\n\n details.push(`Archived to ${archiveDir}`);\n return stepOk(step, details);\n } catch (err) {\n return stepFailed(step, `Failed to archive: ${(err as Error).message}`);\n }\n}\n\n/**\n * Full archive-planning operation: move PRD + archive workspace artifacts.\n * Archive failure is a hard fail — do not proceed with workspace deletion.\n */\nexport async function archivePlanning(\n ctx: LifecycleContext,\n opts: ArchiveOptions = {},\n): Promise<StepResult[]> {\n const results: StepResult[] = [];\n\n // Step 1: Move PRD\n const prdResult = await movePrd(ctx, opts);\n results.push(prdResult);\n\n // Step 2: Archive workspace artifacts\n const archiveResult = await archiveWorkspaceArtifacts(ctx);\n results.push(archiveResult);\n\n return results;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"archive-planning-D97ziGec.js","names":[],"sources":["../src/lib/lifecycle/archive-planning.ts"],"sourcesContent":["/**\n * archive-planning — PRD active→completed + .planning/ preservation.\n *\n * Consolidates PRD moving from close-out.ts, merge-agent.ts, and the\n * approve endpoint into a single idempotent operation.\n *\n * Steps:\n * 1. Move PRD from docs/prds/active/ → docs/prds/completed/ (git mv, fallback to copy)\n * 2. Archive workspace .planning/ artifacts to ~/.panopticon/archives/<issue>/\n * 3. Rotate previous archives to prevent overwrite\n */\n\nimport { existsSync, mkdirSync, cpSync, rmSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n ARCHIVES_DIR,\n PROJECT_DOCS_SUBDIR,\n PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_ACTIVE_SUBDIR,\n PROJECT_PRDS_COMPLETED_SUBDIR,\n} from '../paths.js';\nimport type { LifecycleContext, StepResult, ArchiveOptions } from './types.js';\nimport { stepOk, stepSkipped, stepFailed } from './types.js';\n\nconst execAsync = promisify(exec);\n\n/**\n * Find the workspace path for an issue.\n * Checks multiple conventional locations, including legacy numeric-suffix naming.\n */\nexport function findWorkspacePath(projectPath: string, issueLower: string): string | null {\n // e.g. \"pan-488\" → \"488\" for legacy workspaces named feature-488\n const numericSuffix = issueLower.replace(/^[a-z]+-/, '');\n const candidates = [\n join(projectPath, 'workspaces', `feature-${issueLower}`),\n join(projectPath, 'workspaces', `feature-${numericSuffix}`),\n join(projectPath, 'workspaces', issueLower),\n join(projectPath, '.worktrees', issueLower),\n join(dirname(projectPath), `feature-${issueLower}`),\n ];\n for (const p of candidates) {\n if (existsSync(p)) return p;\n }\n return null;\n}\n\n/**\n * Move PRD from active/ to completed/ directory.\n * Uses git mv with fallback to plain copy. Idempotent — skips if already completed.\n */\nexport async function movePrd(\n ctx: LifecycleContext,\n opts: ArchiveOptions = {},\n): Promise<StepResult> {\n const { pushToRemote = true } = opts;\n const issueLower = ctx.issueId.toLowerCase();\n const step = 'archive-planning:move-prd';\n\n // Per-issue subdirectory paths (new format: docs/prds/active/<issue-id>/STATE.md)\n const activeIssueDir = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_ACTIVE_SUBDIR, issueLower,\n );\n const completedIssueDir = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_COMPLETED_SUBDIR, issueLower,\n );\n\n // Legacy flat paths (old format: docs/prds/active/<issue-id>-plan.md)\n const legacyActivePrdPath = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_ACTIVE_SUBDIR, `${issueLower}-plan.md`,\n );\n const legacyCompletedPrdPath = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR,\n PROJECT_PRDS_COMPLETED_SUBDIR, `${issueLower}-plan.md`,\n );\n\n // Already in completed (either format) — idempotent skip\n if (existsSync(completedIssueDir) || existsSync(legacyCompletedPrdPath)) {\n return stepSkipped(step, ['PRD already in completed/']);\n }\n\n // Determine source: prefer new subdirectory format, fall back to legacy flat file\n const useNewFormat = existsSync(activeIssueDir);\n const useLegacyFormat = !useNewFormat && existsSync(legacyActivePrdPath);\n\n if (!useNewFormat && !useLegacyFormat) {\n return stepSkipped(step, ['No PRD found in active/ (may not have had one)']);\n }\n\n if (useNewFormat) {\n // Move entire issue subdirectory\n const completedParent = join(\n ctx.projectPath, PROJECT_DOCS_SUBDIR, PROJECT_PRDS_SUBDIR, PROJECT_PRDS_COMPLETED_SUBDIR,\n );\n if (!existsSync(completedParent)) {\n mkdirSync(completedParent, { recursive: true });\n }\n try {\n await execAsync(`git mv \"${activeIssueDir}\" \"${completedIssueDir}\"`, { cwd: ctx.projectPath });\n await execAsync(`git commit -m \"Move ${ctx.issueId} PRD to completed\"`, { cwd: ctx.projectPath });\n if (pushToRemote) {\n await execAsync('git push', { cwd: ctx.projectPath });\n }\n return stepOk(step, [`Moved PRD subdirectory from active/ to completed/ via git mv`]);\n } catch {\n // git mv failed — fall back to copy\n try {\n cpSync(activeIssueDir, completedIssueDir, { recursive: true });\n return stepOk(step, ['Copied PRD subdirectory to completed/ (git mv failed, plain copy succeeded)']);\n } catch (err) {\n return stepFailed(step, `Failed to preserve PRD: ${(err as Error).message}`);\n }\n }\n } else {\n // Legacy flat file: move single file\n const completedDir = dirname(legacyCompletedPrdPath);\n if (!existsSync(completedDir)) {\n mkdirSync(completedDir, { recursive: true });\n }\n try {\n await execAsync(`git mv \"${legacyActivePrdPath}\" \"${legacyCompletedPrdPath}\"`, { cwd: ctx.projectPath });\n await execAsync(`git commit -m \"Move ${ctx.issueId} PRD to completed\"`, { cwd: ctx.projectPath });\n if (pushToRemote) {\n await execAsync('git push', { cwd: ctx.projectPath });\n }\n return stepOk(step, [`Moved PRD from active/ to completed/ via git mv`]);\n } catch {\n try {\n cpSync(legacyActivePrdPath, legacyCompletedPrdPath);\n if (!existsSync(legacyCompletedPrdPath)) {\n return stepFailed(step, 'PRD copy appeared to succeed but file not found at destination');\n }\n return stepOk(step, ['Copied PRD to completed/ (git mv failed, plain copy succeeded)']);\n } catch (err) {\n return stepFailed(step, `Failed to preserve PRD: ${(err as Error).message}`);\n }\n }\n }\n\n}\n\n/**\n * Archive workspace .planning/ artifacts to ~/.panopticon/archives/<issue>/.\n * Rotates previous archives to prevent overwrite.\n * Returns a hard failure if archiving fails — callers must NOT proceed with\n * workspace deletion after an archive failure.\n */\nexport async function archiveWorkspaceArtifacts(\n ctx: LifecycleContext,\n): Promise<StepResult> {\n const issueLower = ctx.issueId.toLowerCase();\n const step = 'archive-planning:archive-artifacts';\n\n const workspacePath = findWorkspacePath(ctx.projectPath, issueLower);\n if (!workspacePath || !existsSync(workspacePath)) {\n return stepSkipped(step, ['No workspace found to archive']);\n }\n\n try {\n let archiveDir = join(ARCHIVES_DIR, issueLower);\n\n // Rotate previous archive if it exists\n if (existsSync(archiveDir)) {\n let version = 1;\n while (existsSync(`${archiveDir}.${version}`)) {\n version++;\n }\n const rotatedDir = `${archiveDir}.${version}`;\n cpSync(archiveDir, rotatedDir, { recursive: true });\n rmSync(archiveDir, { recursive: true, force: true });\n }\n\n mkdirSync(archiveDir, { recursive: true });\n const details: string[] = [];\n\n // Archive .planning/feedback/\n const feedbackDir = join(workspacePath, '.planning', 'feedback');\n if (existsSync(feedbackDir)) {\n cpSync(feedbackDir, join(archiveDir, 'feedback'), { recursive: true });\n details.push('Archived feedback/');\n }\n\n // Archive STATE.md\n const stateMd = join(workspacePath, '.planning', 'STATE.md');\n if (existsSync(stateMd)) {\n cpSync(stateMd, join(archiveDir, 'STATE.md'));\n details.push('Archived STATE.md');\n }\n\n // Archive beads/\n const beadsDir = join(workspacePath, '.planning', 'beads');\n if (existsSync(beadsDir)) {\n cpSync(beadsDir, join(archiveDir, 'beads'), { recursive: true });\n details.push('Archived beads/');\n }\n\n // Archive PRD.md (workspace copy — the docs/prds/ copy is canonical,\n // but this preserves the workspace-specific version with agent annotations)\n const prdMd = join(workspacePath, '.planning', 'PRD.md');\n if (existsSync(prdMd)) {\n cpSync(prdMd, join(archiveDir, 'PRD.md'));\n details.push('Archived workspace PRD.md');\n }\n\n details.push(`Archived to ${archiveDir}`);\n return stepOk(step, details);\n } catch (err) {\n return stepFailed(step, `Failed to archive: ${(err as Error).message}`);\n }\n}\n\n/**\n * Full archive-planning operation: move PRD + archive workspace artifacts.\n * Archive failure is a hard fail — do not proceed with workspace deletion.\n */\nexport async function archivePlanning(\n ctx: LifecycleContext,\n opts: ArchiveOptions = {},\n): Promise<StepResult[]> {\n const results: StepResult[] = [];\n\n // Step 1: Move PRD\n const prdResult = await movePrd(ctx, opts);\n results.push(prdResult);\n\n // Step 2: Archive workspace artifacts\n const archiveResult = await archiveWorkspaceArtifacts(ctx);\n results.push(archiveResult);\n\n return results;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;YAsBqB;AAIrB,MAAM,YAAY,UAAU,KAAK;;;;;AAMjC,SAAgB,kBAAkB,aAAqB,YAAmC;CAExF,MAAM,gBAAgB,WAAW,QAAQ,YAAY,GAAG;CACxD,MAAM,aAAa;EACjB,KAAK,aAAa,cAAc,WAAW,aAAa;EACxD,KAAK,aAAa,cAAc,WAAW,gBAAgB;EAC3D,KAAK,aAAa,cAAc,WAAW;EAC3C,KAAK,aAAa,cAAc,WAAW;EAC3C,KAAK,QAAQ,YAAY,EAAE,WAAW,aAAa;EACpD;AACD,MAAK,MAAM,KAAK,WACd,KAAI,WAAW,EAAE,CAAE,QAAO;AAE5B,QAAO;;;;;;AAOT,eAAsB,QACpB,KACA,OAAuB,EAAE,EACJ;CACrB,MAAM,EAAE,eAAe,SAAS;CAChC,MAAM,aAAa,IAAI,QAAQ,aAAa;CAC5C,MAAM,OAAO;CAGb,MAAM,iBAAiB,KACrB,IAAI,aAAa,qBAAqB,qBACtC,4BAA4B,WAC7B;CACD,MAAM,oBAAoB,KACxB,IAAI,aAAa,qBAAqB,qBACtC,+BAA+B,WAChC;CAGD,MAAM,sBAAsB,KAC1B,IAAI,aAAa,qBAAqB,qBACtC,4BAA4B,GAAG,WAAW,UAC3C;CACD,MAAM,yBAAyB,KAC7B,IAAI,aAAa,qBAAqB,qBACtC,+BAA+B,GAAG,WAAW,UAC9C;AAGD,KAAI,WAAW,kBAAkB,IAAI,WAAW,uBAAuB,CACrE,QAAO,YAAY,MAAM,CAAC,4BAA4B,CAAC;CAIzD,MAAM,eAAe,WAAW,eAAe;CAC/C,MAAM,kBAAkB,CAAC,gBAAgB,WAAW,oBAAoB;AAExE,KAAI,CAAC,gBAAgB,CAAC,gBACpB,QAAO,YAAY,MAAM,CAAC,iDAAiD,CAAC;AAG9E,KAAI,cAAc;EAEhB,MAAM,kBAAkB,KACtB,IAAI,aAAa,qBAAqB,qBAAqB,8BAC5D;AACD,MAAI,CAAC,WAAW,gBAAgB,CAC9B,WAAU,iBAAiB,EAAE,WAAW,MAAM,CAAC;AAEjD,MAAI;AACF,SAAM,UAAU,WAAW,eAAe,KAAK,kBAAkB,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC;AAC9F,SAAM,UAAU,uBAAuB,IAAI,QAAQ,qBAAqB,EAAE,KAAK,IAAI,aAAa,CAAC;AACjG,OAAI,aACF,OAAM,UAAU,YAAY,EAAE,KAAK,IAAI,aAAa,CAAC;AAEvD,UAAO,OAAO,MAAM,CAAC,+DAA+D,CAAC;UAC/E;AAEN,OAAI;AACF,WAAO,gBAAgB,mBAAmB,EAAE,WAAW,MAAM,CAAC;AAC9D,WAAO,OAAO,MAAM,CAAC,8EAA8E,CAAC;YAC7F,KAAK;AACZ,WAAO,WAAW,MAAM,2BAA4B,IAAc,UAAU;;;QAG3E;EAEL,MAAM,eAAe,QAAQ,uBAAuB;AACpD,MAAI,CAAC,WAAW,aAAa,CAC3B,WAAU,cAAc,EAAE,WAAW,MAAM,CAAC;AAE9C,MAAI;AACF,SAAM,UAAU,WAAW,oBAAoB,KAAK,uBAAuB,IAAI,EAAE,KAAK,IAAI,aAAa,CAAC;AACxG,SAAM,UAAU,uBAAuB,IAAI,QAAQ,qBAAqB,EAAE,KAAK,IAAI,aAAa,CAAC;AACjG,OAAI,aACF,OAAM,UAAU,YAAY,EAAE,KAAK,IAAI,aAAa,CAAC;AAEvD,UAAO,OAAO,MAAM,CAAC,kDAAkD,CAAC;UAClE;AACN,OAAI;AACF,WAAO,qBAAqB,uBAAuB;AACnD,QAAI,CAAC,WAAW,uBAAuB,CACrC,QAAO,WAAW,MAAM,iEAAiE;AAE3F,WAAO,OAAO,MAAM,CAAC,iEAAiE,CAAC;YAChF,KAAK;AACZ,WAAO,WAAW,MAAM,2BAA4B,IAAc,UAAU;;;;;;;;;;;AAapF,eAAsB,0BACpB,KACqB;CACrB,MAAM,aAAa,IAAI,QAAQ,aAAa;CAC5C,MAAM,OAAO;CAEb,MAAM,gBAAgB,kBAAkB,IAAI,aAAa,WAAW;AACpE,KAAI,CAAC,iBAAiB,CAAC,WAAW,cAAc,CAC9C,QAAO,YAAY,MAAM,CAAC,gCAAgC,CAAC;AAG7D,KAAI;EACF,IAAI,aAAa,KAAK,cAAc,WAAW;AAG/C,MAAI,WAAW,WAAW,EAAE;GAC1B,IAAI,UAAU;AACd,UAAO,WAAW,GAAG,WAAW,GAAG,UAAU,CAC3C;AAGF,UAAO,YADY,GAAG,WAAW,GAAG,WACL,EAAE,WAAW,MAAM,CAAC;AACnD,UAAO,YAAY;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC;;AAGtD,YAAU,YAAY,EAAE,WAAW,MAAM,CAAC;EAC1C,MAAM,UAAoB,EAAE;EAG5B,MAAM,cAAc,KAAK,eAAe,aAAa,WAAW;AAChE,MAAI,WAAW,YAAY,EAAE;AAC3B,UAAO,aAAa,KAAK,YAAY,WAAW,EAAE,EAAE,WAAW,MAAM,CAAC;AACtE,WAAQ,KAAK,qBAAqB;;EAIpC,MAAM,UAAU,KAAK,eAAe,aAAa,WAAW;AAC5D,MAAI,WAAW,QAAQ,EAAE;AACvB,UAAO,SAAS,KAAK,YAAY,WAAW,CAAC;AAC7C,WAAQ,KAAK,oBAAoB;;EAInC,MAAM,WAAW,KAAK,eAAe,aAAa,QAAQ;AAC1D,MAAI,WAAW,SAAS,EAAE;AACxB,UAAO,UAAU,KAAK,YAAY,QAAQ,EAAE,EAAE,WAAW,MAAM,CAAC;AAChE,WAAQ,KAAK,kBAAkB;;EAKjC,MAAM,QAAQ,KAAK,eAAe,aAAa,SAAS;AACxD,MAAI,WAAW,MAAM,EAAE;AACrB,UAAO,OAAO,KAAK,YAAY,SAAS,CAAC;AACzC,WAAQ,KAAK,4BAA4B;;AAG3C,UAAQ,KAAK,eAAe,aAAa;AACzC,SAAO,OAAO,MAAM,QAAQ;UACrB,KAAK;AACZ,SAAO,WAAW,MAAM,sBAAuB,IAAc,UAAU;;;;;;;AAQ3E,eAAsB,gBACpB,KACA,OAAuB,EAAE,EACF;CACvB,MAAM,UAAwB,EAAE;CAGhC,MAAM,YAAY,MAAM,QAAQ,KAAK,KAAK;AAC1C,SAAQ,KAAK,UAAU;CAGvB,MAAM,gBAAgB,MAAM,0BAA0B,IAAI;AAC1D,SAAQ,KAAK,cAAc;AAE3B,QAAO"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as movePrd, r as findWorkspacePath } from "./archive-planning-
|
|
1
|
+
import { i as movePrd, r as findWorkspacePath } from "./archive-planning-D97ziGec.js";
|
|
2
2
|
export { findWorkspacePath, movePrd };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-
|
|
1
|
+
{"version":3,"file":"browser-CX7jXfXX.js","names":[],"sources":["../src/lib/browser.ts"],"sourcesContent":["/**\n * Cross-platform browser opener.\n * Used by `npx panopticon serve` to open the dashboard URL after server starts.\n */\n\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\nexport async function openBrowser(url: string): Promise<void> {\n if (process.platform === \"darwin\") {\n await execFileAsync(\"open\", [url]);\n } else if (process.platform === \"win32\") {\n // cmd.exe /c start is the standard way; /b runs without a new window\n await execFileAsync(\"cmd\", [\"/c\", \"start\", \"\", url]);\n } else {\n // Linux: try xdg-open, fall back to sensible-browser\n try {\n await execFileAsync(\"xdg-open\", [url]);\n } catch {\n try {\n await execFileAsync(\"sensible-browser\", [url]);\n } catch {\n // Best-effort: ignore if neither is available\n }\n }\n }\n}\n"],"mappings":";;;;;;;AAQA,MAAM,gBAAgB,UAAU,SAAS;AAEzC,eAAsB,YAAY,KAA4B;AAC5D,KAAI,QAAQ,aAAa,SACvB,OAAM,cAAc,QAAQ,CAAC,IAAI,CAAC;UACzB,QAAQ,aAAa,QAE9B,OAAM,cAAc,OAAO;EAAC;EAAM;EAAS;EAAI;EAAI,CAAC;KAGpD,KAAI;AACF,QAAM,cAAc,YAAY,CAAC,IAAI,CAAC;SAChC;AACN,MAAI;AACF,SAAM,cAAc,oBAAoB,CAAC,IAAI,CAAC;UACxC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as stepSkipped, n as stepFailed, r as stepOk } from "./types-
|
|
1
|
+
import { i as stepSkipped, n as stepFailed, r as stepOk } from "./types-BhJj1SP1.js";
|
|
2
2
|
import { exec } from "child_process";
|
|
3
3
|
import { promisify } from "util";
|
|
4
4
|
//#region src/lib/lifecycle/clean-planning.ts
|
|
@@ -74,4 +74,4 @@ async function cleanPlanningArtifacts(ctx) {
|
|
|
74
74
|
//#endregion
|
|
75
75
|
export { cleanPlanningArtifacts as t };
|
|
76
76
|
|
|
77
|
-
//# sourceMappingURL=clean-planning-
|
|
77
|
+
//# sourceMappingURL=clean-planning-D_lz4aQq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clean-planning-
|
|
1
|
+
{"version":3,"file":"clean-planning-D_lz4aQq.js","names":[],"sources":["../src/lib/lifecycle/clean-planning.ts"],"sourcesContent":["/**\n * clean-planning — Remove ephemeral .planning/ artifacts from main after merge.\n *\n * After a feature branch merges to main, ephemeral planning files\n * (STATE.md, PRD.md, PLANNING_PROMPT.md, .planning-complete, feedback/)\n * land on main and pollute new workspaces that inherit them.\n *\n * This module removes those files from the git index and working tree\n * with a dedicated commit, so new workspaces start clean.\n *\n * Idempotent — if none of the target files are tracked, returns skipped.\n */\n\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport type { LifecycleContext, StepResult } from './types.js';\nimport { stepOk, stepSkipped, stepFailed } from './types.js';\n\nconst execAsync = promisify(exec);\n\n/** Ephemeral planning files to remove from main after merge */\nconst EPHEMERAL_PLANNING_FILES = [\n '.planning/STATE.md',\n '.planning/PRD.md',\n '.planning/WORKSPACE.md',\n '.planning/PLANNING_PROMPT.md',\n '.planning/PLANNING_PROMPT.md.archived',\n '.planning/.planning-complete',\n];\n\n/**\n * Remove ephemeral planning artifacts from main after a feature branch merge.\n *\n * Uses `git rm` to remove tracked files from both the index and working tree,\n * then commits the deletion. Untracked files are silently skipped.\n */\nexport async function cleanPlanningArtifacts(\n ctx: LifecycleContext,\n): Promise<StepResult> {\n const step = 'clean-planning';\n const { issueId, projectPath } = ctx;\n\n try {\n // Build the list of files git is currently tracking in .planning/\n // that match our ephemeral set. We include feedback/ glob separately.\n let trackedFiles: string[] = [];\n\n // Check individual ephemeral files\n for (const file of EPHEMERAL_PLANNING_FILES) {\n try {\n const { stdout } = await execAsync(\n `git ls-files -- ${file}`,\n { cwd: projectPath, encoding: 'utf-8' },\n );\n if (stdout.trim()) {\n trackedFiles.push(file);\n }\n } catch {\n // git ls-files failure is non-fatal\n }\n }\n\n // Check feedback/ directory\n try {\n const { stdout } = await execAsync(\n `git ls-files -- .planning/feedback/`,\n { cwd: projectPath, encoding: 'utf-8' },\n );\n if (stdout.trim()) {\n trackedFiles.push('.planning/feedback/');\n }\n } catch {\n // Non-fatal\n }\n\n if (trackedFiles.length === 0) {\n return stepSkipped(step, ['No tracked ephemeral planning files found on main']);\n }\n\n // Remove tracked files from index and working tree\n const fileArgs = trackedFiles.map(f => `\"${f}\"`).join(' ');\n await execAsync(\n `git rm -rf --ignore-unmatch ${fileArgs}`,\n { cwd: projectPath, encoding: 'utf-8' },\n );\n\n // Check if anything was actually staged for deletion\n try {\n await execAsync('git diff --cached --quiet', { cwd: projectPath, encoding: 'utf-8' });\n // Nothing staged — files may have already been removed\n return stepSkipped(step, ['No staged deletions after git rm (already clean)']);\n } catch {\n // There are staged changes — commit them\n await execAsync(\n `git commit -m \"chore: remove ephemeral planning state after ${issueId} merge\"`,\n { cwd: projectPath, encoding: 'utf-8' },\n );\n }\n\n return stepOk(step, [\n `Removed ${trackedFiles.length} ephemeral planning file(s) from main`,\n `Files: ${trackedFiles.join(', ')}`,\n ]);\n } catch (err) {\n return stepFailed(step, `Failed to clean planning artifacts: ${(err as Error).message}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,MAAM,YAAY,UAAU,KAAK;;AAGjC,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;CACD;;;;;;;AAQD,eAAsB,uBACpB,KACqB;CACrB,MAAM,OAAO;CACb,MAAM,EAAE,SAAS,gBAAgB;AAEjC,KAAI;EAGF,IAAI,eAAyB,EAAE;AAG/B,OAAK,MAAM,QAAQ,yBACjB,KAAI;GACF,MAAM,EAAE,WAAW,MAAM,UACvB,mBAAmB,QACnB;IAAE,KAAK;IAAa,UAAU;IAAS,CACxC;AACD,OAAI,OAAO,MAAM,CACf,cAAa,KAAK,KAAK;UAEnB;AAMV,MAAI;GACF,MAAM,EAAE,WAAW,MAAM,UACvB,uCACA;IAAE,KAAK;IAAa,UAAU;IAAS,CACxC;AACD,OAAI,OAAO,MAAM,CACf,cAAa,KAAK,sBAAsB;UAEpC;AAIR,MAAI,aAAa,WAAW,EAC1B,QAAO,YAAY,MAAM,CAAC,oDAAoD,CAAC;AAKjF,QAAM,UACJ,+BAFe,aAAa,KAAI,MAAK,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,IAGxD;GAAE,KAAK;GAAa,UAAU;GAAS,CACxC;AAGD,MAAI;AACF,SAAM,UAAU,6BAA6B;IAAE,KAAK;IAAa,UAAU;IAAS,CAAC;AAErF,UAAO,YAAY,MAAM,CAAC,mDAAmD,CAAC;UACxE;AAEN,SAAM,UACJ,+DAA+D,QAAQ,UACvE;IAAE,KAAK;IAAa,UAAU;IAAS,CACxC;;AAGH,SAAO,OAAO,MAAM,CAClB,WAAW,aAAa,OAAO,wCAC/B,UAAU,aAAa,KAAK,KAAK,GAClC,CAAC;UACK,KAAK;AACZ,SAAO,WAAW,MAAM,uCAAwC,IAAc,UAAU"}
|