termdock 1.4.350 → 1.4.351
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-TPJoJbGD.js → App-BiDKeTpx.js} +6 -6
- package/dist/client/assets/App-BiDKeTpx.js.br +0 -0
- package/dist/client/assets/App-BiDKeTpx.js.gz +0 -0
- package/dist/client/assets/{ArchitecturePanel-DzVy71gM.js → ArchitecturePanel-DfRsqSBx.js} +2 -2
- package/dist/client/assets/ArchitecturePanel-DfRsqSBx.js.br +0 -0
- package/dist/client/assets/ArchitecturePanel-DfRsqSBx.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-DN7BCzqC.js → ChangeWalkthroughPanel-DksecDp5.js} +1 -1
- package/dist/client/assets/ChangeWalkthroughPanel-DksecDp5.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DksecDp5.js.gz +0 -0
- package/dist/client/assets/{CollaborationMainWorkspace-B1PZuCC6.js → CollaborationMainWorkspace-D-TgDrxX.js} +1 -1
- package/dist/client/assets/CollaborationMainWorkspace-D-TgDrxX.js.br +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-D-TgDrxX.js.gz +0 -0
- package/dist/client/assets/CollaborationTaskContent-Ce6gFw26.js +2 -0
- package/dist/client/assets/{ComputerControlView-BlI9Ai_k.js → ComputerControlView-BKwuceeG.js} +3 -3
- package/dist/client/assets/ComputerControlView-BKwuceeG.js.br +0 -0
- package/dist/client/assets/ComputerControlView-BKwuceeG.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-V0hTKB-S.js → DagPlayground-Cshoqo5l.js} +1 -1
- package/dist/client/assets/DagPlayground-Cshoqo5l.js.br +0 -0
- package/dist/client/assets/DagPlayground-Cshoqo5l.js.gz +0 -0
- package/dist/client/assets/{DiffLab-DEw4y4Hk.js → DiffLab-DFut8ZHi.js} +1 -1
- package/dist/client/assets/DiffLab-DFut8ZHi.js.br +0 -0
- package/dist/client/assets/DiffLab-DFut8ZHi.js.gz +0 -0
- package/dist/client/assets/{DiffReview-Cnnt3TMK.js → DiffReview-DkEi5c3c.js} +1 -1
- package/dist/client/assets/DiffReview-DkEi5c3c.js.br +0 -0
- package/dist/client/assets/DiffReview-DkEi5c3c.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-CDXsy0jE.js → DiffReviewLab-Y9JlI5DQ.js} +1 -1
- package/dist/client/assets/DiffReviewLab-Y9JlI5DQ.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-Y9JlI5DQ.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-Dh40XiCM.js → DiffViewer-3JGF6U0m.js} +1 -1
- package/dist/client/assets/DiffViewer-3JGF6U0m.js.br +0 -0
- package/dist/client/assets/DiffViewer-3JGF6U0m.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-BEiOgE0G.js → ModelPreview-Cv6JgunE.js} +1 -1
- package/dist/client/assets/ModelPreview-Cv6JgunE.js.br +0 -0
- package/dist/client/assets/ModelPreview-Cv6JgunE.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-DiECnX5D.js → RightSidebar-akYx_nRq.js} +3 -3
- package/dist/client/assets/RightSidebar-akYx_nRq.js.br +0 -0
- package/dist/client/assets/RightSidebar-akYx_nRq.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-ByzlUu_B.js → abnfDiagram-VCTEODGH-CcCffdpj.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-CcCffdpj.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-CcCffdpj.js.gz +0 -0
- package/dist/client/assets/app-BB0CAQ8D.js +35 -0
- package/dist/client/assets/app-BB0CAQ8D.js.br +0 -0
- package/dist/client/assets/app-BB0CAQ8D.js.gz +0 -0
- package/dist/client/assets/{arc-BA6JM6vl.js → arc-CXcCuzb3.js} +1 -1
- package/dist/client/assets/arc-CXcCuzb3.js.br +0 -0
- package/dist/client/assets/arc-CXcCuzb3.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-hCHxOfKw.js → architectureDiagram-5GKGNRK7-CmR7whZz.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CmR7whZz.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-CmR7whZz.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-OmEN9hUB.js → blockDiagram-I7D4REHJ-DODhUpHm.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-DODhUpHm.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-DODhUpHm.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-DfLTv8zh.js → c4Diagram-7LVT6UL2-BF9eEb2Y.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-BF9eEb2Y.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-BF9eEb2Y.js.gz +0 -0
- package/dist/client/assets/channel-BKkTA-X_.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-C3O76PNZ.js → chunk-2Q5K7J3B-CB7-8Zex.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-CsWZd30k.js → chunk-5VM5RSS4-8Uxe2lki.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-yxCv2Uqk.js → chunk-F27PBJKO-Bv45U-az.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-Bv45U-az.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-Bv45U-az.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-CdPjlb9f.js → chunk-IMKFNOWR-CfEErbEd.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-CfEErbEd.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CfEErbEd.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-BiiOLq2R.js → chunk-JWPE2WC7-CjUqcCSL.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-BOu_1Brt.js → chunk-POPQ4Y6H-BHbP3O75.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-D1tOJung.js → chunk-SVP7TREG-CbyJW-OT.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-CbyJW-OT.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-CbyJW-OT.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-DZjDfYNw.js → chunk-TICWLB2K-t93EivmS.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-t93EivmS.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-t93EivmS.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-CtGPyXWh.js → chunk-XXDRQBXY-C_Pe8Osb.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-D9nwA51-.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-D9nwA51-.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-C4Wb5lqD.js → cose-bilkent-JH36ORCC-CksG0bvP.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-CksG0bvP.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-CksG0bvP.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-BvWKB1Xk.js → cynefin-OW5HDTMX-CV3T078G.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-CV3T078G.js.br +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-BvWKB1Xk.js.gz → cynefin-OW5HDTMX-CV3T078G.js.gz} +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-7tAkHD2P.js → cynefinDiagram-5FMLGOSQ-BQnJabEs.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BQnJabEs.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BQnJabEs.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-Bs6IPwks.js → dagre-GXQ25YYZ-BeIQp5Pv.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-BeIQp5Pv.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-BeIQp5Pv.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-CmYXaTya.js → diagram-S7CK7UJ4-D-Mibxiq.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-D-Mibxiq.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-D-Mibxiq.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-CqxoefB7.js → diagram-UQ7AKVKN-eiIMWp9t.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-eiIMWp9t.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-eiIMWp9t.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-Dxp1MKPT.js → diagram-VSXAHHWV-CTVOWtNL.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-CTVOWtNL.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-CTVOWtNL.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-BKbWvvEr.js → diagram-VX7I27RA-NKKk6uh7.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-NKKk6uh7.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-NKKk6uh7.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-BZnNaP7F.js → diagram-Z3DM3KII-DKYdBuNs.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-DKYdBuNs.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-DKYdBuNs.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-BXVlN_P7.js → ebnfDiagram-PWID7BFC-DaM3D5Ed.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-DaM3D5Ed.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-DaM3D5Ed.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-CEdYDZU7.js → erDiagram-RLTQ6QDP-Df9kQwWg.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-Df9kQwWg.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-Df9kQwWg.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-Bbw8GPCZ.js → flowDiagram-HODETNUW-CWjDvpsN.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-CWjDvpsN.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-CWjDvpsN.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CcFbtP2y.js → ganttDiagram-EL5Y4UJY-mKt-CgrH.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-mKt-CgrH.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-mKt-CgrH.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-sdzs-66-.js → gestureArbiter-C8TBuoU3.js} +1 -1
- package/dist/client/assets/gestureArbiter-C8TBuoU3.js.br +0 -0
- package/dist/client/assets/gestureArbiter-C8TBuoU3.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-Eiust154.js → gitGraphDiagram-WWUBYQGX-BqnaVVZ0.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BqnaVVZ0.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BqnaVVZ0.js.gz +0 -0
- package/dist/client/assets/index-3lPto_1X.css +1 -0
- package/dist/client/assets/index-3lPto_1X.css.br +0 -0
- package/dist/client/assets/{index-DtPsPZ7W.css.gz → index-3lPto_1X.css.gz} +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-DUmaNZJW.js → infoDiagram-27XIBGKW-CkniyUX9.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-qTwgXfx_.js → ishikawaDiagram-5VMMS53U-CKo9urjS.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CKo9urjS.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-CKo9urjS.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-DKy1msWo.js → journeyDiagram-3NMN7TZE-Cd4jK-oI.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-Cd4jK-oI.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-Cd4jK-oI.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-BxibybDd.js → kanban-definition-UXKFOSKX-BuulZGO-.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-BuulZGO-.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BuulZGO-.js.gz +0 -0
- package/dist/client/assets/{layout-Bh6fKHRM.js → layout-BpJ2ofrz.js} +1 -1
- package/dist/client/assets/layout-BpJ2ofrz.js.br +0 -0
- package/dist/client/assets/layout-BpJ2ofrz.js.gz +0 -0
- package/dist/client/assets/{linear-SRlL3VWX.js → linear-CaSbGLIA.js} +1 -1
- package/dist/client/assets/linear-CaSbGLIA.js.br +0 -0
- package/dist/client/assets/linear-CaSbGLIA.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-D0bcNdw3.js → mermaid.core-BlkorXd6.js} +5 -5
- package/dist/client/assets/mermaid.core-BlkorXd6.js.br +0 -0
- package/dist/client/assets/mermaid.core-BlkorXd6.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-CImZ_aI0.js → mindmap-definition-YA3MSWOX-BqKhK1NJ.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BqKhK1NJ.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BqKhK1NJ.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-f7-mFb1b.js → passwordBootstrap-DLUamTjd.js} +1 -1
- package/dist/client/assets/passwordBootstrap-DLUamTjd.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-DLUamTjd.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-BT4pTf8O.js → pegDiagram-XKGWAZYB-BlWgUklx.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-BlWgUklx.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BlWgUklx.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-C5K58ien.js → pieDiagram-E7YTZNPT-Bp32kHHQ.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-Bp32kHHQ.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-Bp32kHHQ.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DzSugYXz.js → quadrantDiagram-AXDQQJYC-0qeSh9-W.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-0qeSh9-W.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-0qeSh9-W.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-BY07SouQ.js → railroadDiagram-O6MQD6OU-COmWghVD.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-COmWghVD.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-COmWghVD.js.gz +0 -0
- package/dist/client/assets/{rdpSession-RNjO6yLw.js → rdpSession-Bbycnmly.js} +1 -1
- package/dist/client/assets/rdpSession-Bbycnmly.js.br +0 -0
- package/dist/client/assets/rdpSession-Bbycnmly.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-B9K9yPKR.js → referenceLongPress-CQ9ote5C.js} +1 -1
- package/dist/client/assets/referenceLongPress-CQ9ote5C.js.br +0 -0
- package/dist/client/assets/referenceLongPress-CQ9ote5C.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-C7WieVuE.js → requirementDiagram-BXWQKSXE-CeohDJAC.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CeohDJAC.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-CeohDJAC.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-BJsDWNs4.js → sankeyDiagram-P5KCCOFB-rA5x9iOw.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-rA5x9iOw.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-rA5x9iOw.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-BeJ_7853.js → sequenceDiagram-WJ2MYXX4-Cw2BZ0po.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-Cw2BZ0po.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-Cw2BZ0po.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-DOsjXKPV.js → sizeCapture-INFHLROL-Dz1ykd8a.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-Dz1ykd8a.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-Dz1ykd8a.js.gz +0 -0
- package/dist/client/assets/{sparkles-e9SkpP7a.js → sparkles-0HeBLLwx.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-6s709_RT.js → stateDiagram-D77RDMKH-DHfjTfLj.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-DHfjTfLj.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-DHfjTfLj.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-B9AqPaxQ.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-5R5dw9_R.js → swimlanes-42K2YHIH-CAJkSUVz.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-CAJkSUVz.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-CAJkSUVz.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DPbqRuWV.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-B4YN0lsx.js → timeline-definition-24CTP7MA-plr9yv12.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-plr9yv12.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-plr9yv12.js.gz +0 -0
- package/dist/client/assets/{triangle-alert-BzBDJvJX.js → triangle-alert-ibl6FV9I.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-Wd83SmWI.js → vennDiagram-4TSXK5OY-Cz04de3S.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-Cz04de3S.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-Cz04de3S.js.gz +0 -0
- package/dist/client/assets/{videoCompression-Bsw--tMn.js → videoCompression-DCsUD6X6.js} +1 -1
- package/dist/client/assets/videoCompression-DCsUD6X6.js.br +0 -0
- package/dist/client/assets/videoCompression-DCsUD6X6.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-CGsYvqWN.js → wardleyDiagram-VM6X3IG4-DnT-q6At.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-DnT-q6At.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-DnT-q6At.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-ednJq1_u.js → xychartDiagram-S5SC5T6Z-C0y08MEX.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-C0y08MEX.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-C0y08MEX.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-encrypted-background.js +1 -1
- package/dist/client/sw-encrypted-background.js.br +0 -0
- package/dist/client/sw-encrypted-background.js.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/collaborationRoutes.js +2 -0
- package/dist/server/entry.js +1 -0
- package/dist/server/federation/relay.js +21 -3
- package/dist/server/federation/runtime.js +7 -1
- package/dist/server/federation/socketDuplex.js +3 -3
- package/dist/server/utils/version.js +2 -0
- package/docs/integrations.md +23 -0
- package/package.json +1 -1
- package/runtime-manifest.json +3 -3
- package/dist/client/assets/App-TPJoJbGD.js.br +0 -0
- package/dist/client/assets/App-TPJoJbGD.js.gz +0 -0
- package/dist/client/assets/ArchitecturePanel-DzVy71gM.js.br +0 -0
- package/dist/client/assets/ArchitecturePanel-DzVy71gM.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DN7BCzqC.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-DN7BCzqC.js.gz +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-B1PZuCC6.js.br +0 -0
- package/dist/client/assets/CollaborationMainWorkspace-B1PZuCC6.js.gz +0 -0
- package/dist/client/assets/CollaborationTaskContent-CG7g1LMH.js +0 -2
- package/dist/client/assets/ComputerControlView-BlI9Ai_k.js.br +0 -0
- package/dist/client/assets/ComputerControlView-BlI9Ai_k.js.gz +0 -0
- package/dist/client/assets/DagPlayground-V0hTKB-S.js.br +0 -0
- package/dist/client/assets/DagPlayground-V0hTKB-S.js.gz +0 -0
- package/dist/client/assets/DiffLab-DEw4y4Hk.js.br +0 -0
- package/dist/client/assets/DiffLab-DEw4y4Hk.js.gz +0 -0
- package/dist/client/assets/DiffReview-Cnnt3TMK.js.br +0 -0
- package/dist/client/assets/DiffReview-Cnnt3TMK.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-CDXsy0jE.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-CDXsy0jE.js.gz +0 -0
- package/dist/client/assets/DiffViewer-Dh40XiCM.js.br +0 -0
- package/dist/client/assets/DiffViewer-Dh40XiCM.js.gz +0 -0
- package/dist/client/assets/ModelPreview-BEiOgE0G.js.br +0 -0
- package/dist/client/assets/ModelPreview-BEiOgE0G.js.gz +0 -0
- package/dist/client/assets/RightSidebar-DiECnX5D.js.br +0 -0
- package/dist/client/assets/RightSidebar-DiECnX5D.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-ByzlUu_B.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-ByzlUu_B.js.gz +0 -0
- package/dist/client/assets/app-CKAFlgMD.js +0 -35
- package/dist/client/assets/app-CKAFlgMD.js.br +0 -0
- package/dist/client/assets/app-CKAFlgMD.js.gz +0 -0
- package/dist/client/assets/arc-BA6JM6vl.js.br +0 -0
- package/dist/client/assets/arc-BA6JM6vl.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-hCHxOfKw.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-hCHxOfKw.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-OmEN9hUB.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-OmEN9hUB.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DfLTv8zh.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DfLTv8zh.js.gz +0 -0
- package/dist/client/assets/channel-gcmN0N0m.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-yxCv2Uqk.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-yxCv2Uqk.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CdPjlb9f.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-CdPjlb9f.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-D1tOJung.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-D1tOJung.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DZjDfYNw.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DZjDfYNw.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-k4BRymfG.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-k4BRymfG.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-C4Wb5lqD.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-C4Wb5lqD.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-BvWKB1Xk.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-7tAkHD2P.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-7tAkHD2P.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-Bs6IPwks.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-Bs6IPwks.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CmYXaTya.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CmYXaTya.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CqxoefB7.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CqxoefB7.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-Dxp1MKPT.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-Dxp1MKPT.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-BKbWvvEr.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-BKbWvvEr.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-BZnNaP7F.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-BZnNaP7F.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BXVlN_P7.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-BXVlN_P7.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-CEdYDZU7.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-CEdYDZU7.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Bbw8GPCZ.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-Bbw8GPCZ.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CcFbtP2y.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CcFbtP2y.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-sdzs-66-.js.br +0 -0
- package/dist/client/assets/gestureArbiter-sdzs-66-.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Eiust154.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Eiust154.js.gz +0 -0
- package/dist/client/assets/index-DtPsPZ7W.css +0 -1
- package/dist/client/assets/index-DtPsPZ7W.css.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-qTwgXfx_.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-qTwgXfx_.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DKy1msWo.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-DKy1msWo.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BxibybDd.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BxibybDd.js.gz +0 -0
- package/dist/client/assets/layout-Bh6fKHRM.js.br +0 -0
- package/dist/client/assets/layout-Bh6fKHRM.js.gz +0 -0
- package/dist/client/assets/linear-SRlL3VWX.js.br +0 -0
- package/dist/client/assets/linear-SRlL3VWX.js.gz +0 -0
- package/dist/client/assets/mermaid.core-D0bcNdw3.js.br +0 -0
- package/dist/client/assets/mermaid.core-D0bcNdw3.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CImZ_aI0.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CImZ_aI0.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-f7-mFb1b.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-f7-mFb1b.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BT4pTf8O.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-BT4pTf8O.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-C5K58ien.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-C5K58ien.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DzSugYXz.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DzSugYXz.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BY07SouQ.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-BY07SouQ.js.gz +0 -0
- package/dist/client/assets/rdpSession-RNjO6yLw.js.br +0 -0
- package/dist/client/assets/rdpSession-RNjO6yLw.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-B9K9yPKR.js.br +0 -0
- package/dist/client/assets/referenceLongPress-B9K9yPKR.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-C7WieVuE.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-C7WieVuE.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BJsDWNs4.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-BJsDWNs4.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BeJ_7853.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BeJ_7853.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-DOsjXKPV.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-DOsjXKPV.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-6s709_RT.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-6s709_RT.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-B43A9Hsz.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-5R5dw9_R.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-5R5dw9_R.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DoFbqN_4.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-B4YN0lsx.js.br +0 -0
- package/dist/client/assets/timeline-definition-24CTP7MA-B4YN0lsx.js.gz +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-Wd83SmWI.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-Wd83SmWI.js.gz +0 -0
- package/dist/client/assets/videoCompression-Bsw--tMn.js.br +0 -0
- package/dist/client/assets/videoCompression-Bsw--tMn.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CGsYvqWN.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CGsYvqWN.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-ednJq1_u.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-ednJq1_u.js.gz +0 -0
|
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,a)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(s[o])return;let
|
|
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,a)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(s[o])return;let r={};const c=e=>n(e,o),d={module:{uri:o},exports:r,require:c};s[o]=Promise.all(i.map(e=>d[e]||c(e))).then(e=>(a(...e),r))}}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:"270d2f459f6b98922d3ae5ee4fe240ba"},{url:"assets/app-BB0CAQ8D.js",revision:null},{url:"assets/react-XDCjal2T.js",revision:null},{url:"assets/dnd-BCFAPC0L.js",revision:null},{url:"assets/terminal-Dea8wJF3.js",revision:null},{url:"assets/index-3lPto_1X.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:"boot-logo.png",revision:"2e3a25efd9b0b8ca1eab53b5f2284556"},{url:"favicon.ico",revision:"2994debfa6f59a0898e24eb0c54d64b5"},{url:"ipad-status-bar.js",revision:"3a8080edb8a5cc658a7908f6ad69537f"},{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
|
|
@@ -162,6 +162,8 @@ export function collaborationRoutes({ store, resolveSession, deliver, rebind, di
|
|
|
162
162
|
};
|
|
163
163
|
router.get('/capabilities', run((_req, res) => {
|
|
164
164
|
res.json({ protocol_version: 2, server_version: getTermdockVersion(), limits: COLLAB_LIMITS,
|
|
165
|
+
relay_authorization_errors: true, relay_authorization_errors_min_version: '1.4.351',
|
|
166
|
+
relay_self_target_guard: true, relay_self_target_guard_min_version: '1.4.351',
|
|
165
167
|
route_diagnostics: !!diagnoseRoute, route_identity_recovery: !!diagnoseRoute, route_identity_recovery_min_version: '1.4.321',
|
|
166
168
|
agent_launch_generation_consistency: true, agent_launch_generation_consistency_min_version: '1.4.322',
|
|
167
169
|
terminal_input_check_diagnostics: true,
|
package/dist/server/entry.js
CHANGED
|
@@ -485,6 +485,7 @@ export function startServer(options = {}) {
|
|
|
485
485
|
const desktopTargets = () => desktopDirectTargets(path.join(homedir(), '.termdock', 'desktop.json'), federationServiceId);
|
|
486
486
|
const routeAccess = new RouteAccess(path.join(homedir(), '.termdock', 'federation', 'routes.json'), Date.now, (subjectId, targetServiceId) => routeInvitations?.allows(subjectId, targetServiceId) === true || collaborationTransport?.canRoute(subjectId, targetServiceId) === true, desktopTargets, () => activeRouteIds());
|
|
487
487
|
const relayRouter = new RelayRouter({
|
|
488
|
+
isLocalTarget: id => id === federationServiceId,
|
|
488
489
|
authenticate: context => context,
|
|
489
490
|
allowRegister: (principal, serviceId) => routeAccess.allowRegister(principal, serviceId),
|
|
490
491
|
allowRoute: (principal, serviceId) => routeAccess.allowRoute(principal, serviceId),
|
|
@@ -211,7 +211,8 @@ export class RelayRouter {
|
|
|
211
211
|
s.provider.streams.delete(s.providerId);
|
|
212
212
|
send(s.provider.ws, { type: 'close', streamId: s.providerId, reason }, this.limits);
|
|
213
213
|
}
|
|
214
|
-
send(s.owner.ws, { type: 'close', streamId: s.ownerId, reason
|
|
214
|
+
send(s.owner.ws, { type: 'close', streamId: s.ownerId, reason,
|
|
215
|
+
...(!this.canRoute(s.owner, s.serviceId) ? { code: 'RELAY_AUTHORIZATION_REQUIRED' } : {}) }, this.limits);
|
|
215
216
|
}
|
|
216
217
|
providerFailed(s, reason) {
|
|
217
218
|
if (s.owner.streams.get(s.ownerId) !== s)
|
|
@@ -240,7 +241,19 @@ export class RelayRouter {
|
|
|
240
241
|
provider.streams.delete(s.providerId);
|
|
241
242
|
continue;
|
|
242
243
|
}
|
|
243
|
-
|
|
244
|
+
const deadline = Math.min(Date.now() + this.limits.connectTimeoutMs, s.expires);
|
|
245
|
+
const expire = () => {
|
|
246
|
+
// Timers can fire just before their absolute deadline. Do not fail a
|
|
247
|
+
// provider early and start a backup beyond the original route budget.
|
|
248
|
+
const remaining = deadline - Date.now();
|
|
249
|
+
if (remaining > 0) {
|
|
250
|
+
s.deadline = setTimeout(expire, remaining);
|
|
251
|
+
s.deadline.unref?.();
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
this.providerFailed(s, 'Target timeout');
|
|
255
|
+
};
|
|
256
|
+
s.deadline = setTimeout(expire, Math.max(0, deadline - Date.now()));
|
|
244
257
|
s.deadline.unref?.();
|
|
245
258
|
return true;
|
|
246
259
|
}
|
|
@@ -264,10 +277,15 @@ export class RelayRouter {
|
|
|
264
277
|
return;
|
|
265
278
|
}
|
|
266
279
|
if (f.type === 'open') {
|
|
280
|
+
if (this.options.isLocalTarget?.(f.serviceId)) {
|
|
281
|
+
send(peer.ws, { type: 'close', streamId: f.streamId, reason: 'Cannot relay to the entry itself', code: 'RELAY_SELF_TARGET' }, this.limits);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
267
284
|
if (peer.streams.has(f.streamId))
|
|
268
285
|
throw new Error('Duplicate stream');
|
|
269
286
|
if (!this.canRoute(peer, f.serviceId) || !this.hasRoute(f.serviceId)) {
|
|
270
|
-
send(peer.ws, { type: 'close', streamId: f.streamId, reason: 'Route unavailable or denied'
|
|
287
|
+
send(peer.ws, { type: 'close', streamId: f.streamId, reason: 'Route unavailable or denied',
|
|
288
|
+
...(!this.canRoute(peer, f.serviceId) ? { code: 'RELAY_AUTHORIZATION_REQUIRED' } : {}) }, this.limits);
|
|
271
289
|
return;
|
|
272
290
|
}
|
|
273
291
|
if (peer.streams.size >= this.limits.maxStreams)
|
|
@@ -389,7 +389,7 @@ export async function createFederationRuntime(app, directory, handlers, options
|
|
|
389
389
|
}
|
|
390
390
|
else if (packet.type === 'permissions') {
|
|
391
391
|
const grants = store.listEffective({ subjectId, serviceId });
|
|
392
|
-
send({ type: 'result', id: packet.id, subjectId, serviceId, fullService: full(subjectId), grants, httpWindow: MAX_TRANSFER_WINDOW, binaryChunks: true, webTransport: options.webTransport?.() });
|
|
392
|
+
send({ type: 'result', id: packet.id, subjectId, serviceId, fullService: full(subjectId), grants, httpWindow: MAX_TRANSFER_WINDOW, binaryChunks: true, relayAuthorizationErrors: true, relaySelfTargetGuard: true, webTransport: options.webTransport?.() });
|
|
393
393
|
}
|
|
394
394
|
else if (packet.type === 'session-list') {
|
|
395
395
|
const inventory = await sessionInventory();
|
|
@@ -411,6 +411,8 @@ export async function createFederationRuntime(app, directory, handlers, options
|
|
|
411
411
|
send({ type: 'result', id: packet.id, serviceId: subjectId, ...options.issueSelfRelayTicket(subjectId) });
|
|
412
412
|
}
|
|
413
413
|
else if (packet.type === 'route-invite-create') {
|
|
414
|
+
if (packet.serviceId === serviceId)
|
|
415
|
+
throw new Error('RELAY_SELF_TARGET');
|
|
414
416
|
check('authorization.manage');
|
|
415
417
|
if (!options.createRouteInvitation || typeof packet.serviceId !== 'string' || !packet.serviceId || packet.serviceId.length > 512)
|
|
416
418
|
throw new Error('ROUTE_NOT_AVAILABLE');
|
|
@@ -433,6 +435,8 @@ export async function createFederationRuntime(app, directory, handlers, options
|
|
|
433
435
|
send({ type: 'result', id: packet.id, canManage, grants: canManage ? all : all.filter(grant => grant.subjectId === subjectId) });
|
|
434
436
|
}
|
|
435
437
|
else if (packet.type === 'route-grant') {
|
|
438
|
+
if (packet.serviceId === serviceId)
|
|
439
|
+
throw new Error('RELAY_SELF_TARGET');
|
|
436
440
|
check('authorization.manage');
|
|
437
441
|
if (!options.grantRouteAccess || typeof packet.serviceId !== 'string' || typeof packet.subjectId !== 'string')
|
|
438
442
|
throw new Error('ROUTE_NOT_AVAILABLE');
|
|
@@ -447,6 +451,8 @@ export async function createFederationRuntime(app, directory, handlers, options
|
|
|
447
451
|
send({ type: 'result', id: packet.id, revoked: options.revokeRouteAccess(packet.grantId) });
|
|
448
452
|
}
|
|
449
453
|
else if (packet.type === 'route-ticket') {
|
|
454
|
+
if (packet.serviceId === serviceId)
|
|
455
|
+
throw new Error('RELAY_SELF_TARGET');
|
|
450
456
|
if (typeof packet.serviceId !== 'string' || !options.hasRouteGrant?.(subjectId, packet.serviceId))
|
|
451
457
|
throw new Error('AUTHORIZATION_DENIED');
|
|
452
458
|
if (!options.issueRouteTicket || typeof packet.serviceId !== 'string' || !packet.serviceId || packet.serviceId.length > 512)
|
|
@@ -13,8 +13,8 @@ export function socketDuplex(socket) {
|
|
|
13
13
|
close(new Error('Encrypted transport rejected frame'));
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
|
-
socket.addEventListener('close', () => input.end());
|
|
17
|
-
socket.addEventListener('error', () => input.end(new Error('Encrypted transport disconnected')));
|
|
16
|
+
socket.addEventListener('close', () => input.end(socket.transportFailure));
|
|
17
|
+
socket.addEventListener('error', () => input.end(socket.transportFailure || new Error('Encrypted transport disconnected')));
|
|
18
18
|
return {
|
|
19
19
|
source: input, close,
|
|
20
20
|
async sink(source) {
|
|
@@ -28,7 +28,7 @@ export function socketDuplex(socket) {
|
|
|
28
28
|
await new Promise(resolve => setTimeout(resolve, 10));
|
|
29
29
|
}
|
|
30
30
|
if (socket.readyState !== 1)
|
|
31
|
-
throw new Error('Encrypted transport closed');
|
|
31
|
+
throw socket.transportFailure || new Error('Encrypted transport closed');
|
|
32
32
|
socket.send(chunk.subarray(offset, offset + 64 * 1024));
|
|
33
33
|
}
|
|
34
34
|
}
|
package/docs/integrations.md
CHANGED
|
@@ -1485,3 +1485,26 @@ td integration close-diagnostics <原TD-session-id>
|
|
|
1485
1485
|
需要更新的是**提供页面资源的入口服务**到 npm **1.4.350**,并让浏览器/PWA 实际加载新 bundle;CLI 文件版本或远端目标已经升级不能修复仍在运行的旧前端。正式包通过 `pinBundledRuntimeClientDist` 为当前运行进程固定页面快照,单独安装新包不会热替换旧进程提供的页面;按原 HTTPS/auth/supervisor 方式在维护窗重启该入口的 TD 服务,再核验资源,不手改快照。实际目标可保持原兼容版本(本轮场景349),无需为了此目录读取重启目标 Agent/DevBox。没有新 capability:这属于页面逻辑修复,以入口 /api/meta 版本与所服务主 JS 字节/手机实际脚本版本核验。已安装旧 SW 的 iPhone PWA 需等待更新后完全关闭重开;不清除配对/设备身份/授权数据作为修复。
|
|
1486
1486
|
|
|
1487
1487
|
回归包含已接入 relay 的 active/entry 复用、点选复核、同 pin 备用地址、无活动通道时既有 relay 临时连接、借用与自有连接清理、不同目标/已关闭通道拒借、权限错误/pin 错误保留、不自动反向授权、不切服务、首次无 Service Worker 与断线不回退边界。另运行完整加密传输、拖放/预览/取消/通知桥接相关现有发布回归。维护机验证不冒充真实 iPhone/macOS 私有网络:正式手机原窗口“工作服务→可中转服务列表→原终端继续可用”仍由现场验收,不操作或重启 Arena。
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
## 1.4.351:授权恢复与自中转防护
|
|
1491
|
+
|
|
1492
|
+
授权与网络失败分开处理。`ConnectionAccessError.code` 只使用固定值:`RELAY_AUTHORIZATION_REQUIRED` 表示认证入口没有给当前设备有效中转授权,`TARGET_AUTHORIZATION_REQUIRED` 表示目标 permissions 没有有效访问授权,`PERMISSION_DENIED` 表示权限范围不足,`TARGET_IDENTITY_MISMATCH` 表示实际身份不匹配,`RELAY_SELF_TARGET` 表示入口被用作自身的中转目标。安全上下文仅含原目标、原入口 pin 与规范化入口 origin,不含 ticket、凭据或正文。没有确证时不显示“已撤销/已过期”;超时、失联和旧版模糊的 `Route unavailable or denied` 不推断成授权失效。
|
|
1493
|
+
|
|
1494
|
+
入口 `route-ticket` 的明确权限拒绝会绑定原入口与最终目标。中转 close 帧新增可选稳定 `code`;浏览器在 WebSocket 建连、Noise、已建立通道断开及权限检查路径保留它,不再全部吞成普通连接错误。旧客户端忽略新增字段;新客户端也识别旧入口明确的 `Authorization revoked`,但只显示中性“没有有效中转授权”。旧入口未提供确证的失败继续显示网络问题,不能承诺能精确分类所有旧版错误。没有扩大任意 HTTP/WS 代理或增加多跳。
|
|
1495
|
+
|
|
1496
|
+
同一目标会先尝试其它已保存、已有授权的路线;某一入口缺权限不立即阻断其它入口,但目标自身的明确拒绝不能借另一入口绕过。所有候选失败后保留身份/授权原因,暂停该目标自动重试。目标按自己的 pin 绑定,别的服务和工作空间不因此阻断。暂停为当前页面内存状态,重新打开页面会重新核对;不删除服务、路线、原终端或草稿,不重放业务写入。已打开的终端组件保留并在恢复提示期间失去输入焦点,避免隐藏界面继续输入。
|
|
1497
|
+
|
|
1498
|
+
恢复界面说明哪一个入口到哪一个目标需要处理,提供“重新授权”或“登录目标服务”、“查看连接设置”和“取消”。取消不写权限,也可以返回恢复选项。中转恢复进入原目标/原入口的专用核对页:打开页只读,入口管理权限不足时仅说明需要该入口管理员或对应备用连接邀请;不会借入口密码自动换取广泛权限。已有管理权限者必须明确点击“授权此设备并重新连接”才调用原有目标限定 route-grant,然后重新读取同一设备的有效中转权限;仅写入成功不足以续连。目标登录使用既有目标登录页,不要求登录错误的入口。最终再读目标 permissions 才续接;晚到的旧页面/旧目标/旧 client 结果拒绝成为恢复成功。身份不匹配及范围不足只提供核对设置/联系管理员,不提供扩大授权的捷径。
|
|
1499
|
+
|
|
1500
|
+
自动连接、后台重连、登录预连中的反向路线发现不再隐式 route-grant。发现地址不是授权,管理员权限也不是用户恢复被撤销路线的同意。用户明确点击已有授权/邀请入口时仍沿原契约执行。相关恢复过程不创建 Agent、任务或替代业务会话,不自动补 Enter。
|
|
1501
|
+
|
|
1502
|
+
“可中转的服务”按实际握手入口的 `targetPeerId` 过滤同身份候选,并按候选 `serviceId` 去重;不按名称、IP、页面 origin 或 BOOT_SERVICE_ID 推断身份。同名不同身份仍保留,同身份的其它地址仍可作为直连备用地址。prepare/inspect/grant/invitation、历史自入口 intent 以及新连接保存均拒绝自中转,不删除用户历史。服务端保留目录过滤,并在 route-grant/ticket/invite-create 与实际 relay open 再拒绝自己的真实身份。另一个服务发布它自身给本入口的合法 self-relay 保持不变。这个防御不代表已证明某台手机曾收到后端自项。
|
|
1503
|
+
|
|
1504
|
+
前端恢复界面和中性错误保留最低为 **1.4.351**。入口服务 1.4.351 支持完整稳定错误码与服务端自目标防护;最终目标服务可保持原兼容版本。本次实际 PWA 页面来自维护 Linux,不能把“工作=Mac”或 npm CLI 文件版本当成静态来源。发布后按原维护流程核对页面主 JS、实际服务版本和当前入口能力;不要为此重启目标 Agent/DevBox/Arena。需要入口新协议时,由入口所有者协调该入口的维护窗;不改运行快照或清 PWA 身份存储。
|
|
1505
|
+
|
|
1506
|
+
能力探测:`/api/meta.capabilities` 含 `relay-access-recovery-v1`、`relay-self-target-guard-v1`;`td collab --session <自身ID> capabilities --json` 回读 `relay_authorization_errors=true`、`relay_self_target_guard=true`,两者 `_min_version=1.4.351`。认证 Noise `permissions` 同时返回 `relayAuthorizationErrors` 与 `relaySelfTargetGuard` 布尔。它们只描述此服务端能力,不证明手机已加载新页面或当前设备获授权。
|
|
1507
|
+
|
|
1508
|
+
回归包括真实 Noise/中转授权撤回后的错误传播、网络与授权区分、其它合法路线成功、目标拒绝不绕过、零权限写入的展示/取消、窄中转授权明确确认及写后重读、管理员拒绝、精确目标登录、原终端/草稿保留、旧 client/目标/页面晚回执、同身份多地址/重复项/同名不同身份及 self-relay 兼容。发布工作流纳入相关服务管理组件与工作空间测试。原有总路由预算测试曾在未改动 350 基线复现计时器提前触发导致多试备用 provider;本版按原绝对 deadline 重核,不放宽超时预算或修改断言。
|
|
1509
|
+
|
|
1510
|
+
维护机浏览器在 390×844 和 1280×800 的隔离夹具复核恢复选择、取消、无管理权限、指定目标登录与成功后的界面;夹具只记录读/写计数、不连接真实业务。真实 iPhone PWA/macOS 的授权失效交互仍由现场在安全夹具或自然失败中验收,不为测试撤销已恢复手机的正式授权。全仓前端 tsc 若被既有测试文件语法阻断应单列,生产源码类型检查、完整构建和发布回归独立报告,不修改无关测试。
|
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.351",
|
|
5
5
|
"runtimeProtocolVersion": 1,
|
|
6
6
|
"minimumDesktopVersion": "1.4.46",
|
|
7
7
|
"nodeMajor": 22,
|
|
8
8
|
"dependencyHash": "sha256-ObG1OGq7e7fMFQmYoPxPp3jRodEusYHulVNa5mT1aW8=",
|
|
9
|
-
"serverBundleHash": "sha256-
|
|
10
|
-
"clientBundleHash": "sha256-
|
|
9
|
+
"serverBundleHash": "sha256-9lfdVPuWoovGTXbZZCfstC1hVwb5x1Zf4yVu6qbbd9U=",
|
|
10
|
+
"clientBundleHash": "sha256-8em3ElG96RS1z3DO1XVTJ6daULNrNLIupJyA6j8G6Is=",
|
|
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
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{bA as r}from"./app-CKAFlgMD.js";import{b as m}from"./dnd-BCFAPC0L.js";import{b as n}from"./RightSidebar-DiECnX5D.js";import"./react-XDCjal2T.js";import"./terminal-Dea8wJF3.js";import"./App-TPJoJbGD.js";import"./gestureArbiter-sdzs-66-.js";import"./triangle-alert-BzBDJvJX.js";import"./referenceLongPress-B9K9yPKR.js";import"./DiffReview-Cnnt3TMK.js";import"./sparkles-e9SkpP7a.js";import"./DiffViewer-Dh40XiCM.js";import"./ChangeWalkthroughPanel-DN7BCzqC.js";function g({content:o}){const e=m.useMemo(()=>n(o.split(`
|
|
2
|
-
`),null,null),[o]);return r.jsx("div",{className:"min-w-0 space-y-3 break-words text-sm leading-6 text-foreground [&_h1]:text-lg [&_h2]:text-base [&_h3]:text-sm [&_pre]:max-w-full [&_table]:text-xs",children:e.map((t,i)=>r.jsx("div",{className:"min-w-0",children:typeof t.content=="function"?t.content(null):t.content},i))})}export{g as default};
|
|
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
|