@overdeck/core 0.45.10 → 0.45.11
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/dist/{agent-state-KVbJEG5f.js → agent-state-RLhS7ckO.js} +1 -1
- package/dist/{agents-pp8FO7Uj.js → agents-By3u_fQ8.js} +1 -1
- package/dist/{agents-CQHK0CSA.js → agents-CgVr77Qq.js} +12 -12
- package/dist/{agents-CQHK0CSA.js.map → agents-CgVr77Qq.js.map} +1 -1
- package/dist/{backlog-auto-trigger-CyuoS0nl.js → backlog-auto-trigger-B_-1tk4e.js} +5 -5
- package/dist/{backlog-auto-trigger-CyuoS0nl.js.map → backlog-auto-trigger-B_-1tk4e.js.map} +1 -1
- package/dist/cli/index.js +45 -45
- package/dist/{cli-Cewlu3yU.js → cli-DGeSW85B.js} +2 -2
- package/dist/{cli-Cewlu3yU.js.map → cli-DGeSW85B.js.map} +1 -1
- package/dist/cli-MTB9IOoR.js +3 -0
- package/dist/{close-issue-BJGX9_z7.js → close-issue-Djajb6Sv.js} +2 -2
- package/dist/{close-issue-BJGX9_z7.js.map → close-issue-Djajb6Sv.js.map} +1 -1
- package/dist/{concurrency-Ca-fC7tA.js → concurrency-4rzjHAQA.js} +1 -1
- package/dist/{conversation-compaction-B_6s9EvM.js → conversation-compaction-BQvZh09I.js} +4 -4
- package/dist/{conversation-compaction-B_6s9EvM.js.map → conversation-compaction-BQvZh09I.js.map} +1 -1
- package/dist/dashboard/{advancing-selfheal-CMlGznKv.js → advancing-selfheal-BezNfM3P.js} +3 -3
- package/dist/dashboard/{advancing-selfheal-CMlGznKv.js.map → advancing-selfheal-BezNfM3P.js.map} +1 -1
- package/dist/dashboard/{agent-state-xk_G8t90.js → agent-state-BUANcaA7.js} +1 -1
- package/dist/dashboard/{agent-state-service-C1iUF9Ft.js → agent-state-service-DmFpIMbP.js} +1 -1
- package/dist/dashboard/{agent-state-service-5ge9xxhx.js → agent-state-service-tXUdp6UF.js} +2 -2
- package/dist/dashboard/{agent-state-service-5ge9xxhx.js.map → agent-state-service-tXUdp6UF.js.map} +1 -1
- package/dist/dashboard/{agents-BIggLvi_.js → agents-C-vqmKDi.js} +1 -1
- package/dist/dashboard/{agents-DHvsjsuP.js → agents-C7V4odQ6.js} +11 -11
- package/dist/dashboard/{agents-DHvsjsuP.js.map → agents-C7V4odQ6.js.map} +1 -1
- package/dist/dashboard/{backlog-auto-trigger-COm_R96V.js → backlog-auto-trigger-Cb8PR-5w.js} +2 -2
- package/dist/dashboard/{backlog-auto-trigger-COm_R96V.js.map → backlog-auto-trigger-Cb8PR-5w.js.map} +1 -1
- package/dist/dashboard/{cli-CvK9xuSS.js → cli-BgzbB6h3.js} +2 -2
- package/dist/dashboard/{cli-CvK9xuSS.js.map → cli-BgzbB6h3.js.map} +1 -1
- package/dist/dashboard/cli-DCqy_wFa.js +3 -0
- package/dist/dashboard/{close-issue-BnpErnD1.js → close-issue-BWf3pxn4.js} +2 -2
- package/dist/dashboard/{close-issue-BnpErnD1.js.map → close-issue-BWf3pxn4.js.map} +1 -1
- package/dist/dashboard/{closed-issue-reaper-DRqK5k39.js → closed-issue-reaper-D7XPq5pY.js} +4 -4
- package/dist/dashboard/{closed-issue-reaper-DRqK5k39.js.map → closed-issue-reaper-D7XPq5pY.js.map} +1 -1
- package/dist/dashboard/{closed-issue-reaper-BLCQwTpF.js → closed-issue-reaper-VSTSTROK.js} +1 -1
- package/dist/dashboard/{conflict-gate-JdFuhKuF.js → conflict-gate-DwOslTij.js} +1 -1
- package/dist/dashboard/{conflict-gate-BhKvrPxn.js → conflict-gate-FFEvTDVA.js} +3 -3
- package/dist/dashboard/{conflict-gate-BhKvrPxn.js.map → conflict-gate-FFEvTDVA.js.map} +1 -1
- package/dist/dashboard/{conversation-compaction-C5o_eKEm.js → conversation-compaction-CCqN4hWk.js} +4 -4
- package/dist/dashboard/{conversation-compaction-C5o_eKEm.js.map → conversation-compaction-CCqN4hWk.js.map} +1 -1
- package/dist/dashboard/{conversation-compaction-Ba5aZdrb.js → conversation-compaction-CL5Ti4j4.js} +1 -1
- package/dist/dashboard/{deacon-j3qSZ7--.js → deacon-CGHl90eC.js} +107 -50
- package/dist/dashboard/{deacon-j3qSZ7--.js.map → deacon-CGHl90eC.js.map} +1 -1
- package/dist/dashboard/{deacon-Cv2RMfHs.js → deacon-DMPh40Im.js} +2 -2
- package/dist/dashboard/deacon-swarm-CVTiNL0N.js +2 -0
- package/dist/dashboard/{deacon-swarm-DadWNi5J.js → deacon-swarm-aMMJTq6t.js} +4 -4
- package/dist/dashboard/{deacon-swarm-DadWNi5J.js.map → deacon-swarm-aMMJTq6t.js.map} +1 -1
- package/dist/dashboard/deacon.js +4 -4
- package/dist/dashboard/{feedback-target-oE4-Esxl.js → feedback-target-dJjFfITP.js} +4 -4
- package/dist/dashboard/{feedback-target-oE4-Esxl.js.map → feedback-target-dJjFfITP.js.map} +1 -1
- package/dist/dashboard/{feedback-target-C4DaDSZ8.js → feedback-target-nQSM6ygL.js} +1 -1
- package/dist/dashboard/{flywheel-ClMjGW_u.js → flywheel-BLoVNtJV.js} +6 -6
- package/dist/dashboard/{flywheel-ClMjGW_u.js.map → flywheel-BLoVNtJV.js.map} +1 -1
- package/dist/dashboard/{flywheel-DefHRzY4.js → flywheel-Cqf8vu7N.js} +6 -6
- package/dist/dashboard/{flywheel-DefHRzY4.js.map → flywheel-Cqf8vu7N.js.map} +1 -1
- package/dist/dashboard/{flywheel-BqDdGvrQ.js → flywheel-PJsbrXNY.js} +1 -1
- package/dist/dashboard/{flywheel-merge-order-CuDcqTRJ.js → flywheel-merge-order-B7BH8mZ3.js} +2 -2
- package/dist/dashboard/{flywheel-merge-order-CuDcqTRJ.js.map → flywheel-merge-order-B7BH8mZ3.js.map} +1 -1
- package/dist/dashboard/{flywheel-merge-order-B6YDSElh.js → flywheel-merge-order-CCwF60b-.js} +1 -1
- package/dist/dashboard/{harness-resolve-DKeSVsJL.js → harness-resolve-B3f9G1Kp.js} +2 -2
- package/dist/dashboard/{harness-resolve-DKeSVsJL.js.map → harness-resolve-B3f9G1Kp.js.map} +1 -1
- package/dist/dashboard/{inspect-agent-BKKc0XnB.js → inspect-agent-CKF5-SJr.js} +3 -3
- package/dist/dashboard/{inspect-agent-BKKc0XnB.js.map → inspect-agent-CKF5-SJr.js.map} +1 -1
- package/dist/dashboard/inspect-agent-CqpEWGWy.js +2 -0
- package/dist/dashboard/{issue-lifecycle-DnhQgddB.js → issue-lifecycle-5LbOcATP.js} +7 -7
- package/dist/dashboard/{issue-lifecycle-DnhQgddB.js.map → issue-lifecycle-5LbOcATP.js.map} +1 -1
- package/dist/dashboard/{issue-lifecycle-nY4esZn8.js → issue-lifecycle-CjYqQ669.js} +1 -1
- package/dist/dashboard/{issue-service-singleton-Bnqv1uaa.js → issue-service-singleton-B8iu_TKV.js} +1 -1
- package/dist/dashboard/{issue-service-singleton-_AquSBTl.js → issue-service-singleton-CDGt__oQ.js} +2 -2
- package/dist/dashboard/{issue-service-singleton-_AquSBTl.js.map → issue-service-singleton-CDGt__oQ.js.map} +1 -1
- package/dist/dashboard/{lifecycle-CGKm7doE.js → lifecycle-CEg4sHZH.js} +4 -4
- package/dist/dashboard/{lifecycle-CGKm7doE.js.map → lifecycle-CEg4sHZH.js.map} +1 -1
- package/dist/dashboard/{merge-agent-Dh8Y9PDO.js → merge-agent-7nBiCytp.js} +1 -1
- package/dist/dashboard/{merge-agent-BcgAYStl.js → merge-agent-C81xPIGd.js} +6 -6
- package/dist/dashboard/{merge-agent-BcgAYStl.js.map → merge-agent-C81xPIGd.js.map} +1 -1
- package/dist/dashboard/merge-ops-DE_6CnmZ.js +2 -0
- package/dist/dashboard/{merge-train-DmxlYbEo.js → merge-train-D3qzRccL.js} +2 -2
- package/dist/dashboard/{merge-train-DmxlYbEo.js.map → merge-train-D3qzRccL.js.map} +1 -1
- package/dist/dashboard/{merge-train-deps-DBHsOWt9.js → merge-train-deps-Be5ElC_P.js} +2 -2
- package/dist/dashboard/{merge-train-deps-DBHsOWt9.js.map → merge-train-deps-Be5ElC_P.js.map} +1 -1
- package/dist/dashboard/{orphan-proposed-reconciler-Db8tUhce.js → orphan-proposed-reconciler-Boq_XaRe.js} +3 -3
- package/dist/dashboard/{orphan-proposed-reconciler-Db8tUhce.js.map → orphan-proposed-reconciler-Boq_XaRe.js.map} +1 -1
- package/dist/dashboard/{orphan-proposed-reconciler-mXV--tcB.js → orphan-proposed-reconciler-C0sPnDq_.js} +1 -1
- package/dist/dashboard/{reconstruct-cache-_tDZ2D72.js → reconstruct-cache-C2pCltOq.js} +3 -3
- package/dist/dashboard/{reconstruct-cache-_tDZ2D72.js.map → reconstruct-cache-C2pCltOq.js.map} +1 -1
- package/dist/dashboard/{remote-completion-Bklh6loJ.js → remote-completion-BmxD5UMQ.js} +3 -3
- package/dist/dashboard/{remote-completion-Bklh6loJ.js.map → remote-completion-BmxD5UMQ.js.map} +1 -1
- package/dist/dashboard/resume-C-nxu9Y4.js +3 -0
- package/dist/dashboard/{review-agent-phzqNqIs.js → review-agent-D6P6d3pz.js} +26 -17
- package/dist/dashboard/review-agent-D6P6d3pz.js.map +1 -0
- package/dist/dashboard/review-agent-DTINEffB.js +3 -0
- package/dist/dashboard/{review-context-CCq56O_Y.js → review-context-Dyo0tsBa.js} +2 -2
- package/dist/dashboard/{review-context-CCq56O_Y.js.map → review-context-Dyo0tsBa.js.map} +1 -1
- package/dist/dashboard/{review-status-BQjqQXZG.js → review-status-B5ZASOo4.js} +18 -5
- package/dist/dashboard/review-status-B5ZASOo4.js.map +1 -0
- package/dist/dashboard/{review-status-bBkqUj5i.js → review-status-h7BXIA4z.js} +1 -1
- package/dist/dashboard/{review-verdict-feedback-wqnikhMK.js → review-verdict-feedback-B70VbfRL.js} +4 -4
- package/dist/dashboard/{review-verdict-feedback-wqnikhMK.js.map → review-verdict-feedback-B70VbfRL.js.map} +1 -1
- package/dist/dashboard/{review-verdict-feedback-cZh9Wi9G.js → review-verdict-feedback-CorgH49f.js} +1 -1
- package/dist/dashboard/{sequence-io-B2GmilSI.js → sequence-io-6YP8fVpH.js} +2 -2
- package/dist/dashboard/{sequence-io-B2GmilSI.js.map → sequence-io-6YP8fVpH.js.map} +1 -1
- package/dist/dashboard/{sequencer-agent-D8pW2aU_.js → sequencer-agent-ja-nkEc1.js} +5 -5
- package/dist/dashboard/{sequencer-agent-D8pW2aU_.js.map → sequencer-agent-ja-nkEc1.js.map} +1 -1
- package/dist/dashboard/server.js +66 -55
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/{service-CILd-uOt.js → service-HKDrIy0h.js} +24 -24
- package/dist/dashboard/{service-CILd-uOt.js.map → service-HKDrIy0h.js.map} +1 -1
- package/dist/dashboard/{smart-compaction-Bgp_gwcA.js → smart-compaction-L0LSnF0_.js} +1 -1
- package/dist/dashboard/{smart-compaction-CrP90OFE.js → smart-compaction-uke1npUz.js} +2 -2
- package/dist/dashboard/{smart-compaction-CrP90OFE.js.map → smart-compaction-uke1npUz.js.map} +1 -1
- package/dist/dashboard/{spawn-planning-session-D15KbPOy.js → spawn-planning-session-CSMWco8B.js} +1 -1
- package/dist/dashboard/{spawn-planning-session-BmJWHSCu.js → spawn-planning-session-CXc0NkwV.js} +3 -3
- package/dist/dashboard/{spawn-planning-session-BmJWHSCu.js.map → spawn-planning-session-CXc0NkwV.js.map} +1 -1
- package/dist/dashboard/{specialist-context-CwKkcXL9.js → specialist-context-BGCJ24LH.js} +3 -3
- package/dist/dashboard/{specialist-context-CwKkcXL9.js.map → specialist-context-BGCJ24LH.js.map} +1 -1
- package/dist/dashboard/{specialist-logs-CvDxquV_.js → specialist-logs--Uz-r8ia.js} +2 -2
- package/dist/dashboard/{specialist-logs-CvDxquV_.js.map → specialist-logs--Uz-r8ia.js.map} +1 -1
- package/dist/dashboard/{specialists-BCjcG4uE.js → specialists-Ca9XSBCS.js} +1 -1
- package/dist/dashboard/{specialists-D07ybnam.js → specialists-DEfrAbWs.js} +36 -36
- package/dist/dashboard/{specialists-D07ybnam.js.map → specialists-DEfrAbWs.js.map} +1 -1
- package/dist/dashboard/{specialists-F2uMO4QS.js → specialists-DeZx9xom.js} +1 -1
- package/dist/dashboard/{specialists-BYi0k8CZ.js → specialists-nZ0mRwpZ.js} +12 -12
- package/dist/dashboard/{specialists-BYi0k8CZ.js.map → specialists-nZ0mRwpZ.js.map} +1 -1
- package/dist/dashboard/{summary-fork-DedqguZb.js → summary-fork-2a1L2DIU.js} +2 -2
- package/dist/dashboard/{summary-fork-EjvOkEPl.js → summary-fork-Xn0QUNmb.js} +3 -3
- package/dist/dashboard/{summary-fork-EjvOkEPl.js.map → summary-fork-Xn0QUNmb.js.map} +1 -1
- package/dist/dashboard/{teardown-workspace-5LCVbjfq.js → teardown-workspace-DhA6oAIK.js} +2 -2
- package/dist/dashboard/{teardown-workspace-5LCVbjfq.js.map → teardown-workspace-DhA6oAIK.js.map} +1 -1
- package/dist/dashboard/{test-agent-queue-qfsq6uaC.js → test-agent-queue-B_ukPyIK.js} +3 -3
- package/dist/dashboard/{test-agent-queue-qfsq6uaC.js.map → test-agent-queue-B_ukPyIK.js.map} +1 -1
- package/dist/dashboard/{uat-train-CtNGgXxj.js → uat-train-BLBAbJ8Y.js} +10 -10
- package/dist/dashboard/{uat-train-CtNGgXxj.js.map → uat-train-BLBAbJ8Y.js.map} +1 -1
- package/dist/dashboard/{uat-train-C3hWXtip.js → uat-train-DPfGR9_I.js} +1 -1
- package/dist/dashboard/{verification-runner-DuZRHjPU.js → verification-runner-KTGTNugM.js} +1 -1
- package/dist/dashboard/{verification-runner-BPAhPWR7.js → verification-runner-R2-4XgMO.js} +4 -4
- package/dist/dashboard/{verification-runner-BPAhPWR7.js.map → verification-runner-R2-4XgMO.js.map} +1 -1
- package/dist/dashboard/{workflows-H-COJ84X.js → workflows-CSKX5MhC.js} +7 -7
- package/dist/dashboard/{workflows-H-COJ84X.js.map → workflows-CSKX5MhC.js.map} +1 -1
- package/dist/dashboard/workflows-DVwXauef.js +2 -0
- package/dist/dashboard/{workspaces-CRU9_vRn.js → workspaces-DXLDgXo2.js} +32 -32
- package/dist/dashboard/{workspaces-CRU9_vRn.js.map → workspaces-DXLDgXo2.js.map} +1 -1
- package/dist/docs-index.sqlite +0 -0
- package/dist/{feedback-target-DTGAhFkM.js → feedback-target-BsKN4Tr_.js} +4 -4
- package/dist/{feedback-target-DTGAhFkM.js.map → feedback-target-BsKN4Tr_.js.map} +1 -1
- package/dist/{feedback-target-DutF088V.js → feedback-target-DM1WzOKy.js} +1 -1
- package/dist/{harness-resolve-Bz1prk6B.js → harness-resolve-B-YDNwNW.js} +2 -2
- package/dist/{harness-resolve-Bz1prk6B.js.map → harness-resolve-B-YDNwNW.js.map} +1 -1
- package/dist/{issue-lifecycle-fVqvCdKM.js → issue-lifecycle-Bc1l3U9f.js} +7 -7
- package/dist/{issue-lifecycle-fVqvCdKM.js.map → issue-lifecycle-Bc1l3U9f.js.map} +1 -1
- package/dist/{issue-service-singleton-CZm8p6Rj.js → issue-service-singleton-D-8Q6tdT.js} +1 -1
- package/dist/{issue-service-singleton-Cr73JAaR.js → issue-service-singleton-D1433I7n.js} +2 -2
- package/dist/{issue-service-singleton-Cr73JAaR.js.map → issue-service-singleton-D1433I7n.js.map} +1 -1
- package/dist/{lifecycle-CR6tZfl1.js → lifecycle-SmrqysDf.js} +7 -7
- package/dist/{lifecycle-CR6tZfl1.js.map → lifecycle-SmrqysDf.js.map} +1 -1
- package/dist/{lifecycle-D_EWiUjk.js → lifecycle-mRMyiIXs.js} +2 -2
- package/dist/{merge-agent-LM4avOtA.js → merge-agent-B9hIZ6Z0.js} +6 -6
- package/dist/{merge-agent-LM4avOtA.js.map → merge-agent-B9hIZ6Z0.js.map} +1 -1
- package/dist/{merge-agent-Bj046HE1.js → merge-agent-DUj22cXL.js} +1 -1
- package/dist/{merge-fulfillment-DrnC1Kmg.js → merge-fulfillment-__P4WE-T.js} +3 -3
- package/dist/{merge-fulfillment-DrnC1Kmg.js.map → merge-fulfillment-__P4WE-T.js.map} +1 -1
- package/dist/{reconstruct-cache-NPqoAUg-.js → reconstruct-cache-9SWp82SQ.js} +3 -3
- package/dist/{reconstruct-cache-NPqoAUg-.js.map → reconstruct-cache-9SWp82SQ.js.map} +1 -1
- package/dist/{records-BIkN1LQ4.js → records-CTmvuRzz.js} +14 -1
- package/dist/{records-BIkN1LQ4.js.map → records-CTmvuRzz.js.map} +1 -1
- package/dist/records-backfill-BQcmTmwF.js +2 -0
- package/dist/{records-backfill-HM0Pln6N.js → records-backfill-BrNsv_zT.js} +2 -2
- package/dist/{records-backfill-HM0Pln6N.js.map → records-backfill-BrNsv_zT.js.map} +1 -1
- package/dist/resume-Bn4kDk9x.js +3 -0
- package/dist/{review-agent-DFosQzCG.js → review-agent-PhqOhpx3.js} +24 -16
- package/dist/{review-agent-DFosQzCG.js.map → review-agent-PhqOhpx3.js.map} +1 -1
- package/dist/review-agent-hLbRRxZF.js +3 -0
- package/dist/{review-status-iJwfEoNX.js → review-status-B_XXomV0.js} +6 -6
- package/dist/{review-status-iJwfEoNX.js.map → review-status-B_XXomV0.js.map} +1 -1
- package/dist/{review-status-BbNVlXh1.js → review-status-Bo-EFVKh.js} +1 -1
- package/dist/{review-verdict-feedback-BGPw3z1X.js → review-verdict-feedback-CXHkoiKZ.js} +1 -1
- package/dist/{review-verdict-feedback-CCZ05atV.js → review-verdict-feedback-DGV13LDb.js} +4 -4
- package/dist/{review-verdict-feedback-CCZ05atV.js.map → review-verdict-feedback-DGV13LDb.js.map} +1 -1
- package/dist/{sequence-io-CcxZNHcD.js → sequence-io-Cg4NHAco.js} +1 -1
- package/dist/{sequence-io-Cx1usxG3.js → sequence-io-CyxvNHfA.js} +2 -2
- package/dist/{sequence-io-Cx1usxG3.js.map → sequence-io-CyxvNHfA.js.map} +1 -1
- package/dist/{smart-compaction-ByUEgQkF.js → smart-compaction-ByKXTQNy.js} +2 -2
- package/dist/{smart-compaction-ByUEgQkF.js.map → smart-compaction-ByKXTQNy.js.map} +1 -1
- package/dist/{smart-compaction-DfLe_CtH.js → smart-compaction-U6e_uB1E.js} +1 -1
- package/dist/{specialist-context-McuGkaeR.js → specialist-context-BUTadO-U.js} +3 -3
- package/dist/{specialist-context-McuGkaeR.js.map → specialist-context-BUTadO-U.js.map} +1 -1
- package/dist/{specialist-logs-CUUJ4eiB.js → specialist-logs-pEMCTtGZ.js} +2 -2
- package/dist/{specialist-logs-CUUJ4eiB.js.map → specialist-logs-pEMCTtGZ.js.map} +1 -1
- package/dist/{specialists-BSrylD1S.js → specialists-BGFnrQ8n.js} +1 -1
- package/dist/{specialists-B0elgInc.js → specialists-DeTkkp8b.js} +12 -12
- package/dist/{specialists-B0elgInc.js.map → specialists-DeTkkp8b.js.map} +1 -1
- package/dist/{summary-fork-DskMRnyb.js → summary-fork-CgzThE2-.js} +2 -2
- package/dist/{summary-fork-CPUTKcAT.js → summary-fork-Dx1RMuvU.js} +3 -3
- package/dist/{summary-fork-CPUTKcAT.js.map → summary-fork-Dx1RMuvU.js.map} +1 -1
- package/dist/{sync-BiNVQHBf.js → sync-Bsww9tuj.js} +2 -2
- package/dist/{sync-BiNVQHBf.js.map → sync-Bsww9tuj.js.map} +1 -1
- package/dist/sync-CylE_SjB.js +2 -0
- package/dist/{verdict-restore-DQiV7_fe.js → verdict-restore-DGpX0ZOJ.js} +5 -5
- package/dist/{verdict-restore-DQiV7_fe.js.map → verdict-restore-DGpX0ZOJ.js.map} +1 -1
- package/dist/{webhook-handlers-DHBSEDEm.js → webhook-handlers-BjsfIL7u.js} +3 -3
- package/dist/{webhook-handlers-DHBSEDEm.js.map → webhook-handlers-BjsfIL7u.js.map} +1 -1
- package/dist/{workspace-migrate-duUsWNpd.js → workspace-migrate-BBQ8nAnP.js} +2 -2
- package/dist/{workspace-migrate-duUsWNpd.js.map → workspace-migrate-BBQ8nAnP.js.map} +1 -1
- package/dist/{workspace-reap-DLCIoJmn.js → workspace-reap-12O9354k.js} +2 -2
- package/dist/{workspace-reap-DLCIoJmn.js.map → workspace-reap-12O9354k.js.map} +1 -1
- package/package.json +1 -1
- package/scripts/file-size-baseline.txt +1 -1
- package/dist/cli-DBWG12XK.js +0 -3
- package/dist/dashboard/cli-CJDWXE_Y.js +0 -3
- package/dist/dashboard/deacon-swarm-D1iAUX-P.js +0 -2
- package/dist/dashboard/inspect-agent-vm88mLYr.js +0 -2
- package/dist/dashboard/merge-ops-QdBiQ8XB.js +0 -2
- package/dist/dashboard/resume-DnIsmIgC.js +0 -3
- package/dist/dashboard/review-agent-DgySDb-G.js +0 -3
- package/dist/dashboard/review-agent-phzqNqIs.js.map +0 -1
- package/dist/dashboard/review-status-BQjqQXZG.js.map +0 -1
- package/dist/dashboard/workflows-Cz8OtiB4.js +0 -2
- package/dist/records-backfill-DEgtRyKL.js +0 -2
- package/dist/resume-DGymuXZM.js +0 -3
- package/dist/review-agent-DjVadURa.js +0 -3
- package/dist/sync-4jqukkxz.js +0 -2
package/dist/dashboard/{test-agent-queue-qfsq6uaC.js.map → test-agent-queue-B_ukPyIK.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-agent-queue-qfsq6uaC.js","names":[],"sources":["../../src/lib/cloister/test-agent-queue.ts"],"sourcesContent":["/**\n * Direct dispatch logic for triggering the test role after review passes.\n *\n * Test and browser UAT now run inside the role-based `test` run. There is no\n * separate UAT specialist and no per-project test-agent specialist pool.\n */\n\nimport { Data, Effect } from 'effect';\nimport { setReviewStatusSync } from '../review-status.js';\nimport { spawnRun } from '../agents.js';\nimport { resolveProjectFromIssueSync } from '../projects.js';\nimport { clearTestVerdictArtifact } from './test-verdict.js';\nimport { shouldSkipDispatchAsMerged } from './merge-verification.js';\n\nfunction dashboardApiUrl(): string {\n const apiPort = process.env.API_PORT || process.env.PORT || '3011';\n return process.env.OVERDECK_DASHBOARD_URL || process.env.DASHBOARD_URL || `http://localhost:${apiPort}`;\n}\n\nexport function buildTestRolePrompt(options: {\n issueId: string;\n workspace?: string;\n branch?: string;\n apiUrl?: string;\n}): string {\n const workspaceLine = options.workspace ? `WORKSPACE: ${options.workspace}` : 'WORKSPACE: resolve from the run state';\n const branchLine = options.branch ? `BRANCH: ${options.branch}` : `BRANCH: feature/${options.issueId.toLowerCase()}`;\n const apiUrl = options.apiUrl ?? dashboardApiUrl();\n\n return `TEST TASK for ${options.issueId}:\n\n${workspaceLine}\n${branchLine}\n\nRun the role-based verification flow for this already-reviewed branch.\n\nRequired steps:\n1. Before every repository command, verify you are in the workspace above with \\`pwd\\`. If not, stop and switch back to that workspace before continuing.\n2. Work only in the workspace above. Never run build, test, git, or dashboard commands from the main checkout or another worktree.\n3. Read .pan/records/${options.issueId.toLowerCase()}.json, the canonical vBRIEF under .pan/specs/ for ${options.issueId}, issue notes, and project instructions to determine required verification. Do not require retired workspace-local .pan/continue.json or .pan/spec.vbrief.json files to exist.\n4. Run the configured project gates (at minimum typecheck, lint, and tests when present/applicable).\n5. Decide whether browser UAT is required from acceptance criteria, issue notes, PR notes, or UI/dashboard wording.\n6. If UAT is required, build and run the dashboard from the workspace above, not from main. If a dashboard from another checkout is already running, stop it and start the workspace-built dashboard.\n7. If UAT is required, use the Playwright MCP tools available to the test role. Do not spawn or wake a separate UAT agent.\n8. As soon as you decide the verdict, FIRST write the deterministic verdict artifact so the pipeline can recover it even if the POST below is interrupted. Write the workspace file .pan/test/result.json with EXACTLY this shape (status is \"passed\" or \"failed\"):\n {\"status\":\"passed\",\"notes\":\"<commands run, UAT paths exercised, concise evidence>\"}\n Create the .pan/test/ directory if it does not exist. This artifact captures BOTH the gate result and the UAT verdict, and MUST be written BEFORE the POST in the next step.\n9. On success, mark tests passed (server-side shipping handles merge preparation):\n curl -s -X POST ${apiUrl}/api/review/${options.issueId}/status \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"testStatus\":\"passed\"}'\n10. On failure, mark tests failed with actionable notes:\n curl -s -X POST ${apiUrl}/api/review/${options.issueId}/status \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"testStatus\":\"failed\",\"testNotes\":\"<commands/UAT failures and exact unmet criteria>\"}'\n11. Report TESTS PASSED or TESTS FAILED with commands run, UAT paths exercised, and concise evidence.\n\nBoundaries:\n- Do NOT edit code, tests, fixtures, snapshots, or configuration.\n- Do NOT commit, push, merge, close issues, or call any merge endpoint.\n- Do NOT spawn, wake, or delegate to test-agent or uat-agent specialists.`;\n}async function dispatchTestAgentAndNotifyPromise(\n issueId: string,\n workspace?: string,\n branch?: string,\n notifyAgent?: (agentId: string, msg: string) => Promise<void>,\n): Promise<void> {\n let testTaskDelivered = false;\n\n try {\n const resolved = resolveProjectFromIssueSync(issueId);\n if (!resolved) {\n console.error(`[test-dispatch] No project configured for ${issueId} — cannot spawn test role`);\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `No project configured for ${issueId}. Add it to projects.yaml.`,\n });\n return;\n }\n\n // Clear any stale verdict artifact so a previous cycle's result.json can\n // never be misread by the deacon failsafe as this dispatch's verdict (H3).\n if (workspace) clearTestVerdictArtifact(workspace);\n\n const prompt = buildTestRolePrompt({ issueId, workspace, branch });\n\n const mergedGuard = await shouldSkipDispatchAsMerged(issueId);\n if (mergedGuard.skip) {\n console.log(`[test-dispatch] Skipping test dispatch for ${issueId} — ${mergedGuard.reason}`);\n return;\n }\n\n const run = await spawnRun(issueId, 'test', {\n workspace,\n prompt,\n });\n\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n testTaskDelivered = true;\n console.log(`[test-dispatch] Started test role for ${issueId} (${run.id})`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes('already running')) {\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n testTaskDelivered = true;\n console.log(`[test-dispatch] Test role already running for ${issueId}`);\n } else {\n console.error(`[test-dispatch] Failed to dispatch test role for ${issueId}:`, err);\n try {\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `Dispatch failed: ${msg}`,\n });\n } catch (statusErr) {\n console.error(`[test-dispatch] Failed to set dispatch_failed status for ${issueId}:`, statusErr);\n }\n }\n }\n\n // Only notify work agent when test was successfully dispatched\n if (testTaskDelivered && notifyAgent) {\n try {\n await notifyAgent(\n `agent-${issueId.toLowerCase()}`,\n `REVIEW PASSED for ${issueId}. The test role has been dispatched automatically. Do NOT poll or check status — you will be notified when tests complete.`,\n );\n } catch (err) {\n console.log(\n `[test-dispatch] Could not notify work agent for ${issueId} (may not be running): ${(err as Error).message}`,\n );\n }\n }\n}\n\n// ─── Effect variant (PAN-1249) ───────────────────────────────────────────────\n\n/** A test-role dispatch error — wraps spawnRun / setReviewStatus failures. */\nexport class TestDispatchError extends Data.TaggedError('TestDispatchError')<{\n readonly issueId: string;\n readonly message: string;\n readonly cause?: unknown;\n}> {}\n\nexport interface DispatchTestAgentResult {\n readonly delivered: boolean;\n readonly notified: boolean;\n readonly runId?: string;\n readonly reason?: 'no-project' | 'already-running' | 'spawn-failed';\n}\n\n/**\n * Effect variant of {@link dispatchTestAgentAndNotify}. Same semantics as the\n * Promise version, but failures funnel through a typed error channel. The\n * `notifyAgent` step is allowed to fail without failing the outer Effect — its\n * outcome is reported via {@link DispatchTestAgentResult.notified}.\n */\nexport const dispatchTestAgentAndNotify = (\n issueId: string,\n workspace?: string,\n branch?: string,\n notifyAgent?: (agentId: string, msg: string) => Promise<void>,\n): Effect.Effect<DispatchTestAgentResult> =>\n Effect.gen(function* () {\n const resolved = yield* Effect.sync(() => resolveProjectFromIssueSync(issueId));\n if (!resolved) {\n yield* Effect.sync(() => {\n console.error(`[test-dispatch] No project configured for ${issueId} — cannot spawn test role`);\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `No project configured for ${issueId}. Add it to projects.yaml.`,\n });\n });\n return { delivered: false, notified: false, reason: 'no-project' as const };\n }\n\n // Clear any stale verdict artifact so a previous cycle's result.json can\n // never be misread by the deacon failsafe as this dispatch's verdict (H3).\n if (workspace) yield* Effect.sync(() => clearTestVerdictArtifact(workspace));\n\n const prompt = buildTestRolePrompt({ issueId, workspace, branch });\n\n const mergedGuard = yield* Effect.promise(() => shouldSkipDispatchAsMerged(issueId));\n if (mergedGuard.skip) {\n console.log(`[test-dispatch] Skipping test dispatch for ${issueId} — ${mergedGuard.reason}`);\n return { delivered: false, notified: false, reason: 'spawn-failed' };\n }\n\n const spawnProgram: Effect.Effect<DispatchTestAgentResult, never> = Effect.tryPromise({\n try: () => spawnRun(issueId, 'test', { workspace, prompt }),\n catch: (cause) => {\n const msg = cause instanceof Error ? cause.message : String(cause);\n return new TestDispatchError({ issueId, message: msg, cause });\n },\n }).pipe(\n Effect.matchEffect({\n onFailure: (err: TestDispatchError) => {\n // \"already running\" is non-fatal — treat as delivered.\n if (err.message.includes('already running')) {\n return Effect.sync((): DispatchTestAgentResult => {\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n console.log(`[test-dispatch] Test role already running for ${issueId}`);\n return {\n delivered: true,\n notified: false,\n reason: 'already-running',\n };\n });\n }\n return Effect.sync((): DispatchTestAgentResult => {\n console.error(`[test-dispatch] Failed to dispatch test role for ${issueId}: ${err.message}`);\n try {\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `Dispatch failed: ${err.message}`,\n });\n } catch (statusErr) {\n console.error(`[test-dispatch] Failed to set dispatch_failed status for ${issueId}:`, statusErr);\n }\n return {\n delivered: false,\n notified: false,\n reason: 'spawn-failed',\n };\n });\n },\n onSuccess: (run) =>\n Effect.sync((): DispatchTestAgentResult => {\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n console.log(`[test-dispatch] Started test role for ${issueId} (${run.id})`);\n return {\n delivered: true,\n notified: false,\n runId: run.id,\n };\n }),\n }),\n );\n\n const spawnResult: DispatchTestAgentResult = yield* spawnProgram;\n\n if (spawnResult.delivered && notifyAgent) {\n const notified = yield* Effect.tryPromise({\n try: () =>\n notifyAgent(\n `agent-${issueId.toLowerCase()}`,\n `REVIEW PASSED for ${issueId}. The test role has been dispatched automatically. Do NOT poll or check status — you will be notified when tests complete.`,\n ).then(() => true),\n catch: (err) => {\n console.log(\n `[test-dispatch] Could not notify work agent for ${issueId} (may not be running): ${(err as Error).message}`,\n );\n return false;\n },\n }).pipe(Effect.orElseSucceed(() => false));\n return { ...spawnResult, notified };\n }\n\n return spawnResult;\n });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-agent-queue-B_ukPyIK.js","names":[],"sources":["../../src/lib/cloister/test-agent-queue.ts"],"sourcesContent":["/**\n * Direct dispatch logic for triggering the test role after review passes.\n *\n * Test and browser UAT now run inside the role-based `test` run. There is no\n * separate UAT specialist and no per-project test-agent specialist pool.\n */\n\nimport { Data, Effect } from 'effect';\nimport { setReviewStatusSync } from '../review-status.js';\nimport { spawnRun } from '../agents.js';\nimport { resolveProjectFromIssueSync } from '../projects.js';\nimport { clearTestVerdictArtifact } from './test-verdict.js';\nimport { shouldSkipDispatchAsMerged } from './merge-verification.js';\n\nfunction dashboardApiUrl(): string {\n const apiPort = process.env.API_PORT || process.env.PORT || '3011';\n return process.env.OVERDECK_DASHBOARD_URL || process.env.DASHBOARD_URL || `http://localhost:${apiPort}`;\n}\n\nexport function buildTestRolePrompt(options: {\n issueId: string;\n workspace?: string;\n branch?: string;\n apiUrl?: string;\n}): string {\n const workspaceLine = options.workspace ? `WORKSPACE: ${options.workspace}` : 'WORKSPACE: resolve from the run state';\n const branchLine = options.branch ? `BRANCH: ${options.branch}` : `BRANCH: feature/${options.issueId.toLowerCase()}`;\n const apiUrl = options.apiUrl ?? dashboardApiUrl();\n\n return `TEST TASK for ${options.issueId}:\n\n${workspaceLine}\n${branchLine}\n\nRun the role-based verification flow for this already-reviewed branch.\n\nRequired steps:\n1. Before every repository command, verify you are in the workspace above with \\`pwd\\`. If not, stop and switch back to that workspace before continuing.\n2. Work only in the workspace above. Never run build, test, git, or dashboard commands from the main checkout or another worktree.\n3. Read .pan/records/${options.issueId.toLowerCase()}.json, the canonical vBRIEF under .pan/specs/ for ${options.issueId}, issue notes, and project instructions to determine required verification. Do not require retired workspace-local .pan/continue.json or .pan/spec.vbrief.json files to exist.\n4. Run the configured project gates (at minimum typecheck, lint, and tests when present/applicable).\n5. Decide whether browser UAT is required from acceptance criteria, issue notes, PR notes, or UI/dashboard wording.\n6. If UAT is required, build and run the dashboard from the workspace above, not from main. If a dashboard from another checkout is already running, stop it and start the workspace-built dashboard.\n7. If UAT is required, use the Playwright MCP tools available to the test role. Do not spawn or wake a separate UAT agent.\n8. As soon as you decide the verdict, FIRST write the deterministic verdict artifact so the pipeline can recover it even if the POST below is interrupted. Write the workspace file .pan/test/result.json with EXACTLY this shape (status is \"passed\" or \"failed\"):\n {\"status\":\"passed\",\"notes\":\"<commands run, UAT paths exercised, concise evidence>\"}\n Create the .pan/test/ directory if it does not exist. This artifact captures BOTH the gate result and the UAT verdict, and MUST be written BEFORE the POST in the next step.\n9. On success, mark tests passed (server-side shipping handles merge preparation):\n curl -s -X POST ${apiUrl}/api/review/${options.issueId}/status \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"testStatus\":\"passed\"}'\n10. On failure, mark tests failed with actionable notes:\n curl -s -X POST ${apiUrl}/api/review/${options.issueId}/status \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"testStatus\":\"failed\",\"testNotes\":\"<commands/UAT failures and exact unmet criteria>\"}'\n11. Report TESTS PASSED or TESTS FAILED with commands run, UAT paths exercised, and concise evidence.\n\nBoundaries:\n- Do NOT edit code, tests, fixtures, snapshots, or configuration.\n- Do NOT commit, push, merge, close issues, or call any merge endpoint.\n- Do NOT spawn, wake, or delegate to test-agent or uat-agent specialists.`;\n}async function dispatchTestAgentAndNotifyPromise(\n issueId: string,\n workspace?: string,\n branch?: string,\n notifyAgent?: (agentId: string, msg: string) => Promise<void>,\n): Promise<void> {\n let testTaskDelivered = false;\n\n try {\n const resolved = resolveProjectFromIssueSync(issueId);\n if (!resolved) {\n console.error(`[test-dispatch] No project configured for ${issueId} — cannot spawn test role`);\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `No project configured for ${issueId}. Add it to projects.yaml.`,\n });\n return;\n }\n\n // Clear any stale verdict artifact so a previous cycle's result.json can\n // never be misread by the deacon failsafe as this dispatch's verdict (H3).\n if (workspace) clearTestVerdictArtifact(workspace);\n\n const prompt = buildTestRolePrompt({ issueId, workspace, branch });\n\n const mergedGuard = await shouldSkipDispatchAsMerged(issueId);\n if (mergedGuard.skip) {\n console.log(`[test-dispatch] Skipping test dispatch for ${issueId} — ${mergedGuard.reason}`);\n return;\n }\n\n const run = await spawnRun(issueId, 'test', {\n workspace,\n prompt,\n });\n\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n testTaskDelivered = true;\n console.log(`[test-dispatch] Started test role for ${issueId} (${run.id})`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (msg.includes('already running')) {\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n testTaskDelivered = true;\n console.log(`[test-dispatch] Test role already running for ${issueId}`);\n } else {\n console.error(`[test-dispatch] Failed to dispatch test role for ${issueId}:`, err);\n try {\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `Dispatch failed: ${msg}`,\n });\n } catch (statusErr) {\n console.error(`[test-dispatch] Failed to set dispatch_failed status for ${issueId}:`, statusErr);\n }\n }\n }\n\n // Only notify work agent when test was successfully dispatched\n if (testTaskDelivered && notifyAgent) {\n try {\n await notifyAgent(\n `agent-${issueId.toLowerCase()}`,\n `REVIEW PASSED for ${issueId}. The test role has been dispatched automatically. Do NOT poll or check status — you will be notified when tests complete.`,\n );\n } catch (err) {\n console.log(\n `[test-dispatch] Could not notify work agent for ${issueId} (may not be running): ${(err as Error).message}`,\n );\n }\n }\n}\n\n// ─── Effect variant (PAN-1249) ───────────────────────────────────────────────\n\n/** A test-role dispatch error — wraps spawnRun / setReviewStatus failures. */\nexport class TestDispatchError extends Data.TaggedError('TestDispatchError')<{\n readonly issueId: string;\n readonly message: string;\n readonly cause?: unknown;\n}> {}\n\nexport interface DispatchTestAgentResult {\n readonly delivered: boolean;\n readonly notified: boolean;\n readonly runId?: string;\n readonly reason?: 'no-project' | 'already-running' | 'spawn-failed';\n}\n\n/**\n * Effect variant of {@link dispatchTestAgentAndNotify}. Same semantics as the\n * Promise version, but failures funnel through a typed error channel. The\n * `notifyAgent` step is allowed to fail without failing the outer Effect — its\n * outcome is reported via {@link DispatchTestAgentResult.notified}.\n */\nexport const dispatchTestAgentAndNotify = (\n issueId: string,\n workspace?: string,\n branch?: string,\n notifyAgent?: (agentId: string, msg: string) => Promise<void>,\n): Effect.Effect<DispatchTestAgentResult> =>\n Effect.gen(function* () {\n const resolved = yield* Effect.sync(() => resolveProjectFromIssueSync(issueId));\n if (!resolved) {\n yield* Effect.sync(() => {\n console.error(`[test-dispatch] No project configured for ${issueId} — cannot spawn test role`);\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `No project configured for ${issueId}. Add it to projects.yaml.`,\n });\n });\n return { delivered: false, notified: false, reason: 'no-project' as const };\n }\n\n // Clear any stale verdict artifact so a previous cycle's result.json can\n // never be misread by the deacon failsafe as this dispatch's verdict (H3).\n if (workspace) yield* Effect.sync(() => clearTestVerdictArtifact(workspace));\n\n const prompt = buildTestRolePrompt({ issueId, workspace, branch });\n\n const mergedGuard = yield* Effect.promise(() => shouldSkipDispatchAsMerged(issueId));\n if (mergedGuard.skip) {\n console.log(`[test-dispatch] Skipping test dispatch for ${issueId} — ${mergedGuard.reason}`);\n return { delivered: false, notified: false, reason: 'spawn-failed' };\n }\n\n const spawnProgram: Effect.Effect<DispatchTestAgentResult, never> = Effect.tryPromise({\n try: () => spawnRun(issueId, 'test', { workspace, prompt }),\n catch: (cause) => {\n const msg = cause instanceof Error ? cause.message : String(cause);\n return new TestDispatchError({ issueId, message: msg, cause });\n },\n }).pipe(\n Effect.matchEffect({\n onFailure: (err: TestDispatchError) => {\n // \"already running\" is non-fatal — treat as delivered.\n if (err.message.includes('already running')) {\n return Effect.sync((): DispatchTestAgentResult => {\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n console.log(`[test-dispatch] Test role already running for ${issueId}`);\n return {\n delivered: true,\n notified: false,\n reason: 'already-running',\n };\n });\n }\n return Effect.sync((): DispatchTestAgentResult => {\n console.error(`[test-dispatch] Failed to dispatch test role for ${issueId}: ${err.message}`);\n try {\n setReviewStatusSync(issueId, {\n testStatus: 'dispatch_failed',\n testNotes: `Dispatch failed: ${err.message}`,\n });\n } catch (statusErr) {\n console.error(`[test-dispatch] Failed to set dispatch_failed status for ${issueId}:`, statusErr);\n }\n return {\n delivered: false,\n notified: false,\n reason: 'spawn-failed',\n };\n });\n },\n onSuccess: (run) =>\n Effect.sync((): DispatchTestAgentResult => {\n setReviewStatusSync(issueId, { testStatus: 'testing' });\n console.log(`[test-dispatch] Started test role for ${issueId} (${run.id})`);\n return {\n delivered: true,\n notified: false,\n runId: run.id,\n };\n }),\n }),\n );\n\n const spawnResult: DispatchTestAgentResult = yield* spawnProgram;\n\n if (spawnResult.delivered && notifyAgent) {\n const notified = yield* Effect.tryPromise({\n try: () =>\n notifyAgent(\n `agent-${issueId.toLowerCase()}`,\n `REVIEW PASSED for ${issueId}. The test role has been dispatched automatically. Do NOT poll or check status — you will be notified when tests complete.`,\n ).then(() => true),\n catch: (err) => {\n console.log(\n `[test-dispatch] Could not notify work agent for ${issueId} (may not be running): ${(err as Error).message}`,\n );\n return false;\n },\n }).pipe(Effect.orElseSucceed(() => false));\n return { ...spawnResult, notified };\n }\n\n return spawnResult;\n });\n"],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Nn as init_projects, Tr as CONFIG_FILE, Vr as init_paths, X as resolveModel, bn as findProjectByPathSync, d as loadConfigNoMigration, t as init_config_yaml } from "./config-yaml-DPAieL_G.js";
|
|
2
2
|
import { t as require_toml } from "./toml-CeLDATih.js";
|
|
3
3
|
import { C as isPaneDead, L as sessionExists, w as killSession, x as init_tmux } from "./tmux-ePNhMIMU.js";
|
|
4
|
-
import { j as messageAgent, t as init_agents } from "./agents-
|
|
4
|
+
import { j as messageAgent, t as init_agents } from "./agents-C7V4odQ6.js";
|
|
5
5
|
import { S as setUatGenerationStackStartedAtSync, a as getUatGenerationSync, h as listUatGenerationsWithStacksSync, l as isMergeTrainEnabled, m as listUatGenerationsSync, o as init_merge_sync, p as listUatGenerationNamesSync, s as insertUatGenerationSync, w as updateUatGenerationSync } from "./merge-sync-CaLRt2cB.js";
|
|
6
6
|
import { A as findVBriefByIssue, N as readVBriefDocument, j as init_vbrief_index } from "./io-Wy8YpFeP.js";
|
|
7
7
|
import { S as getConversationByName, _t as getDiscoveredStats, at as aggregateDiscoveredSessionCost, ct as countDiscoveredSessions, ft as findDiscoveredSessions, k as init_conversations, mt as getDiscoveredSessionById, ot as aggregateDiscoveredSessionCostBy, yt as init_discovered_sessions } from "./conversations-DL_BAWVk.js";
|
|
8
8
|
import { f as isFlywheelGloballyPaused, i as getFlywheelActiveRunId, n as FLYWHEEL_GLOBAL_PAUSE_KEY, o as getSetting, s as init_control_settings, t as FLYWHEEL_ACTIVE_RUN_ID_KEY, w as setSetting } from "./control-settings-BMqUkXmR.js";
|
|
9
|
-
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-
|
|
9
|
+
import { n as resolveHarness, t as init_harness_resolve } from "./harness-resolve-B3f9G1Kp.js";
|
|
10
10
|
import { a as enrichSessions, c as searchSessions, i as CostThresholdError, n as getSessionsFeedFacets, o as embedSessions, r as listSessionsFeed, t as scan } from "./scanner-CUGpdp4i.js";
|
|
11
|
-
import { S as writeLatestFlywheelStatus, c as spawnFlywheelAgent, f as getFlywheelRunDetail, g as nextFlywheelRunId, h as listFlywheelRuns, i as loadResumeSessionId, r as isFlywheelDevcontainerRuntime, s as saveResumeSessionId, t as FLYWHEEL_ORCHESTRATOR_AGENT_ID, u as abortFlywheelRun, v as readFlywheelLaunchMetadata, x as writeFlywheelLaunchMetadata, y as resolveLiveFlywheelRunId } from "./flywheel-
|
|
11
|
+
import { S as writeLatestFlywheelStatus, c as spawnFlywheelAgent, f as getFlywheelRunDetail, g as nextFlywheelRunId, h as listFlywheelRuns, i as loadResumeSessionId, r as isFlywheelDevcontainerRuntime, s as saveResumeSessionId, t as FLYWHEEL_ORCHESTRATOR_AGENT_ID, u as abortFlywheelRun, v as readFlywheelLaunchMetadata, x as writeFlywheelLaunchMetadata, y as resolveLiveFlywheelRunId } from "./flywheel-BLoVNtJV.js";
|
|
12
12
|
import { t as recordDeaconNudge } from "./deacon-nudge-log-CJGA6aSQ.js";
|
|
13
13
|
import { n as init_acceptance_criteria, t as extractACFromDocument } from "./acceptance-criteria-l0DSvFFS.js";
|
|
14
14
|
import { n as ensureDevcontainerSync, r as init_ensure_devcontainer } from "./ensure-devcontainer-XLL0vtgV.js";
|
|
@@ -455,12 +455,12 @@ async function pauseFlywheelRunForDashboard() {
|
|
|
455
455
|
if (before.activeRunId) try {
|
|
456
456
|
const { readFile } = await import("node:fs/promises");
|
|
457
457
|
const { join } = await import("node:path");
|
|
458
|
-
const { getAgentDir } = await import("./agents-
|
|
458
|
+
const { getAgentDir } = await import("./agents-C-vqmKDi.js");
|
|
459
459
|
const sessionId = (await readFile(join(getAgentDir(FLYWHEEL_ORCHESTRATOR_AGENT_ID), "session.id"), "utf-8")).trim();
|
|
460
460
|
if (sessionId) await saveResumeSessionId(before.activeRunId, sessionId);
|
|
461
461
|
} catch {}
|
|
462
462
|
await setPaused(true);
|
|
463
|
-
await import("./agents-
|
|
463
|
+
await import("./agents-C-vqmKDi.js").then(({ stopAgent }) => Effect.runPromise(stopAgent(FLYWHEEL_ORCHESTRATOR_AGENT_ID)));
|
|
464
464
|
return {
|
|
465
465
|
before,
|
|
466
466
|
after: await readGateSnapshot(),
|
|
@@ -470,7 +470,7 @@ async function pauseFlywheelRunForDashboard() {
|
|
|
470
470
|
async function abortFlywheelRunForDashboard() {
|
|
471
471
|
const candidate = await getActiveRunId();
|
|
472
472
|
if (!candidate) return { aborted: await resolveLiveFlywheelRunId() ?? null };
|
|
473
|
-
const { stopAgent } = await import("./agents-
|
|
473
|
+
const { stopAgent } = await import("./agents-C-vqmKDi.js");
|
|
474
474
|
await Effect.runPromise(stopAgent(FLYWHEEL_ORCHESTRATOR_AGENT_ID));
|
|
475
475
|
await abortFlywheelRun(candidate);
|
|
476
476
|
return { aborted: candidate };
|
|
@@ -1901,7 +1901,7 @@ function canStartUatTrainReconciler() {
|
|
|
1901
1901
|
async function getReadySet() {
|
|
1902
1902
|
const status = await readCurrentFlywheelStatusForDashboard();
|
|
1903
1903
|
if (!status) return null;
|
|
1904
|
-
const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-
|
|
1904
|
+
const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-CCwF60b-.js");
|
|
1905
1905
|
const fromVerbs = (await Effect.runPromise(computeMergeQueue(status.activePipeline, projectRoot(), {
|
|
1906
1906
|
getPrUrl: resolveMergeQueuePrUrl,
|
|
1907
1907
|
onIneligible: (issueId, reason) => console.log(`[uat-train] ${issueId} has a merge verb but is not merge-eligible (${reason}) — excluded from the ready set`)
|
|
@@ -1927,7 +1927,7 @@ async function getReadySet() {
|
|
|
1927
1927
|
*/
|
|
1928
1928
|
async function sweepEligibleFeatures(alreadyIncluded) {
|
|
1929
1929
|
try {
|
|
1930
|
-
const { loadReviewStatuses, mergeGateEligibility } = await import("./review-status-
|
|
1930
|
+
const { loadReviewStatuses, mergeGateEligibility } = await import("./review-status-h7BXIA4z.js");
|
|
1931
1931
|
const { resolveProjectFromIssueSync } = await import("./projects-BNmVxnNt.js");
|
|
1932
1932
|
const { execFile } = await import("node:child_process");
|
|
1933
1933
|
const { promisify } = await import("node:util");
|
|
@@ -2162,7 +2162,7 @@ async function postUatGenerationStackPayload(name) {
|
|
|
2162
2162
|
}
|
|
2163
2163
|
async function postUatGenerationPromotePayload(name, firePostMerge) {
|
|
2164
2164
|
const root = projectRoot();
|
|
2165
|
-
const { reviewRecordEligibility } = await import("./flywheel-merge-order-
|
|
2165
|
+
const { reviewRecordEligibility } = await import("./flywheel-merge-order-CCwF60b-.js");
|
|
2166
2166
|
const result = await promoteUatGeneration(name, root, {
|
|
2167
2167
|
git: buildUatPromoteGitDeps(root),
|
|
2168
2168
|
store: {
|
|
@@ -2180,4 +2180,4 @@ async function postUatGenerationPromotePayload(name, firePostMerge) {
|
|
|
2180
2180
|
//#endregion
|
|
2181
2181
|
export { getDashboardIdentity as _, postUatGenerationStackPayload as a, startUatTrainReconciler as c, openFlywheelRunReportForDashboard as d, pauseFlywheelRunForDashboard as f, runDashboardDbJob as g, startFlywheelRunForDashboard as h, postUatGenerationPromotePayload as i, stopUatTrainReconciler as l, resumeFlywheelRunForDashboard as m, getUatCandidatePayload as n, resolveUatProjectRoot as o, readCurrentFlywheelStatusForDashboard as p, getUatGenerationsPayload as r, runUatTrainReconcile as s, canStartUatTrainReconciler as t, abortFlywheelRunForDashboard as u, readHostDashboardApiPort as v, shouldRefuseHostDashboardPort as y };
|
|
2182
2182
|
|
|
2183
|
-
//# sourceMappingURL=uat-train-
|
|
2183
|
+
//# sourceMappingURL=uat-train-BLBAbJ8Y.js.map
|