termdock 1.4.299 → 1.4.301

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 (372) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +2 -1
  3. package/dist/client/assets/App-BziVLy1b.js +179 -0
  4. package/dist/client/assets/App-BziVLy1b.js.br +0 -0
  5. package/dist/client/assets/App-BziVLy1b.js.gz +0 -0
  6. package/dist/client/assets/ArchitecturePanel-CARNBEqQ.js +12 -0
  7. package/dist/client/assets/ArchitecturePanel-CARNBEqQ.js.br +0 -0
  8. package/dist/client/assets/ArchitecturePanel-CARNBEqQ.js.gz +0 -0
  9. package/dist/client/assets/{ChangeWalkthroughPanel-2lXfrgk4.js → ChangeWalkthroughPanel-00oa0z6w.js} +2 -2
  10. package/dist/client/assets/ChangeWalkthroughPanel-00oa0z6w.js.br +0 -0
  11. package/dist/client/assets/ChangeWalkthroughPanel-00oa0z6w.js.gz +0 -0
  12. package/dist/client/assets/CollaborationMainWorkspace-DuEeKQKZ.js +1 -0
  13. package/dist/client/assets/CollaborationMainWorkspace-DuEeKQKZ.js.br +0 -0
  14. package/dist/client/assets/CollaborationMainWorkspace-DuEeKQKZ.js.gz +0 -0
  15. package/dist/client/assets/CollaborationTaskContent-B_mzpNuw.js +2 -0
  16. package/dist/client/assets/ComputerControlView-C9v1Ooc9.js +5 -0
  17. package/dist/client/assets/ComputerControlView-C9v1Ooc9.js.br +0 -0
  18. package/dist/client/assets/ComputerControlView-C9v1Ooc9.js.gz +0 -0
  19. package/dist/client/assets/{DagPlayground-EFUb9S3u.js → DagPlayground-DfUpMALj.js} +1 -1
  20. package/dist/client/assets/DagPlayground-DfUpMALj.js.br +0 -0
  21. package/dist/client/assets/DagPlayground-DfUpMALj.js.gz +0 -0
  22. package/dist/client/assets/{DiffLab-CXWjSE2q.js → DiffLab-Cf_URhQt.js} +1 -1
  23. package/dist/client/assets/DiffLab-Cf_URhQt.js.br +0 -0
  24. package/dist/client/assets/DiffLab-Cf_URhQt.js.gz +0 -0
  25. package/dist/client/assets/{DiffReview-ByMkBaD9.js → DiffReview-DjG9vCpH.js} +1 -1
  26. package/dist/client/assets/DiffReview-DjG9vCpH.js.br +0 -0
  27. package/dist/client/assets/DiffReview-DjG9vCpH.js.gz +0 -0
  28. package/dist/client/assets/{DiffReviewLab-DoWaKm94.js → DiffReviewLab-BKOvHdJY.js} +2 -2
  29. package/dist/client/assets/DiffReviewLab-BKOvHdJY.js.br +0 -0
  30. package/dist/client/assets/DiffReviewLab-BKOvHdJY.js.gz +0 -0
  31. package/dist/client/assets/{DiffViewer-B4hn9z0k.js → DiffViewer-6n3tgsdc.js} +8 -8
  32. package/dist/client/assets/DiffViewer-6n3tgsdc.js.br +0 -0
  33. package/dist/client/assets/DiffViewer-6n3tgsdc.js.gz +0 -0
  34. package/dist/client/assets/{ModelPreview-C-LJZ8so.js → ModelPreview-BNs2sRct.js} +1 -1
  35. package/dist/client/assets/ModelPreview-BNs2sRct.js.br +0 -0
  36. package/dist/client/assets/ModelPreview-BNs2sRct.js.gz +0 -0
  37. package/dist/client/assets/RightSidebar-CcMSU1v8.js +1677 -0
  38. package/dist/client/assets/RightSidebar-CcMSU1v8.js.br +0 -0
  39. package/dist/client/assets/RightSidebar-CcMSU1v8.js.gz +0 -0
  40. package/dist/client/assets/{abnfDiagram-VCTEODGH-BY-pfYKk.js → abnfDiagram-VCTEODGH-DogjvRKp.js} +1 -1
  41. package/dist/client/assets/abnfDiagram-VCTEODGH-DogjvRKp.js.br +0 -0
  42. package/dist/client/assets/abnfDiagram-VCTEODGH-DogjvRKp.js.gz +0 -0
  43. package/dist/client/assets/app-D6vN8PW-.js +35 -0
  44. package/dist/client/assets/app-D6vN8PW-.js.br +0 -0
  45. package/dist/client/assets/app-D6vN8PW-.js.gz +0 -0
  46. package/dist/client/assets/{arc-DIENgCZn.js → arc-Cqel4Ted.js} +1 -1
  47. package/dist/client/assets/arc-Cqel4Ted.js.br +0 -0
  48. package/dist/client/assets/arc-Cqel4Ted.js.gz +0 -0
  49. package/dist/client/assets/{architectureDiagram-5GKGNRK7-C1h4e4az.js → architectureDiagram-5GKGNRK7-DgvPtgNb.js} +1 -1
  50. package/dist/client/assets/architectureDiagram-5GKGNRK7-DgvPtgNb.js.br +0 -0
  51. package/dist/client/assets/architectureDiagram-5GKGNRK7-DgvPtgNb.js.gz +0 -0
  52. package/dist/client/assets/{blockDiagram-I7D4REHJ-B_yOr54K.js → blockDiagram-I7D4REHJ-BxbWO4x4.js} +1 -1
  53. package/dist/client/assets/blockDiagram-I7D4REHJ-BxbWO4x4.js.br +0 -0
  54. package/dist/client/assets/blockDiagram-I7D4REHJ-BxbWO4x4.js.gz +0 -0
  55. package/dist/client/assets/{c4Diagram-7LVT6UL2-DRD4zxIo.js → c4Diagram-7LVT6UL2-gsA37gjL.js} +1 -1
  56. package/dist/client/assets/c4Diagram-7LVT6UL2-gsA37gjL.js.br +0 -0
  57. package/dist/client/assets/c4Diagram-7LVT6UL2-gsA37gjL.js.gz +0 -0
  58. package/dist/client/assets/channel-CBc8-n7y.js +1 -0
  59. package/dist/client/assets/{chunk-2Q5K7J3B-CXytnjmD.js → chunk-2Q5K7J3B-ChC9yYOd.js} +1 -1
  60. package/dist/client/assets/{chunk-5VM5RSS4-Bjmajkf7.js → chunk-5VM5RSS4-Bi4Hc8yL.js} +1 -1
  61. package/dist/client/assets/{chunk-F27PBJKO-CQCL8mJG.js → chunk-F27PBJKO-DvVWvQEk.js} +1 -1
  62. package/dist/client/assets/chunk-F27PBJKO-DvVWvQEk.js.br +0 -0
  63. package/dist/client/assets/chunk-F27PBJKO-DvVWvQEk.js.gz +0 -0
  64. package/dist/client/assets/{chunk-IMKFNOWR-ruHGCADe.js → chunk-IMKFNOWR-BnwQLR5S.js} +1 -1
  65. package/dist/client/assets/chunk-IMKFNOWR-BnwQLR5S.js.br +0 -0
  66. package/dist/client/assets/chunk-IMKFNOWR-BnwQLR5S.js.gz +0 -0
  67. package/dist/client/assets/{chunk-JWPE2WC7-U18S7rxZ.js → chunk-JWPE2WC7-BkNnaDiR.js} +1 -1
  68. package/dist/client/assets/{chunk-POPQ4Y6H-DWnwssfL.js → chunk-POPQ4Y6H-BRzm6Uzi.js} +1 -1
  69. package/dist/client/assets/{chunk-SVP7TREG-DMHj3NSq.js → chunk-SVP7TREG-CDYm-dzk.js} +1 -1
  70. package/dist/client/assets/chunk-SVP7TREG-CDYm-dzk.js.br +0 -0
  71. package/dist/client/assets/chunk-SVP7TREG-CDYm-dzk.js.gz +0 -0
  72. package/dist/client/assets/{chunk-TICWLB2K-Dh_ekvFW.js → chunk-TICWLB2K-BKaW9Z9i.js} +1 -1
  73. package/dist/client/assets/chunk-TICWLB2K-BKaW9Z9i.js.br +0 -0
  74. package/dist/client/assets/chunk-TICWLB2K-BKaW9Z9i.js.gz +0 -0
  75. package/dist/client/assets/{chunk-XXDRQBXY-Bq5wD6iJ.js → chunk-XXDRQBXY-DcHZ_FHb.js} +1 -1
  76. package/dist/client/assets/classDiagram-ZZMXUADV-CNFc2dOc.js +1 -0
  77. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CNFc2dOc.js +1 -0
  78. package/dist/client/assets/{cose-bilkent-JH36ORCC-CsySWhYg.js → cose-bilkent-JH36ORCC-DCbbTNc6.js} +1 -1
  79. package/dist/client/assets/cose-bilkent-JH36ORCC-DCbbTNc6.js.br +0 -0
  80. package/dist/client/assets/cose-bilkent-JH36ORCC-DCbbTNc6.js.gz +0 -0
  81. package/dist/client/assets/{cynefin-OW5HDTMX-9DKE5wV7.js → cynefin-OW5HDTMX-i23hD0Z2.js} +1 -1
  82. package/dist/client/assets/cynefin-OW5HDTMX-i23hD0Z2.js.br +0 -0
  83. package/dist/client/assets/cynefin-OW5HDTMX-i23hD0Z2.js.gz +0 -0
  84. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-B_8fvr9c.js → cynefinDiagram-5FMLGOSQ-CbyLYcqc.js} +1 -1
  85. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CbyLYcqc.js.br +0 -0
  86. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CbyLYcqc.js.gz +0 -0
  87. package/dist/client/assets/{dagre-GXQ25YYZ-BOdsFNFT.js → dagre-GXQ25YYZ-iJ4VKzZm.js} +1 -1
  88. package/dist/client/assets/dagre-GXQ25YYZ-iJ4VKzZm.js.br +0 -0
  89. package/dist/client/assets/dagre-GXQ25YYZ-iJ4VKzZm.js.gz +0 -0
  90. package/dist/client/assets/{diagram-S7CK7UJ4-6v_qvAvi.js → diagram-S7CK7UJ4-BNVZcdsO.js} +1 -1
  91. package/dist/client/assets/diagram-S7CK7UJ4-BNVZcdsO.js.br +0 -0
  92. package/dist/client/assets/diagram-S7CK7UJ4-BNVZcdsO.js.gz +0 -0
  93. package/dist/client/assets/{diagram-UQ7AKVKN-c03oOGhD.js → diagram-UQ7AKVKN-1ghTvPiu.js} +1 -1
  94. package/dist/client/assets/diagram-UQ7AKVKN-1ghTvPiu.js.br +0 -0
  95. package/dist/client/assets/diagram-UQ7AKVKN-1ghTvPiu.js.gz +0 -0
  96. package/dist/client/assets/{diagram-VSXAHHWV-MMIhRYp_.js → diagram-VSXAHHWV-Ce_0nMd3.js} +1 -1
  97. package/dist/client/assets/diagram-VSXAHHWV-Ce_0nMd3.js.br +0 -0
  98. package/dist/client/assets/diagram-VSXAHHWV-Ce_0nMd3.js.gz +0 -0
  99. package/dist/client/assets/{diagram-VX7I27RA-B_l-uebl.js → diagram-VX7I27RA-CLHEkhUt.js} +1 -1
  100. package/dist/client/assets/diagram-VX7I27RA-CLHEkhUt.js.br +0 -0
  101. package/dist/client/assets/diagram-VX7I27RA-CLHEkhUt.js.gz +0 -0
  102. package/dist/client/assets/{diagram-Z3DM3KII-DKoBC5gn.js → diagram-Z3DM3KII-iyb5DkP6.js} +1 -1
  103. package/dist/client/assets/diagram-Z3DM3KII-iyb5DkP6.js.br +0 -0
  104. package/dist/client/assets/diagram-Z3DM3KII-iyb5DkP6.js.gz +0 -0
  105. package/dist/client/assets/{ebnfDiagram-PWID7BFC-Bs3wu8Az.js → ebnfDiagram-PWID7BFC-Dxh2TzXm.js} +1 -1
  106. package/dist/client/assets/ebnfDiagram-PWID7BFC-Dxh2TzXm.js.br +0 -0
  107. package/dist/client/assets/ebnfDiagram-PWID7BFC-Dxh2TzXm.js.gz +0 -0
  108. package/dist/client/assets/{erDiagram-RLTQ6QDP-mYnHYbKl.js → erDiagram-RLTQ6QDP-Cr8IkdCC.js} +1 -1
  109. package/dist/client/assets/erDiagram-RLTQ6QDP-Cr8IkdCC.js.br +0 -0
  110. package/dist/client/assets/erDiagram-RLTQ6QDP-Cr8IkdCC.js.gz +0 -0
  111. package/dist/client/assets/{flowDiagram-HODETNUW-CwCLWbib.js → flowDiagram-HODETNUW-B8ZF1bwr.js} +1 -1
  112. package/dist/client/assets/flowDiagram-HODETNUW-B8ZF1bwr.js.br +0 -0
  113. package/dist/client/assets/flowDiagram-HODETNUW-B8ZF1bwr.js.gz +0 -0
  114. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-mse8c-ni.js → ganttDiagram-EL5Y4UJY-zhdL10eM.js} +1 -1
  115. package/dist/client/assets/ganttDiagram-EL5Y4UJY-zhdL10eM.js.br +0 -0
  116. package/dist/client/assets/ganttDiagram-EL5Y4UJY-zhdL10eM.js.gz +0 -0
  117. package/dist/client/assets/{gestureArbiter-BviL29ps.js → gestureArbiter-CXYHfU__.js} +1 -1
  118. package/dist/client/assets/gestureArbiter-CXYHfU__.js.br +0 -0
  119. package/dist/client/assets/gestureArbiter-CXYHfU__.js.gz +0 -0
  120. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-BVUfLjAX.js → gitGraphDiagram-WWUBYQGX-BQf2fHBo.js} +1 -1
  121. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BQf2fHBo.js.br +0 -0
  122. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BQf2fHBo.js.gz +0 -0
  123. package/dist/client/assets/{index-C6ftfFlG.css → index-CNY7CTVa.css} +1 -1
  124. package/dist/client/assets/index-CNY7CTVa.css.br +0 -0
  125. package/dist/client/assets/index-CNY7CTVa.css.gz +0 -0
  126. package/dist/client/assets/{infoDiagram-27XIBGKW-XjoFF4BC.js → infoDiagram-27XIBGKW-BT8xey7S.js} +1 -1
  127. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-bH299bWL.js → ishikawaDiagram-5VMMS53U-DunPdwW9.js} +1 -1
  128. package/dist/client/assets/ishikawaDiagram-5VMMS53U-DunPdwW9.js.br +0 -0
  129. package/dist/client/assets/ishikawaDiagram-5VMMS53U-DunPdwW9.js.gz +0 -0
  130. package/dist/client/assets/{journeyDiagram-3NMN7TZE-BG0u_X1A.js → journeyDiagram-3NMN7TZE-B0y75iIg.js} +1 -1
  131. package/dist/client/assets/journeyDiagram-3NMN7TZE-B0y75iIg.js.br +0 -0
  132. package/dist/client/assets/journeyDiagram-3NMN7TZE-B0y75iIg.js.gz +0 -0
  133. package/dist/client/assets/{kanban-definition-UXKFOSKX-DRoc9N-i.js → kanban-definition-UXKFOSKX-BfgA5WLo.js} +1 -1
  134. package/dist/client/assets/kanban-definition-UXKFOSKX-BfgA5WLo.js.br +0 -0
  135. package/dist/client/assets/kanban-definition-UXKFOSKX-BfgA5WLo.js.gz +0 -0
  136. package/dist/client/assets/{layout-mh0t6JpE.js → layout-BvjABLff.js} +1 -1
  137. package/dist/client/assets/layout-BvjABLff.js.br +0 -0
  138. package/dist/client/assets/layout-BvjABLff.js.gz +0 -0
  139. package/dist/client/assets/{linear-B9KTRuUV.js → linear-DgeFRliF.js} +1 -1
  140. package/dist/client/assets/linear-DgeFRliF.js.br +0 -0
  141. package/dist/client/assets/linear-DgeFRliF.js.gz +0 -0
  142. package/dist/client/assets/{mermaid.core-Bu2G9zhK.js → mermaid.core-DM6Rlal9.js} +5 -5
  143. package/dist/client/assets/mermaid.core-DM6Rlal9.js.br +0 -0
  144. package/dist/client/assets/mermaid.core-DM6Rlal9.js.gz +0 -0
  145. package/dist/client/assets/{mindmap-definition-YA3MSWOX-Go6Bg5xm.js → mindmap-definition-YA3MSWOX-DhEiABv6.js} +1 -1
  146. package/dist/client/assets/mindmap-definition-YA3MSWOX-DhEiABv6.js.br +0 -0
  147. package/dist/client/assets/mindmap-definition-YA3MSWOX-DhEiABv6.js.gz +0 -0
  148. package/dist/client/assets/{passwordBootstrap-C7-MUAHQ.js → passwordBootstrap-Dxv0I4wM.js} +1 -1
  149. package/dist/client/assets/passwordBootstrap-Dxv0I4wM.js.br +0 -0
  150. package/dist/client/assets/passwordBootstrap-Dxv0I4wM.js.gz +0 -0
  151. package/dist/client/assets/{pegDiagram-XKGWAZYB-DKUIl_U6.js → pegDiagram-XKGWAZYB-LTlVaJfm.js} +1 -1
  152. package/dist/client/assets/pegDiagram-XKGWAZYB-LTlVaJfm.js.br +0 -0
  153. package/dist/client/assets/pegDiagram-XKGWAZYB-LTlVaJfm.js.gz +0 -0
  154. package/dist/client/assets/{pieDiagram-E7YTZNPT-aoDNlV7J.js → pieDiagram-E7YTZNPT-9bnryna3.js} +1 -1
  155. package/dist/client/assets/pieDiagram-E7YTZNPT-9bnryna3.js.br +0 -0
  156. package/dist/client/assets/pieDiagram-E7YTZNPT-9bnryna3.js.gz +0 -0
  157. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BKuuaF2s.js → quadrantDiagram-AXDQQJYC-ZBmgIpsJ.js} +1 -1
  158. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BKuuaF2s.js.br → quadrantDiagram-AXDQQJYC-ZBmgIpsJ.js.br} +0 -0
  159. package/dist/client/assets/quadrantDiagram-AXDQQJYC-ZBmgIpsJ.js.gz +0 -0
  160. package/dist/client/assets/{railroadDiagram-O6MQD6OU-BwfCW2bp.js → railroadDiagram-O6MQD6OU-DTtXvKOu.js} +1 -1
  161. package/dist/client/assets/railroadDiagram-O6MQD6OU-DTtXvKOu.js.br +0 -0
  162. package/dist/client/assets/railroadDiagram-O6MQD6OU-DTtXvKOu.js.gz +0 -0
  163. package/dist/client/assets/rdpSession-Ggo3N5s5.js +1 -0
  164. package/dist/client/assets/rdpSession-Ggo3N5s5.js.br +0 -0
  165. package/dist/client/assets/rdpSession-Ggo3N5s5.js.gz +0 -0
  166. package/dist/client/assets/referenceLongPress-Df8W2cyP.js +1 -0
  167. package/dist/client/assets/referenceLongPress-Df8W2cyP.js.br +0 -0
  168. package/dist/client/assets/referenceLongPress-Df8W2cyP.js.gz +0 -0
  169. package/dist/client/assets/{requirementDiagram-BXWQKSXE-DbpU9Uig.js → requirementDiagram-BXWQKSXE-BNia9zI0.js} +1 -1
  170. package/dist/client/assets/requirementDiagram-BXWQKSXE-BNia9zI0.js.br +0 -0
  171. package/dist/client/assets/requirementDiagram-BXWQKSXE-BNia9zI0.js.gz +0 -0
  172. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-Bxa22XVM.js → sankeyDiagram-P5KCCOFB-uvg5npfK.js} +1 -1
  173. package/dist/client/assets/sankeyDiagram-P5KCCOFB-uvg5npfK.js.br +0 -0
  174. package/dist/client/assets/sankeyDiagram-P5KCCOFB-uvg5npfK.js.gz +0 -0
  175. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-C4GvzT9z.js → sequenceDiagram-WJ2MYXX4-DpJNf2MD.js} +1 -1
  176. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DpJNf2MD.js.br +0 -0
  177. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-DpJNf2MD.js.gz +0 -0
  178. package/dist/client/assets/{sizeCapture-INFHLROL-B9zJJwQw.js → sizeCapture-INFHLROL-CkWB2AnF.js} +1 -1
  179. package/dist/client/assets/sizeCapture-INFHLROL-CkWB2AnF.js.br +0 -0
  180. package/dist/client/assets/sizeCapture-INFHLROL-CkWB2AnF.js.gz +0 -0
  181. package/dist/client/assets/{sparkles-BJbfT-v-.js → sparkles-DOuEtn62.js} +1 -1
  182. package/dist/client/assets/{stateDiagram-D77RDMKH-fqbw6LZa.js → stateDiagram-D77RDMKH-CeMzMQq-.js} +1 -1
  183. package/dist/client/assets/stateDiagram-D77RDMKH-CeMzMQq-.js.br +0 -0
  184. package/dist/client/assets/stateDiagram-D77RDMKH-CeMzMQq-.js.gz +0 -0
  185. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-CNYUpLxt.js +1 -0
  186. package/dist/client/assets/{swimlanes-42K2YHIH-Hpc28YZY.js → swimlanes-42K2YHIH-Bo9GejWo.js} +1 -1
  187. package/dist/client/assets/swimlanes-42K2YHIH-Bo9GejWo.js.br +0 -0
  188. package/dist/client/assets/swimlanes-42K2YHIH-Bo9GejWo.js.gz +0 -0
  189. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-EB7zBRFR.js +8 -0
  190. package/dist/client/assets/{timeline-definition-24CTP7MA-qDieK7Re.js → timeline-definition-24CTP7MA-cvWXYEZ4.js} +1 -1
  191. package/dist/client/assets/timeline-definition-24CTP7MA-cvWXYEZ4.js.br +0 -0
  192. package/dist/client/assets/timeline-definition-24CTP7MA-cvWXYEZ4.js.gz +0 -0
  193. package/dist/client/assets/{triangle-alert-YOCAWhtT.js → triangle-alert-DzV0gQXz.js} +1 -1
  194. package/dist/client/assets/{vennDiagram-4TSXK5OY-BJpZlHao.js → vennDiagram-4TSXK5OY-CzleWcmk.js} +1 -1
  195. package/dist/client/assets/{vennDiagram-4TSXK5OY-BJpZlHao.js.br → vennDiagram-4TSXK5OY-CzleWcmk.js.br} +0 -0
  196. package/dist/client/assets/vennDiagram-4TSXK5OY-CzleWcmk.js.gz +0 -0
  197. package/dist/client/assets/{videoCompression-DI9vP0dm.js → videoCompression-DCnzjEfU.js} +1 -1
  198. package/dist/client/assets/videoCompression-DCnzjEfU.js.br +0 -0
  199. package/dist/client/assets/videoCompression-DCnzjEfU.js.gz +0 -0
  200. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-CQJfj6Ns.js → wardleyDiagram-VM6X3IG4-Cir1iutR.js} +1 -1
  201. package/dist/client/assets/wardleyDiagram-VM6X3IG4-Cir1iutR.js.br +0 -0
  202. package/dist/client/assets/wardleyDiagram-VM6X3IG4-Cir1iutR.js.gz +0 -0
  203. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-Cy-lkWBX.js → xychartDiagram-S5SC5T6Z-pNPcVJ1C.js} +1 -1
  204. package/dist/client/assets/xychartDiagram-S5SC5T6Z-pNPcVJ1C.js.br +0 -0
  205. package/dist/client/assets/xychartDiagram-S5SC5T6Z-pNPcVJ1C.js.gz +0 -0
  206. package/dist/client/index.html +2 -2
  207. package/dist/client/index.html.br +0 -0
  208. package/dist/client/index.html.gz +0 -0
  209. package/dist/client/sw.js +1 -1
  210. package/dist/client/sw.js.br +0 -0
  211. package/dist/client/sw.js.gz +0 -0
  212. package/dist/server/agent/collaborationCli.js +56 -10
  213. package/dist/server/agent/collaborationGroupRoutes.js +10 -5
  214. package/dist/server/agent/collaborationLaunchProfiles.js +43 -0
  215. package/dist/server/agent/collaborationRoutes.js +6 -2
  216. package/dist/server/agent/collaborationService.js +8 -2
  217. package/dist/server/agent/collaborationStore.js +32 -1
  218. package/dist/server/agent/collaborationTaskCli.js +11 -3
  219. package/dist/server/agent/collaborationTaskService.js +16 -10
  220. package/dist/server/agent/collaborationTaskStore.js +70 -25
  221. package/dist/server/agent/collaborationTeam.js +3 -3
  222. package/dist/server/agent/integrationCli.js +243 -0
  223. package/dist/server/agent/integrationServer.js +331 -0
  224. package/dist/server/agent/integrationSessions.js +344 -0
  225. package/dist/server/agent/integrationStore.js +222 -0
  226. package/dist/server/cli.js +29 -0
  227. package/dist/server/entry.js +26 -7
  228. package/dist/server/routes/filesystem.js +120 -87
  229. package/dist/server/routes/terminal.js +196 -13
  230. package/dist/server/utils/localAccess.js +27 -7
  231. package/dist/server/utils/sessionDisplayName.js +53 -0
  232. package/docs/integrations.md +304 -0
  233. package/package.json +3 -2
  234. package/runtime-manifest.json +3 -3
  235. package/dist/client/assets/App-DzuUkEI_.js +0 -179
  236. package/dist/client/assets/App-DzuUkEI_.js.br +0 -0
  237. package/dist/client/assets/App-DzuUkEI_.js.gz +0 -0
  238. package/dist/client/assets/ArchitecturePanel-QodxiiCc.js +0 -7
  239. package/dist/client/assets/ArchitecturePanel-QodxiiCc.js.br +0 -0
  240. package/dist/client/assets/ArchitecturePanel-QodxiiCc.js.gz +0 -0
  241. package/dist/client/assets/ChangeWalkthroughPanel-2lXfrgk4.js.br +0 -0
  242. package/dist/client/assets/ChangeWalkthroughPanel-2lXfrgk4.js.gz +0 -0
  243. package/dist/client/assets/CollaborationMainWorkspace-05-Py9N8.js +0 -1
  244. package/dist/client/assets/CollaborationMainWorkspace-05-Py9N8.js.br +0 -0
  245. package/dist/client/assets/CollaborationMainWorkspace-05-Py9N8.js.gz +0 -0
  246. package/dist/client/assets/CollaborationTaskContent-BJe9TUtZ.js +0 -2
  247. package/dist/client/assets/ComputerControlView-B5vigCoW.js +0 -5
  248. package/dist/client/assets/ComputerControlView-B5vigCoW.js.br +0 -0
  249. package/dist/client/assets/ComputerControlView-B5vigCoW.js.gz +0 -0
  250. package/dist/client/assets/DagPlayground-EFUb9S3u.js.br +0 -0
  251. package/dist/client/assets/DagPlayground-EFUb9S3u.js.gz +0 -0
  252. package/dist/client/assets/DiffLab-CXWjSE2q.js.br +0 -0
  253. package/dist/client/assets/DiffLab-CXWjSE2q.js.gz +0 -0
  254. package/dist/client/assets/DiffReview-ByMkBaD9.js.br +0 -0
  255. package/dist/client/assets/DiffReview-ByMkBaD9.js.gz +0 -0
  256. package/dist/client/assets/DiffReviewLab-DoWaKm94.js.br +0 -0
  257. package/dist/client/assets/DiffReviewLab-DoWaKm94.js.gz +0 -0
  258. package/dist/client/assets/DiffViewer-B4hn9z0k.js.br +0 -0
  259. package/dist/client/assets/DiffViewer-B4hn9z0k.js.gz +0 -0
  260. package/dist/client/assets/ModelPreview-C-LJZ8so.js.br +0 -0
  261. package/dist/client/assets/ModelPreview-C-LJZ8so.js.gz +0 -0
  262. package/dist/client/assets/RightSidebar-EaMm4prW.js +0 -1678
  263. package/dist/client/assets/RightSidebar-EaMm4prW.js.br +0 -0
  264. package/dist/client/assets/RightSidebar-EaMm4prW.js.gz +0 -0
  265. package/dist/client/assets/abnfDiagram-VCTEODGH-BY-pfYKk.js.br +0 -0
  266. package/dist/client/assets/abnfDiagram-VCTEODGH-BY-pfYKk.js.gz +0 -0
  267. package/dist/client/assets/app-Ch0UDtJ-.js +0 -35
  268. package/dist/client/assets/app-Ch0UDtJ-.js.br +0 -0
  269. package/dist/client/assets/app-Ch0UDtJ-.js.gz +0 -0
  270. package/dist/client/assets/arc-DIENgCZn.js.br +0 -0
  271. package/dist/client/assets/arc-DIENgCZn.js.gz +0 -0
  272. package/dist/client/assets/architectureDiagram-5GKGNRK7-C1h4e4az.js.br +0 -0
  273. package/dist/client/assets/architectureDiagram-5GKGNRK7-C1h4e4az.js.gz +0 -0
  274. package/dist/client/assets/blockDiagram-I7D4REHJ-B_yOr54K.js.br +0 -0
  275. package/dist/client/assets/blockDiagram-I7D4REHJ-B_yOr54K.js.gz +0 -0
  276. package/dist/client/assets/c4Diagram-7LVT6UL2-DRD4zxIo.js.br +0 -0
  277. package/dist/client/assets/c4Diagram-7LVT6UL2-DRD4zxIo.js.gz +0 -0
  278. package/dist/client/assets/channel-MOXuUKM7.js +0 -1
  279. package/dist/client/assets/chunk-F27PBJKO-CQCL8mJG.js.br +0 -0
  280. package/dist/client/assets/chunk-F27PBJKO-CQCL8mJG.js.gz +0 -0
  281. package/dist/client/assets/chunk-IMKFNOWR-ruHGCADe.js.br +0 -0
  282. package/dist/client/assets/chunk-IMKFNOWR-ruHGCADe.js.gz +0 -0
  283. package/dist/client/assets/chunk-SVP7TREG-DMHj3NSq.js.br +0 -0
  284. package/dist/client/assets/chunk-SVP7TREG-DMHj3NSq.js.gz +0 -0
  285. package/dist/client/assets/chunk-TICWLB2K-Dh_ekvFW.js.br +0 -0
  286. package/dist/client/assets/chunk-TICWLB2K-Dh_ekvFW.js.gz +0 -0
  287. package/dist/client/assets/classDiagram-ZZMXUADV-CEXMdudw.js +0 -1
  288. package/dist/client/assets/classDiagram-v2-VYDZK3BY-CEXMdudw.js +0 -1
  289. package/dist/client/assets/cose-bilkent-JH36ORCC-CsySWhYg.js.br +0 -0
  290. package/dist/client/assets/cose-bilkent-JH36ORCC-CsySWhYg.js.gz +0 -0
  291. package/dist/client/assets/cynefin-OW5HDTMX-9DKE5wV7.js.br +0 -0
  292. package/dist/client/assets/cynefin-OW5HDTMX-9DKE5wV7.js.gz +0 -0
  293. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-B_8fvr9c.js.br +0 -0
  294. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-B_8fvr9c.js.gz +0 -0
  295. package/dist/client/assets/dagre-GXQ25YYZ-BOdsFNFT.js.br +0 -0
  296. package/dist/client/assets/dagre-GXQ25YYZ-BOdsFNFT.js.gz +0 -0
  297. package/dist/client/assets/diagram-S7CK7UJ4-6v_qvAvi.js.br +0 -0
  298. package/dist/client/assets/diagram-S7CK7UJ4-6v_qvAvi.js.gz +0 -0
  299. package/dist/client/assets/diagram-UQ7AKVKN-c03oOGhD.js.br +0 -0
  300. package/dist/client/assets/diagram-UQ7AKVKN-c03oOGhD.js.gz +0 -0
  301. package/dist/client/assets/diagram-VSXAHHWV-MMIhRYp_.js.br +0 -0
  302. package/dist/client/assets/diagram-VSXAHHWV-MMIhRYp_.js.gz +0 -0
  303. package/dist/client/assets/diagram-VX7I27RA-B_l-uebl.js.br +0 -0
  304. package/dist/client/assets/diagram-VX7I27RA-B_l-uebl.js.gz +0 -0
  305. package/dist/client/assets/diagram-Z3DM3KII-DKoBC5gn.js.br +0 -0
  306. package/dist/client/assets/diagram-Z3DM3KII-DKoBC5gn.js.gz +0 -0
  307. package/dist/client/assets/ebnfDiagram-PWID7BFC-Bs3wu8Az.js.br +0 -0
  308. package/dist/client/assets/ebnfDiagram-PWID7BFC-Bs3wu8Az.js.gz +0 -0
  309. package/dist/client/assets/erDiagram-RLTQ6QDP-mYnHYbKl.js.br +0 -0
  310. package/dist/client/assets/erDiagram-RLTQ6QDP-mYnHYbKl.js.gz +0 -0
  311. package/dist/client/assets/flowDiagram-HODETNUW-CwCLWbib.js.br +0 -0
  312. package/dist/client/assets/flowDiagram-HODETNUW-CwCLWbib.js.gz +0 -0
  313. package/dist/client/assets/ganttDiagram-EL5Y4UJY-mse8c-ni.js.br +0 -0
  314. package/dist/client/assets/ganttDiagram-EL5Y4UJY-mse8c-ni.js.gz +0 -0
  315. package/dist/client/assets/gestureArbiter-BviL29ps.js.br +0 -0
  316. package/dist/client/assets/gestureArbiter-BviL29ps.js.gz +0 -0
  317. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BVUfLjAX.js.br +0 -0
  318. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BVUfLjAX.js.gz +0 -0
  319. package/dist/client/assets/index-C6ftfFlG.css.br +0 -0
  320. package/dist/client/assets/index-C6ftfFlG.css.gz +0 -0
  321. package/dist/client/assets/ishikawaDiagram-5VMMS53U-bH299bWL.js.br +0 -0
  322. package/dist/client/assets/ishikawaDiagram-5VMMS53U-bH299bWL.js.gz +0 -0
  323. package/dist/client/assets/journeyDiagram-3NMN7TZE-BG0u_X1A.js.br +0 -0
  324. package/dist/client/assets/journeyDiagram-3NMN7TZE-BG0u_X1A.js.gz +0 -0
  325. package/dist/client/assets/kanban-definition-UXKFOSKX-DRoc9N-i.js.br +0 -0
  326. package/dist/client/assets/kanban-definition-UXKFOSKX-DRoc9N-i.js.gz +0 -0
  327. package/dist/client/assets/layout-mh0t6JpE.js.br +0 -0
  328. package/dist/client/assets/layout-mh0t6JpE.js.gz +0 -0
  329. package/dist/client/assets/linear-B9KTRuUV.js.br +0 -0
  330. package/dist/client/assets/linear-B9KTRuUV.js.gz +0 -0
  331. package/dist/client/assets/mermaid.core-Bu2G9zhK.js.br +0 -0
  332. package/dist/client/assets/mermaid.core-Bu2G9zhK.js.gz +0 -0
  333. package/dist/client/assets/mindmap-definition-YA3MSWOX-Go6Bg5xm.js.br +0 -0
  334. package/dist/client/assets/mindmap-definition-YA3MSWOX-Go6Bg5xm.js.gz +0 -0
  335. package/dist/client/assets/passwordBootstrap-C7-MUAHQ.js.br +0 -0
  336. package/dist/client/assets/passwordBootstrap-C7-MUAHQ.js.gz +0 -0
  337. package/dist/client/assets/pegDiagram-XKGWAZYB-DKUIl_U6.js.br +0 -0
  338. package/dist/client/assets/pegDiagram-XKGWAZYB-DKUIl_U6.js.gz +0 -0
  339. package/dist/client/assets/pieDiagram-E7YTZNPT-aoDNlV7J.js.br +0 -0
  340. package/dist/client/assets/pieDiagram-E7YTZNPT-aoDNlV7J.js.gz +0 -0
  341. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BKuuaF2s.js.gz +0 -0
  342. package/dist/client/assets/railroadDiagram-O6MQD6OU-BwfCW2bp.js.br +0 -0
  343. package/dist/client/assets/railroadDiagram-O6MQD6OU-BwfCW2bp.js.gz +0 -0
  344. package/dist/client/assets/rdpSession--y6Q98uo.js +0 -1
  345. package/dist/client/assets/rdpSession--y6Q98uo.js.br +0 -0
  346. package/dist/client/assets/rdpSession--y6Q98uo.js.gz +0 -0
  347. package/dist/client/assets/referenceLongPress-BeG1PAdI.js +0 -1
  348. package/dist/client/assets/referenceLongPress-BeG1PAdI.js.br +0 -0
  349. package/dist/client/assets/referenceLongPress-BeG1PAdI.js.gz +0 -0
  350. package/dist/client/assets/requirementDiagram-BXWQKSXE-DbpU9Uig.js.br +0 -0
  351. package/dist/client/assets/requirementDiagram-BXWQKSXE-DbpU9Uig.js.gz +0 -0
  352. package/dist/client/assets/sankeyDiagram-P5KCCOFB-Bxa22XVM.js.br +0 -0
  353. package/dist/client/assets/sankeyDiagram-P5KCCOFB-Bxa22XVM.js.gz +0 -0
  354. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-C4GvzT9z.js.br +0 -0
  355. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-C4GvzT9z.js.gz +0 -0
  356. package/dist/client/assets/sizeCapture-INFHLROL-B9zJJwQw.js.br +0 -0
  357. package/dist/client/assets/sizeCapture-INFHLROL-B9zJJwQw.js.gz +0 -0
  358. package/dist/client/assets/stateDiagram-D77RDMKH-fqbw6LZa.js.br +0 -0
  359. package/dist/client/assets/stateDiagram-D77RDMKH-fqbw6LZa.js.gz +0 -0
  360. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BO23Pbrn.js +0 -1
  361. package/dist/client/assets/swimlanes-42K2YHIH-Hpc28YZY.js.br +0 -0
  362. package/dist/client/assets/swimlanes-42K2YHIH-Hpc28YZY.js.gz +0 -0
  363. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BLS7y4Di.js +0 -8
  364. package/dist/client/assets/timeline-definition-24CTP7MA-qDieK7Re.js.br +0 -0
  365. package/dist/client/assets/timeline-definition-24CTP7MA-qDieK7Re.js.gz +0 -0
  366. package/dist/client/assets/vennDiagram-4TSXK5OY-BJpZlHao.js.gz +0 -0
  367. package/dist/client/assets/videoCompression-DI9vP0dm.js.br +0 -0
  368. package/dist/client/assets/videoCompression-DI9vP0dm.js.gz +0 -0
  369. package/dist/client/assets/wardleyDiagram-VM6X3IG4-CQJfj6Ns.js.br +0 -0
  370. package/dist/client/assets/wardleyDiagram-VM6X3IG4-CQJfj6Ns.js.gz +0 -0
  371. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Cy-lkWBX.js.br +0 -0
  372. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Cy-lkWBX.js.gz +0 -0
@@ -0,0 +1,304 @@
1
+ # TD 通用外部接入(协议 1)
2
+
3
+ 最低 CLI / 运行服务版本:**termdock 1.4.300**,两者都必须升级并重启服务。
4
+ 启动输入条件与保留凭据的策略更新要求 **CLI / 实际运行服务均至少 1.4.301**;协议仍为 1。
5
+ 现有 `--session`、消息投递、任务报告与自动协作入口继续兼容;旧的
6
+ `task create --integration` 仍表示代码集成子任务,新身份使用 `--principal`。
7
+
8
+ TD 提供受限身份、持久事件推送、关联咨询回复,以及会话创建/精确恢复。
9
+ 机器人、定时器、外部用户授权、业务幂等键、外部 inbox/outbox、业务校验由接入方实现。
10
+ `complete` 是执行成员的明确交付,`accepted` 是用户明确验收;投递成功、终端快照、
11
+ 事件 ACK 都不表示已读、任务完成或业务校验通过。
12
+
13
+ ## 管理员配置身份
14
+
15
+ 接口只监听本机 Unix socket `~/.termdock/integration-<port>.sock`(0600),
16
+ 不暴露 HTTP 业务接口,不使用网页转发。首版身份绑定**一个本机协作组**,
17
+ 不支持跨服务组。先在 TD 建立本机组,再查询其 ID:
18
+
19
+ ```sh
20
+ td integration groups
21
+ td integration list
22
+ ```
23
+
24
+ 管理员保存策略文件;实际可执行文件、插件 slug 和目录由本机管理员填写:
25
+
26
+ ```json
27
+ {
28
+ "id": "report-bridge",
29
+ "groupId": "实际本机协作组ID",
30
+ "permissions": [
31
+ "task.read", "task.create", "task.assign", "task.comment", "task.revise",
32
+ "task.answer", "events.read", "session.create", "session.read", "session.restore"
33
+ ],
34
+ "launchProfiles": [{
35
+ "id": "report-agent",
36
+ "agentSlug": "实际已安装的插件slug",
37
+ "executable": "/absolute/path/to/private-launch-wrapper",
38
+ "argv": ["-m", "model-name", "-C", "{cwd}"],
39
+ "cwdRoots": ["/absolute/path/to/runs"],
40
+ "resumeArgv": ["resume", "{sessionId}", "{launchArgs}"]
41
+ }]
42
+ }
43
+ ```
44
+
45
+ `launchProfiles` 可为空(只操作已有任务)。创建会话时只能选择预配 profile 和
46
+ 目录,不能传任意命令/参数。`cwd` 必须已存在,真实路径须位于 `cwdRoots` 内;
47
+ 符号链接不能逃出目录边界。参数按独立 token 引号转义,控制字符禁止。
48
+ `{cwd}`、`{sessionId}`、`{launchArgs}` 必须是独立参数;恢复模板必须各包含一次
49
+ `{sessionId}` 与 `{launchArgs}`,禁止 `--last`。示例模板需按真实 Agent 的
50
+ 命令语法调整;启动与恢复仍需安装并启用对应 Agent 插件,插件必须支持精确 ID 恢复。
51
+
52
+ 包装器须原样透传参数,安静加载 Agent 登录环境,不打印密钥。TD 保存原始
53
+ profile(可执行文件/包装器路径、argv、模型参数、cwd、恢复模板);恢复使用该
54
+ 快照,并切回原 cwd 后启动。只有精确绑定且经进程前台组核验的空闲 shell 才能启动;
55
+ 前台包装器或其他进程尚在运行时拒绝重复启动。包装器文件本身由管理员维护,TD 不备份其代码或密钥。
56
+
57
+ ```sh
58
+ td integration create --file /private/policy.json --credential-file /private/bridge-credential.json
59
+ export TERMDOCK_INTEGRATION_CREDENTIAL_FILE=/private/bridge-credential.json
60
+ td collab --principal report-bridge capabilities
61
+ ```
62
+
63
+ 输出文件必须不存在;TD 创建 0600 文件,只打印身份及文件路径,不打印 token。
64
+ 运行方只能通过 `TERMDOCK_INTEGRATION_CREDENTIAL_FILE` 注入同用户、私有、非符号链接
65
+ 的文件。不要把 token 放入 argv、消息、日志或 profile。策略与凭据不入库。
66
+ 管理员 `td integration revoke report-bridge` 会拒绝后续请求并关闭已有订阅;
67
+ 恢复授权需新建身份,不会静默替换原凭据。
68
+
69
+ CLI 使用当前运行服务的端口,默认 9834。每个端口的身份、游标、事件、会话记录
70
+ 分别保存在 `~/.termdock/integration-state/<port>/`,通过原子写入及 fsync 持久化。
71
+ 这是 TD 接口的权限边界,不是同一操作系统用户下的进程沙箱。
72
+
73
+ ### 启动输入条件与策略更新(1.4.301)
74
+
75
+ 部分 Agent 在首次 prompt 后才产生原生 UUID,启动期间也可能丢弃提前写入的输入。
76
+ 管理员可在对应 `launchProfiles` 项中增加 `startupInput`,让 TD 在原绑定 pane 的
77
+ **当前可见终端画面**满足条件后才首次投递。下面是使用方 TraeX 0.209.1 / GPT-5.5
78
+ (MAX) xhigh 的画面匹配示例;换模型、语言或 TUI 版本时须按实际画面调整:
79
+
80
+ ```json
81
+ "startupInput": {
82
+ "allOf": ["model: GPT-5.5 (MAX) xhigh", "❯"],
83
+ "noneOf": ["model: loading"],
84
+ "stableMs": 1000,
85
+ "timeoutMs": 120000
86
+ }
87
+ ```
88
+
89
+ `allOf` 的每个字面文本都须出现,`noneOf` 的每个文本都须缺席;区分大小写,
90
+ 连续横向空白折叠为一个空格,不使用正则或终端历史。每组最多 16 项,每项
91
+ 1–256 字符,禁止控制字符;`allOf` 不能为空。`stableMs` 默认 1000,允许
92
+ 500–5000;`timeoutMs` 默认 120000,允许 1000–120000,均为整数毫秒。
93
+ TD 至少两次观察到匹配画面,间隔达到 `stableMs` 后放行;中途观察到不匹配就
94
+ 重新计时,服务重启也清除尚未完成的匹配计时。这是终端画面条件,不证明 Agent
95
+ 内部已就绪、已消费或持续空闲,不依赖 Agent hook。原生 ID 为空也可满足此条件。
96
+
97
+ 在现有**完整策略文件**中加入条件,再由本机管理员执行:
98
+
99
+ ```sh
100
+ td integration update --file /private/policy.json
101
+ ```
102
+
103
+ `update` 替换完整权限/profile 策略,保留身份 ID、本机组、凭据和历史;不能改组,
104
+ 不能重新激活已撤销身份。更新文件不要遗漏原权限/profile;无需重写凭据文件。
105
+ 新建会话使用新策略。没有旧启动条件的既有会话,仅在下一次明确 `restore`
106
+ **实际启动 Agent 时**附加同 profile ID 的新安全条件;原 argv/model/cwd/包装器
107
+ 和原生 UUID 不变。已有条件的原启动快照仍保留;对已经精确运行的会话调用 restore
108
+ 不会重新启动或重设条件。更新不会重投已 `delivered` 的正文。
109
+
110
+ 未配置 `startupInput` 的旧 profile 保留原投递方式;TD 不猜测各家 TUI 的加载画面。
111
+ 管理员 CLI 会先读取运行服务能力,旧服务缺接口或能力时失败,不会忽略条件后继续配置。
112
+
113
+ ## 版本与能力核验
114
+
115
+ ```sh
116
+ td --version
117
+ td collab --principal report-bridge capabilities
118
+ ```
119
+
120
+ 第二条回读实际服务 `server_version`、本机 `cli_version`、`integration_protocol`、
121
+ `local_only`、支持的权限名称与功能布尔值;`principal` 回读本身份的组、实际授予权限
122
+ 及允许的 profile ID / Agent slug / cwd roots,不返回完整启动配置。要求协议 1;缺 socket、鉴权失败或协议不兼容
123
+ 会直接失败,不回退到旧会话身份/公开 HTTP。协议兼容是运行判断依据,不能只比较
124
+ 已安装 npm 版本。普通 `td collab --session <id> capabilities` 同样返回 CLI/服务版本。
125
+
126
+ 使用启动条件时,还须确认 `startup_input_conditions=true`、
127
+ `integration_policy_update=true`,以及
128
+ `principal.launch_profiles` 中目标 profile 的 `startup_input_condition=true`。
129
+ 这些布尔值由实际服务回读;服务能力支持不等于身份已配置条件。
130
+
131
+ ## 任务与权限
132
+
133
+ | 操作 | 外部身份 | 会话成员 / 用户规则 |
134
+ | --- | --- | --- |
135
+ | list/get | `task.read`,只读授权组 | 保留现有组权限 |
136
+ | create | `task.create`,普通独立任务 | 指定负责人另需 `task.assign`,必须在组内 |
137
+ | assign | `task.assign` | 必须带当前 revision;新建 attempt,不隐式恢复会话 |
138
+ | comment | `task.comment` | open/accepted 可咨询,保留原结果、验收和 attempt |
139
+ | revise | `task.revise` | 带 revision,重开并使旧结果失去验收资格,沿用当前 attempt |
140
+ | answer | `task.answer` | 指定尚未回答且属于当前 attempt 的 decision ID |
141
+ | respond | 禁止 | 原咨询 attempt 的负责人,必须带 attempt 和 comment event ID |
142
+ | report | 禁止 | 只有该 attempt 的负责人;自动协作只接受当前 attempt |
143
+ | accept / approve-plan | 禁止 | 保留明确用户操作 |
144
+ | drive、成员/组管理、托管目标、任意启动参数 | 禁止 | 保留原有入口,不向外部身份开放 |
145
+
146
+ 所有写入都有幂等键,重试必须使用同键同参数;换参数返回 `IDEMPOTENCY_CONFLICT`。
147
+ 现有会话 CLI 可自动生成键;外部身份的任务/会话写入必须显式提供稳定键才能跨进程重试。
148
+ 幂等键按身份隔离。`assign/revise` 的过期 revision 返回 `TASK_CHANGED`;
149
+ `comment` 追加到提交时的当前 attempt,并返回真实原事件和投递关联,不覆盖结果。
150
+
151
+ ```sh
152
+ td collab --principal report-bridge task create --group <group-id> --title '报告' \
153
+ --content '完整要求' --assignee <TD-session-id> --idempotency-key <business-key> \
154
+ --source external --external-actor '{"id":"external-user-id"}' --external-message-id <external-message-id>
155
+ td collab --principal report-bridge task comment <task-id> --content '请解释结果' --idempotency-key <comment-key>
156
+ td collab --principal report-bridge task get <task-id>
157
+ td collab --principal report-bridge task revise <task-id> --revision <revision> --content '变更要求' --idempotency-key <revision-key>
158
+ td collab --principal report-bridge task answer <task-id> --decision <decision-id> --content '答复条件' --idempotency-key <answer-key>
159
+ ```
160
+
161
+ 来源同时记录 `source=integration`、`origin.integrationId` 和外部 actor / 消息 ID / metadata,
162
+ 不会伪装为终端成员或用户验收。CLI `--metadata` 接收 JSON 对象,来源总大小限 16 KiB。
163
+ 咨询消息关联 `replyToEventId`,执行成员收到命令提示:
164
+
165
+ ```sh
166
+ td collab --session <original-assignee-id> task respond <task-id> \
167
+ --attempt <original-attempt-id> --to-event <comment-event-id> --content '解释' --idempotency-key <response-key>
168
+ ```
169
+
170
+ `respond` 只新增回复事件,不改 report、artifact 或 accepted。对咨询投递消息使用
171
+ 普通 `td collab reply <message-id> ...`(不带任务 status)同样存为关联 `respond`;
172
+ 明确带 status 才是任务报告。修改要求后,负责人需明确提交新的 `complete`,产生新
173
+ `artifact_id` 并重新验收。历史版本始终保留,外部业务校验按 artifact ID 存储。
174
+
175
+ 负责人离线时,咨询仍进入原会话的持久消息队列,返回原 `attempt_id` / `delivery_id`;
176
+ 用 task get 的 outbox、deliveries 或 message get 查询实际投递状态与失败原因。
177
+ 不悄悄创建新 attempt/会话;会话恢复只能显式调用下节接口。已删除/脱组的负责人会
178
+ 留下明确失败记录,接入方需交给用户处理,不能根据终端无输出猜测任务状态。
179
+
180
+ ## 主动事件与 ACK
181
+
182
+ ```sh
183
+ td collab --principal report-bridge events subscribe --consumer bridge-main --jsonl
184
+ td collab --principal report-bridge events ack <cursor> --consumer bridge-main
185
+ ```
186
+
187
+ 这是持续连接的主动推送,不是轮询收件箱。业务方读取 JSONL 调用自己的处理器。
188
+ TD 不提供任意 URL 的 HTTP webhook;首版使用本机 socket,进程重连时自动退避。
189
+ 无 `--timeout` 时订阅持续运行;可显式加 `--timeout 60s` 结束本次订阅。
190
+
191
+ 事件外层固定字段:`type=event,event_id,group_id,sequence,cursor,kind,created_at,payload`。
192
+ 按情况包含 `task_id,attempt_id,artifact_id,message_id,reply_to_event_id,source,actor,external_actor`。
193
+ `sequence` 是组内持久顺序;`created_at` 是原事实时间,不用于顺序/去重。
194
+ task 事件 `event_id` 与任务内事件 ID 一致,`respond.reply_to_event_id` 指向原 comment。
195
+
196
+ | kind | payload |
197
+ | --- | --- |
198
+ | `task.created/assigned/scheduled/coordinator` | `{event}`:原事件、actor、content、attemptId、sequence、createdAt、origin 等 |
199
+ | `task.report` | `{event}`:另含明确 reportStatus(ack/working/blocked/complete/failed)、evidence;新 complete 含 artifactId |
200
+ | `task.comment/respond/revise` | `{event}`:咨询含 target/deliveryId,答复含 replyToEventId |
201
+ | `task.question/answer` | `{event}`;decision 的完整状态从 task get 回读 |
202
+ | `task.submit-plan/review/request-review/approve-plan/accepted` | `{event}`:相关 artifactId、target 或 evidence(依实际事件) |
203
+ | `task.close/reopen/coordinate/pause/resume/retry/child-update/automation-blocked/review-passed/review-blocked` | `{event}`:保留服务事件的 source 与原文 |
204
+ | `task.result` | `{artifact}`:结果 id、attemptId、actor、content、summary、evidence、createdAt |
205
+ | `task.delivery` | `{delivery}`:任务投递 id、attemptId、messageId、status、deliveredAt、error |
206
+ | `message.queued/message.reply` | `{message_id,thread_id,reply_to,from_session_id,to_session_id,content,metadata}` |
207
+ | `message.delivery` | `{receipt}`:实际入队/远端接收/终端写入阶段、失败、重试计数与时间,及明确回复 ID;不含快照或已读字段 |
208
+ | `session.starting/binding_pending/ready/restoring/failed` | `{session}`:下节公开会话记录,失败包含 error_code |
209
+
210
+ TD 在源记录提交后触发 journal 及订阅,journal 中的同一事件 ID 在重连重放时保持不变。
211
+ 新 consumer 从最早保留事件开始;接入方按 `event_id` 去重,**先持久写入 inbox,
212
+ 再 ACK 连续已持久接收前缀的 cursor**,之后自行按任务顺序处理和重试业务 outbox。
213
+ 只读取/打印事件不会 ACK;ACK 也不意味着处理完成、机器人已发送或用户验收。
214
+ TD 检查 cursor 属于授权组、没有回退、已经发送,但无法替业务方证明其数据库已经落盘。
215
+ 服务重启后先重新订阅再 ACK,发送窗口会重建。每个 consumer 保持一个逻辑接收者。
216
+
217
+ 每组保留最近 10,000 个事件,journal 总大小上限 64 MiB。已存在 consumer 的确认
218
+ 位置早于保留窗口会报错,不能静默跳过;接入方回读任务/会话快照,完成业务补偿后
219
+ 启用新 consumer。保留期不是永久归档。源记录与 journal 分文件提交,重启会从仍保留
220
+ 的源事实补齐事件;源历史也被管理性删除的事实无法重建。
221
+
222
+ 错误格式(HTTP 请求直接返回 JSON;流内错误也以一行 JSON 返回):
223
+
224
+ ```json
225
+ {"type":"error","ok":false,"code":"EVENT_RETENTION_GAP","error":"...","retryable":false}
226
+ ```
227
+
228
+ `heartbeat` 每 15 秒保持连接;`connection/state=reconnecting` 是 CLI 重连提示。
229
+ 连接断开重连后从服务持久 ACK 位置重放,未 ACK 的事件可以重复。终止错误包括
230
+ `INTEGRATION_UNAUTHORIZED/REVOKED/PERMISSION_DENIED`、`EVENT_RETENTION_GAP`、
231
+ `INVALID_EVENT_CURSOR`、`INCOMPATIBLE_INTEGRATION_PROTOCOL`;修正配置或完成补偿再连。
232
+ `EVENT_CONSUMER_SLOW`、存储/连接暂时错误可重连;未发送的 cursor ACK 返回
233
+ `EVENT_ACK_NOT_SENT`。不会为了连通而降低鉴权或绕过权限。
234
+
235
+ ## 会话创建、绑定与恢复
236
+
237
+ ```sh
238
+ td collab --principal report-bridge session create --launch-profile report-agent \
239
+ --cwd /absolute/path/to/runs/current --idempotency-key <session-create-key>
240
+ td collab --principal report-bridge session get <session-id>
241
+ td collab --principal report-bridge session restore <session-id> --idempotency-key <restore-key>
242
+ ```
243
+
244
+ 公开记录包含 `operation_id,session_id,group_id,principal_id,agent_slug,
245
+ agent_native_session_id,state,error_code,cwd,launch_profile,created_at,updated_at,terminal_binding`。
246
+ `terminal_binding` 是实际 tmux server/session/pane/PID 的固定身份。集成终端须保持单一 pane;
247
+ 新增窗口/pane 会使原生身份核验失败,避免误用其它 pane 的 hook。完整原 profile
248
+ 仅在服务私有持久记录中保存,不通过事件发送。配置启动条件时,公开记录及 session
249
+ 事件另外包含 `startup_input={state,deadline,matched_since,observed_at}`,时间为 Unix 毫秒。
250
+
251
+ | state | 精确含义 |
252
+ | --- | --- |
253
+ | starting | 创建意图已持久化,命令提交尚未证明 Agent / 原生绑定就绪 |
254
+ | binding_pending | 实际观察到该 Agent,尚未捕获确切原生 ID |
255
+ | ready | 实际观察到该 Agent 和确切原生 ID;不表示任务空闲/完成 |
256
+ | restoring | 显式恢复意图持久化,等待原 ID 的运行证据 |
257
+ | failed | 启动、绑定、身份核验或运行观察失败,详见 error_code |
258
+
259
+ 同键同请求返回原 TD ID;已记录但结果不明的启动不会自动重新执行。通常等
260
+ session 事件;get 也会现场核验。120 秒内未形成绑定返回 `SESSION_BINDING_TIMEOUT`。
261
+ 服务重启会继续核验待绑定记录。未捕获真实原生 ID,restore 返回
262
+ `NATIVE_SESSION_ID_MISSING`,不能伪造 UUID 或选择“最近会话”。
263
+
264
+ 启动输入条件独立于原生绑定状态:`ready` 不证明首条输入可写,`binding_pending`
265
+ 也不禁止已经满足画面条件的输入。`startup_input.state=pending` 时消息保持 pending、
266
+ 尚未写入终端,诊断码 `SESSION_STARTUP_INPUT_PENDING`;超过 deadline 后变为
267
+ `timed_out`,码 `SESSION_STARTUP_INPUT_TIMEOUT`,不会因超时盲投。终端身份核验或
268
+ 采集失败也不会放行。持续投递重试/会话 get 可以再次核验;只有重新观察到符合条件
269
+ 的画面并满足间隔才转为 `observed`,记录 `observed_at`。等待条件本身不增加实际
270
+ 写入次数,不创建新 attempt/session。集成运行时不可用时,受管终端投递返回
271
+ `INTEGRATION_RUNTIME_UNAVAILABLE`。
272
+
273
+ `observed` 只表示本次启动的画面条件已观测;后续咨询保留通常的追加投递方式,
274
+ 不以 Agent 忙闲门控。真正执行 restore 时重新等待启动条件。写入后的 `delivered`
275
+ 仍只表示终端写入;`AGENT_CONSUME_UNCONFIRMED` 也不能解释为已消费或应自动重投。
276
+ 任务完成继续以负责人明确 `report complete` 为准。
277
+
278
+ 恢复保留原 TD ID、原生 ID、argv/model/cwd/包装器配置。原会话已经精确运行时直接
279
+ 返回现状;发现其它 ID、未知进程或 pane 被复用则拒绝。原 tmux 已退出时,只有
280
+ 显式精确恢复可以重建承载终端;这本身不证明 Agent 原生会话恢复成功。新参数/profile
281
+ 不能覆盖原启动快照,尚未确定结果的恢复拒绝另一次恢复,防止重复 Agent。
282
+
283
+ 常见失败码(每项都是完整字符串):
284
+
285
+ - 配置/权限:`LAUNCH_PROFILE_DENIED`, `LAUNCHER_UNAVAILABLE`, `COLLAB_AGENT_UNAVAILABLE`, `SESSION_CWD_MISSING`, `SESSION_CWD_DENIED`, `INTEGRATION_SESSION_NOT_FOUND`, `INTEGRATION_SESSION_LIMIT`。
286
+ - 终端/身份:`SESSION_BACKEND_UNAVAILABLE`, `SESSION_TARGET_NOT_SHELL`, `SESSION_IDENTITY_MISMATCH`, `NATIVE_SESSION_ID_MISMATCH`, `NATIVE_SESSION_ID_INVALID`, `NATIVE_SESSION_ID_MISSING`。
287
+ - 启动/恢复:`SESSION_CREATE_OUTCOME_UNKNOWN`, `SESSION_OPERATION_IN_PROGRESS`, `SESSION_BINDING_TIMEOUT`, `EXACT_RESUME_UNSUPPORTED`, `NATIVE_SESSION_ALREADY_RUNNING`, `AGENT_NOT_RUNNING`。
288
+ - 未分类异常:`SESSION_LAUNCH_FAILED`, `SESSION_OBSERVATION_FAILED`;错误不包含包装器输出、密钥或原始堆栈。
289
+
290
+ ## 验收边界
291
+
292
+ 维护机验证:真实 Unix socket 主动推送/断线重放/撤销、journal 重载与源记录补偿、
293
+ 权限与幂等隔离、accepted 上咨询/关联答复、修订后的新结果、原 profile 恢复和
294
+ 实际 shell 参数透传。适配器测试不冒充真实 Agent 的原生会话验收。
295
+
296
+ 维护机未安装 TraeX;已用真实 tmux/终端程序复现加载期间丢弃输入,并验证配置条件
297
+ 阻止早投、仅写一次,以及无原生 UUID 时仍可放行;这不冒充真实 TraeX 启动验收。
298
+ 使用方已报告 1.4.300 开发机真实 TraeX UUID 捕获与精确恢复通过,原对话记忆、
299
+ 原 UUID、TD ID、attempt 和 artifact 保持一致。**1.4.301 的冷启动门控及超时诊断
300
+ 仍须使用方升级 CLI/实际运行服务后实机复验**,维护机没有代替完成该项。
301
+ 回读 capabilities 后,应核对原 TD ID、真实 TraeX UUID 与原 argv/cwd/包装器快照,
302
+ 并验证 Agent 真正加载原对话。
303
+ 先完成测试环境的创建→追问→关联答复,再验重复键、追加咨询、断线重投和精确恢复。
304
+ 业务定时器或正式群接入由使用方明确启用,TD 发版不会启用这些业务流程。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "termdock",
3
- "version": "1.4.299",
3
+ "version": "1.4.301",
4
4
  "description": "A complete web-based terminal application with modern UI",
5
5
  "type": "module",
6
6
  "main": ".desktop-dist/main.js",
@@ -16,7 +16,8 @@
16
16
  "runtime-manifest.json",
17
17
  "README.md",
18
18
  "LICENSE",
19
- "scripts"
19
+ "scripts",
20
+ "docs/integrations.md"
20
21
  ],
21
22
  "scripts": {
22
23
  "clean": "rimraf dist",
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "packageName": "termdock",
4
- "version": "1.4.299",
4
+ "version": "1.4.301",
5
5
  "runtimeProtocolVersion": 1,
6
6
  "minimumDesktopVersion": "1.4.46",
7
7
  "nodeMajor": 22,
8
8
  "dependencyHash": "sha256-E9GDa4nrCXADRXdyPKufusZt6IcCr4m2mGdx5h34KMQ=",
9
- "serverBundleHash": "sha256-dLxudXBdWdPC/p5L5E1vLLgZP4HdxItgVdgvl2L75lM=",
10
- "clientBundleHash": "sha256-XFcyaTGYWlZZfDwMSgkifxybACCRmNNlB2eNa1YEac0=",
9
+ "serverBundleHash": "sha256-U9YIANwjHQwosOcYtOh1PeorKlMRwpJ51AdTlfY4+H0=",
10
+ "clientBundleHash": "sha256-HOoNMOYhnph9XwUhSYE5W2CdI9Vb4g0c64ubW49LnXE=",
11
11
  "entrypoint": "dist/server/cli.js",
12
12
  "clientEntrypoint": "dist/client/index.html"
13
13
  }