termdock 1.4.325 → 1.4.326
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/client/assets/App-DrnLToMO.js +186 -0
- package/dist/client/assets/App-DrnLToMO.js.br +0 -0
- package/dist/client/assets/App-DrnLToMO.js.gz +0 -0
- package/dist/client/assets/ArchitecturePanel-CGjioSu0.js +9 -0
- package/dist/client/assets/ArchitecturePanel-CGjioSu0.js.br +0 -0
- package/dist/client/assets/ArchitecturePanel-CGjioSu0.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-ChPZVfRz.js → ChangeWalkthroughPanel-BsG5tR4F.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-BsG5tR4F.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-BsG5tR4F.js.gz +0 -0
- package/dist/client/assets/{CollaborationMainWorkspace-DkNhqCj4.js → CollaborationMainWorkspace-KMTTUtsp.js} +1 -1
- package/dist/client/assets/CollaborationMainWorkspace-KMTTUtsp.js.br +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-KMTTUtsp.js.gz +0 -0
- package/dist/client/assets/CollaborationTaskContent-D-qPRh4f.js +2 -0
- package/dist/client/assets/ComputerControlView-Bh3aWVA-.js +5 -0
- package/dist/client/assets/ComputerControlView-Bh3aWVA-.js.br +0 -0
- package/dist/client/assets/ComputerControlView-Bh3aWVA-.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-BIL5vjer.js → DagPlayground-761ejCr8.js} +1 -1
- package/dist/client/assets/DagPlayground-761ejCr8.js.br +0 -0
- package/dist/client/assets/DagPlayground-761ejCr8.js.gz +0 -0
- package/dist/client/assets/{DiffLab-CX1AwU2v.js → DiffLab-yWG9ju3P.js} +1 -1
- package/dist/client/assets/DiffLab-yWG9ju3P.js.br +0 -0
- package/dist/client/assets/DiffLab-yWG9ju3P.js.gz +0 -0
- package/dist/client/assets/{DiffReview-CLc1hwO7.js → DiffReview-02640ofg.js} +1 -1
- package/dist/client/assets/DiffReview-02640ofg.js.br +0 -0
- package/dist/client/assets/DiffReview-02640ofg.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-DE6m1o4p.js → DiffReviewLab-D0W0SEIG.js} +1 -1
- package/dist/client/assets/DiffReviewLab-D0W0SEIG.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-D0W0SEIG.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-BDwtwbQM.js → DiffViewer-CLjrE1oE.js} +1 -1
- package/dist/client/assets/DiffViewer-CLjrE1oE.js.br +0 -0
- package/dist/client/assets/DiffViewer-CLjrE1oE.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-DEwATnxi.js → ModelPreview-BnIvn0Fn.js} +1 -1
- package/dist/client/assets/ModelPreview-BnIvn0Fn.js.br +0 -0
- package/dist/client/assets/ModelPreview-BnIvn0Fn.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-jOQJePDV.js → RightSidebar-Dx4Jf94o.js} +27 -27
- package/dist/client/assets/RightSidebar-Dx4Jf94o.js.br +0 -0
- package/dist/client/assets/RightSidebar-Dx4Jf94o.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-GBSf8AEr.js → abnfDiagram-VCTEODGH-C-k_lOuF.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-C-k_lOuF.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-C-k_lOuF.js.gz +0 -0
- package/dist/client/assets/{app-VCmiASzh.js → app-DNdmWYEJ.js} +13 -13
- package/dist/client/assets/app-DNdmWYEJ.js.br +0 -0
- package/dist/client/assets/app-DNdmWYEJ.js.gz +0 -0
- package/dist/client/assets/{arc-BecvFgjf.js → arc-DvBgO2ML.js} +1 -1
- package/dist/client/assets/arc-DvBgO2ML.js.br +0 -0
- package/dist/client/assets/arc-DvBgO2ML.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-Cfk47zEF.js → architectureDiagram-5GKGNRK7-BrZRHTn8.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BrZRHTn8.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-BrZRHTn8.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-BHYgsLvx.js → blockDiagram-I7D4REHJ-DuvUrrD4.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-DuvUrrD4.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DuvUrrD4.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-ClWWjTyz.js → c4Diagram-7LVT6UL2-BHM4QTZx.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-BHM4QTZx.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BHM4QTZx.js.gz +0 -0
- package/dist/client/assets/channel-BqA2i16W.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-Cat1Dsqx.js → chunk-2Q5K7J3B-TnQro6-_.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-CT0S2-E8.js → chunk-5VM5RSS4-Vl8qqZf_.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-7o5_yA1b.js → chunk-F27PBJKO-DH6GfEdY.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-DH6GfEdY.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-DH6GfEdY.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-iAZxGMup.js → chunk-IMKFNOWR-DpKvDckf.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-DpKvDckf.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-DpKvDckf.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-DLvwOWZm.js → chunk-JWPE2WC7-DP773yal.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-BpiRuG56.js → chunk-POPQ4Y6H-BoR9GKji.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-DpB7xpqI.js → chunk-SVP7TREG-DFbN0Uvp.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-DFbN0Uvp.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DFbN0Uvp.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-Z_Sti6yX.js → chunk-TICWLB2K-BCoshST2.js} +1 -1
- package/dist/client/assets/{chunk-TICWLB2K-Z_Sti6yX.js.br → chunk-TICWLB2K-BCoshST2.js.br} +0 -0
- package/dist/client/assets/chunk-TICWLB2K-BCoshST2.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-DKngx1rf.js → chunk-XXDRQBXY-DMAOtV4y.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-ChnKE-K2.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-ChnKE-K2.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-CDo8eUXo.js → cose-bilkent-JH36ORCC-BlsyBXEx.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-BlsyBXEx.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-BlsyBXEx.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-R6vltrl4.js → cynefin-OW5HDTMX-Btg93pC8.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-Btg93pC8.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-Btg93pC8.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-BTGMG-zO.js → cynefinDiagram-5FMLGOSQ-TenkE0c6.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-TenkE0c6.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-TenkE0c6.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-D67dNSHU.js → dagre-GXQ25YYZ-BPYSZagf.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-BPYSZagf.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-BPYSZagf.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-CxZmcHs4.js → diagram-S7CK7UJ4-BrJ04LYZ.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-BrJ04LYZ.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-BrJ04LYZ.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-BErivsDz.js → diagram-UQ7AKVKN-DFHufHof.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-DFHufHof.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-DFHufHof.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-BQWEvK9d.js → diagram-VSXAHHWV-CFidKRGl.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-CFidKRGl.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-CFidKRGl.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-COR5k4JL.js → diagram-VX7I27RA-C8arbI7W.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-C8arbI7W.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-C8arbI7W.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-Cx6oTlVi.js → diagram-Z3DM3KII-fMLMbGcS.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-fMLMbGcS.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-fMLMbGcS.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-dKNZki9k.js → ebnfDiagram-PWID7BFC-BjBUR2zi.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BjBUR2zi.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BjBUR2zi.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-DD06d9Gl.js → erDiagram-RLTQ6QDP-BVDyIbY-.js} +1 -1
- package/dist/client/assets/{erDiagram-RLTQ6QDP-DD06d9Gl.js.br → erDiagram-RLTQ6QDP-BVDyIbY-.js.br} +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-BVDyIbY-.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-DXNAvw1d.js → flowDiagram-HODETNUW-Dej14Ugo.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-Dej14Ugo.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Dej14Ugo.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-BSMu3Rsd.js → ganttDiagram-EL5Y4UJY-4q8Cv5Jl.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-4q8Cv5Jl.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-4q8Cv5Jl.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-D1TteC76.js → gestureArbiter-q3jASYgN.js} +1 -1
- package/dist/client/assets/gestureArbiter-q3jASYgN.js.br +0 -0
- package/dist/client/assets/gestureArbiter-q3jASYgN.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-DNDKI803.js → gitGraphDiagram-WWUBYQGX-DnE330VW.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DnE330VW.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DnE330VW.js.gz +0 -0
- package/dist/client/assets/index-Dd_3ISCb.css +1 -0
- package/dist/client/assets/index-Dd_3ISCb.css.br +0 -0
- package/dist/client/assets/{index-Ctz-IDjR.css.gz → index-Dd_3ISCb.css.gz} +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-BRmB1D5B.js → infoDiagram-27XIBGKW-BJyKPHsP.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-DXU4nnZ6.js → ishikawaDiagram-5VMMS53U-CJV8ONjw.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CJV8ONjw.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CJV8ONjw.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-DFx7AfiP.js → journeyDiagram-3NMN7TZE-C_dzPksa.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-C_dzPksa.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-C_dzPksa.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-B1ikfXJe.js → kanban-definition-UXKFOSKX-05lEbrKo.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-05lEbrKo.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-05lEbrKo.js.gz +0 -0
- package/dist/client/assets/{layout-DkyvZr1Y.js → layout-CV4xlefz.js} +1 -1
- package/dist/client/assets/layout-CV4xlefz.js.br +0 -0
- package/dist/client/assets/layout-CV4xlefz.js.gz +0 -0
- package/dist/client/assets/{linear-CECAbRuX.js → linear-Ne3ggM1q.js} +1 -1
- package/dist/client/assets/linear-Ne3ggM1q.js.br +0 -0
- package/dist/client/assets/linear-Ne3ggM1q.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-CYY7Wb75.js → mermaid.core-CAOB7F_V.js} +5 -5
- package/dist/client/assets/mermaid.core-CAOB7F_V.js.br +0 -0
- package/dist/client/assets/mermaid.core-CAOB7F_V.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-CTs-Y3Lq.js → mindmap-definition-YA3MSWOX-BWwXAlmP.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BWwXAlmP.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BWwXAlmP.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-CPNGDwv6.js → passwordBootstrap-Cm1ye6eX.js} +1 -1
- package/dist/client/assets/passwordBootstrap-Cm1ye6eX.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-Cm1ye6eX.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-Y1oZrwtK.js → pegDiagram-XKGWAZYB-DKhyr6CD.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-DKhyr6CD.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DKhyr6CD.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-DYSm5OxQ.js → pieDiagram-E7YTZNPT-h2Q03QIh.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-h2Q03QIh.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-h2Q03QIh.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DpibIBz0.js → quadrantDiagram-AXDQQJYC-CWxDTEGF.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DpibIBz0.js.br → quadrantDiagram-AXDQQJYC-CWxDTEGF.js.br} +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-CWxDTEGF.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-b7jp7C1K.js → railroadDiagram-O6MQD6OU-BY5sm6Td.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BY5sm6Td.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BY5sm6Td.js.gz +0 -0
- package/dist/client/assets/rdpSession-CWvrHSd8.js +1 -0
- package/dist/client/assets/rdpSession-CWvrHSd8.js.br +0 -0
- package/dist/client/assets/rdpSession-CWvrHSd8.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-BPQ_i68g.js → referenceLongPress-5uMCEptL.js} +1 -1
- package/dist/client/assets/referenceLongPress-5uMCEptL.js.br +0 -0
- package/dist/client/assets/referenceLongPress-5uMCEptL.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-BMinO1mf.js → requirementDiagram-BXWQKSXE-D8IK92YE.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-D8IK92YE.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-D8IK92YE.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-CmC977VA.js → sankeyDiagram-P5KCCOFB-NkH3NrGx.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-NkH3NrGx.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-NkH3NrGx.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-D6eGbgK8.js → sequenceDiagram-WJ2MYXX4-DieLFBCA.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DieLFBCA.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DieLFBCA.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-CnRvyBd8.js → sizeCapture-INFHLROL-C-rwOQvA.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-C-rwOQvA.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-C-rwOQvA.js.gz +0 -0
- package/dist/client/assets/{sparkles-DzadqrlX.js → sparkles-Cku-tzxx.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-DRSalH10.js → stateDiagram-D77RDMKH-C7mgOyy6.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-C7mgOyy6.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-C7mgOyy6.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BDWPsG19.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-u-NnDSzq.js → swimlanes-42K2YHIH-C4aAuzlE.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-C4aAuzlE.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-C4aAuzlE.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DE8jpsjW.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-DkLijg_J.js → timeline-definition-24CTP7MA-CKntrnOJ.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-CKntrnOJ.js.br +0 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-DkLijg_J.js.gz → timeline-definition-24CTP7MA-CKntrnOJ.js.gz} +0 -0
- package/dist/client/assets/{triangle-alert-D_6xTTiX.js → triangle-alert-DPNiOY7C.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-AWGJtiv3.js → vennDiagram-4TSXK5OY-W9jedFfD.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-W9jedFfD.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-W9jedFfD.js.gz +0 -0
- package/dist/client/assets/{videoCompression-D3y7Bq8J.js → videoCompression-BYHN4Eba.js} +1 -1
- package/dist/client/assets/videoCompression-BYHN4Eba.js.br +0 -0
- package/dist/client/assets/videoCompression-BYHN4Eba.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-DI0aZr_y.js → wardleyDiagram-VM6X3IG4-CzvXMjBC.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CzvXMjBC.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CzvXMjBC.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-CCoIN3uU.js → xychartDiagram-S5SC5T6Z-VD8CKhIU.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-VD8CKhIU.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-VD8CKhIU.js.gz +0 -0
- package/dist/client/index.html +2 -2
- package/dist/client/index.html.br +0 -0
- package/dist/client/index.html.gz +0 -0
- package/dist/client/sw.js +1 -1
- package/dist/client/sw.js.br +0 -0
- package/dist/client/sw.js.gz +0 -0
- package/dist/server/agent/integrationServer.js +6 -1
- package/dist/server/routes/terminal.js +21 -13
- package/dist/server/utils/hostResources.js +35 -0
- package/dist/server/utils/tmuxRecoveryOperations.js +72 -18
- package/package.json +1 -1
- package/runtime-manifest.json +3 -3
- package/dist/client/assets/App-D8MWr9xp.js +0 -186
- package/dist/client/assets/App-D8MWr9xp.js.br +0 -0
- package/dist/client/assets/App-D8MWr9xp.js.gz +0 -0
- package/dist/client/assets/ArchitecturePanel-CJXvqmtu.js +0 -9
- package/dist/client/assets/ArchitecturePanel-CJXvqmtu.js.br +0 -0
- package/dist/client/assets/ArchitecturePanel-CJXvqmtu.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-ChPZVfRz.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-ChPZVfRz.js.gz +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-DkNhqCj4.js.br +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-DkNhqCj4.js.gz +0 -0
- package/dist/client/assets/CollaborationTaskContent-BA3bVNJo.js +0 -2
- package/dist/client/assets/ComputerControlView-BTntDI6C.js +0 -5
- package/dist/client/assets/ComputerControlView-BTntDI6C.js.br +0 -0
- package/dist/client/assets/ComputerControlView-BTntDI6C.js.gz +0 -0
- package/dist/client/assets/DagPlayground-BIL5vjer.js.br +0 -0
- package/dist/client/assets/DagPlayground-BIL5vjer.js.gz +0 -0
- package/dist/client/assets/DiffLab-CX1AwU2v.js.br +0 -0
- package/dist/client/assets/DiffLab-CX1AwU2v.js.gz +0 -0
- package/dist/client/assets/DiffReview-CLc1hwO7.js.br +0 -0
- package/dist/client/assets/DiffReview-CLc1hwO7.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-DE6m1o4p.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-DE6m1o4p.js.gz +0 -0
- package/dist/client/assets/DiffViewer-BDwtwbQM.js.br +0 -0
- package/dist/client/assets/DiffViewer-BDwtwbQM.js.gz +0 -0
- package/dist/client/assets/ModelPreview-DEwATnxi.js.br +0 -0
- package/dist/client/assets/ModelPreview-DEwATnxi.js.gz +0 -0
- package/dist/client/assets/RightSidebar-jOQJePDV.js.br +0 -0
- package/dist/client/assets/RightSidebar-jOQJePDV.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-GBSf8AEr.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-GBSf8AEr.js.gz +0 -0
- package/dist/client/assets/app-VCmiASzh.js.br +0 -0
- package/dist/client/assets/app-VCmiASzh.js.gz +0 -0
- package/dist/client/assets/arc-BecvFgjf.js.br +0 -0
- package/dist/client/assets/arc-BecvFgjf.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-Cfk47zEF.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-Cfk47zEF.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-BHYgsLvx.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-BHYgsLvx.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-ClWWjTyz.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-ClWWjTyz.js.gz +0 -0
- package/dist/client/assets/channel-8F8qxLSK.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-7o5_yA1b.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-7o5_yA1b.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-iAZxGMup.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-iAZxGMup.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DpB7xpqI.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-DpB7xpqI.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-Z_Sti6yX.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-C0AmKz7U.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-C0AmKz7U.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-CDo8eUXo.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-CDo8eUXo.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-R6vltrl4.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-R6vltrl4.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BTGMG-zO.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BTGMG-zO.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-D67dNSHU.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-D67dNSHU.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CxZmcHs4.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CxZmcHs4.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BErivsDz.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-BErivsDz.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BQWEvK9d.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BQWEvK9d.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-COR5k4JL.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-COR5k4JL.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-Cx6oTlVi.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-Cx6oTlVi.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-dKNZki9k.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-dKNZki9k.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-DD06d9Gl.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-DXNAvw1d.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-DXNAvw1d.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BSMu3Rsd.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-BSMu3Rsd.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-D1TteC76.js.br +0 -0
- package/dist/client/assets/gestureArbiter-D1TteC76.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DNDKI803.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DNDKI803.js.gz +0 -0
- package/dist/client/assets/index-Ctz-IDjR.css +0 -1
- package/dist/client/assets/index-Ctz-IDjR.css.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-DXU4nnZ6.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-DXU4nnZ6.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DFx7AfiP.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DFx7AfiP.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-B1ikfXJe.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-B1ikfXJe.js.gz +0 -0
- package/dist/client/assets/layout-DkyvZr1Y.js.br +0 -0
- package/dist/client/assets/layout-DkyvZr1Y.js.gz +0 -0
- package/dist/client/assets/linear-CECAbRuX.js.br +0 -0
- package/dist/client/assets/linear-CECAbRuX.js.gz +0 -0
- package/dist/client/assets/mermaid.core-CYY7Wb75.js.br +0 -0
- package/dist/client/assets/mermaid.core-CYY7Wb75.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CTs-Y3Lq.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CTs-Y3Lq.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-CPNGDwv6.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-CPNGDwv6.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-Y1oZrwtK.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-Y1oZrwtK.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DYSm5OxQ.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-DYSm5OxQ.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DpibIBz0.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-b7jp7C1K.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-b7jp7C1K.js.gz +0 -0
- package/dist/client/assets/rdpSession-DU_OJfX5.js +0 -1
- package/dist/client/assets/rdpSession-DU_OJfX5.js.br +0 -0
- package/dist/client/assets/rdpSession-DU_OJfX5.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-BPQ_i68g.js.br +0 -0
- package/dist/client/assets/referenceLongPress-BPQ_i68g.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BMinO1mf.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BMinO1mf.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-CmC977VA.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-CmC977VA.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-D6eGbgK8.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-D6eGbgK8.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CnRvyBd8.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-CnRvyBd8.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-DRSalH10.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-DRSalH10.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DKe8v_ic.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-u-NnDSzq.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-u-NnDSzq.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-ei5b8ZYx.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-DkLijg_J.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-AWGJtiv3.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-AWGJtiv3.js.gz +0 -0
- package/dist/client/assets/videoCompression-D3y7Bq8J.js.br +0 -0
- package/dist/client/assets/videoCompression-D3y7Bq8J.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-DI0aZr_y.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-DI0aZr_y.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CCoIN3uU.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CCoIN3uU.js.gz +0 -0
|
@@ -4,10 +4,27 @@ import { randomUUID } from 'node:crypto';
|
|
|
4
4
|
export function summarizeRecoveryOperation(operation) {
|
|
5
5
|
const counts = operation.items.reduce((total, item) => {
|
|
6
6
|
total.total += 1;
|
|
7
|
-
|
|
7
|
+
if (item.state === 'resource_wait') {
|
|
8
|
+
total.resource_wait += 1;
|
|
9
|
+
total.paused_count += 1;
|
|
10
|
+
}
|
|
11
|
+
else if (item.state === 'paused') {
|
|
12
|
+
total.paused_count += 1;
|
|
13
|
+
if (item.pauseReason === 'resources')
|
|
14
|
+
total.resource_wait += 1;
|
|
15
|
+
}
|
|
16
|
+
else if (item.state === 'queued' && operation.paused) {
|
|
17
|
+
total.paused_count += 1;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
total[item.state] += 1;
|
|
21
|
+
}
|
|
8
22
|
return total;
|
|
9
|
-
}, { total: 0, queued: 0, resource_wait: 0, running: 0, succeeded: 0, failed: 0 });
|
|
10
|
-
return { ...structuredClone(operation), ...counts
|
|
23
|
+
}, { total: 0, queued: 0, resource_wait: 0, running: 0, succeeded: 0, failed: 0, paused_count: 0 });
|
|
24
|
+
return { ...structuredClone(operation), ...counts, counts: {
|
|
25
|
+
total: counts.total, queued: counts.queued, running: counts.running,
|
|
26
|
+
succeeded: counts.succeeded, failed: counts.failed, paused: counts.paused_count,
|
|
27
|
+
} };
|
|
11
28
|
}
|
|
12
29
|
export class TmuxRecoveryOperationError extends Error {
|
|
13
30
|
code;
|
|
@@ -78,7 +95,8 @@ export class TmuxRecoveryOperationStore {
|
|
|
78
95
|
if (item.state === 'running') {
|
|
79
96
|
// A killed worker may have submitted the native resume before it died.
|
|
80
97
|
// The runner always performs an exact-owner reconciliation before it launches.
|
|
81
|
-
item.state = 'queued';
|
|
98
|
+
item.state = operation.paused ? 'paused' : 'queued';
|
|
99
|
+
item.pauseReason = operation.paused ? 'manual' : undefined;
|
|
82
100
|
item.phase = 'restart_reconciliation';
|
|
83
101
|
item.errorCode = 'RECOVERY_WORKER_RESTARTED';
|
|
84
102
|
item.error = 'Service restarted during recovery; exact runtime ownership will be reconciled before retry.';
|
|
@@ -86,7 +104,7 @@ export class TmuxRecoveryOperationStore {
|
|
|
86
104
|
}
|
|
87
105
|
}
|
|
88
106
|
if (!terminalState(operation.state) && !operation.paused)
|
|
89
|
-
operation.state = 'queued';
|
|
107
|
+
operation.state = operation.items.some(item => item.state === 'paused' && item.pauseReason === 'resources') ? 'paused' : 'queued';
|
|
90
108
|
operation.updatedAt = recovered ? now : operation.updatedAt;
|
|
91
109
|
}
|
|
92
110
|
if (recovered)
|
|
@@ -109,7 +127,7 @@ export class TmuxRecoveryOperationStore {
|
|
|
109
127
|
? { ...input.scope, sessionIds: [...new Set(input.scope.sessionIds ?? [])].sort() }
|
|
110
128
|
: structuredClone(input.scope);
|
|
111
129
|
const fingerprint = requestHash({ incidentId: input.incidentId, sessionIds, scope, concurrency });
|
|
112
|
-
const existingKey = this.state.operations.find(operation => operation.idempotencyKey === input.idempotencyKey);
|
|
130
|
+
const existingKey = this.state.operations.find(operation => operation.idempotencyKey === input.idempotencyKey || operation.idempotencyKeyAliases?.includes(input.idempotencyKey));
|
|
113
131
|
if (existingKey) {
|
|
114
132
|
if (existingKey.requestHash !== fingerprint)
|
|
115
133
|
throw new TmuxRecoveryOperationError('IDEMPOTENCY_CONFLICT', 'The idempotency key was already used for a different recovery request.');
|
|
@@ -118,9 +136,19 @@ export class TmuxRecoveryOperationStore {
|
|
|
118
136
|
if (this.state.operations.length >= 2000)
|
|
119
137
|
throw new TmuxRecoveryOperationError('RECOVERY_OPERATION_LIMIT', 'Recovery operation history is full; archive diagnostics before creating another operation.');
|
|
120
138
|
const inProgress = this.state.operations.find(operation => !terminalState(operation.state)
|
|
121
|
-
&& operation.
|
|
122
|
-
|
|
123
|
-
|
|
139
|
+
&& operation.requestHash === fingerprint
|
|
140
|
+
&& operation.items.some(item => sessionIds.includes(item.sessionId) && (item.state === 'queued' || item.state === 'resource_wait' || item.state === 'paused' || item.state === 'running')));
|
|
141
|
+
if (inProgress) {
|
|
142
|
+
inProgress.idempotencyKeyAliases = [...new Set([...(inProgress.idempotencyKeyAliases ?? []), input.idempotencyKey])];
|
|
143
|
+
inProgress.updatedAt = Date.now();
|
|
144
|
+
await this.persist();
|
|
145
|
+
this.emit();
|
|
146
|
+
return structuredClone(inProgress);
|
|
147
|
+
}
|
|
148
|
+
const overlapping = this.state.operations.find(operation => !terminalState(operation.state)
|
|
149
|
+
&& operation.items.some(item => sessionIds.includes(item.sessionId) && (item.state === 'queued' || item.state === 'resource_wait' || item.state === 'paused' || item.state === 'running')));
|
|
150
|
+
if (overlapping)
|
|
151
|
+
throw new TmuxRecoveryOperationError('RECOVERY_SESSION_IN_PROGRESS', 'At least one selected session is already in a recovery operation.', overlapping.id);
|
|
124
152
|
const now = Date.now();
|
|
125
153
|
const operation = {
|
|
126
154
|
id: randomUUID(), incidentId: input.incidentId, idempotencyKey: input.idempotencyKey,
|
|
@@ -157,6 +185,13 @@ export class TmuxRecoveryOperationStore {
|
|
|
157
185
|
return null;
|
|
158
186
|
if (!terminalState(operation.state)) {
|
|
159
187
|
operation.paused = true;
|
|
188
|
+
operation.pauseReason = 'manual';
|
|
189
|
+
for (const item of operation.items) {
|
|
190
|
+
if (item.state === 'queued' || item.state === 'resource_wait' || (item.state === 'paused' && item.pauseReason === 'resources')) {
|
|
191
|
+
item.state = 'paused';
|
|
192
|
+
item.pauseReason = 'manual';
|
|
193
|
+
}
|
|
194
|
+
}
|
|
160
195
|
operation.state = 'paused';
|
|
161
196
|
operation.updatedAt = Date.now();
|
|
162
197
|
await this.persist();
|
|
@@ -170,7 +205,16 @@ export class TmuxRecoveryOperationStore {
|
|
|
170
205
|
return null;
|
|
171
206
|
if (!terminalState(operation.state)) {
|
|
172
207
|
operation.paused = false;
|
|
173
|
-
operation.
|
|
208
|
+
operation.pauseReason = undefined;
|
|
209
|
+
for (const item of operation.items) {
|
|
210
|
+
if (item.state === 'paused' && item.pauseReason === 'manual') {
|
|
211
|
+
item.state = item.resourceWaitReason ? 'paused' : 'queued';
|
|
212
|
+
item.pauseReason = item.resourceWaitReason ? 'resources' : undefined;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const waitingForResources = operation.items.some(item => item.state === 'paused' && item.pauseReason === 'resources');
|
|
216
|
+
operation.state = waitingForResources ? 'paused' : 'queued';
|
|
217
|
+
operation.pauseReason = waitingForResources ? 'resources' : undefined;
|
|
174
218
|
operation.updatedAt = Date.now();
|
|
175
219
|
await this.persist();
|
|
176
220
|
this.emit();
|
|
@@ -184,7 +228,8 @@ export class TmuxRecoveryOperationStore {
|
|
|
184
228
|
const lastCompleted = [...items].filter(item => item.completedAt !== null).sort((a, b) => (b.completedAt ?? 0) - (a.completedAt ?? 0))[0];
|
|
185
229
|
return {
|
|
186
230
|
queued: items.filter(item => item.state === 'queued').length,
|
|
187
|
-
|
|
231
|
+
paused: items.filter(item => item.state === 'paused' || item.state === 'resource_wait').length,
|
|
232
|
+
resource_wait: items.filter(item => item.state === 'resource_wait' || (item.state === 'paused' && item.pauseReason === 'resources')).length,
|
|
188
233
|
running: items.filter(item => item.state === 'running').length,
|
|
189
234
|
activeLaunches: this.active,
|
|
190
235
|
lastCompletedAt: lastCompleted?.completedAt ?? null,
|
|
@@ -213,8 +258,8 @@ export class TmuxRecoveryOperationStore {
|
|
|
213
258
|
while (this.active < this.concurrencyLimit) {
|
|
214
259
|
const candidate = this.state.operations.find(operation => !operation.paused && !terminalState(operation.state)
|
|
215
260
|
&& operation.items.filter(item => item.state === 'running').length < operation.concurrency
|
|
216
|
-
&& operation.items.some(item => (item.state === 'queued' || item.state === 'resource_wait') && !deferred.has(`${operation.id}:${item.sessionId}`)));
|
|
217
|
-
const item = candidate?.items.find(entry => (entry.state === 'queued' || entry.state === 'resource_wait') && !deferred.has(`${candidate.id}:${entry.sessionId}`));
|
|
261
|
+
&& operation.items.some(item => (item.state === 'queued' || item.state === 'resource_wait' || (item.state === 'paused' && item.pauseReason === 'resources')) && !deferred.has(`${operation.id}:${item.sessionId}`)));
|
|
262
|
+
const item = candidate?.items.find(entry => (entry.state === 'queued' || entry.state === 'resource_wait' || (entry.state === 'paused' && entry.pauseReason === 'resources')) && !deferred.has(`${candidate.id}:${entry.sessionId}`));
|
|
218
263
|
if (!candidate || !item)
|
|
219
264
|
break;
|
|
220
265
|
if (this.admission) {
|
|
@@ -228,10 +273,12 @@ export class TmuxRecoveryOperationStore {
|
|
|
228
273
|
item.memAvailableBytes = admission.memAvailableBytes;
|
|
229
274
|
item.estimatedRssBytes = admission.estimatedRssBytes ?? item.estimatedRssBytes;
|
|
230
275
|
if (!admission.admitted) {
|
|
231
|
-
item.state = '
|
|
276
|
+
item.state = 'paused';
|
|
277
|
+
item.pauseReason = 'resources';
|
|
232
278
|
item.phase = 'resource_wait';
|
|
233
279
|
item.resourceWaitReason = admission.reason ?? 'Resource budget is not currently available.';
|
|
234
|
-
candidate.
|
|
280
|
+
candidate.pauseReason = 'resources';
|
|
281
|
+
candidate.state = candidate.items.some(candidateItem => candidateItem.state === 'running') ? 'running' : 'paused';
|
|
235
282
|
candidate.updatedAt = Date.now();
|
|
236
283
|
deferred.add(`${candidate.id}:${item.sessionId}`);
|
|
237
284
|
await this.persist();
|
|
@@ -239,6 +286,8 @@ export class TmuxRecoveryOperationStore {
|
|
|
239
286
|
continue;
|
|
240
287
|
}
|
|
241
288
|
item.resourceWaitReason = undefined;
|
|
289
|
+
item.pauseReason = undefined;
|
|
290
|
+
candidate.pauseReason = candidate.items.some(candidateItem => candidateItem.state === 'paused' && candidateItem.pauseReason === 'resources' && candidateItem !== item) ? 'resources' : undefined;
|
|
242
291
|
}
|
|
243
292
|
if (candidate.paused)
|
|
244
293
|
break;
|
|
@@ -255,7 +304,7 @@ export class TmuxRecoveryOperationStore {
|
|
|
255
304
|
void this.execute(candidate, item);
|
|
256
305
|
}
|
|
257
306
|
if (this.state.operations.some(operation => !operation.paused && !terminalState(operation.state)
|
|
258
|
-
&& operation.items.some(item => item.state === 'resource_wait'))) {
|
|
307
|
+
&& operation.items.some(item => item.state === 'resource_wait' || (item.state === 'paused' && item.pauseReason === 'resources')))) {
|
|
259
308
|
const retry = setTimeout(() => void this.pump(), 5_000);
|
|
260
309
|
retry.unref?.();
|
|
261
310
|
}
|
|
@@ -299,15 +348,20 @@ export class TmuxRecoveryOperationStore {
|
|
|
299
348
|
finally {
|
|
300
349
|
item.completedAt = Date.now();
|
|
301
350
|
operation.updatedAt = item.completedAt;
|
|
302
|
-
const hasPending = operation.items.some(candidate => candidate.state === 'queued' || candidate.state === 'resource_wait' || candidate.state === 'running');
|
|
351
|
+
const hasPending = operation.items.some(candidate => candidate.state === 'queued' || candidate.state === 'resource_wait' || candidate.state === 'paused' || candidate.state === 'running');
|
|
303
352
|
if (!hasPending) {
|
|
304
353
|
operation.paused = false;
|
|
354
|
+
operation.pauseReason = undefined;
|
|
305
355
|
operation.state = operation.items.some(candidate => candidate.state === 'failed') ? 'partial_failure' : 'succeeded';
|
|
306
356
|
}
|
|
307
357
|
else {
|
|
308
358
|
operation.state = operation.paused ? 'paused'
|
|
309
359
|
: operation.items.some(candidate => candidate.state === 'running') ? 'running'
|
|
310
|
-
: operation.items.some(candidate => candidate.state === 'queued') ? 'queued' : '
|
|
360
|
+
: operation.items.some(candidate => candidate.state === 'queued') ? 'queued' : 'paused';
|
|
361
|
+
if (operation.paused)
|
|
362
|
+
operation.pauseReason = 'manual';
|
|
363
|
+
else if (!operation.items.some(candidate => candidate.state === 'running' || candidate.state === 'queued'))
|
|
364
|
+
operation.pauseReason = 'resources';
|
|
311
365
|
}
|
|
312
366
|
this.active = Math.max(0, this.active - 1);
|
|
313
367
|
try {
|
package/package.json
CHANGED
package/runtime-manifest.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"packageName": "termdock",
|
|
4
|
-
"version": "1.4.
|
|
4
|
+
"version": "1.4.326",
|
|
5
5
|
"runtimeProtocolVersion": 1,
|
|
6
6
|
"minimumDesktopVersion": "1.4.46",
|
|
7
7
|
"nodeMajor": 22,
|
|
8
8
|
"dependencyHash": "sha256-oaGYi/P5ob8sd6VnNBOwshKozjhdV+hYiCmLAsn5x00=",
|
|
9
|
-
"serverBundleHash": "sha256-
|
|
10
|
-
"clientBundleHash": "sha256-
|
|
9
|
+
"serverBundleHash": "sha256-8rbCJEWANeXtZp/cvJ7UT9tGunnkMMxL7mcvARckvLQ=",
|
|
10
|
+
"clientBundleHash": "sha256-9MzxeyAxwRf4rg374l2f6wUzrybLPL+H5boh1/uodkQ=",
|
|
11
11
|
"entrypoint": "dist/server/cli.js",
|
|
12
12
|
"clientEntrypoint": "dist/client/index.html"
|
|
13
13
|
}
|