termdock 1.4.348 → 1.4.350

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.
Files changed (341) hide show
  1. package/dist/client/assets/{App-BN_iuuvE.js → App-TPJoJbGD.js} +6 -6
  2. package/dist/client/assets/App-TPJoJbGD.js.br +0 -0
  3. package/dist/client/assets/App-TPJoJbGD.js.gz +0 -0
  4. package/dist/client/assets/{ArchitecturePanel-sTwptDpa.js → ArchitecturePanel-DzVy71gM.js} +2 -2
  5. package/dist/client/assets/ArchitecturePanel-DzVy71gM.js.br +0 -0
  6. package/dist/client/assets/ArchitecturePanel-DzVy71gM.js.gz +0 -0
  7. package/dist/client/assets/{ChangeWalkthroughPanel-DvOSOwLu.js → ChangeWalkthroughPanel-DN7BCzqC.js} +1 -1
  8. package/dist/client/assets/ChangeWalkthroughPanel-DN7BCzqC.js.br +0 -0
  9. package/dist/client/assets/ChangeWalkthroughPanel-DN7BCzqC.js.gz +0 -0
  10. package/dist/client/assets/{CollaborationMainWorkspace-DseFwFSR.js → CollaborationMainWorkspace-B1PZuCC6.js} +1 -1
  11. package/dist/client/assets/CollaborationMainWorkspace-B1PZuCC6.js.br +0 -0
  12. package/dist/client/assets/CollaborationMainWorkspace-B1PZuCC6.js.gz +0 -0
  13. package/dist/client/assets/CollaborationTaskContent-CG7g1LMH.js +2 -0
  14. package/dist/client/assets/{ComputerControlView-CWlfdXhY.js → ComputerControlView-BlI9Ai_k.js} +3 -3
  15. package/dist/client/assets/ComputerControlView-BlI9Ai_k.js.br +0 -0
  16. package/dist/client/assets/ComputerControlView-BlI9Ai_k.js.gz +0 -0
  17. package/dist/client/assets/{DagPlayground-B1IytHVy.js → DagPlayground-V0hTKB-S.js} +1 -1
  18. package/dist/client/assets/DagPlayground-V0hTKB-S.js.br +0 -0
  19. package/dist/client/assets/DagPlayground-V0hTKB-S.js.gz +0 -0
  20. package/dist/client/assets/{DiffLab-B6gSsPoJ.js → DiffLab-DEw4y4Hk.js} +1 -1
  21. package/dist/client/assets/DiffLab-DEw4y4Hk.js.br +0 -0
  22. package/dist/client/assets/DiffLab-DEw4y4Hk.js.gz +0 -0
  23. package/dist/client/assets/{DiffReview-BYI8gVYo.js → DiffReview-Cnnt3TMK.js} +1 -1
  24. package/dist/client/assets/DiffReview-Cnnt3TMK.js.br +0 -0
  25. package/dist/client/assets/DiffReview-Cnnt3TMK.js.gz +0 -0
  26. package/dist/client/assets/{DiffReviewLab-BYUQFzsG.js → DiffReviewLab-CDXsy0jE.js} +1 -1
  27. package/dist/client/assets/DiffReviewLab-CDXsy0jE.js.br +0 -0
  28. package/dist/client/assets/DiffReviewLab-CDXsy0jE.js.gz +0 -0
  29. package/dist/client/assets/{DiffViewer-P1mbq4LM.js → DiffViewer-Dh40XiCM.js} +1 -1
  30. package/dist/client/assets/DiffViewer-Dh40XiCM.js.br +0 -0
  31. package/dist/client/assets/DiffViewer-Dh40XiCM.js.gz +0 -0
  32. package/dist/client/assets/{ModelPreview-BpIynSeJ.js → ModelPreview-BEiOgE0G.js} +1 -1
  33. package/dist/client/assets/ModelPreview-BEiOgE0G.js.br +0 -0
  34. package/dist/client/assets/ModelPreview-BEiOgE0G.js.gz +0 -0
  35. package/dist/client/assets/{RightSidebar-DyX2uyW6.js → RightSidebar-DiECnX5D.js} +3 -3
  36. package/dist/client/assets/RightSidebar-DiECnX5D.js.br +0 -0
  37. package/dist/client/assets/RightSidebar-DiECnX5D.js.gz +0 -0
  38. package/dist/client/assets/{abnfDiagram-VCTEODGH-Cjq0zd9z.js → abnfDiagram-VCTEODGH-ByzlUu_B.js} +1 -1
  39. package/dist/client/assets/abnfDiagram-VCTEODGH-ByzlUu_B.js.br +0 -0
  40. package/dist/client/assets/abnfDiagram-VCTEODGH-ByzlUu_B.js.gz +0 -0
  41. package/dist/client/assets/{app-HTVDUkx-.js → app-CKAFlgMD.js} +13 -13
  42. package/dist/client/assets/app-CKAFlgMD.js.br +0 -0
  43. package/dist/client/assets/app-CKAFlgMD.js.gz +0 -0
  44. package/dist/client/assets/{arc-DkPjbARe.js → arc-BA6JM6vl.js} +1 -1
  45. package/dist/client/assets/arc-BA6JM6vl.js.br +0 -0
  46. package/dist/client/assets/arc-BA6JM6vl.js.gz +0 -0
  47. package/dist/client/assets/{architectureDiagram-5GKGNRK7-DvErYV6b.js → architectureDiagram-5GKGNRK7-hCHxOfKw.js} +1 -1
  48. package/dist/client/assets/architectureDiagram-5GKGNRK7-hCHxOfKw.js.br +0 -0
  49. package/dist/client/assets/architectureDiagram-5GKGNRK7-hCHxOfKw.js.gz +0 -0
  50. package/dist/client/assets/{blockDiagram-I7D4REHJ-Bds9HO1o.js → blockDiagram-I7D4REHJ-OmEN9hUB.js} +1 -1
  51. package/dist/client/assets/blockDiagram-I7D4REHJ-OmEN9hUB.js.br +0 -0
  52. package/dist/client/assets/blockDiagram-I7D4REHJ-OmEN9hUB.js.gz +0 -0
  53. package/dist/client/assets/{c4Diagram-7LVT6UL2-C2OH1wSt.js → c4Diagram-7LVT6UL2-DfLTv8zh.js} +1 -1
  54. package/dist/client/assets/c4Diagram-7LVT6UL2-DfLTv8zh.js.br +0 -0
  55. package/dist/client/assets/c4Diagram-7LVT6UL2-DfLTv8zh.js.gz +0 -0
  56. package/dist/client/assets/channel-gcmN0N0m.js +1 -0
  57. package/dist/client/assets/{chunk-2Q5K7J3B-DVaF1NsT.js → chunk-2Q5K7J3B-C3O76PNZ.js} +1 -1
  58. package/dist/client/assets/{chunk-5VM5RSS4-Dkbpeqfb.js → chunk-5VM5RSS4-CsWZd30k.js} +1 -1
  59. package/dist/client/assets/{chunk-F27PBJKO-CRPAOyuh.js → chunk-F27PBJKO-yxCv2Uqk.js} +1 -1
  60. package/dist/client/assets/chunk-F27PBJKO-yxCv2Uqk.js.br +0 -0
  61. package/dist/client/assets/chunk-F27PBJKO-yxCv2Uqk.js.gz +0 -0
  62. package/dist/client/assets/{chunk-IMKFNOWR-CphgPwod.js → chunk-IMKFNOWR-CdPjlb9f.js} +1 -1
  63. package/dist/client/assets/chunk-IMKFNOWR-CdPjlb9f.js.br +0 -0
  64. package/dist/client/assets/chunk-IMKFNOWR-CdPjlb9f.js.gz +0 -0
  65. package/dist/client/assets/{chunk-JWPE2WC7-CWlXUB6G.js → chunk-JWPE2WC7-BiiOLq2R.js} +1 -1
  66. package/dist/client/assets/{chunk-POPQ4Y6H-BAAz8QH8.js → chunk-POPQ4Y6H-BOu_1Brt.js} +1 -1
  67. package/dist/client/assets/{chunk-SVP7TREG-C9qRACkp.js → chunk-SVP7TREG-D1tOJung.js} +1 -1
  68. package/dist/client/assets/chunk-SVP7TREG-D1tOJung.js.br +0 -0
  69. package/dist/client/assets/chunk-SVP7TREG-D1tOJung.js.gz +0 -0
  70. package/dist/client/assets/{chunk-TICWLB2K-CAn30A5F.js → chunk-TICWLB2K-DZjDfYNw.js} +1 -1
  71. package/dist/client/assets/chunk-TICWLB2K-DZjDfYNw.js.br +0 -0
  72. package/dist/client/assets/chunk-TICWLB2K-DZjDfYNw.js.gz +0 -0
  73. package/dist/client/assets/{chunk-XXDRQBXY-i2tZFJ9V.js → chunk-XXDRQBXY-CtGPyXWh.js} +1 -1
  74. package/dist/client/assets/classDiagram-ZZMXUADV-k4BRymfG.js +1 -0
  75. package/dist/client/assets/classDiagram-v2-VYDZK3BY-k4BRymfG.js +1 -0
  76. package/dist/client/assets/{cose-bilkent-JH36ORCC-_ejU8hPT.js → cose-bilkent-JH36ORCC-C4Wb5lqD.js} +1 -1
  77. package/dist/client/assets/{cose-bilkent-JH36ORCC-_ejU8hPT.js.br → cose-bilkent-JH36ORCC-C4Wb5lqD.js.br} +0 -0
  78. package/dist/client/assets/cose-bilkent-JH36ORCC-C4Wb5lqD.js.gz +0 -0
  79. package/dist/client/assets/{cynefin-OW5HDTMX-BkzgMwVY.js → cynefin-OW5HDTMX-BvWKB1Xk.js} +1 -1
  80. package/dist/client/assets/cynefin-OW5HDTMX-BvWKB1Xk.js.br +0 -0
  81. package/dist/client/assets/cynefin-OW5HDTMX-BvWKB1Xk.js.gz +0 -0
  82. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-f623ycDk.js → cynefinDiagram-5FMLGOSQ-7tAkHD2P.js} +1 -1
  83. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-7tAkHD2P.js.br +0 -0
  84. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-7tAkHD2P.js.gz +0 -0
  85. package/dist/client/assets/{dagre-GXQ25YYZ-CZKJoNzx.js → dagre-GXQ25YYZ-Bs6IPwks.js} +1 -1
  86. package/dist/client/assets/dagre-GXQ25YYZ-Bs6IPwks.js.br +0 -0
  87. package/dist/client/assets/dagre-GXQ25YYZ-Bs6IPwks.js.gz +0 -0
  88. package/dist/client/assets/{diagram-S7CK7UJ4-C4Sjb6W8.js → diagram-S7CK7UJ4-CmYXaTya.js} +1 -1
  89. package/dist/client/assets/diagram-S7CK7UJ4-CmYXaTya.js.br +0 -0
  90. package/dist/client/assets/diagram-S7CK7UJ4-CmYXaTya.js.gz +0 -0
  91. package/dist/client/assets/{diagram-UQ7AKVKN-Buov_WHB.js → diagram-UQ7AKVKN-CqxoefB7.js} +1 -1
  92. package/dist/client/assets/diagram-UQ7AKVKN-CqxoefB7.js.br +0 -0
  93. package/dist/client/assets/diagram-UQ7AKVKN-CqxoefB7.js.gz +0 -0
  94. package/dist/client/assets/{diagram-VSXAHHWV-B3v-ZnXu.js → diagram-VSXAHHWV-Dxp1MKPT.js} +1 -1
  95. package/dist/client/assets/diagram-VSXAHHWV-Dxp1MKPT.js.br +0 -0
  96. package/dist/client/assets/diagram-VSXAHHWV-Dxp1MKPT.js.gz +0 -0
  97. package/dist/client/assets/{diagram-VX7I27RA-DCEWE8mj.js → diagram-VX7I27RA-BKbWvvEr.js} +1 -1
  98. package/dist/client/assets/diagram-VX7I27RA-BKbWvvEr.js.br +0 -0
  99. package/dist/client/assets/diagram-VX7I27RA-BKbWvvEr.js.gz +0 -0
  100. package/dist/client/assets/{diagram-Z3DM3KII-bK4WKBJF.js → diagram-Z3DM3KII-BZnNaP7F.js} +1 -1
  101. package/dist/client/assets/diagram-Z3DM3KII-BZnNaP7F.js.br +0 -0
  102. package/dist/client/assets/diagram-Z3DM3KII-BZnNaP7F.js.gz +0 -0
  103. package/dist/client/assets/{ebnfDiagram-PWID7BFC-wOu6iW76.js → ebnfDiagram-PWID7BFC-BXVlN_P7.js} +1 -1
  104. package/dist/client/assets/ebnfDiagram-PWID7BFC-BXVlN_P7.js.br +0 -0
  105. package/dist/client/assets/ebnfDiagram-PWID7BFC-BXVlN_P7.js.gz +0 -0
  106. package/dist/client/assets/{erDiagram-RLTQ6QDP-D83VmrYf.js → erDiagram-RLTQ6QDP-CEdYDZU7.js} +1 -1
  107. package/dist/client/assets/erDiagram-RLTQ6QDP-CEdYDZU7.js.br +0 -0
  108. package/dist/client/assets/erDiagram-RLTQ6QDP-CEdYDZU7.js.gz +0 -0
  109. package/dist/client/assets/{flowDiagram-HODETNUW-DCxfJLXu.js → flowDiagram-HODETNUW-Bbw8GPCZ.js} +1 -1
  110. package/dist/client/assets/flowDiagram-HODETNUW-Bbw8GPCZ.js.br +0 -0
  111. package/dist/client/assets/flowDiagram-HODETNUW-Bbw8GPCZ.js.gz +0 -0
  112. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CF9XnXOS.js → ganttDiagram-EL5Y4UJY-CcFbtP2y.js} +1 -1
  113. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CcFbtP2y.js.br +0 -0
  114. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CcFbtP2y.js.gz +0 -0
  115. package/dist/client/assets/{gestureArbiter-DOugsAle.js → gestureArbiter-sdzs-66-.js} +1 -1
  116. package/dist/client/assets/{gestureArbiter-DOugsAle.js.br → gestureArbiter-sdzs-66-.js.br} +0 -0
  117. package/dist/client/assets/gestureArbiter-sdzs-66-.js.gz +0 -0
  118. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-jT8-SkeT.js → gitGraphDiagram-WWUBYQGX-Eiust154.js} +1 -1
  119. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Eiust154.js.br +0 -0
  120. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Eiust154.js.gz +0 -0
  121. package/dist/client/assets/{infoDiagram-27XIBGKW-B-LDzk7Q.js → infoDiagram-27XIBGKW-DUmaNZJW.js} +1 -1
  122. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CsosD6UL.js → ishikawaDiagram-5VMMS53U-qTwgXfx_.js} +1 -1
  123. package/dist/client/assets/ishikawaDiagram-5VMMS53U-qTwgXfx_.js.br +0 -0
  124. package/dist/client/assets/ishikawaDiagram-5VMMS53U-qTwgXfx_.js.gz +0 -0
  125. package/dist/client/assets/{journeyDiagram-3NMN7TZE-Bv5RcxaN.js → journeyDiagram-3NMN7TZE-DKy1msWo.js} +1 -1
  126. package/dist/client/assets/journeyDiagram-3NMN7TZE-DKy1msWo.js.br +0 -0
  127. package/dist/client/assets/journeyDiagram-3NMN7TZE-DKy1msWo.js.gz +0 -0
  128. package/dist/client/assets/{kanban-definition-UXKFOSKX-D1ukvOoH.js → kanban-definition-UXKFOSKX-BxibybDd.js} +1 -1
  129. package/dist/client/assets/kanban-definition-UXKFOSKX-BxibybDd.js.br +0 -0
  130. package/dist/client/assets/kanban-definition-UXKFOSKX-BxibybDd.js.gz +0 -0
  131. package/dist/client/assets/{layout-VC45eUZy.js → layout-Bh6fKHRM.js} +1 -1
  132. package/dist/client/assets/layout-Bh6fKHRM.js.br +0 -0
  133. package/dist/client/assets/layout-Bh6fKHRM.js.gz +0 -0
  134. package/dist/client/assets/{linear-C3VBb8xa.js → linear-SRlL3VWX.js} +1 -1
  135. package/dist/client/assets/linear-SRlL3VWX.js.br +0 -0
  136. package/dist/client/assets/linear-SRlL3VWX.js.gz +0 -0
  137. package/dist/client/assets/{mermaid.core-DG2QUI-L.js → mermaid.core-D0bcNdw3.js} +5 -5
  138. package/dist/client/assets/mermaid.core-D0bcNdw3.js.br +0 -0
  139. package/dist/client/assets/mermaid.core-D0bcNdw3.js.gz +0 -0
  140. package/dist/client/assets/{mindmap-definition-YA3MSWOX-CpA9V0iU.js → mindmap-definition-YA3MSWOX-CImZ_aI0.js} +1 -1
  141. package/dist/client/assets/mindmap-definition-YA3MSWOX-CImZ_aI0.js.br +0 -0
  142. package/dist/client/assets/mindmap-definition-YA3MSWOX-CImZ_aI0.js.gz +0 -0
  143. package/dist/client/assets/{passwordBootstrap-DILrqabi.js → passwordBootstrap-f7-mFb1b.js} +1 -1
  144. package/dist/client/assets/passwordBootstrap-f7-mFb1b.js.br +0 -0
  145. package/dist/client/assets/passwordBootstrap-f7-mFb1b.js.gz +0 -0
  146. package/dist/client/assets/{pegDiagram-XKGWAZYB-C7OQC7uD.js → pegDiagram-XKGWAZYB-BT4pTf8O.js} +1 -1
  147. package/dist/client/assets/pegDiagram-XKGWAZYB-BT4pTf8O.js.br +0 -0
  148. package/dist/client/assets/pegDiagram-XKGWAZYB-BT4pTf8O.js.gz +0 -0
  149. package/dist/client/assets/{pieDiagram-E7YTZNPT-Ot6_RqeC.js → pieDiagram-E7YTZNPT-C5K58ien.js} +1 -1
  150. package/dist/client/assets/pieDiagram-E7YTZNPT-C5K58ien.js.br +0 -0
  151. package/dist/client/assets/pieDiagram-E7YTZNPT-C5K58ien.js.gz +0 -0
  152. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Bf7jut-u.js → quadrantDiagram-AXDQQJYC-DzSugYXz.js} +1 -1
  153. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-Bf7jut-u.js.br → quadrantDiagram-AXDQQJYC-DzSugYXz.js.br} +0 -0
  154. package/dist/client/assets/quadrantDiagram-AXDQQJYC-DzSugYXz.js.gz +0 -0
  155. package/dist/client/assets/{railroadDiagram-O6MQD6OU-WrpZgg8t.js → railroadDiagram-O6MQD6OU-BY07SouQ.js} +1 -1
  156. package/dist/client/assets/railroadDiagram-O6MQD6OU-BY07SouQ.js.br +0 -0
  157. package/dist/client/assets/railroadDiagram-O6MQD6OU-BY07SouQ.js.gz +0 -0
  158. package/dist/client/assets/{rdpSession-D5nvZxrU.js → rdpSession-RNjO6yLw.js} +1 -1
  159. package/dist/client/assets/rdpSession-RNjO6yLw.js.br +0 -0
  160. package/dist/client/assets/rdpSession-RNjO6yLw.js.gz +0 -0
  161. package/dist/client/assets/{referenceLongPress-C6YZh55M.js → referenceLongPress-B9K9yPKR.js} +1 -1
  162. package/dist/client/assets/referenceLongPress-B9K9yPKR.js.br +0 -0
  163. package/dist/client/assets/referenceLongPress-B9K9yPKR.js.gz +0 -0
  164. package/dist/client/assets/{requirementDiagram-BXWQKSXE-DSDgL_p4.js → requirementDiagram-BXWQKSXE-C7WieVuE.js} +1 -1
  165. package/dist/client/assets/requirementDiagram-BXWQKSXE-C7WieVuE.js.br +0 -0
  166. package/dist/client/assets/requirementDiagram-BXWQKSXE-C7WieVuE.js.gz +0 -0
  167. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-C_ytO8Ty.js → sankeyDiagram-P5KCCOFB-BJsDWNs4.js} +1 -1
  168. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BJsDWNs4.js.br +0 -0
  169. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BJsDWNs4.js.gz +0 -0
  170. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-DhZKcw8h.js → sequenceDiagram-WJ2MYXX4-BeJ_7853.js} +1 -1
  171. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BeJ_7853.js.br +0 -0
  172. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-BeJ_7853.js.gz +0 -0
  173. package/dist/client/assets/{sizeCapture-INFHLROL-BM1PVyhM.js → sizeCapture-INFHLROL-DOsjXKPV.js} +1 -1
  174. package/dist/client/assets/sizeCapture-INFHLROL-DOsjXKPV.js.br +0 -0
  175. package/dist/client/assets/sizeCapture-INFHLROL-DOsjXKPV.js.gz +0 -0
  176. package/dist/client/assets/{sparkles-BONmCbTi.js → sparkles-e9SkpP7a.js} +1 -1
  177. package/dist/client/assets/{stateDiagram-D77RDMKH-BJ9RE6YD.js → stateDiagram-D77RDMKH-6s709_RT.js} +1 -1
  178. package/dist/client/assets/stateDiagram-D77RDMKH-6s709_RT.js.br +0 -0
  179. package/dist/client/assets/stateDiagram-D77RDMKH-6s709_RT.js.gz +0 -0
  180. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-B43A9Hsz.js +1 -0
  181. package/dist/client/assets/{swimlanes-42K2YHIH-CM-hxgek.js → swimlanes-42K2YHIH-5R5dw9_R.js} +1 -1
  182. package/dist/client/assets/swimlanes-42K2YHIH-5R5dw9_R.js.br +0 -0
  183. package/dist/client/assets/swimlanes-42K2YHIH-5R5dw9_R.js.gz +0 -0
  184. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DoFbqN_4.js +8 -0
  185. package/dist/client/assets/{timeline-definition-24CTP7MA--ZFOA2ds.js → timeline-definition-24CTP7MA-B4YN0lsx.js} +1 -1
  186. package/dist/client/assets/timeline-definition-24CTP7MA-B4YN0lsx.js.br +0 -0
  187. package/dist/client/assets/timeline-definition-24CTP7MA-B4YN0lsx.js.gz +0 -0
  188. package/dist/client/assets/{triangle-alert-B-7heGu-.js → triangle-alert-BzBDJvJX.js} +1 -1
  189. package/dist/client/assets/{vennDiagram-4TSXK5OY-CAKGCM6V.js → vennDiagram-4TSXK5OY-Wd83SmWI.js} +1 -1
  190. package/dist/client/assets/vennDiagram-4TSXK5OY-Wd83SmWI.js.br +0 -0
  191. package/dist/client/assets/vennDiagram-4TSXK5OY-Wd83SmWI.js.gz +0 -0
  192. package/dist/client/assets/{videoCompression-D8Kt2prC.js → videoCompression-Bsw--tMn.js} +1 -1
  193. package/dist/client/assets/videoCompression-Bsw--tMn.js.br +0 -0
  194. package/dist/client/assets/videoCompression-Bsw--tMn.js.gz +0 -0
  195. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-5g9ZJdVF.js → wardleyDiagram-VM6X3IG4-CGsYvqWN.js} +1 -1
  196. package/dist/client/assets/wardleyDiagram-VM6X3IG4-CGsYvqWN.js.br +0 -0
  197. package/dist/client/assets/wardleyDiagram-VM6X3IG4-CGsYvqWN.js.gz +0 -0
  198. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-CJ1hIdXS.js → xychartDiagram-S5SC5T6Z-ednJq1_u.js} +1 -1
  199. package/dist/client/assets/xychartDiagram-S5SC5T6Z-ednJq1_u.js.br +0 -0
  200. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-CJ1hIdXS.js.gz → xychartDiagram-S5SC5T6Z-ednJq1_u.js.gz} +0 -0
  201. package/dist/client/index.html +1 -1
  202. package/dist/client/index.html.br +0 -0
  203. package/dist/client/index.html.gz +0 -0
  204. package/dist/client/sw.js +1 -1
  205. package/dist/client/sw.js.br +0 -0
  206. package/dist/client/sw.js.gz +0 -0
  207. package/dist/server/agent/collaborationCli.js +2 -0
  208. package/dist/server/agent/integrationCli.js +20 -0
  209. package/dist/server/agent/integrationCloseOwnership.js +18 -0
  210. package/dist/server/agent/integrationServer.js +3 -0
  211. package/dist/server/agent/integrationSessions.js +14 -0
  212. package/dist/server/routes/terminal.js +58 -9
  213. package/docs/integrations.md +74 -0
  214. package/package.json +1 -1
  215. package/runtime-manifest.json +3 -3
  216. package/dist/client/assets/App-BN_iuuvE.js.br +0 -0
  217. package/dist/client/assets/App-BN_iuuvE.js.gz +0 -0
  218. package/dist/client/assets/ArchitecturePanel-sTwptDpa.js.br +0 -0
  219. package/dist/client/assets/ArchitecturePanel-sTwptDpa.js.gz +0 -0
  220. package/dist/client/assets/ChangeWalkthroughPanel-DvOSOwLu.js.br +0 -0
  221. package/dist/client/assets/ChangeWalkthroughPanel-DvOSOwLu.js.gz +0 -0
  222. package/dist/client/assets/CollaborationMainWorkspace-DseFwFSR.js.br +0 -0
  223. package/dist/client/assets/CollaborationMainWorkspace-DseFwFSR.js.gz +0 -0
  224. package/dist/client/assets/CollaborationTaskContent-DL4Im2wQ.js +0 -2
  225. package/dist/client/assets/ComputerControlView-CWlfdXhY.js.br +0 -0
  226. package/dist/client/assets/ComputerControlView-CWlfdXhY.js.gz +0 -0
  227. package/dist/client/assets/DagPlayground-B1IytHVy.js.br +0 -0
  228. package/dist/client/assets/DagPlayground-B1IytHVy.js.gz +0 -0
  229. package/dist/client/assets/DiffLab-B6gSsPoJ.js.br +0 -0
  230. package/dist/client/assets/DiffLab-B6gSsPoJ.js.gz +0 -0
  231. package/dist/client/assets/DiffReview-BYI8gVYo.js.br +0 -0
  232. package/dist/client/assets/DiffReview-BYI8gVYo.js.gz +0 -0
  233. package/dist/client/assets/DiffReviewLab-BYUQFzsG.js.br +0 -0
  234. package/dist/client/assets/DiffReviewLab-BYUQFzsG.js.gz +0 -0
  235. package/dist/client/assets/DiffViewer-P1mbq4LM.js.br +0 -0
  236. package/dist/client/assets/DiffViewer-P1mbq4LM.js.gz +0 -0
  237. package/dist/client/assets/ModelPreview-BpIynSeJ.js.br +0 -0
  238. package/dist/client/assets/ModelPreview-BpIynSeJ.js.gz +0 -0
  239. package/dist/client/assets/RightSidebar-DyX2uyW6.js.br +0 -0
  240. package/dist/client/assets/RightSidebar-DyX2uyW6.js.gz +0 -0
  241. package/dist/client/assets/abnfDiagram-VCTEODGH-Cjq0zd9z.js.br +0 -0
  242. package/dist/client/assets/abnfDiagram-VCTEODGH-Cjq0zd9z.js.gz +0 -0
  243. package/dist/client/assets/app-HTVDUkx-.js.br +0 -0
  244. package/dist/client/assets/app-HTVDUkx-.js.gz +0 -0
  245. package/dist/client/assets/arc-DkPjbARe.js.br +0 -0
  246. package/dist/client/assets/arc-DkPjbARe.js.gz +0 -0
  247. package/dist/client/assets/architectureDiagram-5GKGNRK7-DvErYV6b.js.br +0 -0
  248. package/dist/client/assets/architectureDiagram-5GKGNRK7-DvErYV6b.js.gz +0 -0
  249. package/dist/client/assets/blockDiagram-I7D4REHJ-Bds9HO1o.js.br +0 -0
  250. package/dist/client/assets/blockDiagram-I7D4REHJ-Bds9HO1o.js.gz +0 -0
  251. package/dist/client/assets/c4Diagram-7LVT6UL2-C2OH1wSt.js.br +0 -0
  252. package/dist/client/assets/c4Diagram-7LVT6UL2-C2OH1wSt.js.gz +0 -0
  253. package/dist/client/assets/channel-CdhDWMew.js +0 -1
  254. package/dist/client/assets/chunk-F27PBJKO-CRPAOyuh.js.br +0 -0
  255. package/dist/client/assets/chunk-F27PBJKO-CRPAOyuh.js.gz +0 -0
  256. package/dist/client/assets/chunk-IMKFNOWR-CphgPwod.js.br +0 -0
  257. package/dist/client/assets/chunk-IMKFNOWR-CphgPwod.js.gz +0 -0
  258. package/dist/client/assets/chunk-SVP7TREG-C9qRACkp.js.br +0 -0
  259. package/dist/client/assets/chunk-SVP7TREG-C9qRACkp.js.gz +0 -0
  260. package/dist/client/assets/chunk-TICWLB2K-CAn30A5F.js.br +0 -0
  261. package/dist/client/assets/chunk-TICWLB2K-CAn30A5F.js.gz +0 -0
  262. package/dist/client/assets/classDiagram-ZZMXUADV-_NMbO90f.js +0 -1
  263. package/dist/client/assets/classDiagram-v2-VYDZK3BY-_NMbO90f.js +0 -1
  264. package/dist/client/assets/cose-bilkent-JH36ORCC-_ejU8hPT.js.gz +0 -0
  265. package/dist/client/assets/cynefin-OW5HDTMX-BkzgMwVY.js.br +0 -0
  266. package/dist/client/assets/cynefin-OW5HDTMX-BkzgMwVY.js.gz +0 -0
  267. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-f623ycDk.js.br +0 -0
  268. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-f623ycDk.js.gz +0 -0
  269. package/dist/client/assets/dagre-GXQ25YYZ-CZKJoNzx.js.br +0 -0
  270. package/dist/client/assets/dagre-GXQ25YYZ-CZKJoNzx.js.gz +0 -0
  271. package/dist/client/assets/diagram-S7CK7UJ4-C4Sjb6W8.js.br +0 -0
  272. package/dist/client/assets/diagram-S7CK7UJ4-C4Sjb6W8.js.gz +0 -0
  273. package/dist/client/assets/diagram-UQ7AKVKN-Buov_WHB.js.br +0 -0
  274. package/dist/client/assets/diagram-UQ7AKVKN-Buov_WHB.js.gz +0 -0
  275. package/dist/client/assets/diagram-VSXAHHWV-B3v-ZnXu.js.br +0 -0
  276. package/dist/client/assets/diagram-VSXAHHWV-B3v-ZnXu.js.gz +0 -0
  277. package/dist/client/assets/diagram-VX7I27RA-DCEWE8mj.js.br +0 -0
  278. package/dist/client/assets/diagram-VX7I27RA-DCEWE8mj.js.gz +0 -0
  279. package/dist/client/assets/diagram-Z3DM3KII-bK4WKBJF.js.br +0 -0
  280. package/dist/client/assets/diagram-Z3DM3KII-bK4WKBJF.js.gz +0 -0
  281. package/dist/client/assets/ebnfDiagram-PWID7BFC-wOu6iW76.js.br +0 -0
  282. package/dist/client/assets/ebnfDiagram-PWID7BFC-wOu6iW76.js.gz +0 -0
  283. package/dist/client/assets/erDiagram-RLTQ6QDP-D83VmrYf.js.br +0 -0
  284. package/dist/client/assets/erDiagram-RLTQ6QDP-D83VmrYf.js.gz +0 -0
  285. package/dist/client/assets/flowDiagram-HODETNUW-DCxfJLXu.js.br +0 -0
  286. package/dist/client/assets/flowDiagram-HODETNUW-DCxfJLXu.js.gz +0 -0
  287. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CF9XnXOS.js.br +0 -0
  288. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CF9XnXOS.js.gz +0 -0
  289. package/dist/client/assets/gestureArbiter-DOugsAle.js.gz +0 -0
  290. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-jT8-SkeT.js.br +0 -0
  291. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-jT8-SkeT.js.gz +0 -0
  292. package/dist/client/assets/ishikawaDiagram-5VMMS53U-CsosD6UL.js.br +0 -0
  293. package/dist/client/assets/ishikawaDiagram-5VMMS53U-CsosD6UL.js.gz +0 -0
  294. package/dist/client/assets/journeyDiagram-3NMN7TZE-Bv5RcxaN.js.br +0 -0
  295. package/dist/client/assets/journeyDiagram-3NMN7TZE-Bv5RcxaN.js.gz +0 -0
  296. package/dist/client/assets/kanban-definition-UXKFOSKX-D1ukvOoH.js.br +0 -0
  297. package/dist/client/assets/kanban-definition-UXKFOSKX-D1ukvOoH.js.gz +0 -0
  298. package/dist/client/assets/layout-VC45eUZy.js.br +0 -0
  299. package/dist/client/assets/layout-VC45eUZy.js.gz +0 -0
  300. package/dist/client/assets/linear-C3VBb8xa.js.br +0 -0
  301. package/dist/client/assets/linear-C3VBb8xa.js.gz +0 -0
  302. package/dist/client/assets/mermaid.core-DG2QUI-L.js.br +0 -0
  303. package/dist/client/assets/mermaid.core-DG2QUI-L.js.gz +0 -0
  304. package/dist/client/assets/mindmap-definition-YA3MSWOX-CpA9V0iU.js.br +0 -0
  305. package/dist/client/assets/mindmap-definition-YA3MSWOX-CpA9V0iU.js.gz +0 -0
  306. package/dist/client/assets/passwordBootstrap-DILrqabi.js.br +0 -0
  307. package/dist/client/assets/passwordBootstrap-DILrqabi.js.gz +0 -0
  308. package/dist/client/assets/pegDiagram-XKGWAZYB-C7OQC7uD.js.br +0 -0
  309. package/dist/client/assets/pegDiagram-XKGWAZYB-C7OQC7uD.js.gz +0 -0
  310. package/dist/client/assets/pieDiagram-E7YTZNPT-Ot6_RqeC.js.br +0 -0
  311. package/dist/client/assets/pieDiagram-E7YTZNPT-Ot6_RqeC.js.gz +0 -0
  312. package/dist/client/assets/quadrantDiagram-AXDQQJYC-Bf7jut-u.js.gz +0 -0
  313. package/dist/client/assets/railroadDiagram-O6MQD6OU-WrpZgg8t.js.br +0 -0
  314. package/dist/client/assets/railroadDiagram-O6MQD6OU-WrpZgg8t.js.gz +0 -0
  315. package/dist/client/assets/rdpSession-D5nvZxrU.js.br +0 -0
  316. package/dist/client/assets/rdpSession-D5nvZxrU.js.gz +0 -0
  317. package/dist/client/assets/referenceLongPress-C6YZh55M.js.br +0 -0
  318. package/dist/client/assets/referenceLongPress-C6YZh55M.js.gz +0 -0
  319. package/dist/client/assets/requirementDiagram-BXWQKSXE-DSDgL_p4.js.br +0 -0
  320. package/dist/client/assets/requirementDiagram-BXWQKSXE-DSDgL_p4.js.gz +0 -0
  321. package/dist/client/assets/sankeyDiagram-P5KCCOFB-C_ytO8Ty.js.br +0 -0
  322. package/dist/client/assets/sankeyDiagram-P5KCCOFB-C_ytO8Ty.js.gz +0 -0
  323. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DhZKcw8h.js.br +0 -0
  324. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DhZKcw8h.js.gz +0 -0
  325. package/dist/client/assets/sizeCapture-INFHLROL-BM1PVyhM.js.br +0 -0
  326. package/dist/client/assets/sizeCapture-INFHLROL-BM1PVyhM.js.gz +0 -0
  327. package/dist/client/assets/stateDiagram-D77RDMKH-BJ9RE6YD.js.br +0 -0
  328. package/dist/client/assets/stateDiagram-D77RDMKH-BJ9RE6YD.js.gz +0 -0
  329. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BMIQgRVo.js +0 -1
  330. package/dist/client/assets/swimlanes-42K2YHIH-CM-hxgek.js.br +0 -0
  331. package/dist/client/assets/swimlanes-42K2YHIH-CM-hxgek.js.gz +0 -0
  332. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BS47Goc0.js +0 -8
  333. package/dist/client/assets/timeline-definition-24CTP7MA--ZFOA2ds.js.br +0 -0
  334. package/dist/client/assets/timeline-definition-24CTP7MA--ZFOA2ds.js.gz +0 -0
  335. package/dist/client/assets/vennDiagram-4TSXK5OY-CAKGCM6V.js.br +0 -0
  336. package/dist/client/assets/vennDiagram-4TSXK5OY-CAKGCM6V.js.gz +0 -0
  337. package/dist/client/assets/videoCompression-D8Kt2prC.js.br +0 -0
  338. package/dist/client/assets/videoCompression-D8Kt2prC.js.gz +0 -0
  339. package/dist/client/assets/wardleyDiagram-VM6X3IG4-5g9ZJdVF.js.br +0 -0
  340. package/dist/client/assets/wardleyDiagram-VM6X3IG4-5g9ZJdVF.js.gz +0 -0
  341. package/dist/client/assets/xychartDiagram-S5SC5T6Z-CJ1hIdXS.js.br +0 -0
@@ -77,6 +77,7 @@ import { CollaborationError } from '../agent/collaborationProtocol.js';
77
77
  import { resolveCollaborationBackend, resolveCollaborationSessionId } from '../agent/sessionBindingRecovery.js';
78
78
  import { CollaborationRoutingStore, selectCollaborationPane, selectDrivePane, assessCollaborationRouteIdentity } from '../agent/collaborationRouting.js';
79
79
  import { selectRecoveredIntegrationBinding } from '../agent/integrationRecoveryBinding.js';
80
+ import { assertDetachedCloseOwnership } from '../agent/integrationCloseOwnership.js';
80
81
  import { readTmuxLayout, readTmuxLayouts } from '../utils/tmuxLayoutReader.js';
81
82
  import { CollaborationDeliveryWorker } from '../agent/collaborationDeliveryWorker.js';
82
83
  import { approveCollaborationDialog, captureTmuxPaneHistory, captureTmuxPaneText, sendTmuxPaneKey, writeCollaborationTmuxPane } from '../agent/collaborationTmuxDelivery.js';
@@ -2158,8 +2159,8 @@ function integrationRuntimeRegistered(record) {
2158
2159
  async function verifyIntegrationRuntimeOwnership(record) {
2159
2160
  await integrationSessionAdapter.prepareRelease(record);
2160
2161
  const terminal = integrationTerminalRecord(record);
2161
- if (terminal && globalSessionState.sessions.some(other => other.sessionId !== record.session_id
2162
- && (other.tmuxSessionName === terminal.tmuxSessionName || terminal.backendSessionId && other.backendSessionId === terminal.backendSessionId))) {
2162
+ if (globalSessionState.sessions.some(other => other.sessionId !== record.session_id
2163
+ && (other.tmuxSessionName === `wt-integration-${record.session_id}` || terminal?.backendSessionId && other.backendSessionId === terminal.backendSessionId))) {
2163
2164
  integrationError('SESSION_IDENTITY_MISMATCH', 'Runtime has another logical owner', 409);
2164
2165
  }
2165
2166
  }
@@ -2179,14 +2180,36 @@ async function forgetIntegrationRuntime(record) {
2179
2180
  async function observeIntegrationCloseTarget(record) {
2180
2181
  await verifyIntegrationRuntimeOwnership(record);
2181
2182
  const terminal = integrationTerminalRecord(record);
2182
- if (!terminal || !record.terminal_binding)
2183
- integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Original runtime binding is unavailable', 409);
2184
- const inspected = await inspectCollaborationTmux({ sessionId: record.session_id, backendSessionId: terminal.backendSessionId,
2185
- mode: 'tmux', tmuxSessionName: terminal.tmuxSessionName, agentSlug: record.agent_slug,
2186
- nativeSessionId: record.agent_native_session_id, pane: record.terminal_binding }, undefined, false, true);
2183
+ const detached = !terminal;
2184
+ const sessionName = terminal?.tmuxSessionName ?? `wt-integration-${record.session_id}`;
2185
+ let backendSessionId = terminal?.backendSessionId ?? null;
2186
+ if (!record.terminal_binding)
2187
+ integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Original persisted pane binding is unavailable', 409);
2188
+ if (!terminal) {
2189
+ if (process.platform !== 'linux' || !record.agent_native_session_id)
2190
+ integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Missing terminal registration requires a current Linux writer-lock native identity', 409);
2191
+ const owners = await integrationRecoveryOwnership(record);
2192
+ collaborationRouting.assertReadable();
2193
+ const backends = [...terminalSessions].filter(([, backend]) => backend.mode === 'tmux' && backend.tmuxSessionName === sessionName);
2194
+ const group = collaborationStore.getGroup(record.group_id);
2195
+ assertDetachedCloseOwnership({ sessionId: record.session_id, groupId: record.group_id, principalId: record.principal_id,
2196
+ ...owners, localGroup: !!group && !group.deleted && !group.federated,
2197
+ groupOwners: collaborationStore.groupsForSession(record.session_id).map(g => g.id),
2198
+ terminalClaims: globalSessionState.sessions.filter(s => s.sessionId === record.session_id || s.tmuxSessionName === sessionName).length,
2199
+ backendClaims: backends.map(([id]) => ({ routeOwner: collaborationRouting.ownerOfBackend(id),
2200
+ foreignTerminal: globalSessionState.sessions.some(s => s.backendSessionId === id && s.sessionId !== record.session_id) })),
2201
+ otherPaneOwner: collaborationRouting.hasOtherPaneOwner(record.session_id, record.terminal_binding),
2202
+ });
2203
+ // Local observation context only: never insert/adopt a global terminal or
2204
+ // backend, revive a released session, or alter delivery routing.
2205
+ backendSessionId = backends[0]?.[0] ?? null;
2206
+ }
2207
+ const inspected = await inspectCollaborationTmux({ sessionId: record.session_id, backendSessionId,
2208
+ mode: 'tmux', tmuxSessionName: sessionName, agentSlug: record.agent_slug,
2209
+ nativeSessionId: record.agent_native_session_id, pane: record.terminal_binding }, undefined, false, true, true, false, integrationNativeIdentity(record));
2187
2210
  if (inspected.state !== 'ready' || !inspected.pane)
2188
2211
  integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Original pinned pane cannot be verified', 409);
2189
- const layout = await getTmuxLayout(terminal.tmuxSessionName);
2212
+ const layout = await getTmuxLayout(sessionName);
2190
2213
  const panes = layout.windows.flatMap(window => window.panes);
2191
2214
  if (panes.length !== 1 || layout.activePaneId !== record.terminal_binding.paneId)
2192
2215
  integrationError('SESSION_IDENTITY_MISMATCH', 'Only the single original owned pane can be closed', 409);
@@ -2206,11 +2229,15 @@ async function observeIntegrationCloseTarget(record) {
2206
2229
  const identity = await observeProgramNativeIdentity(agent, program, integrationNativeIdentity(record));
2207
2230
  if (identity.failure || identity.nativeId !== record.agent_native_session_id)
2208
2231
  integrationError('SESSION_IDENTITY_MISMATCH', 'Current Agent native identity differs from the owned record', 409);
2232
+ if (detached && identity.source !== 'linux-flock-owner')
2233
+ integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Missing terminal registration requires independent live writer-lock proof, not argv or a cached UUID', 409);
2209
2234
  kind = 'agent';
2210
2235
  pid = program.processPid;
2211
2236
  nativeId = identity.nativeId;
2212
2237
  }
2213
2238
  else {
2239
+ if (detached)
2240
+ integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Missing terminal registration cannot authorize closing an unproven shell or another program', 409);
2214
2241
  if (!await integrationPaneIsIdleShell(inspected.pane))
2215
2242
  integrationError('SESSION_CLOSE_TARGET_UNCONFIRMED', 'Current runtime is not a verified foreground shell', 409);
2216
2243
  kind = 'shell';
@@ -2251,6 +2278,25 @@ export const integrationSessionAdapter = {
2251
2278
  await verifyIntegrationRuntimeOwnership(record);
2252
2279
  return await integrationTmuxPresent(record) ? observeIntegrationCloseTarget(record) : null;
2253
2280
  },
2281
+ async closeDiagnostics(record) {
2282
+ const report = { checked_at: Date.now(), terminal_registration_present: false, binding_present: !!record.terminal_binding,
2283
+ runtime_present: null, target_confirmed: false, pending_messages: collaborationStore.pendingCount(record.session_id),
2284
+ code: null, target: null };
2285
+ try {
2286
+ report.terminal_registration_present = !!integrationTerminalRecord(record);
2287
+ report.runtime_present = await integrationSessionAdapter.runtimePresent(record);
2288
+ if (await integrationTmuxPresent(record)) {
2289
+ report.target = await observeIntegrationCloseTarget(record);
2290
+ report.target_confirmed = true;
2291
+ }
2292
+ else
2293
+ report.code = report.runtime_present ? 'SESSION_CLOSE_TARGET_UNCONFIRMED' : 'SESSION_RUNTIME_ABSENT';
2294
+ }
2295
+ catch (error) {
2296
+ report.code = typeof error.code === 'string' ? error.code : 'SESSION_CLOSE_OBSERVATION_FAILED';
2297
+ }
2298
+ return report;
2299
+ },
2254
2300
  async closeRuntime(record, reconcile) {
2255
2301
  await closeSessionRuntime({
2256
2302
  barrier: action => collaborationDeliveryWorker.reconfigure(record.session_id, action),
@@ -2352,8 +2398,11 @@ export const integrationSessionAdapter = {
2352
2398
  },
2353
2399
  async inspect(record) {
2354
2400
  const terminal = integrationTerminalRecord(record);
2355
- if (!terminal)
2401
+ if (!terminal) {
2402
+ if (await integrationTmuxPresent(record))
2403
+ integrationError('SESSION_TERMINAL_REGISTRATION_MISSING', 'Owned tmux exists but its active TD terminal registration is missing; use administrator close-diagnostics', 409);
2356
2404
  return { exists: false, running: false, shell: false, agentSlug: null, nativeId: null };
2405
+ }
2357
2406
  const binding = { sessionId: record.session_id, backendSessionId: terminal.backendSessionId,
2358
2407
  mode: 'tmux', tmuxSessionName: terminal.tmuxSessionName, agentSlug: record.agent_slug,
2359
2408
  nativeSessionId: record.agent_native_session_id, pane: record.terminal_binding ?? null };
@@ -1411,3 +1411,77 @@ wrapper 负责实际设置 Agent 自己的数据目录、准备 hooks/参数,
1411
1411
  回归覆盖重复 ACK 零克隆/编码/写入、真实持久提交与中途写入/fsync 失败后重试、短写与 Unicode、64 MiB 精确字节上限、输入/输出不可修改历史、分页/保留缺口/撤权、推送事实等价,以及隔离真实 tmux 的多窗口/分屏/激活 pane/copy-mode 与 client/PID/尺寸不变。Linux 维护机验证不代替 macOS 实机或私有 Agent 的业务验收。生产升级须与共享服务的在途任务和维护窗协调,不能因为收到版本通知就自动重启别人的实验。
1412
1412
 
1413
1413
  同时修复独立 profile 目录的 home 别名误拒:当逻辑 home 指向真实 home,规范化 cwd 下的 `{cwd}` 路径可匹配逻辑 home 或 `realpath(home)` 的严格子目录;不会将同名前缀兄弟目录视为 home,不创建尚不存在的锁目录。实际 provider 继续核验 canonicalHome、目录权限、精确进程实例、FD/inode 和内核持锁关系。Linux capabilities 新增 `session_profile_native_identity_home_aliases=true` 及 `session_profile_native_identity_home_aliases_min_version="1.4.348"`。旧 profile 快照不迁移,不自动 retry/create;347 的 `~/` 每 job 精确路径声明仍可沿原契约使用,更新同一 profile 与捕获快照需要由接入方串行协调。
1414
+
1415
+ ## 1.4.349:活动终端登记缺失时的受限关闭与只读诊断
1416
+
1417
+ 问题是三个不同的事实层可能不一致:持久 IntegrationSession 仍有原 native UUID 与完整 pane 绑定,tmux/Agent 仍存在,但全局活动终端登记已经缺失。348 的 close 先依赖该登记,因而在真实身份核验之前拒绝;inspect 也可能将登记缺失表现为 `AGENT_NOT_RUNNING`。349 对仍存在 tmux 的缺登记观察改报 `SESSION_TERMINAL_REGISTRATION_MISSING`,不据此推断程序退出。这不解释或修复所有登记丢失的起因,也不自动重建 UI 记录、恢复会话或认领未知进程。
1418
+
1419
+ 最低 CLI / 实际服务 **1.4.349**,管理员和所属 principal capabilities:
1420
+
1421
+ - `session_close_diagnostics=true`、`session_close_diagnostics_min_version="1.4.349"`。
1422
+ - Linux 上 `session_close_detached_registration=true`、`session_close_detached_registration_min_version="1.4.349"`;其它平台 false。没有新增 principal 权限,关闭仍需原 `session.close`,诊断仅管理员。
1423
+
1424
+ 管理员正式只读入口:
1425
+
1426
+ ```sh
1427
+ td integration close-diagnostics <原TD-session-id>
1428
+ ```
1429
+
1430
+ 走原本机管理员 Unix socket,`GET /admin/sessions/:id/close-diagnostics`,返回:
1431
+
1432
+ ```json
1433
+ {
1434
+ "session_id": "原逻辑ID",
1435
+ "operation_id": "当前operation",
1436
+ "generation": 2,
1437
+ "close_diagnostics": {
1438
+ "checked_at": 1790000000000,
1439
+ "terminal_registration_present": false,
1440
+ "binding_present": true,
1441
+ "runtime_present": true,
1442
+ "pending_messages": 0,
1443
+ "target_confirmed": true,
1444
+ "code": null,
1445
+ "target": {
1446
+ "binding": {"serverPid": 101, "sessionId": "$2", "paneId": "%2", "panePid": 102, "agentSlug": "已登记Agent", "nativeSessionId": "原UUID"},
1447
+ "tmux_server_start_id": "linux:1000",
1448
+ "kind": "agent",
1449
+ "process_pid": 103,
1450
+ "process_start_id": "linux:1001",
1451
+ "native_id": "原UUID"
1452
+ }
1453
+ }
1454
+ }
1455
+ ```
1456
+
1457
+ 这是字段示例,不代表某一现场已核验。诊断不调用 session get/refresh、不改变 descriptor/代次/路由/组,不启动或终止进程、不输入按键。`target` 只包含原 pane、当前进程实例和已证明 UUID,不读/返回 argv、环境或终端正文。记录在异步观察期间变化时丢弃 target,返回 `SESSION_CLOSE_TARGET_CHANGED`。`target_confirmed` 只表示本次目标核验通过,不等于后续关闭授权/成功;pending、进行中生命周期、当前代次等仍由真正 close 独立检查。观察失败保留 `target=null` 和准确 code;无法观察运行存在性时为 null,不假装已消失。已有 `td integration diagnostics` 仍只读原 launch/restore 持久诊断。
1458
+
1459
+ 缺活动登记时,现有显式 `session close` 只在以下证据全部满足后工作:
1460
+
1461
+ 1. 全机持久 IntegrationSession 只有一个 descriptor 声明该 session/principal/组;principal 未撤销且归属唯一;当前本机组仍存在且该成员只归属此组。组的 archived 显示元数据不影响此核验;缺组、跨服务组、重复/跨组归属拒绝。
1462
+ 2. 无其它全局终端声明该逻辑 ID 或保留 tmux 名,无重复 backend、其它逻辑 owner 或冲突 route/pane owner;routing 不可读也拒绝。
1463
+ 3. 保留名精确为 `wt-integration-<原ID>`,实时 server/session/pane/PID 全部等于持久原绑定,只有一个 pane,且未链接到其它 tmux session。不是仅凭名称、cwd、显示名、短 pane ID 或 PID 存在认领。
1464
+ 4. 当前实际前台是原 Agent 类型,当前 Linux `linux-flock-owner` provider 独立证明原 UUID,并核验进程 starttime、FD/inode、权限及 kernel flock。argv/resume UUID、旧缓存或单纯 shell 观察不能给缺登记会话授权关闭;未安装相应只读身份 provider 时继续拒绝,不扩大为任意 Agent 黑盒支持。
1465
+ 5. 沿原生命周期串行、worker 屏障、pending 检查、generation/CAS 和稳定幂等键,先持久化 close intent,再重新核验完整目标与进程实例,使用不可变 tmux session ID 终止一次。失败/重启结果不明沿现有 close 对账,不重复终止。并发外部 tmux 操作仍有系统级竞争边界,连续核验不能宣称绝对原子。
1466
+
1467
+ 无活动登记不再单独阻止已充分证明的目标关闭;未提供 force/裸 UUID/按名清理入口。没有补建 active terminal、backend 或网页客户端,没有修改旧 profile/启动配置、投递正文、重放消息或重新打开归档组。`closed` 仍保留逻辑记录、诊断、消息、工作目录和原生历史并拒绝 send/reply/restore;不是 release。
1468
+
1469
+ 现场接入先升级并核验 **实际服务** 两项 capability,再对原 ID 运行管理员 close-diagnostics。确认归属与 `target_confirmed` 后,由原 principal 正式 get 读当前 generation;若仍与原请求一致,沿原 generation/原 key 重试原 close。若 generation 已改变,先对账原请求,不擅自换 key;无历史 intent 的新关闭需据新代次明确生成新操作键。最终 get 必须确认 `closed/runtime_present=false/terminal_binding=null/close_pending=false`,并核对旧 pane/进程确已消失;诊断通过或 API 请求成功本身不代替回收验证。
1470
+
1471
+ 错误包括 `SESSION_CLOSE_OWNERSHIP_UNCONFIRMED`(持久 owner/本机组不唯一或缺失)、`SESSION_IDENTITY_MISMATCH`(其它声明或实际 native 冲突)、`SESSION_CLOSE_TARGET_UNCONFIRMED`(原绑定/实时 writer-lock/前台实例不足)、`SESSION_CLOSE_TARGET_CHANGED`、`SESSION_PENDING_MESSAGES` 及原有代次/权限/生命周期错误。管理员报告不能越过这些检查。
1472
+
1473
+ 回归包含唯一及重复/撤销/跨组/跨服务归属、缺登记精确关闭、argv-only/错误 UUID/换 pane/换进程拒绝、缺登记准确错误、诊断无副作用及代次变化丢弃、Unix 管理权限与 CLI capability 门控、原关闭意图/幂等/重启和失败 shell 兼容;隔离真实 tmux 验证只终止精确目标并保留邻接会话。该 tmux 测试用可控身份夹具,Linux 原生 writer-lock provider 另有真实内核/FD/starttime 回归;私有 TraeX 和上述远端目标仍须由接入方在维护窗实机验收,不以合成测试冒充。
1474
+
1475
+ ## 1.4.350:通过已连接入口读取中转目录
1476
+
1477
+ 客户端修复,不增加服务端协议、principal 权限或授权配置。原问题:服务 B 已可经入口 A 打开,但“可中转的服务”列表又只枚举 B 的直接地址建立 WSS;手机无法直达 B 的公司/VPN 地址时,即使原终端通道可用也会显示“暂时连不上中转入口”。这不是 health 可达或服务器协作 serviceConnected 能单独证明的浏览器权限问题。
1478
+
1479
+ 目录读取与入口操作现在共用受限连接获取:优先借用 `targetPeerId` 精确匹配、未关闭的 active/entry secure client;不关闭借来的原终端通道、不切换 active service/workspace。没有可借通道时,建立自己持有的临时 Noise 通道,允许同 pin 直连备用地址和服务目录中已经保存的 relay 路线。临时通道由本次调用关闭,底层已借入口保持;不借用其它服务身份。
1480
+
1481
+ 只读连接获取不进行反向路由发现或自动 route-grant,不写服务目录、登录或邀请,不以列表为空/连接失败为由扩大授权、换 pin、使用原生 fetch 或回退 HTTP。目标服务自己的 route-targets 仍按当前设备主体过滤。已撤销、无授权、pin 不匹配和中断错误保留原 name/message;UNKNOWN/UNSUPPORTED 的旧服务提示保留原 cause。相等目标可以经不同地址成功验证,但任何成功通道都必须通过同一目标 pin。
1482
+
1483
+ 后续 prepareRelayConnection/inspectEntryRoute 也复用同一获取方式,防止目录已能读取而点选时又强制直连。显式授权、撤销和生成邀请沿用该通道获取,但其业务写操作仍只由原用户动作触发,服务端检查保持;目录读取本身不会调用这些动作。没有新增任意多跳协议:保存 routes 是既有替代入口,不被解释为任意有序链;读到 B 的目录不承诺其每个下游目标都可从手机建立新数据路径,实际目标访问仍须逐层可达且有权。
1484
+
1485
+ 需要更新的是**提供页面资源的入口服务**到 npm **1.4.350**,并让浏览器/PWA 实际加载新 bundle;CLI 文件版本或远端目标已经升级不能修复仍在运行的旧前端。正式包通过 `pinBundledRuntimeClientDist` 为当前运行进程固定页面快照,单独安装新包不会热替换旧进程提供的页面;按原 HTTPS/auth/supervisor 方式在维护窗重启该入口的 TD 服务,再核验资源,不手改快照。实际目标可保持原兼容版本(本轮场景349),无需为了此目录读取重启目标 Agent/DevBox。没有新 capability:这属于页面逻辑修复,以入口 /api/meta 版本与所服务主 JS 字节/手机实际脚本版本核验。已安装旧 SW 的 iPhone PWA 需等待更新后完全关闭重开;不清除配对/设备身份/授权数据作为修复。
1486
+
1487
+ 回归包含已接入 relay 的 active/entry 复用、点选复核、同 pin 备用地址、无活动通道时既有 relay 临时连接、借用与自有连接清理、不同目标/已关闭通道拒借、权限错误/pin 错误保留、不自动反向授权、不切服务、首次无 Service Worker 与断线不回退边界。另运行完整加密传输、拖放/预览/取消/通知桥接相关现有发布回归。维护机验证不冒充真实 iPhone/macOS 私有网络:正式手机原窗口“工作服务→可中转服务列表→原终端继续可用”仍由现场验收,不操作或重启 Arena。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termdock",
3
- "version": "1.4.348",
3
+ "version": "1.4.350",
4
4
  "description": "A complete web-based terminal application with modern UI",
5
5
  "type": "module",
6
6
  "main": ".desktop-dist/main.js",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "termdock",
4
- "version": "1.4.348",
4
+ "version": "1.4.350",
5
5
  "runtimeProtocolVersion": 1,
6
6
  "minimumDesktopVersion": "1.4.46",
7
7
  "nodeMajor": 22,
8
8
  "dependencyHash": "sha256-ObG1OGq7e7fMFQmYoPxPp3jRodEusYHulVNa5mT1aW8=",
9
- "serverBundleHash": "sha256-Jai7Kpw3RvG8IR/qVeAVGADGQlxRldYgpIR5+wLY9so=",
10
- "clientBundleHash": "sha256-kn3Tg+BTj+H4rZe0g9OE5JUEQNsBGiUSGew8Epm5A38=",
9
+ "serverBundleHash": "sha256-2vXkNt6WtThYWY+7lOPI2qTULTqt2YLY6DEiMlTBb7k=",
10
+ "clientBundleHash": "sha256-dkLWMFf8+J1om0XjZtTEwhMb841CelOyfQlNnjtMxdA=",
11
11
  "entrypoint": "dist/server/cli.js",
12
12
  "clientEntrypoint": "dist/client/index.html"
13
13
  }
@@ -1,2 +0,0 @@
1
- import{bA as r}from"./app-HTVDUkx-.js";import{b as m}from"./dnd-BCFAPC0L.js";import{b as n}from"./RightSidebar-DyX2uyW6.js";import"./react-XDCjal2T.js";import"./terminal-Dea8wJF3.js";import"./App-BN_iuuvE.js";import"./gestureArbiter-DOugsAle.js";import"./triangle-alert-B-7heGu-.js";import"./referenceLongPress-C6YZh55M.js";import"./DiffReview-BYI8gVYo.js";import"./sparkles-BONmCbTi.js";import"./DiffViewer-P1mbq4LM.js";import"./ChangeWalkthroughPanel-DvOSOwLu.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};
@@ -1 +0,0 @@
1
- import{c as a,C as n}from"./mermaid.core-DG2QUI-L.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,a as s,c as t,C as e}from"./chunk-TICWLB2K-CAn30A5F.js";import{d as i}from"./mermaid.core-DG2QUI-L.js";import"./chunk-5VM5RSS4-Dkbpeqfb.js";import"./chunk-XXDRQBXY-i2tZFJ9V.js";import"./chunk-POPQ4Y6H-BAAz8QH8.js";import"./chunk-F27PBJKO-CRPAOyuh.js";import"./purify.es-4eNOHKSq.js";import"./app-HTVDUkx-.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-Dea8wJF3.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-CAn30A5F.js";import{d as i}from"./mermaid.core-DG2QUI-L.js";import"./chunk-5VM5RSS4-Dkbpeqfb.js";import"./chunk-XXDRQBXY-i2tZFJ9V.js";import"./chunk-POPQ4Y6H-BAAz8QH8.js";import"./chunk-F27PBJKO-CRPAOyuh.js";import"./purify.es-4eNOHKSq.js";import"./app-HTVDUkx-.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-Dea8wJF3.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{b as r,a as e,s as a,S as i}from"./chunk-IMKFNOWR-CphgPwod.js";import{d as s}from"./mermaid.core-DG2QUI-L.js";import"./chunk-XXDRQBXY-i2tZFJ9V.js";import"./chunk-POPQ4Y6H-BAAz8QH8.js";import"./chunk-F27PBJKO-CRPAOyuh.js";import"./purify.es-4eNOHKSq.js";import"./app-HTVDUkx-.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-Dea8wJF3.js";var g={parser:a,get db(){return new i(2)},renderer:e,styles:r,init:s(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{g as diagram};
@@ -1,8 +0,0 @@
1
- import{c as r,s as e}from"./flowDiagram-HODETNUW-DCxfJLXu.js";import{d as o}from"./mermaid.core-DG2QUI-L.js";import"./chunk-5VM5RSS4-Dkbpeqfb.js";import"./chunk-XXDRQBXY-i2tZFJ9V.js";import"./chunk-POPQ4Y6H-BAAz8QH8.js";import"./chunk-F27PBJKO-CRPAOyuh.js";import"./purify.es-4eNOHKSq.js";import"./channel-CdhDWMew.js";import"./app-HTVDUkx-.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-Dea8wJF3.js";var a=o(t=>`${e(t)}
2
- .swimlane.cluster rect {
3
- stroke: ${t.clusterBorder} !important;
4
- }
5
- [data-look="neo"].cluster rect {
6
- filter: none;
7
- }
8
- `,"getStyles"),m=a,v=r({defaultLayout:"swimlane",styles:m});export{v as diagram};