termdock 1.4.184 → 1.4.186
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/.desktop-dist/main.js +15 -0
- package/dist/client/assets/{App-QbHtW5ZR.js → App-C2mwGy6R.js} +33 -33
- package/dist/client/assets/App-C2mwGy6R.js.br +0 -0
- package/dist/client/assets/App-C2mwGy6R.js.gz +0 -0
- package/dist/client/assets/{ChangeWalkthroughPanel-CKBv-8OF.js → ChangeWalkthroughPanel-GUWGKnD8.js} +2 -2
- package/dist/client/assets/ChangeWalkthroughPanel-GUWGKnD8.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-GUWGKnD8.js.gz +0 -0
- package/dist/client/assets/{DagPlayground-D23apWqB.js → DagPlayground-COZ0Op26.js} +1 -1
- package/dist/client/assets/DagPlayground-COZ0Op26.js.br +0 -0
- package/dist/client/assets/DagPlayground-COZ0Op26.js.gz +0 -0
- package/dist/client/assets/{DiffLab-BG57Q8oJ.js → DiffLab-RJHQvQAX.js} +1 -1
- package/dist/client/assets/DiffLab-RJHQvQAX.js.br +0 -0
- package/dist/client/assets/DiffLab-RJHQvQAX.js.gz +0 -0
- package/dist/client/assets/{DiffReview-BaYWAjWk.js → DiffReview-CmTEd0iK.js} +1 -1
- package/dist/client/assets/DiffReview-CmTEd0iK.js.br +0 -0
- package/dist/client/assets/DiffReview-CmTEd0iK.js.gz +0 -0
- package/dist/client/assets/{DiffReviewLab-BMRkWJpo.js → DiffReviewLab-Dk2pyW7m.js} +1 -1
- package/dist/client/assets/DiffReviewLab-Dk2pyW7m.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-Dk2pyW7m.js.gz +0 -0
- package/dist/client/assets/{DiffViewer-DmPGE-p1.js → DiffViewer-DCaJDgM3.js} +1 -1
- package/dist/client/assets/DiffViewer-DCaJDgM3.js.br +0 -0
- package/dist/client/assets/DiffViewer-DCaJDgM3.js.gz +0 -0
- package/dist/client/assets/{ModelPreview-DjdRuKdU.js → ModelPreview-C_vapzZ3.js} +1 -1
- package/dist/client/assets/ModelPreview-C_vapzZ3.js.br +0 -0
- package/dist/client/assets/ModelPreview-C_vapzZ3.js.gz +0 -0
- package/dist/client/assets/{RightSidebar-CLfYAwjH.js → RightSidebar-DP8E03Z5.js} +4 -4
- package/dist/client/assets/RightSidebar-DP8E03Z5.js.br +0 -0
- package/dist/client/assets/RightSidebar-DP8E03Z5.js.gz +0 -0
- package/dist/client/assets/{abnfDiagram-VCTEODGH-BKfhcqzo.js → abnfDiagram-VCTEODGH-C4I53K_x.js} +1 -1
- package/dist/client/assets/abnfDiagram-VCTEODGH-C4I53K_x.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-C4I53K_x.js.gz +0 -0
- package/dist/client/assets/app-Jc82YAYK.js +34 -0
- package/dist/client/assets/app-Jc82YAYK.js.br +0 -0
- package/dist/client/assets/app-Jc82YAYK.js.gz +0 -0
- package/dist/client/assets/{arc-B2R02Jyo.js → arc-CyZMZ98J.js} +1 -1
- package/dist/client/assets/arc-CyZMZ98J.js.br +0 -0
- package/dist/client/assets/arc-CyZMZ98J.js.gz +0 -0
- package/dist/client/assets/{architectureDiagram-5GKGNRK7-C_EdNLCI.js → architectureDiagram-5GKGNRK7-DWvpfoqD.js} +1 -1
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DWvpfoqD.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-DWvpfoqD.js.gz +0 -0
- package/dist/client/assets/{blockDiagram-I7D4REHJ-CZkLLWFL.js → blockDiagram-I7D4REHJ-C0vryo85.js} +1 -1
- package/dist/client/assets/blockDiagram-I7D4REHJ-C0vryo85.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-C0vryo85.js.gz +0 -0
- package/dist/client/assets/{c4Diagram-7LVT6UL2-DIRXP3sk.js → c4Diagram-7LVT6UL2-C1YTZveN.js} +1 -1
- package/dist/client/assets/c4Diagram-7LVT6UL2-C1YTZveN.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-C1YTZveN.js.gz +0 -0
- package/dist/client/assets/channel-DKzbD3mY.js +1 -0
- package/dist/client/assets/{chunk-2Q5K7J3B-B_HG9iik.js → chunk-2Q5K7J3B-D8p2mast.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-C85zpvZf.js → chunk-5VM5RSS4-yLRj1N3c.js} +1 -1
- package/dist/client/assets/{chunk-F27PBJKO-QxLjhNJi.js → chunk-F27PBJKO-nNw9YRcZ.js} +1 -1
- package/dist/client/assets/chunk-F27PBJKO-nNw9YRcZ.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-nNw9YRcZ.js.gz +0 -0
- package/dist/client/assets/{chunk-IMKFNOWR-Kp44y8de.js → chunk-IMKFNOWR-DWWAAKM2.js} +1 -1
- package/dist/client/assets/chunk-IMKFNOWR-DWWAAKM2.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-DWWAAKM2.js.gz +0 -0
- package/dist/client/assets/{chunk-JWPE2WC7-DnliK5YG.js → chunk-JWPE2WC7-DgzSStM6.js} +1 -1
- package/dist/client/assets/{chunk-POPQ4Y6H-Bd-wSR0l.js → chunk-POPQ4Y6H-Dogs_44f.js} +1 -1
- package/dist/client/assets/{chunk-SVP7TREG-dPKLRLcY.js → chunk-SVP7TREG-C_mOQgYF.js} +1 -1
- package/dist/client/assets/chunk-SVP7TREG-C_mOQgYF.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-C_mOQgYF.js.gz +0 -0
- package/dist/client/assets/{chunk-TICWLB2K-Uqiejv4H.js → chunk-TICWLB2K-DGrKuihe.js} +1 -1
- package/dist/client/assets/chunk-TICWLB2K-DGrKuihe.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-DGrKuihe.js.gz +0 -0
- package/dist/client/assets/{chunk-XXDRQBXY-CbTvwUgM.js → chunk-XXDRQBXY-CU4sw7XW.js} +1 -1
- package/dist/client/assets/classDiagram-ZZMXUADV-CJGW_lzo.js +1 -0
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-CJGW_lzo.js +1 -0
- package/dist/client/assets/{cose-bilkent-JH36ORCC-Brx6BYXK.js → cose-bilkent-JH36ORCC-cxa_WMru.js} +1 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-cxa_WMru.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-cxa_WMru.js.gz +0 -0
- package/dist/client/assets/{cynefin-OW5HDTMX-CYdrk2jO.js → cynefin-OW5HDTMX-mAOLPFl-.js} +1 -1
- package/dist/client/assets/cynefin-OW5HDTMX-mAOLPFl-.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-mAOLPFl-.js.gz +0 -0
- package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-BDrUYJ9x.js → cynefinDiagram-5FMLGOSQ-CpWUaVAu.js} +1 -1
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CpWUaVAu.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CpWUaVAu.js.gz +0 -0
- package/dist/client/assets/{dagre-GXQ25YYZ-BHW1LKXa.js → dagre-GXQ25YYZ-DMqz7NxZ.js} +1 -1
- package/dist/client/assets/dagre-GXQ25YYZ-DMqz7NxZ.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-DMqz7NxZ.js.gz +0 -0
- package/dist/client/assets/{diagram-S7CK7UJ4-CtfJlYha.js → diagram-S7CK7UJ4-mHQcbzDo.js} +1 -1
- package/dist/client/assets/diagram-S7CK7UJ4-mHQcbzDo.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-mHQcbzDo.js.gz +0 -0
- package/dist/client/assets/{diagram-UQ7AKVKN-RD7A67TT.js → diagram-UQ7AKVKN-CGL9wE16.js} +1 -1
- package/dist/client/assets/diagram-UQ7AKVKN-CGL9wE16.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-CGL9wE16.js.gz +0 -0
- package/dist/client/assets/{diagram-VSXAHHWV-Bc2ee4NI.js → diagram-VSXAHHWV-DEF2bVNf.js} +1 -1
- package/dist/client/assets/diagram-VSXAHHWV-DEF2bVNf.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-DEF2bVNf.js.gz +0 -0
- package/dist/client/assets/{diagram-VX7I27RA-DmVDnfe0.js → diagram-VX7I27RA-DW1HCibh.js} +1 -1
- package/dist/client/assets/diagram-VX7I27RA-DW1HCibh.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DW1HCibh.js.gz +0 -0
- package/dist/client/assets/{diagram-Z3DM3KII-CJzqTJGS.js → diagram-Z3DM3KII-ta2mseKz.js} +1 -1
- package/dist/client/assets/diagram-Z3DM3KII-ta2mseKz.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-ta2mseKz.js.gz +0 -0
- package/dist/client/assets/{ebnfDiagram-PWID7BFC-D11WgZfq.js → ebnfDiagram-PWID7BFC-Csqc2Qxg.js} +1 -1
- package/dist/client/assets/ebnfDiagram-PWID7BFC-Csqc2Qxg.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-Csqc2Qxg.js.gz +0 -0
- package/dist/client/assets/{erDiagram-RLTQ6QDP-De3NtkE9.js → erDiagram-RLTQ6QDP-t64YNWRD.js} +1 -1
- package/dist/client/assets/erDiagram-RLTQ6QDP-t64YNWRD.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-t64YNWRD.js.gz +0 -0
- package/dist/client/assets/{flowDiagram-HODETNUW-CPc7ilVS.js → flowDiagram-HODETNUW-BQmk9bpv.js} +1 -1
- package/dist/client/assets/flowDiagram-HODETNUW-BQmk9bpv.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-BQmk9bpv.js.gz +0 -0
- package/dist/client/assets/{ganttDiagram-EL5Y4UJY-B2YoYsnX.js → ganttDiagram-EL5Y4UJY-CCP5TaFL.js} +1 -1
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CCP5TaFL.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-CCP5TaFL.js.gz +0 -0
- package/dist/client/assets/{gestureArbiter-BQGqQudb.js → gestureArbiter-DyVdZw46.js} +1 -1
- package/dist/client/assets/gestureArbiter-DyVdZw46.js.br +0 -0
- package/dist/client/assets/gestureArbiter-DyVdZw46.js.gz +0 -0
- package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-DXLBdHJ4.js → gitGraphDiagram-WWUBYQGX-DDGiOP-G.js} +1 -1
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DDGiOP-G.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DDGiOP-G.js.gz +0 -0
- package/dist/client/assets/{infoDiagram-27XIBGKW-DM85TkAA.js → infoDiagram-27XIBGKW-CJUcAxoK.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-5VMMS53U-BXKIZG70.js → ishikawaDiagram-5VMMS53U-WfmO-dkM.js} +1 -1
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-WfmO-dkM.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-WfmO-dkM.js.gz +0 -0
- package/dist/client/assets/{journeyDiagram-3NMN7TZE-28KA3Stz.js → journeyDiagram-3NMN7TZE-BQdtiR19.js} +1 -1
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BQdtiR19.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-BQdtiR19.js.gz +0 -0
- package/dist/client/assets/{kanban-definition-UXKFOSKX-DTx8Y6S-.js → kanban-definition-UXKFOSKX-BpD89N0a.js} +1 -1
- package/dist/client/assets/kanban-definition-UXKFOSKX-BpD89N0a.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-BpD89N0a.js.gz +0 -0
- package/dist/client/assets/{layout-DITnCY23.js → layout--JMDcm4W.js} +1 -1
- package/dist/client/assets/{layout-DITnCY23.js.br → layout--JMDcm4W.js.br} +0 -0
- package/dist/client/assets/layout--JMDcm4W.js.gz +0 -0
- package/dist/client/assets/{linear-W7oK9k7n.js → linear-D58DhRP7.js} +1 -1
- package/dist/client/assets/linear-D58DhRP7.js.br +0 -0
- package/dist/client/assets/linear-D58DhRP7.js.gz +0 -0
- package/dist/client/assets/{mermaid.core-DWz9TUWr.js → mermaid.core-Pq-3I5ga.js} +5 -5
- package/dist/client/assets/mermaid.core-Pq-3I5ga.js.br +0 -0
- package/dist/client/assets/mermaid.core-Pq-3I5ga.js.gz +0 -0
- package/dist/client/assets/{mindmap-definition-YA3MSWOX-CNEufoKq.js → mindmap-definition-YA3MSWOX-BmbqNhHo.js} +1 -1
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BmbqNhHo.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-BmbqNhHo.js.gz +0 -0
- package/dist/client/assets/{passwordBootstrap-BLMrRBuz.js → passwordBootstrap-ZAb5oVA5.js} +1 -1
- package/dist/client/assets/passwordBootstrap-ZAb5oVA5.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-ZAb5oVA5.js.gz +0 -0
- package/dist/client/assets/{pegDiagram-XKGWAZYB-DYN1PL3N.js → pegDiagram-XKGWAZYB-DHDH23Ne.js} +1 -1
- package/dist/client/assets/pegDiagram-XKGWAZYB-DHDH23Ne.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DHDH23Ne.js.gz +0 -0
- package/dist/client/assets/{pieDiagram-E7YTZNPT-2_TH40ba.js → pieDiagram-E7YTZNPT-BSu54gdQ.js} +1 -1
- package/dist/client/assets/pieDiagram-E7YTZNPT-BSu54gdQ.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-BSu54gdQ.js.gz +0 -0
- package/dist/client/assets/{quadrantDiagram-AXDQQJYC-DkXLrkgM.js → quadrantDiagram-AXDQQJYC-BKv6ZdnD.js} +1 -1
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BKv6ZdnD.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-BKv6ZdnD.js.gz +0 -0
- package/dist/client/assets/{railroadDiagram-O6MQD6OU-w391MCs5.js → railroadDiagram-O6MQD6OU-B9gMo_Zg.js} +1 -1
- package/dist/client/assets/railroadDiagram-O6MQD6OU-B9gMo_Zg.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-B9gMo_Zg.js.gz +0 -0
- package/dist/client/assets/{referenceLongPress-DQp-76vd.js → referenceLongPress-CU1tIbO6.js} +1 -1
- package/dist/client/assets/referenceLongPress-CU1tIbO6.js.br +0 -0
- package/dist/client/assets/referenceLongPress-CU1tIbO6.js.gz +0 -0
- package/dist/client/assets/{requirementDiagram-BXWQKSXE-DvMmFxcQ.js → requirementDiagram-BXWQKSXE-D1uTeDRN.js} +1 -1
- package/dist/client/assets/requirementDiagram-BXWQKSXE-D1uTeDRN.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-D1uTeDRN.js.gz +0 -0
- package/dist/client/assets/{sankeyDiagram-P5KCCOFB-DGtByb8-.js → sankeyDiagram-P5KCCOFB-6ILVLTlv.js} +1 -1
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-6ILVLTlv.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-6ILVLTlv.js.gz +0 -0
- package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-ivGNt591.js → sequenceDiagram-WJ2MYXX4-C3sf6C4q.js} +1 -1
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-C3sf6C4q.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-C3sf6C4q.js.gz +0 -0
- package/dist/client/assets/{sizeCapture-INFHLROL-Dcopqjtm.js → sizeCapture-INFHLROL-Cvt9n7uC.js} +1 -1
- package/dist/client/assets/sizeCapture-INFHLROL-Cvt9n7uC.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-Cvt9n7uC.js.gz +0 -0
- package/dist/client/assets/{sparkles-DWCL-_3n.js → sparkles-DzUtpGjS.js} +1 -1
- package/dist/client/assets/{stateDiagram-D77RDMKH-BKt1Fmon.js → stateDiagram-D77RDMKH-Dk7pwVJJ.js} +1 -1
- package/dist/client/assets/stateDiagram-D77RDMKH-Dk7pwVJJ.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-Dk7pwVJJ.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BxBjLjs3.js +1 -0
- package/dist/client/assets/{swimlanes-42K2YHIH-DsF9UaJ7.js → swimlanes-42K2YHIH-BMgLBwHl.js} +1 -1
- package/dist/client/assets/swimlanes-42K2YHIH-BMgLBwHl.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-BMgLBwHl.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-XlasM7eg.js +8 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Bqw430aU.js → timeline-definition-24CTP7MA-CCcoHFxT.js} +1 -1
- package/dist/client/assets/timeline-definition-24CTP7MA-CCcoHFxT.js.br +0 -0
- package/dist/client/assets/{timeline-definition-24CTP7MA-Bqw430aU.js.gz → timeline-definition-24CTP7MA-CCcoHFxT.js.gz} +0 -0
- package/dist/client/assets/{triangle-alert-B2fBo8hF.js → triangle-alert-DMoi3OxM.js} +1 -1
- package/dist/client/assets/{vennDiagram-4TSXK5OY-BCK_tqYC.js → vennDiagram-4TSXK5OY-BBDyrPPT.js} +1 -1
- package/dist/client/assets/vennDiagram-4TSXK5OY-BBDyrPPT.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-BBDyrPPT.js.gz +0 -0
- package/dist/client/assets/{wardleyDiagram-VM6X3IG4-CKLgm2V9.js → wardleyDiagram-VM6X3IG4-CUDgyxeY.js} +1 -1
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CUDgyxeY.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CUDgyxeY.js.gz +0 -0
- package/dist/client/assets/{xychartDiagram-S5SC5T6Z-Byhc73N8.js → xychartDiagram-S5SC5T6Z-Cscz_XUA.js} +1 -1
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-Cscz_XUA.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-Cscz_XUA.js.gz +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/collaborationPrompt.js +1 -1
- package/dist/server/federation/deviceProfile.js +1 -0
- package/dist/server/federation/deviceProfiles.js +32 -0
- package/dist/server/federation/runtime.js +5 -1
- package/dist/server/ptyHost.js +2 -0
- package/dist/server/routes/terminal.js +31 -6
- package/dist/server/utils/bootCheck.js +2 -0
- package/dist/server/utils/ensureNodePty.js +9 -0
- package/dist/server/utils/ptySpawnBackoff.js +35 -0
- package/package.json +2 -2
- package/runtime-manifest.json +4 -4
- package/scripts/ensure-node-pty.cjs +63 -0
- package/scripts/node-pty-darwin-spawn.inc +64 -0
- package/scripts/postinstall.mjs +3 -0
- package/scripts/prepare-desktop-runtime.mjs +3 -0
- package/dist/client/assets/App-QbHtW5ZR.js.br +0 -0
- package/dist/client/assets/App-QbHtW5ZR.js.gz +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CKBv-8OF.js.br +0 -0
- package/dist/client/assets/ChangeWalkthroughPanel-CKBv-8OF.js.gz +0 -0
- package/dist/client/assets/DagPlayground-D23apWqB.js.br +0 -0
- package/dist/client/assets/DagPlayground-D23apWqB.js.gz +0 -0
- package/dist/client/assets/DiffLab-BG57Q8oJ.js.br +0 -0
- package/dist/client/assets/DiffLab-BG57Q8oJ.js.gz +0 -0
- package/dist/client/assets/DiffReview-BaYWAjWk.js.br +0 -0
- package/dist/client/assets/DiffReview-BaYWAjWk.js.gz +0 -0
- package/dist/client/assets/DiffReviewLab-BMRkWJpo.js.br +0 -0
- package/dist/client/assets/DiffReviewLab-BMRkWJpo.js.gz +0 -0
- package/dist/client/assets/DiffViewer-DmPGE-p1.js.br +0 -0
- package/dist/client/assets/DiffViewer-DmPGE-p1.js.gz +0 -0
- package/dist/client/assets/ModelPreview-DjdRuKdU.js.br +0 -0
- package/dist/client/assets/ModelPreview-DjdRuKdU.js.gz +0 -0
- package/dist/client/assets/RightSidebar-CLfYAwjH.js.br +0 -0
- package/dist/client/assets/RightSidebar-CLfYAwjH.js.gz +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-BKfhcqzo.js.br +0 -0
- package/dist/client/assets/abnfDiagram-VCTEODGH-BKfhcqzo.js.gz +0 -0
- package/dist/client/assets/app-CFSed4cT.js +0 -34
- package/dist/client/assets/app-CFSed4cT.js.br +0 -0
- package/dist/client/assets/app-CFSed4cT.js.gz +0 -0
- package/dist/client/assets/arc-B2R02Jyo.js.br +0 -0
- package/dist/client/assets/arc-B2R02Jyo.js.gz +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C_EdNLCI.js.br +0 -0
- package/dist/client/assets/architectureDiagram-5GKGNRK7-C_EdNLCI.js.gz +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-CZkLLWFL.js.br +0 -0
- package/dist/client/assets/blockDiagram-I7D4REHJ-CZkLLWFL.js.gz +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DIRXP3sk.js.br +0 -0
- package/dist/client/assets/c4Diagram-7LVT6UL2-DIRXP3sk.js.gz +0 -0
- package/dist/client/assets/channel-DFSlHLuy.js +0 -1
- package/dist/client/assets/chunk-F27PBJKO-QxLjhNJi.js.br +0 -0
- package/dist/client/assets/chunk-F27PBJKO-QxLjhNJi.js.gz +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-Kp44y8de.js.br +0 -0
- package/dist/client/assets/chunk-IMKFNOWR-Kp44y8de.js.gz +0 -0
- package/dist/client/assets/chunk-SVP7TREG-dPKLRLcY.js.br +0 -0
- package/dist/client/assets/chunk-SVP7TREG-dPKLRLcY.js.gz +0 -0
- package/dist/client/assets/chunk-TICWLB2K-Uqiejv4H.js.br +0 -0
- package/dist/client/assets/chunk-TICWLB2K-Uqiejv4H.js.gz +0 -0
- package/dist/client/assets/classDiagram-ZZMXUADV-2P0NBW8n.js +0 -1
- package/dist/client/assets/classDiagram-v2-VYDZK3BY-2P0NBW8n.js +0 -1
- package/dist/client/assets/cose-bilkent-JH36ORCC-Brx6BYXK.js.br +0 -0
- package/dist/client/assets/cose-bilkent-JH36ORCC-Brx6BYXK.js.gz +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CYdrk2jO.js.br +0 -0
- package/dist/client/assets/cynefin-OW5HDTMX-CYdrk2jO.js.gz +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BDrUYJ9x.js.br +0 -0
- package/dist/client/assets/cynefinDiagram-5FMLGOSQ-BDrUYJ9x.js.gz +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-BHW1LKXa.js.br +0 -0
- package/dist/client/assets/dagre-GXQ25YYZ-BHW1LKXa.js.gz +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CtfJlYha.js.br +0 -0
- package/dist/client/assets/diagram-S7CK7UJ4-CtfJlYha.js.gz +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-RD7A67TT.js.br +0 -0
- package/dist/client/assets/diagram-UQ7AKVKN-RD7A67TT.js.gz +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-Bc2ee4NI.js.br +0 -0
- package/dist/client/assets/diagram-VSXAHHWV-Bc2ee4NI.js.gz +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DmVDnfe0.js.br +0 -0
- package/dist/client/assets/diagram-VX7I27RA-DmVDnfe0.js.gz +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CJzqTJGS.js.br +0 -0
- package/dist/client/assets/diagram-Z3DM3KII-CJzqTJGS.js.gz +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-D11WgZfq.js.br +0 -0
- package/dist/client/assets/ebnfDiagram-PWID7BFC-D11WgZfq.js.gz +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-De3NtkE9.js.br +0 -0
- package/dist/client/assets/erDiagram-RLTQ6QDP-De3NtkE9.js.gz +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-CPc7ilVS.js.br +0 -0
- package/dist/client/assets/flowDiagram-HODETNUW-CPc7ilVS.js.gz +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-B2YoYsnX.js.br +0 -0
- package/dist/client/assets/ganttDiagram-EL5Y4UJY-B2YoYsnX.js.gz +0 -0
- package/dist/client/assets/gestureArbiter-BQGqQudb.js.br +0 -0
- package/dist/client/assets/gestureArbiter-BQGqQudb.js.gz +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DXLBdHJ4.js.br +0 -0
- package/dist/client/assets/gitGraphDiagram-WWUBYQGX-DXLBdHJ4.js.gz +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BXKIZG70.js.br +0 -0
- package/dist/client/assets/ishikawaDiagram-5VMMS53U-BXKIZG70.js.gz +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-28KA3Stz.js.br +0 -0
- package/dist/client/assets/journeyDiagram-3NMN7TZE-28KA3Stz.js.gz +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-DTx8Y6S-.js.br +0 -0
- package/dist/client/assets/kanban-definition-UXKFOSKX-DTx8Y6S-.js.gz +0 -0
- package/dist/client/assets/layout-DITnCY23.js.gz +0 -0
- package/dist/client/assets/linear-W7oK9k7n.js.br +0 -0
- package/dist/client/assets/linear-W7oK9k7n.js.gz +0 -0
- package/dist/client/assets/mermaid.core-DWz9TUWr.js.br +0 -0
- package/dist/client/assets/mermaid.core-DWz9TUWr.js.gz +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CNEufoKq.js.br +0 -0
- package/dist/client/assets/mindmap-definition-YA3MSWOX-CNEufoKq.js.gz +0 -0
- package/dist/client/assets/passwordBootstrap-BLMrRBuz.js.br +0 -0
- package/dist/client/assets/passwordBootstrap-BLMrRBuz.js.gz +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DYN1PL3N.js.br +0 -0
- package/dist/client/assets/pegDiagram-XKGWAZYB-DYN1PL3N.js.gz +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-2_TH40ba.js.br +0 -0
- package/dist/client/assets/pieDiagram-E7YTZNPT-2_TH40ba.js.gz +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DkXLrkgM.js.br +0 -0
- package/dist/client/assets/quadrantDiagram-AXDQQJYC-DkXLrkgM.js.gz +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-w391MCs5.js.br +0 -0
- package/dist/client/assets/railroadDiagram-O6MQD6OU-w391MCs5.js.gz +0 -0
- package/dist/client/assets/referenceLongPress-DQp-76vd.js.br +0 -0
- package/dist/client/assets/referenceLongPress-DQp-76vd.js.gz +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-DvMmFxcQ.js.br +0 -0
- package/dist/client/assets/requirementDiagram-BXWQKSXE-DvMmFxcQ.js.gz +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-DGtByb8-.js.br +0 -0
- package/dist/client/assets/sankeyDiagram-P5KCCOFB-DGtByb8-.js.gz +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-ivGNt591.js.br +0 -0
- package/dist/client/assets/sequenceDiagram-WJ2MYXX4-ivGNt591.js.gz +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-Dcopqjtm.js.br +0 -0
- package/dist/client/assets/sizeCapture-INFHLROL-Dcopqjtm.js.gz +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-BKt1Fmon.js.br +0 -0
- package/dist/client/assets/stateDiagram-D77RDMKH-BKt1Fmon.js.gz +0 -0
- package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BegmURZh.js +0 -1
- package/dist/client/assets/swimlanes-42K2YHIH-DsF9UaJ7.js.br +0 -0
- package/dist/client/assets/swimlanes-42K2YHIH-DsF9UaJ7.js.gz +0 -0
- package/dist/client/assets/swimlanesDiagram-VR7AAH4N-CxlA0Asv.js +0 -8
- package/dist/client/assets/timeline-definition-24CTP7MA-Bqw430aU.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-BCK_tqYC.js.br +0 -0
- package/dist/client/assets/vennDiagram-4TSXK5OY-BCK_tqYC.js.gz +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CKLgm2V9.js.br +0 -0
- package/dist/client/assets/wardleyDiagram-VM6X3IG4-CKLgm2V9.js.gz +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-Byhc73N8.js.br +0 -0
- package/dist/client/assets/xychartDiagram-S5SC5T6Z-Byhc73N8.js.gz +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Shared across WebSockets and sessions: PTYs/FDs are process-wide resources. */
|
|
2
|
+
export class PtySpawnDeferredError extends Error {
|
|
3
|
+
retryAfterMs;
|
|
4
|
+
constructor(retryAfterMs) {
|
|
5
|
+
super(`PTY creation cooling down for ${retryAfterMs}ms`);
|
|
6
|
+
this.retryAfterMs = retryAfterMs;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class PtySpawnBackoff {
|
|
10
|
+
now;
|
|
11
|
+
failures = 0;
|
|
12
|
+
retryAt = 0;
|
|
13
|
+
constructor(now = Date.now) {
|
|
14
|
+
this.now = now;
|
|
15
|
+
}
|
|
16
|
+
get retryAfterMs() { return Math.max(0, this.retryAt - this.now()); }
|
|
17
|
+
check() {
|
|
18
|
+
if (this.retryAfterMs > 0)
|
|
19
|
+
throw new PtySpawnDeferredError(this.retryAfterMs);
|
|
20
|
+
}
|
|
21
|
+
spawn(create) {
|
|
22
|
+
this.check();
|
|
23
|
+
try {
|
|
24
|
+
const result = create();
|
|
25
|
+
this.failures = 0;
|
|
26
|
+
this.retryAt = 0;
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
this.failures = Math.min(this.failures + 1, 6);
|
|
31
|
+
this.retryAt = this.now() + Math.min(30_000, 1000 * 2 ** (this.failures - 1));
|
|
32
|
+
throw error; // Preserve errno and the original diagnostic in the real failure log.
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "termdock",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.186",
|
|
4
4
|
"description": "A complete web-based terminal application with modern UI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": ".desktop-dist/main.js",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"mermaid": "^11.17.2",
|
|
84
84
|
"motion": "^12.40.0",
|
|
85
85
|
"multicast-dns": "^7.2.5",
|
|
86
|
-
"node-pty": "
|
|
86
|
+
"node-pty": "1.1.0",
|
|
87
87
|
"qrcode": "^1.5.4",
|
|
88
88
|
"react": "^18.2.0",
|
|
89
89
|
"react-diff-view": "^3.3.3",
|
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.186",
|
|
5
5
|
"runtimeProtocolVersion": 1,
|
|
6
6
|
"minimumDesktopVersion": "1.4.46",
|
|
7
7
|
"nodeMajor": 22,
|
|
8
|
-
"dependencyHash": "sha256-
|
|
9
|
-
"serverBundleHash": "sha256-
|
|
10
|
-
"clientBundleHash": "sha256-
|
|
8
|
+
"dependencyHash": "sha256-K4KyYJuVoQDpZsBM8ZX1Rw3MddOxAzVdp/cPm0iGZz0=",
|
|
9
|
+
"serverBundleHash": "sha256-SpiuRE2j2Gzm2ShsdKVYNdDvpVRy88JLJyzDknTqoAQ=",
|
|
10
|
+
"clientBundleHash": "sha256-A/GUx3lPyEWzLOGIWlM2aJrObBaQtMZzQxi/gAupkbk=",
|
|
11
11
|
"entrypoint": "dist/server/cli.js",
|
|
12
12
|
"clientEntrypoint": "dist/client/index.html"
|
|
13
13
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Pinned node-pty 1.1.0 macOS FD fix. Runs before loading the native addon.
|
|
2
|
+
const fs = require('node:fs');
|
|
3
|
+
const path = require('node:path');
|
|
4
|
+
const { createHash } = require('node:crypto');
|
|
5
|
+
const { spawnSync } = require('node:child_process');
|
|
6
|
+
const hash = data => createHash('sha256').update(data).digest('hex');
|
|
7
|
+
const upstreamHash = '5e1005d6bdcfbe97b486ee415419fe7adae99035047f07340fbad36419e0bae6';
|
|
8
|
+
|
|
9
|
+
function patchSource(source) {
|
|
10
|
+
if (hash(source) !== upstreamHash) throw new Error('Unrecognized node-pty source; review the macOS FD patch before upgrading');
|
|
11
|
+
const start = source.indexOf('static void\npty_posix_spawn(char** argv', source.indexOf('pty_getproc(int fd)'));
|
|
12
|
+
const end = source.indexOf('\n#endif', start);
|
|
13
|
+
if (start < 0 || end < 0) throw new Error('node-pty spawn implementation missing');
|
|
14
|
+
source = source.slice(0, start) + fs.readFileSync(path.join(__dirname, 'node-pty-darwin-spawn.inc'), 'utf8').trimEnd() + source.slice(end);
|
|
15
|
+
source = source.replace(' int stat_loc;', ' int stat_loc = 0;');
|
|
16
|
+
source = source.replace(' }\n#else\n while (true)', ' }\n if (kq >= 0) close(kq);\n#else\n while (true)');
|
|
17
|
+
source = source.replace('throw Napi::Error::New(napiEnv, "posix_spawnp failed.");',
|
|
18
|
+
'throw Napi::Error::New(napiEnv, std::string("posix_spawnp failed: errno=") + std::to_string(err) + " (" + strerror(err) + ")");');
|
|
19
|
+
source = source.replace(' if (pty_nonblock(master) == -1) {\n throw',
|
|
20
|
+
' if (pty_nonblock(master) == -1) {\n close(master);\n kill(pid, SIGKILL);\n HANDLE_EINTR(waitpid(pid, NULL, 0));\n throw');
|
|
21
|
+
return source;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const checked = new Set();
|
|
25
|
+
function ensureNodePty(ptyRoot = path.dirname(require.resolve('node-pty/package.json'))) {
|
|
26
|
+
if (process.platform !== 'darwin' || checked.has(ptyRoot)) return;
|
|
27
|
+
const sourcePath = path.join(ptyRoot, 'src/unix/pty.cc');
|
|
28
|
+
const backupPath = path.join(ptyRoot, 'src/unix/pty.cc.termdock-original');
|
|
29
|
+
const markerPath = path.join(ptyRoot, '.termdock-fd-fix.json');
|
|
30
|
+
const binaryPath = path.join(ptyRoot, 'build/Release/pty.node');
|
|
31
|
+
const helperPath = path.join(ptyRoot, 'build/Release/spawn-helper');
|
|
32
|
+
const original = fs.readFileSync(fs.existsSync(backupPath) ? backupPath : sourcePath, 'utf8');
|
|
33
|
+
const patched = patchSource(original);
|
|
34
|
+
const sourceHash = hash(patched);
|
|
35
|
+
try {
|
|
36
|
+
const marker = JSON.parse(fs.readFileSync(markerPath, 'utf8'));
|
|
37
|
+
if (marker.source === sourceHash && marker.binary === hash(fs.readFileSync(binaryPath))
|
|
38
|
+
&& hash(fs.readFileSync(sourcePath)) === sourceHash && fs.existsSync(helperPath)) {
|
|
39
|
+
const helperMode = fs.statSync(helperPath).mode;
|
|
40
|
+
if ((helperMode & 0o111) !== 0o111) fs.chmodSync(helperPath, helperMode | 0o111);
|
|
41
|
+
checked.add(ptyRoot);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
} catch { /* First install or replaced binary: rebuild, never accept a spawn-only probe. */ }
|
|
45
|
+
fs.writeFileSync(backupPath, original);
|
|
46
|
+
fs.writeFileSync(sourcePath, patched);
|
|
47
|
+
fs.rmSync(markerPath, { force: true });
|
|
48
|
+
// Prevent the native loader from silently falling back to a leaking prebuild.
|
|
49
|
+
fs.rmSync(path.join(ptyRoot, 'prebuilds', `darwin-${process.arch}`), { recursive: true, force: true });
|
|
50
|
+
fs.rmSync(path.join(ptyRoot, 'build/Debug'), { recursive: true, force: true });
|
|
51
|
+
console.log('Rebuilding node-pty with the Termdock macOS FD cleanup fix...');
|
|
52
|
+
const result = spawnSync('npx', ['--yes', 'node-gyp', 'rebuild'], {
|
|
53
|
+
cwd: ptyRoot, stdio: 'inherit', timeout: 180_000,
|
|
54
|
+
});
|
|
55
|
+
if (result.error || result.status !== 0) {
|
|
56
|
+
throw new Error('Patched node-pty rebuild failed; install Xcode Command Line Tools and retry. ' + (result.error?.message || ''));
|
|
57
|
+
}
|
|
58
|
+
fs.chmodSync(helperPath, fs.statSync(helperPath).mode | 0o111);
|
|
59
|
+
fs.writeFileSync(markerPath, JSON.stringify({ source: sourceHash, binary: hash(fs.readFileSync(binaryPath)) }));
|
|
60
|
+
checked.add(ptyRoot);
|
|
61
|
+
}
|
|
62
|
+
module.exports = { ensureNodePty, patchSource };
|
|
63
|
+
if (require.main === module) ensureNodePty(process.argv[2]);
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Termdock: every descriptor is owned until explicitly transferred to JS.
|
|
2
|
+
static void
|
|
3
|
+
pty_posix_spawn(char** argv, char** env,
|
|
4
|
+
const struct termios *termp,
|
|
5
|
+
const struct winsize *winp,
|
|
6
|
+
int* master, pid_t* pid, int* err) {
|
|
7
|
+
struct OwnedFd {
|
|
8
|
+
int fd = -1;
|
|
9
|
+
~OwnedFd() { if (fd >= 0) close(fd); }
|
|
10
|
+
} low_fds[3], parent_master, slave;
|
|
11
|
+
*master = -1;
|
|
12
|
+
*err = 0;
|
|
13
|
+
for (size_t i = 0; i < 3; ++i) {
|
|
14
|
+
low_fds[i].fd = posix_openpt(O_RDWR);
|
|
15
|
+
if (low_fds[i].fd == -1) { *err = errno; return; }
|
|
16
|
+
if (low_fds[i].fd >= STDERR_FILENO) break;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
parent_master.fd = posix_openpt(O_RDWR);
|
|
20
|
+
if (parent_master.fd == -1) { *err = errno; return; }
|
|
21
|
+
if (grantpt(parent_master.fd) == -1 || unlockpt(parent_master.fd) == -1) {
|
|
22
|
+
*err = errno; return;
|
|
23
|
+
}
|
|
24
|
+
char name[128];
|
|
25
|
+
if (ioctl(parent_master.fd, TIOCPTYGNAME, name) == -1) { *err = errno; return; }
|
|
26
|
+
slave.fd = open(name, O_RDWR | O_NOCTTY);
|
|
27
|
+
if (slave.fd == -1) { *err = errno; return; }
|
|
28
|
+
if (termp && tcsetattr(slave.fd, TCSANOW, termp) == -1) { *err = errno; return; }
|
|
29
|
+
if (winp && ioctl(slave.fd, TIOCSWINSZ, winp) == -1) { *err = errno; return; }
|
|
30
|
+
|
|
31
|
+
struct Actions {
|
|
32
|
+
posix_spawn_file_actions_t value;
|
|
33
|
+
bool initialized = false;
|
|
34
|
+
~Actions() { if (initialized) posix_spawn_file_actions_destroy(&value); }
|
|
35
|
+
} acts;
|
|
36
|
+
struct Attributes {
|
|
37
|
+
posix_spawnattr_t value;
|
|
38
|
+
bool initialized = false;
|
|
39
|
+
~Attributes() { if (initialized) posix_spawnattr_destroy(&value); }
|
|
40
|
+
} attrs;
|
|
41
|
+
if ((*err = posix_spawn_file_actions_init(&acts.value)) != 0) return;
|
|
42
|
+
acts.initialized = true;
|
|
43
|
+
for (int fd = STDIN_FILENO; fd <= STDERR_FILENO; ++fd) {
|
|
44
|
+
if ((*err = posix_spawn_file_actions_adddup2(&acts.value, slave.fd, fd)) != 0) return;
|
|
45
|
+
}
|
|
46
|
+
if ((*err = posix_spawn_file_actions_addclose(&acts.value, slave.fd)) != 0) return;
|
|
47
|
+
if ((*err = posix_spawn_file_actions_addclose(&acts.value, parent_master.fd)) != 0) return;
|
|
48
|
+
if ((*err = posix_spawnattr_init(&attrs.value)) != 0) return;
|
|
49
|
+
attrs.initialized = true;
|
|
50
|
+
const int flags = POSIX_SPAWN_CLOEXEC_DEFAULT | POSIX_SPAWN_SETSIGDEF |
|
|
51
|
+
POSIX_SPAWN_SETSIGMASK | POSIX_SPAWN_SETSID;
|
|
52
|
+
if ((*err = posix_spawnattr_setflags(&attrs.value, flags)) != 0) return;
|
|
53
|
+
sigset_t signals;
|
|
54
|
+
sigfillset(&signals);
|
|
55
|
+
if ((*err = posix_spawnattr_setsigdefault(&attrs.value, &signals)) != 0) return;
|
|
56
|
+
sigemptyset(&signals);
|
|
57
|
+
if ((*err = posix_spawnattr_setsigmask(&attrs.value, &signals)) != 0) return;
|
|
58
|
+
do {
|
|
59
|
+
*err = posix_spawn(pid, argv[0], &acts.value, &attrs.value, argv, env);
|
|
60
|
+
} while (*err == EINTR);
|
|
61
|
+
if (*err != 0) return;
|
|
62
|
+
*master = parent_master.fd;
|
|
63
|
+
parent_master.fd = -1; // JS owns only the master; parent closes slave and low FDs.
|
|
64
|
+
}
|
package/scripts/postinstall.mjs
CHANGED
|
@@ -48,8 +48,11 @@ function which(bin) {
|
|
|
48
48
|
// —— native modules: 实际 spawn 测试,不只是 require ——
|
|
49
49
|
console.log('\n=== Rebuilding native modules ===');
|
|
50
50
|
|
|
51
|
+
const { ensureNodePty } = require_('./ensure-node-pty.cjs');
|
|
51
52
|
const PTY_PATH = require_.resolve('node-pty/package.json', { paths: [pkgRoot] }).replace('/package.json', '');
|
|
52
53
|
|
|
54
|
+
ensureNodePty(PTY_PATH);
|
|
55
|
+
|
|
53
56
|
// Ensure node-pty prebuild spawn-helper binaries have execute permissions.
|
|
54
57
|
// npm may strip +x during install, which causes terminal creation to fail.
|
|
55
58
|
function fixSpawnHelperPermissions() {
|
|
@@ -187,6 +187,9 @@ run(process.platform === 'win32' ? 'npm.cmd' : 'npm', [
|
|
|
187
187
|
},
|
|
188
188
|
});
|
|
189
189
|
|
|
190
|
+
// Ship the same repair gate for bundled and subsequently downloaded runtimes.
|
|
191
|
+
fs.cpSync(path.join(root, 'scripts'), path.join(serverDir, 'scripts'), { recursive: true });
|
|
192
|
+
run(runtimeNode, [path.join(serverDir, 'scripts/ensure-node-pty.cjs'), path.join(serverDir, 'node_modules/node-pty')], { cwd: serverDir });
|
|
190
193
|
makeSpawnHelpersExecutable(path.join(serverDir, 'node_modules', 'node-pty'));
|
|
191
194
|
run(runtimeNode, [
|
|
192
195
|
'-e',
|
|
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
|