termdock 1.4.245 → 1.4.246
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/apple-splash-default-1170x2532.png +0 -0
- package/dist/client/apple-splash-landscape-1136x640.png +0 -0
- package/dist/client/apple-splash-landscape-1334x750.png +0 -0
- package/dist/client/apple-splash-landscape-1792x828.png +0 -0
- package/dist/client/apple-splash-landscape-2048x1536.png +0 -0
- package/dist/client/apple-splash-landscape-2160x1620.png +0 -0
- package/dist/client/apple-splash-landscape-2208x1242.png +0 -0
- package/dist/client/apple-splash-landscape-2224x1668.png +0 -0
- package/dist/client/apple-splash-landscape-2266x1488.png +0 -0
- package/dist/client/apple-splash-landscape-2360x1640.png +0 -0
- package/dist/client/apple-splash-landscape-2388x1668.png +0 -0
- package/dist/client/apple-splash-landscape-2436x1125.png +0 -0
- package/dist/client/apple-splash-landscape-2532x1170.png +0 -0
- package/dist/client/apple-splash-landscape-2556x1179.png +0 -0
- package/dist/client/apple-splash-landscape-2622x1206.png +0 -0
- package/dist/client/apple-splash-landscape-2688x1242.png +0 -0
- package/dist/client/apple-splash-landscape-2732x2048.png +0 -0
- package/dist/client/apple-splash-landscape-2778x1284.png +0 -0
- package/dist/client/apple-splash-landscape-2796x1290.png +0 -0
- package/dist/client/apple-splash-landscape-2868x1320.png +0 -0
- package/dist/client/apple-splash-portrait-1125x2436.png +0 -0
- package/dist/client/apple-splash-portrait-1170x2532.png +0 -0
- package/dist/client/apple-splash-portrait-1179x2556.png +0 -0
- package/dist/client/apple-splash-portrait-1206x2622.png +0 -0
- package/dist/client/apple-splash-portrait-1242x2208.png +0 -0
- package/dist/client/apple-splash-portrait-1242x2688.png +0 -0
- package/dist/client/apple-splash-portrait-1284x2778.png +0 -0
- package/dist/client/apple-splash-portrait-1290x2796.png +0 -0
- package/dist/client/apple-splash-portrait-1320x2868.png +0 -0
- package/dist/client/apple-splash-portrait-1488x2266.png +0 -0
- package/dist/client/apple-splash-portrait-1536x2048.png +0 -0
- package/dist/client/apple-splash-portrait-1620x2160.png +0 -0
- package/dist/client/apple-splash-portrait-1640x2360.png +0 -0
- package/dist/client/apple-splash-portrait-1668x2224.png +0 -0
- package/dist/client/apple-splash-portrait-1668x2388.png +0 -0
- package/dist/client/apple-splash-portrait-2048x2732.png +0 -0
- package/dist/client/apple-splash-portrait-640x1136.png +0 -0
- package/dist/client/apple-splash-portrait-750x1334.png +0 -0
- package/dist/client/apple-splash-portrait-828x1792.png +0 -0
- package/dist/client/apple-touch-icon-180x180.png +0 -0
- package/dist/client/assets/{App-4yuJhk8K.js → App-fUBShC6a.js} +3 -3
- package/dist/client/assets/App-fUBShC6a.js.br +0 -0
- package/dist/client/assets/App-fUBShC6a.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-CO6hA8Zz.js → ChangeWalkthroughPanel-9j2T-kFA.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-9j2T-kFA.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-9j2T-kFA.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-CYNBQUiS.js → DagPlayground-BMvQTyTO.js} +1 -1
- package/dist/client/assets/DagPlayground-BMvQTyTO.js.br +0 -0
- package/dist/client/assets/DagPlayground-BMvQTyTO.js.gz +0 -0
- package/dist/client/assets/{DiffLab-D1EGXPSO.js → DiffLab-CJ-7wNMh.js} +1 -1
- package/dist/client/assets/DiffLab-CJ-7wNMh.js.br +0 -0
- package/dist/client/assets/DiffLab-CJ-7wNMh.js.gz +0 -0
- package/dist/client/assets/{DiffReview-B3l9lyZN.js → DiffReview-BGDPEw31.js} +1 -1
- package/dist/client/assets/DiffReview-BGDPEw31.js.br +0 -0
- package/dist/client/assets/DiffReview-BGDPEw31.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-HnyTETr4.js → DiffReviewLab-C1XyAfhi.js} +1 -1
- package/dist/client/assets/DiffReviewLab-C1XyAfhi.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-C1XyAfhi.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-Cg2L1fpw.js → DiffViewer-BRF3sqGx.js} +1 -1
- package/dist/client/assets/DiffViewer-BRF3sqGx.js.br +0 -0
- package/dist/client/assets/DiffViewer-BRF3sqGx.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-m9zsjnCS.js → ModelPreview-C0dWevHx.js} +1 -1
- package/dist/client/assets/ModelPreview-C0dWevHx.js.br +0 -0
- package/dist/client/assets/ModelPreview-C0dWevHx.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-D8UOa663.js → RightSidebar-DPIGL2Sr.js} +4 -4
- package/dist/client/assets/RightSidebar-DPIGL2Sr.js.br +0 -0
- package/dist/client/assets/RightSidebar-DPIGL2Sr.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-B6aAcqAH.js → abnfDiagram-VCTEODGH-D6lDfTGI.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-D6lDfTGI.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-D6lDfTGI.js.gz +0 -0
- package/dist/client/assets/{app-DiN3Jz4F.js → app-6wjgoQbH.js} +13 -13
- package/dist/client/assets/app-6wjgoQbH.js.br +0 -0
- package/dist/client/assets/app-6wjgoQbH.js.gz +0 -0
- package/dist/client/assets/{arc-MDwycufi.js → arc-BIrcMYh6.js} +1 -1
- package/dist/client/assets/arc-BIrcMYh6.js.br +0 -0
- package/dist/client/assets/arc-BIrcMYh6.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-DpW68CEx.js → architectureDiagram-5GKGNRK7-CChNUCCi.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CChNUCCi.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CChNUCCi.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-CZQQVsmh.js → blockDiagram-I7D4REHJ-ZL7eZE1x.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-ZL7eZE1x.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-ZL7eZE1x.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-DjvDIEs1.js → c4Diagram-7LVT6UL2-dGGgojKv.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-dGGgojKv.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-dGGgojKv.js.gz +0 -0
- package/dist/client/assets/channel-DagSBLwZ.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-C7cBdwoS.js → chunk-2Q5K7J3B-BVOvbxOf.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-DdwZ_Ooa.js → chunk-5VM5RSS4-BVmluZCU.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-CyDTfLmz.js → chunk-F27PBJKO-B6_Uahth.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-B6_Uahth.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-B6_Uahth.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-BYCj4545.js → chunk-IMKFNOWR-1egXChim.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-1egXChim.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-1egXChim.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-Buwl5THX.js → chunk-JWPE2WC7-CnZ9q77V.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-C7p1ptYd.js → chunk-POPQ4Y6H-CzfCDmb-.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-Biy6yZrB.js → chunk-SVP7TREG-CT-rbef4.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-CT-rbef4.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-CT-rbef4.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-8e9Sd9jU.js → chunk-TICWLB2K-agXqG73-.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-agXqG73-.js.br +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-8e9Sd9jU.js.gz → chunk-TICWLB2K-agXqG73-.js.gz} +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-DECwND6H.js → chunk-XXDRQBXY-6egtPZJ0.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-BMaWPdHS.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-BMaWPdHS.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-PPh2sDUy.js → cose-bilkent-JH36ORCC-CteLljMB.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-CteLljMB.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-CteLljMB.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-B11p1v5N.js → cynefin-OW5HDTMX-CLrILqM2.js} +1 -1
- package/dist/client/assets/{cynefin-OW5HDTMX-B11p1v5N.js.br → cynefin-OW5HDTMX-CLrILqM2.js.br} +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CLrILqM2.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-BKyWp8p1.js → cynefinDiagram-5FMLGOSQ-Bw8EKAyx.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Bw8EKAyx.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Bw8EKAyx.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-B79CVuuK.js → dagre-GXQ25YYZ-gcZQ9IyW.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-gcZQ9IyW.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-gcZQ9IyW.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-BKPJHT5i.js → diagram-S7CK7UJ4-BqBssMws.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-BqBssMws.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-BqBssMws.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-adkntJ-H.js → diagram-UQ7AKVKN-CzRuV6nH.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-CzRuV6nH.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CzRuV6nH.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-CGOHyiQX.js → diagram-VSXAHHWV-BZ6XTTgj.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-BZ6XTTgj.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-BZ6XTTgj.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-C6uqmbvW.js → diagram-VX7I27RA-BQvQwOnl.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-BQvQwOnl.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-BQvQwOnl.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-DRbP0rNc.js → diagram-Z3DM3KII-CRdjboP5.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-CRdjboP5.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CRdjboP5.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-ZH3JjPxG.js → ebnfDiagram-PWID7BFC-CGSE9ghd.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-CGSE9ghd.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-CGSE9ghd.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-2pB0nAqM.js → erDiagram-RLTQ6QDP-ByGZ-vFz.js} +1 -1
- package/dist/client/assets/{erDiagram-RLTQ6QDP-2pB0nAqM.js.br → erDiagram-RLTQ6QDP-ByGZ-vFz.js.br} +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-ByGZ-vFz.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-g-NFSGVN.js → flowDiagram-HODETNUW-Dyz-n_C7.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-Dyz-n_C7.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Dyz-n_C7.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-ou0k7MyH.js → ganttDiagram-EL5Y4UJY-DZo8Q6Ei.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-DZo8Q6Ei.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-DZo8Q6Ei.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-BVGXbPvq.js → gestureArbiter-DspKJFhu.js} +1 -1
- package/dist/client/assets/gestureArbiter-DspKJFhu.js.br +0 -0
- package/dist/client/assets/gestureArbiter-DspKJFhu.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-9FN50t1H.js → gitGraphDiagram-WWUBYQGX-CaVx95SO.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CaVx95SO.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CaVx95SO.js.gz +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-CDTlLBns.js → infoDiagram-27XIBGKW-Dj2fcEHS.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-DJigQx1g.js → ishikawaDiagram-5VMMS53U-Dh4QyMZa.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-Dh4QyMZa.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-Dh4QyMZa.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-D2B7mocZ.js → journeyDiagram-3NMN7TZE-ysmCLy0p.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-ysmCLy0p.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-ysmCLy0p.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-Dibgxrol.js → kanban-definition-UXKFOSKX-qHyIehGj.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-qHyIehGj.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-qHyIehGj.js.gz +0 -0
- package/dist/client/assets/{layout-l7vsNiDT.js → layout-DqrDagkY.js} +1 -1
- package/dist/client/assets/layout-DqrDagkY.js.br +0 -0
- package/dist/client/assets/layout-DqrDagkY.js.gz +0 -0
- package/dist/client/assets/{linear-DYyWv-7A.js → linear-BoKY9eoD.js} +1 -1
- package/dist/client/assets/linear-BoKY9eoD.js.br +0 -0
- package/dist/client/assets/linear-BoKY9eoD.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-filx9uhD.js → mermaid.core-BY-_cN89.js} +5 -5
- package/dist/client/assets/mermaid.core-BY-_cN89.js.br +0 -0
- package/dist/client/assets/mermaid.core-BY-_cN89.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-fs33msHm.js → mindmap-definition-YA3MSWOX-aNfCyctF.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-aNfCyctF.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-aNfCyctF.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-v6a4CT6d.js → passwordBootstrap-DQflua8O.js} +1 -1
- package/dist/client/assets/passwordBootstrap-DQflua8O.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-DQflua8O.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-mdj0nBrT.js → pegDiagram-XKGWAZYB-C0LaEDQ0.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-C0LaEDQ0.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-C0LaEDQ0.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-YoRrPBgl.js → pieDiagram-E7YTZNPT-qmgCYVix.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-qmgCYVix.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-qmgCYVix.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DgZmaoSe.js → quadrantDiagram-AXDQQJYC-BSvuei6X.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BSvuei6X.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BSvuei6X.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-CnBSlDaa.js → railroadDiagram-O6MQD6OU-ChW2sCb8.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-ChW2sCb8.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-ChW2sCb8.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-DJsVBw_j.js → referenceLongPress-CKY-aIfz.js} +1 -1
- package/dist/client/assets/referenceLongPress-CKY-aIfz.js.br +0 -0
- package/dist/client/assets/referenceLongPress-CKY-aIfz.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-BA9ZoM3G.js → requirementDiagram-BXWQKSXE-B_Z72Ub-.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-B_Z72Ub-.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-B_Z72Ub-.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-bcxqUb6q.js → sankeyDiagram-P5KCCOFB-B8diD7f-.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B8diD7f-.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-B8diD7f-.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-TLqeD9u8.js → sequenceDiagram-WJ2MYXX4-CLMpZZOV.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CLMpZZOV.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CLMpZZOV.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-D180O8mH.js → sizeCapture-INFHLROL-BaG9s-4U.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-BaG9s-4U.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-BaG9s-4U.js.gz +0 -0
- package/dist/client/assets/{sparkles-B2dq58Vr.js → sparkles-UQEkaAAz.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-CVeaj7aj.js → stateDiagram-D77RDMKH-CPk-nr6e.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-CPk-nr6e.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CPk-nr6e.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DEZeIglV.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-BSfkryAI.js → swimlanes-42K2YHIH-DVXTbYoW.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-DVXTbYoW.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-DVXTbYoW.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CUFmGTTr.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-CXrJcUqt.js → timeline-definition-24CTP7MA-DoxY5pRQ.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-DoxY5pRQ.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-DoxY5pRQ.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-DiB-zDg8.js → triangle-alert-WH4a7pLP.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-DUlZIoBs.js → vennDiagram-4TSXK5OY-CCvO0pft.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-CCvO0pft.js.br +0 -0
- package/dist/client/assets/{vennDiagram-4TSXK5OY-DUlZIoBs.js.gz → vennDiagram-4TSXK5OY-CCvO0pft.js.gz} +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-PW7fiK5-.js → wardleyDiagram-VM6X3IG4-BSv6ofOI.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BSv6ofOI.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-BSv6ofOI.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-CGgWBXnk.js → xychartDiagram-S5SC5T6Z-CXTzZ6fz.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CXTzZ6fz.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CXTzZ6fz.js.gz +0 -0
- package/dist/client/favicon.ico +0 -0
- package/dist/client/fonts/JetBrainsMonoNLNerdFontMono-Bold.woff2 +0 -0
- package/dist/client/fonts/JetBrainsMonoNLNerdFontMono-BoldItalic.woff2 +0 -0
- package/dist/client/fonts/JetBrainsMonoNLNerdFontMono-Italic.woff2 +0 -0
- package/dist/client/fonts/JetBrainsMonoNLNerdFontMono-Regular.woff2 +0 -0
- package/dist/client/fonts/NotoSansMonoCJKsc-Bold-Subset.woff2 +0 -0
- package/dist/client/fonts/NotoSansMonoCJKsc-Subset.woff2 +0 -0
- package/dist/client/fonts/NotoSansSymbols2-Subset.woff2 +0 -0
- package/dist/client/fonts/TermdockStarSymbol-Subset.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-38-022d7c89c800.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-39-63f8fa5b3eba.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3a-2d8d46cc4dca.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3b-e75aed5d3969.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c-ac2534aae681.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c0-8c49a98e75c4.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c1-971c5e7a86ce.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c2-e5c4893acfb9.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c3-156f2560c871.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c4-49f0d18a7492.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c5-33d81ad28c5c.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c6-5c301879d053.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3d-52c90894de44.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-text-9e8d9df2dd02.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-38-7942d3c93afb.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-39-19989a2be535.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3a-7786ff4a4dd9.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3b-a759fd623d7e.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c-2a1178076740.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c0-6f2c7518f354.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c1-4bf64cae9dd2.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c2-7f26d4c7240b.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c3-fc8e5a85d620.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c4-91819b7977d3.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c5-26933eec54e2.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c6-af186404c8af.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3d-b004d85f5642.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-text-da002b4e56d3.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-38-b3e69191d92f.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-39-c4d8d66882cb.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3a-27609324e8a3.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3b-5e73d85d7506.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c-7e535d65bbdb.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c0-6465060a06a1.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c1-9fd72ccd9350.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c2-ea7dd77de270.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c3-12808f88907a.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c4-14b598e5e739.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c5-3d40530ce6c2.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c6-7020aec0d9e1.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3d-19831897003a.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-text-b7a9c776b048.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-38-a637901140d8.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-39-838726e8eeca.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3a-ec149087d0b9.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3b-db8e5a24d580.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c-2290d2ad4621.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c0-3b9edaf85d65.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c1-5e7fb0696bbc.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c2-cfad2884adf5.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c3-d641de88278b.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c4-3b0227356b3b.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c5-9dc67c4d20b4.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c6-c5b444110c62.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3d-2b19b65bb43a.woff2 +0 -0
- package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-text-d7b9316fdf4f.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-4e-46bdca5c323f.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-4f-17200dc0dd0d.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-50-370e36250c30.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-51-66352f738581.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-52-191f4025d2b5.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-53-fb0a637c39bf.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-54-66f2e72c9ca0.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-55-54b538fd4fd8.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-56-88f45aeb2030.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-57-154d4324f0ce.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-58-1660c86b8a05.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-59-31a4c5afa3aa.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5a-fa1d1941710e.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5b-031a2b2ebeb7.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5c-065b634c07b3.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5d-71f6cd3ed180.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5e-f59de7a6e5c5.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5f-8cbe737b6011.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-60-22913526da09.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-61-c810c1d1a3a3.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-62-9464d5d87d65.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-63-79564d99f5da.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-64-4b7cff1dae6f.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-65-8dd48db5e297.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-66-a808e22a3d14.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-67-ae5f61af3f79.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-68-a46bf47bd9ba.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-69-28210414eafb.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6a-6bfb1f5e4fb7.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6b-39be890e04e4.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6c-79a4ff740d98.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6d-2de5a763980e.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6e-8e55b339244d.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6f-a56caf9fc7fc.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-70-d70c6ee8e03c.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-71-ac6f5f86dfef.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-72-db3d346ecc61.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-73-e7371bd71f0b.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-74-43946d9b2f0b.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-75-ea7cf53e31fa.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-76-04c7fa4e0ebf.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-77-24d70898f6b8.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-78-c6a5d7135296.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-79-7812cb6432aa.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7a-6e123be5cd36.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7b-a183ddc6890f.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7c-0895291ece9c.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7d-1d44252384cf.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7e-7be4dc6f056e.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7f-0d8e987db151.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-80-c0c154bb8be0.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-81-5343baca5ce7.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-82-6d89af9614ce.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-83-fa17ef529c5b.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-84-287ecb493fad.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-85-fea695c48165.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-86-8bb35373cb82.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-87-f83e9f70a6cc.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-88-894cd19292c1.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-89-2903a6eaf546.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8a-3ce275bfcf96.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8b-3aaeb26309a6.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8c-719b6608b746.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8d-a7f1ccd0dfb7.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8e-d503ad5c4958.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8f-18c6d04746c8.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-90-e9d94d915dfe.woff2 +0 -0
- package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-91-c258b07ec626.woff2 +0 -0
- package/dist/client/index.html +1 -1
- 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/collaborationCli.js +36 -3
- package/dist/server/agent/collaborationDeliveryWorker.js +5 -0
- package/dist/server/entry.js +2 -1
- package/dist/server/federation/runtime.js +36 -3
- package/dist/server/routes/terminal.js +13 -0
- package/package.json +1 -1
- package/runtime-manifest.json +3 -3
- package/dist/client/assets/App-4yuJhk8K.js.br +0 -0
- package/dist/client/assets/App-4yuJhk8K.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CO6hA8Zz.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CO6hA8Zz.js.gz +0 -0
- package/dist/client/assets/DagPlayground-CYNBQUiS.js.br +0 -0
- package/dist/client/assets/DagPlayground-CYNBQUiS.js.gz +0 -0
- package/dist/client/assets/DiffLab-D1EGXPSO.js.br +0 -0
- package/dist/client/assets/DiffLab-D1EGXPSO.js.gz +0 -0
- package/dist/client/assets/DiffReview-B3l9lyZN.js.br +0 -0
- package/dist/client/assets/DiffReview-B3l9lyZN.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-HnyTETr4.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-HnyTETr4.js.gz +0 -0
- package/dist/client/assets/DiffViewer-Cg2L1fpw.js.br +0 -0
- package/dist/client/assets/DiffViewer-Cg2L1fpw.js.gz +0 -0
- package/dist/client/assets/ModelPreview-m9zsjnCS.js.br +0 -0
- package/dist/client/assets/ModelPreview-m9zsjnCS.js.gz +0 -0
- package/dist/client/assets/RightSidebar-D8UOa663.js.br +0 -0
- package/dist/client/assets/RightSidebar-D8UOa663.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-B6aAcqAH.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-B6aAcqAH.js.gz +0 -0
- package/dist/client/assets/app-DiN3Jz4F.js.br +0 -0
- package/dist/client/assets/app-DiN3Jz4F.js.gz +0 -0
- package/dist/client/assets/arc-MDwycufi.js.br +0 -0
- package/dist/client/assets/arc-MDwycufi.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DpW68CEx.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DpW68CEx.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-CZQQVsmh.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-CZQQVsmh.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DjvDIEs1.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DjvDIEs1.js.gz +0 -0
- package/dist/client/assets/channel-DXQeuo6Q.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-CyDTfLmz.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-CyDTfLmz.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-BYCj4545.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-BYCj4545.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-Biy6yZrB.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-Biy6yZrB.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-8e9Sd9jU.js.br +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-u-fQC4d0.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-u-fQC4d0.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-PPh2sDUy.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-PPh2sDUy.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-B11p1v5N.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BKyWp8p1.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BKyWp8p1.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-B79CVuuK.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-B79CVuuK.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-BKPJHT5i.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-BKPJHT5i.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-adkntJ-H.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-adkntJ-H.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-CGOHyiQX.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-CGOHyiQX.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-C6uqmbvW.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-C6uqmbvW.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DRbP0rNc.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DRbP0rNc.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-ZH3JjPxG.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-ZH3JjPxG.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-2pB0nAqM.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-g-NFSGVN.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-g-NFSGVN.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-ou0k7MyH.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-ou0k7MyH.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-BVGXbPvq.js.br +0 -0
- package/dist/client/assets/gestureArbiter-BVGXbPvq.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-9FN50t1H.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-9FN50t1H.js.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-DJigQx1g.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-DJigQx1g.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-D2B7mocZ.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-D2B7mocZ.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-Dibgxrol.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-Dibgxrol.js.gz +0 -0
- package/dist/client/assets/layout-l7vsNiDT.js.br +0 -0
- package/dist/client/assets/layout-l7vsNiDT.js.gz +0 -0
- package/dist/client/assets/linear-DYyWv-7A.js.br +0 -0
- package/dist/client/assets/linear-DYyWv-7A.js.gz +0 -0
- package/dist/client/assets/mermaid.core-filx9uhD.js.br +0 -0
- package/dist/client/assets/mermaid.core-filx9uhD.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-fs33msHm.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-fs33msHm.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-v6a4CT6d.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-v6a4CT6d.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-mdj0nBrT.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-mdj0nBrT.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-YoRrPBgl.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-YoRrPBgl.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DgZmaoSe.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DgZmaoSe.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CnBSlDaa.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-CnBSlDaa.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-DJsVBw_j.js.br +0 -0
- package/dist/client/assets/referenceLongPress-DJsVBw_j.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BA9ZoM3G.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-BA9ZoM3G.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-bcxqUb6q.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-bcxqUb6q.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-TLqeD9u8.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-TLqeD9u8.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-D180O8mH.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-D180O8mH.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CVeaj7aj.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-CVeaj7aj.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-Cja01XE6.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-BSfkryAI.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-BSfkryAI.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-Bt2D90qE.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-CXrJcUqt.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-CXrJcUqt.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-DUlZIoBs.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-PW7fiK5-.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-PW7fiK5-.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CGgWBXnk.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-CGgWBXnk.js.gz +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/client/index.html
CHANGED
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
里为空,不声明,避免无谓的字体回退查找。
|
|
189
189
|
Regular + Bold 两种变体自托管,替代 xterm 合成 bold CJK。 */
|
|
190
190
|
</style>
|
|
191
|
-
<script type="module" crossorigin src="/assets/app-
|
|
191
|
+
<script type="module" crossorigin src="/assets/app-6wjgoQbH.js"></script>
|
|
192
192
|
<link rel="modulepreload" crossorigin href="/assets/react-XDCjal2T.js">
|
|
193
193
|
<link rel="modulepreload" crossorigin href="/assets/dnd-BCFAPC0L.js">
|
|
194
194
|
<link rel="modulepreload" crossorigin href="/assets/terminal-C7X98Amf.js">
|
|
Binary file
|
|
Binary file
|
package/dist/client/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(i,o)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let c={};const r=e=>n(e,a),d={module:{uri:a},exports:c,require:r};s[a]=Promise.all(i.map(e=>d[e]||r(e))).then(e=>(o(...e),c))}}define(["./workbox-9845bf53"],function(e){"use strict";importScripts("sw-encrypted-background.js","sw-notifications.js","sw-secure-api.js","sw-downloads.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"
|
|
1
|
+
if(!self.define){let e,s={};const n=(n,i)=>(n=new URL(n+".js",i).href,s[n]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=s,document.head.appendChild(e)}else e=n,importScripts(n),s()}).then(()=>{let e=s[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(i,o)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(s[a])return;let c={};const r=e=>n(e,a),d={module:{uri:a},exports:c,require:r};s[a]=Promise.all(i.map(e=>d[e]||r(e))).then(e=>(o(...e),c))}}define(["./workbox-9845bf53"],function(e){"use strict";importScripts("sw-encrypted-background.js","sw-notifications.js","sw-secure-api.js","sw-downloads.js"),self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.clientsClaim(),e.precacheAndRoute([{url:"index.html",revision:"1872046314af9b90dace81d014e594da"},{url:"assets/app-6wjgoQbH.js",revision:null},{url:"assets/react-XDCjal2T.js",revision:null},{url:"assets/dnd-BCFAPC0L.js",revision:null},{url:"assets/terminal-C7X98Amf.js",revision:null},{url:"assets/index-fjWWhVQp.css",revision:null},{url:"icons/agents/opencode.svg",revision:"851c2931d95821ba2b39b68587b48976"},{url:"icons/agents/kimi.svg",revision:"5366c710f4f763022fe159a69cf17409"},{url:"icons/agents/grok.svg",revision:"cd745b0b964545bc7a6b4f36021c3298"},{url:"icons/agents/goose.svg",revision:"c79b927278983c19098d77b4b0c11ab3"},{url:"icons/agents/gemini.svg",revision:"7a64f6d6f80a908255e9c0256903882e"},{url:"icons/agents/droid.svg",revision:"f28723b8c5c115e0908ba3c72613e256"},{url:"icons/agents/cursor.svg",revision:"a1528f3d3cda497f75a5db28defb19de"},{url:"icons/agents/copilot.svg",revision:"dd52e96c1eac0b6ec4bedcd0ddd3b52d"},{url:"icons/agents/codex.svg",revision:"608e55babb0b217e1f2da287342b46d3"},{url:"icons/agents/claude.svg",revision:"08af0225b7acdd8e8f573f3247e5e1c3"},{url:"icons/agents/amp.svg",revision:"af12f8b33faa81e4d46ea7b93c7e43f3"},{url:"apple-touch-icon-180x180.png",revision:"628c2e2f28a9b545aa57be1352025643"},{url:"favicon.ico",revision:"2994debfa6f59a0898e24eb0c54d64b5"},{url:"maskable-icon-512x512.png",revision:"4d489331fd81f0713c400b26426442b9"},{url:"pwa-192x192.png",revision:"4d6f899888cfb8ccd7a1fd3c9e583ad2"},{url:"pwa-512x512.png",revision:"0885dd7ec8932e7f878b013d51a380a4"},{url:"robots.txt",revision:"d9339907142917dee4aac78494ac9cfe"},{url:"sw-downloads.js",revision:"48dab2e78bd93b4eee27fca487eccfde"},{url:"sw-notifications.js",revision:"fde578590ea8b0540d488ef448b48f45"},{url:"sw-secure-api.js",revision:"cf2bdbd03d41d66d60344c0b5a1075de"},{url:"manifest.webmanifest",revision:"83f9a43b74c236012adafb077fb6d774"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"),{denylist:[/^\/api\//,/^\/__termdock-download\//,/^\/health$/]})),e.registerRoute(/\/assets\/.*\.(?:js|css)$/,new e.CacheFirst({cacheName:"termdock-lazy-assets-v1",plugins:[new e.CacheableResponsePlugin({statuses:[0,200]}),new e.ExpirationPlugin({maxEntries:96,maxAgeSeconds:2592e3})]}),"GET"),e.registerRoute(/\/fonts\/terminal\/[^/]+-[a-f0-9]{12}\.woff2$/,new e.CacheFirst({cacheName:"termdock-fonts-v2",plugins:[new e.CacheableResponsePlugin({statuses:[0,200]}),new e.ExpirationPlugin({maxEntries:384,maxAgeSeconds:2592e3})]}),"GET"),e.registerRoute(/\/fonts\/.*\.(?:woff2|ttf)$/,new e.StaleWhileRevalidate({cacheName:"termdock-fonts-v1",plugins:[new e.ExpirationPlugin({maxEntries:24,maxAgeSeconds:2592e3})]}),"GET")});
|
package/dist/client/sw.js.br
CHANGED
|
Binary file
|
package/dist/client/sw.js.gz
CHANGED
|
Binary file
|
|
@@ -107,7 +107,12 @@ cleanup without --confirm prints the plan and refuses (also 1);
|
|
|
107
107
|
Message limit: ${COLLAB_LIMITS.message_bytes} UTF-8 bytes; metadata: ${COLLAB_LIMITS.metadata_bytes} bytes.
|
|
108
108
|
Idempotency retention: 7 days. Terminal delivery, ACK and result never imply each other.
|
|
109
109
|
Delivery semantics: delivered = written to the terminal — never proof of
|
|
110
|
-
reading or task completion; a timeout stops waiting, it does not cancel delivery
|
|
110
|
+
reading or task completion; a timeout stops waiting, it does not cancel delivery.
|
|
111
|
+
The service cannot see whether the recipient's agent consumed a message. To
|
|
112
|
+
judge for yourself, use --wait-until delivered and read the recipient-screen
|
|
113
|
+
snapshot in the receipt: if your message is not visible on that screen, send it
|
|
114
|
+
again (a fresh send is a new message and will be written again); if it is
|
|
115
|
+
visible but unanswered, the recipient may simply not have started yet.`;
|
|
111
116
|
/** One roster row: prefer the member's human name, keep the full session id
|
|
112
117
|
* reachable for role set/unset targeting, mark unset members explicitly. */
|
|
113
118
|
function roleLine(member, role) {
|
|
@@ -308,6 +313,25 @@ export function waitSatisfied(receipt, stage, reply) {
|
|
|
308
313
|
const reached = stage === 'queued' || (stage === 'delivered' && ['delivered', 'read'].includes(receipt.status));
|
|
309
314
|
return reached && (!reply || (reply === 'ack' ? receipt.ack_at != null : reply === 'result' ? receipt.result_ids?.length > 0 : receipt.reply_ids?.length > 0));
|
|
310
315
|
}
|
|
316
|
+
/** Delivery diagnoses a sender can act on. `delivered` means the bytes reached
|
|
317
|
+
* the recipient's pty — never that anything consumed them; these map the
|
|
318
|
+
* machine reasons onto what the sender should do next, so a settled-but-
|
|
319
|
+
* unconsumed message is not mistaken for a lost one (or a good one). */
|
|
320
|
+
const DELIVERY_DIAGNOSTICS = {
|
|
321
|
+
AGENT_CONSUME_UNCONFIRMED: '消息已写入对方终端,但未确认被对方消费;它可能尚未开始处理,可用 capture 查看当前屏幕或重发',
|
|
322
|
+
SHELL_CONFIRMATION_REQUIRED: '目标当前是 shell,消息可能被当命令执行;确认请运行 message confirm-shell <id>',
|
|
323
|
+
DELIVERY_IN_PROGRESS: '投递进行中(写入前的中间标记,正常会在数秒内推进为 delivered 或带原因的重试)',
|
|
324
|
+
TERMINAL_WRITE_FAILED: '写入对方终端失败,会按重试间隔继续尝试',
|
|
325
|
+
TMUX_PANE_CHANGED: '目标面板已变化,投递已跳过,等待重新绑定',
|
|
326
|
+
TMUX_PANE_IN_MODE: '目标面板处于 tmux 模式(如滚动查看),按键已跳过',
|
|
327
|
+
};
|
|
328
|
+
export function deliveryDiagnosticText(lastError) {
|
|
329
|
+
if (typeof lastError !== 'string' || !lastError)
|
|
330
|
+
return '';
|
|
331
|
+
const code = lastError.split(':', 1)[0].trim();
|
|
332
|
+
const known = DELIVERY_DIAGNOSTICS[code];
|
|
333
|
+
return known ? `${code}:${known}` : lastError;
|
|
334
|
+
}
|
|
311
335
|
export async function executeCollaborationCommand(command, context, io) {
|
|
312
336
|
const o = command.options;
|
|
313
337
|
const now = io.now ?? Date.now;
|
|
@@ -329,6 +353,7 @@ export async function executeCollaborationCommand(command, context, io) {
|
|
|
329
353
|
};
|
|
330
354
|
const output = (value) => {
|
|
331
355
|
if (o.text) {
|
|
356
|
+
let diagnosed = false;
|
|
332
357
|
if (Array.isArray(value.messages))
|
|
333
358
|
for (const message of value.messages) {
|
|
334
359
|
const fanIds = Array.isArray(message.fanOutIds) ? message.fanOutIds : [];
|
|
@@ -346,6 +371,14 @@ export async function executeCollaborationCommand(command, context, io) {
|
|
|
346
371
|
if (!o['no-rules'] && value.message.instructions?.text)
|
|
347
372
|
io.write(`消息附群规版本 ${value.message.instructions.version};td collab rules get <组id> --text 查看全文`);
|
|
348
373
|
io.write(`[${value.status}] ${canonicalShortId(String(value.message_id ?? ''))}\n${value.message.content}`);
|
|
374
|
+
// A pending message keeps retrying by design (the alternative is
|
|
375
|
+
// dropping it); surface why and when the next attempt is so the sender
|
|
376
|
+
// can decide to wait or resend instead of guessing.
|
|
377
|
+
if (value.status === 'pending' && (value.attempt_count || value.last_error)) {
|
|
378
|
+
const retryIn = value.next_retry_at ? Math.max(0, Math.ceil((Number(value.next_retry_at) - now()) / 1000)) : null;
|
|
379
|
+
io.write(`投递中:第 ${value.attempt_count ?? 0} 次尝试${retryIn !== null ? `,下次重试约 ${retryIn} 秒后` : ''}${value.last_error ? `,最近原因 ${deliveryDiagnosticText(value.last_error)}` : ''}`);
|
|
380
|
+
diagnosed = true;
|
|
381
|
+
}
|
|
349
382
|
}
|
|
350
383
|
else if (value.message_id) {
|
|
351
384
|
io.write(`${value.status} ${canonicalShortId(String(value.message_id))}${value.thread_id ? ` thread=${canonicalShortId(String(value.thread_id))}` : ''}${value.code ? ` ${value.code}` : ''}${value.failure_reason ? ` ${value.failure_reason}` : ''}`);
|
|
@@ -363,8 +396,8 @@ export async function executeCollaborationCommand(command, context, io) {
|
|
|
363
396
|
}
|
|
364
397
|
else
|
|
365
398
|
io.write(JSON.stringify(value, null, 2));
|
|
366
|
-
if (value.last_error)
|
|
367
|
-
io.write(
|
|
399
|
+
if (value.last_error && !diagnosed)
|
|
400
|
+
io.write(`诊断:${deliveryDiagnosticText(value.last_error)}`);
|
|
368
401
|
if (value.next_cursor)
|
|
369
402
|
io.write(`next_cursor=${value.next_cursor} has_more=${value.has_more}`);
|
|
370
403
|
}
|
|
@@ -176,7 +176,12 @@ export class CollaborationDeliveryWorker {
|
|
|
176
176
|
// Capture the recipient terminal before marking delivered, so a sender
|
|
177
177
|
// waiting on delivered always finds the snapshot present. The capture is
|
|
178
178
|
// strictly best-effort: a failure must never block delivery completion.
|
|
179
|
+
// Delayed briefly so the pane shows the rendered paste rather than the
|
|
180
|
+
// input box mid-write.
|
|
179
181
|
if (route.capture) {
|
|
182
|
+
const snapshotDelay = this.options.snapshotDelayMs ?? 200;
|
|
183
|
+
if (snapshotDelay > 0)
|
|
184
|
+
await new Promise((resolve) => setTimeout(resolve, snapshotDelay));
|
|
180
185
|
try {
|
|
181
186
|
const snapshot = await route.capture();
|
|
182
187
|
if (snapshot)
|
package/dist/server/entry.js
CHANGED
|
@@ -29,7 +29,7 @@ import { homedir } from 'os';
|
|
|
29
29
|
import cookieParser from 'cookie-parser';
|
|
30
30
|
import { fileURLToPath } from 'url';
|
|
31
31
|
import { WebSocketServer } from 'ws';
|
|
32
|
-
import terminalRoutes, { handleTerminalWebSocket, handleControlWebSocket } from './routes/terminal.js';
|
|
32
|
+
import terminalRoutes, { handleTerminalWebSocket, handleControlWebSocket, resolveStableFederationSessionId } from './routes/terminal.js';
|
|
33
33
|
import filesystemRoutes from './routes/filesystem.js';
|
|
34
34
|
import authRoutes from './routes/auth.js';
|
|
35
35
|
import notificationRoutes from './routes/notifications.js';
|
|
@@ -452,6 +452,7 @@ export function startServer(options = {}) {
|
|
|
452
452
|
const federation = createFederationRuntime(app, path.join(homedir(), '.termdock', 'federation'), {
|
|
453
453
|
terminal: handleTerminalWebSocket, control: handleControlWebSocket,
|
|
454
454
|
}, {
|
|
455
|
+
resolveSessionId: resolveStableFederationSessionId,
|
|
455
456
|
collaborationConnected: (subjectId, rpc) => {
|
|
456
457
|
const channels = collaborationChannels.get(subjectId) ?? new Set();
|
|
457
458
|
channels.add(rpc);
|
|
@@ -126,7 +126,25 @@ export async function createFederationRuntime(app, directory, handlers, options
|
|
|
126
126
|
let collaborationRpc;
|
|
127
127
|
let unregisterCollaboration;
|
|
128
128
|
const open = (action) => openAccessAllowed(context.allowOpenAccess === true, isAuthEnabled(), action);
|
|
129
|
-
const
|
|
129
|
+
const stableSessionId = (id) => {
|
|
130
|
+
try {
|
|
131
|
+
const resolved = options.resolveSessionId?.(id);
|
|
132
|
+
return typeof resolved === 'string' && resolved && resolved !== id ? resolved : undefined;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const allowed = (subjectId, action, sessionId) => {
|
|
139
|
+
if (open(action) || store.authorize({ subjectId, serviceId, action, sessionId }).allowed)
|
|
140
|
+
return true;
|
|
141
|
+
// The wire may still carry the transient backend PTY id while the grant
|
|
142
|
+
// is bound to the stable client session id (or an older backend id).
|
|
143
|
+
if (sessionId === undefined)
|
|
144
|
+
return false;
|
|
145
|
+
const stable = stableSessionId(sessionId);
|
|
146
|
+
return stable !== undefined && store.authorize({ subjectId, serviceId, action, sessionId: stable }).allowed;
|
|
147
|
+
};
|
|
130
148
|
const full = (subjectId) => open() || store.hasFullServiceAccess({ subjectId, serviceId });
|
|
131
149
|
let channel;
|
|
132
150
|
const operations = new Map();
|
|
@@ -411,9 +429,24 @@ export async function createFederationRuntime(app, directory, handlers, options
|
|
|
411
429
|
...(packet.expiresAt === undefined ? {} : { expiresAt: packet.expiresAt }) };
|
|
412
430
|
validateInvitation(invitation);
|
|
413
431
|
if (invitation.scope.kind === 'sessions') {
|
|
414
|
-
|
|
415
|
-
|
|
432
|
+
// Bind to the stable client session id, never the transient backend
|
|
433
|
+
// PTY id: backends are replaced on restart, tmux recovery or
|
|
434
|
+
// re-attach, which would otherwise invalidate the whole grant.
|
|
435
|
+
const stable = new Map();
|
|
436
|
+
for (const session of await sessionInventory()) {
|
|
437
|
+
if (session.live !== true)
|
|
438
|
+
continue;
|
|
439
|
+
const frontendSessionId = typeof session.sessionId === 'string' ? session.sessionId : '';
|
|
440
|
+
if (!frontendSessionId)
|
|
441
|
+
continue;
|
|
442
|
+
stable.set(frontendSessionId, frontendSessionId);
|
|
443
|
+
if (typeof session.backendSessionId === 'string' && session.backendSessionId)
|
|
444
|
+
stable.set(session.backendSessionId, frontendSessionId);
|
|
445
|
+
}
|
|
446
|
+
const sessionIds = invitation.scope.sessionIds.map(id => stable.get(id)).filter((id) => typeof id === 'string');
|
|
447
|
+
if (sessionIds.length !== invitation.scope.sessionIds.length || new Set(sessionIds).size !== sessionIds.length)
|
|
416
448
|
throw new Error('UNKNOWN_SESSION');
|
|
449
|
+
invitation.scope = { kind: 'sessions', sessionIds };
|
|
417
450
|
}
|
|
418
451
|
check('authorization.manage');
|
|
419
452
|
send({ type: 'result', id: packet.id, serviceId, ...invitations.create(subjectId, invitation) });
|
|
@@ -1436,6 +1436,19 @@ async function runAgentAutomation(automation, req) {
|
|
|
1436
1436
|
function resolveFrontendSessionId(input) {
|
|
1437
1437
|
return resolveCollaborationSessionId(input, globalSessionState.sessions, collaborationRouting);
|
|
1438
1438
|
}
|
|
1439
|
+
/** Stable-id resolver for encrypted client authorization: accepts either the
|
|
1440
|
+
* stable client session id or a transient backend PTY id and returns the stable
|
|
1441
|
+
* one, so session-scoped grants survive backend replacement. */
|
|
1442
|
+
export function resolveStableFederationSessionId(id) {
|
|
1443
|
+
if (!id)
|
|
1444
|
+
return null;
|
|
1445
|
+
try {
|
|
1446
|
+
return resolveFrontendSessionId({ sessionId: id, backendSessionId: id });
|
|
1447
|
+
}
|
|
1448
|
+
catch {
|
|
1449
|
+
return null;
|
|
1450
|
+
}
|
|
1451
|
+
}
|
|
1439
1452
|
function collaborationRemoteSessions() {
|
|
1440
1453
|
return Array.from(new Map(collaborationStore.list().flatMap((group) => group.remoteSessions ?? [])
|
|
1441
1454
|
.map((session) => {
|
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.246",
|
|
5
5
|
"runtimeProtocolVersion": 1,
|
|
6
6
|
"minimumDesktopVersion": "1.4.46",
|
|
7
7
|
"nodeMajor": 22,
|
|
8
8
|
"dependencyHash": "sha256-K4KyYJuVoQDpZsBM8ZX1Rw3MddOxAzVdp/cPm0iGZz0=",
|
|
9
|
-
"serverBundleHash": "sha256-
|
|
10
|
-
"clientBundleHash": "sha256
|
|
9
|
+
"serverBundleHash": "sha256-a+JBWli3x+B9vkurW+AxoXHOWxm6vpx6BdHKNzqnXaI=",
|
|
10
|
+
"clientBundleHash": "sha256-eolMa/ut/D5OGEvG0VBd1FYrdYefGWrXLXExCAYRNfo=",
|
|
11
11
|
"entrypoint": "dist/server/cli.js",
|
|
12
12
|
"clientEntrypoint": "dist/client/index.html"
|
|
13
13
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,C as n}from"./mermaid.core-filx9uhD.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as t,C as e}from"./chunk-TICWLB2K-8e9Sd9jU.js";import{d as i}from"./mermaid.core-filx9uhD.js";import"./chunk-5VM5RSS4-DdwZ_Ooa.js";import"./chunk-XXDRQBXY-DECwND6H.js";import"./chunk-POPQ4Y6H-C7p1ptYd.js";import"./chunk-F27PBJKO-CyDTfLmz.js";import"./purify.es-4eNOHKSq.js";import"./app-DiN3Jz4F.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,a as s,c as t,C as e}from"./chunk-TICWLB2K-8e9Sd9jU.js";import{d as i}from"./mermaid.core-filx9uhD.js";import"./chunk-5VM5RSS4-DdwZ_Ooa.js";import"./chunk-XXDRQBXY-DECwND6H.js";import"./chunk-POPQ4Y6H-C7p1ptYd.js";import"./chunk-F27PBJKO-CyDTfLmz.js";import"./purify.es-4eNOHKSq.js";import"./app-DiN3Jz4F.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";var g={parser:t,get db(){return new e},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{g as diagram};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|