termdock 1.4.167 → 1.4.169

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 (514) hide show
  1. package/dist/client/assets/ChangeWalkthroughPanel-u9y3e-pI.js +2 -0
  2. package/dist/client/assets/ChangeWalkthroughPanel-u9y3e-pI.js.br +0 -0
  3. package/dist/client/assets/ChangeWalkthroughPanel-u9y3e-pI.js.gz +0 -0
  4. package/dist/client/assets/DagPlayground-BLUwaOMM.js +1 -0
  5. package/dist/client/assets/DagPlayground-BLUwaOMM.js.br +0 -0
  6. package/dist/client/assets/DagPlayground-BLUwaOMM.js.gz +0 -0
  7. package/dist/client/assets/DiffLab-ThgXydJA.js +370 -0
  8. package/dist/client/assets/DiffLab-ThgXydJA.js.br +0 -0
  9. package/dist/client/assets/DiffLab-ThgXydJA.js.gz +0 -0
  10. package/dist/client/assets/DiffReview-DNkXOQ2y.js +1 -0
  11. package/dist/client/assets/DiffReview-DNkXOQ2y.js.br +0 -0
  12. package/dist/client/assets/DiffReview-DNkXOQ2y.js.gz +0 -0
  13. package/dist/client/assets/DiffReviewLab-CHyV1WMR.js +2 -0
  14. package/dist/client/assets/DiffReviewLab-CHyV1WMR.js.br +0 -0
  15. package/dist/client/assets/DiffReviewLab-CHyV1WMR.js.gz +0 -0
  16. package/dist/client/assets/DiffViewer-CxxOpsVz.js +35 -0
  17. package/dist/client/assets/DiffViewer-CxxOpsVz.js.br +0 -0
  18. package/dist/client/assets/DiffViewer-CxxOpsVz.js.gz +0 -0
  19. package/dist/client/assets/DiffViewer-T3uj2-aP.css +1 -0
  20. package/dist/client/assets/DiffViewer-T3uj2-aP.css.br +0 -0
  21. package/dist/client/assets/DiffViewer-T3uj2-aP.css.gz +0 -0
  22. package/dist/client/assets/ModelPreview-DZzx3Tzo.js +4112 -0
  23. package/dist/client/assets/ModelPreview-DZzx3Tzo.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-DZzx3Tzo.js.gz +0 -0
  25. package/dist/client/assets/RightSidebar-Bv8Y6hqx.js +55 -0
  26. package/dist/client/assets/RightSidebar-Bv8Y6hqx.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-Bv8Y6hqx.js.gz +0 -0
  28. package/dist/client/assets/RightSidebar-DW-JEgm2.css +1 -0
  29. package/dist/client/assets/{abnfDiagram-VRR7QNED-evEaZuvk.js → abnfDiagram-VCTEODGH-DKmZLRlf.js} +1 -1
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-DKmZLRlf.js.br +0 -0
  31. package/dist/client/assets/abnfDiagram-VCTEODGH-DKmZLRlf.js.gz +0 -0
  32. package/dist/client/assets/app-tT08GaCs.js +175 -0
  33. package/dist/client/assets/app-tT08GaCs.js.br +0 -0
  34. package/dist/client/assets/app-tT08GaCs.js.gz +0 -0
  35. package/dist/client/assets/arc-CjmHoRed.js +1 -0
  36. package/dist/client/assets/arc-CjmHoRed.js.br +0 -0
  37. package/dist/client/assets/arc-CjmHoRed.js.gz +0 -0
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-B0EDOwYH.js +36 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-B0EDOwYH.js.br +0 -0
  40. package/dist/client/assets/architectureDiagram-5GKGNRK7-B0EDOwYH.js.gz +0 -0
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-CW-AaouZ.js +129 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-CW-AaouZ.js.br +0 -0
  43. package/dist/client/assets/blockDiagram-I7D4REHJ-CW-AaouZ.js.gz +0 -0
  44. package/dist/client/assets/c4Diagram-7LVT6UL2-aE7hFKfo.js +38 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-aE7hFKfo.js.br +0 -0
  46. package/dist/client/assets/c4Diagram-7LVT6UL2-aE7hFKfo.js.gz +0 -0
  47. package/dist/client/assets/channel-DhsPQnwY.js +1 -0
  48. package/dist/client/assets/{chunk-2Q5K7J3B-mc5fifzP.js → chunk-2Q5K7J3B-FAEL5P17.js} +1 -1
  49. package/dist/client/assets/{chunk-5VM5RSS4-BZB3rwoP.js → chunk-5VM5RSS4-BQJAvucM.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-DEkt187T.js +1 -0
  51. package/dist/client/assets/chunk-F27PBJKO-DEkt187T.js.br +0 -0
  52. package/dist/client/assets/chunk-F27PBJKO-DEkt187T.js.gz +0 -0
  53. package/dist/client/assets/{chunk-EX3LRPZG-Bvw9RqK9.js → chunk-IMKFNOWR-BfOJ-x_l.js} +5 -5
  54. package/dist/client/assets/chunk-IMKFNOWR-BfOJ-x_l.js.br +0 -0
  55. package/dist/client/assets/chunk-IMKFNOWR-BfOJ-x_l.js.gz +0 -0
  56. package/dist/client/assets/{chunk-JWPE2WC7-CSO1rP6P.js → chunk-JWPE2WC7-BN6q6jKH.js} +1 -1
  57. package/dist/client/assets/chunk-POPQ4Y6H-BrhQRNCn.js +1 -0
  58. package/dist/client/assets/{chunk-MOJQB5TN-Ds4d9rRG.js → chunk-SVP7TREG-CjZOC5Dj.js} +4 -4
  59. package/dist/client/assets/chunk-SVP7TREG-CjZOC5Dj.js.br +0 -0
  60. package/dist/client/assets/chunk-SVP7TREG-CjZOC5Dj.js.gz +0 -0
  61. package/dist/client/assets/{chunk-V7JOEXUC-DXbeWqbK.js → chunk-TICWLB2K-Wshj9ws7.js} +3 -3
  62. package/dist/client/assets/chunk-TICWLB2K-Wshj9ws7.js.br +0 -0
  63. package/dist/client/assets/chunk-TICWLB2K-Wshj9ws7.js.gz +0 -0
  64. package/dist/client/assets/{chunk-XXDRQBXY-CQVKeEmY.js → chunk-XXDRQBXY-BPPghuc3.js} +1 -1
  65. package/dist/client/assets/classDiagram-ZZMXUADV-2OomHNTG.js +1 -0
  66. package/dist/client/assets/classDiagram-v2-VYDZK3BY-2OomHNTG.js +1 -0
  67. package/dist/client/assets/{cose-bilkent-JH36ORCC-CweTDwez.js → cose-bilkent-JH36ORCC-BjxJYQH8.js} +1 -1
  68. package/dist/client/assets/cose-bilkent-JH36ORCC-BjxJYQH8.js.br +0 -0
  69. package/dist/client/assets/cose-bilkent-JH36ORCC-BjxJYQH8.js.gz +0 -0
  70. package/dist/client/assets/{cynefin-VYW2F7L2-B_1TU70O.js → cynefin-OW5HDTMX-QmUTVmd_.js} +38 -38
  71. package/dist/client/assets/cynefin-OW5HDTMX-QmUTVmd_.js.br +0 -0
  72. package/dist/client/assets/cynefin-OW5HDTMX-QmUTVmd_.js.gz +0 -0
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CBJtWB9m.js +62 -0
  74. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CBJtWB9m.js.br +0 -0
  75. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CBJtWB9m.js.gz +0 -0
  76. package/dist/client/assets/cytoscape.esm-D3_iZ_3b.js.br +0 -0
  77. package/dist/client/assets/cytoscape.esm-D3_iZ_3b.js.gz +0 -0
  78. package/dist/client/assets/dagre-GXQ25YYZ-CJFctjtR.js +4 -0
  79. package/dist/client/assets/dagre-GXQ25YYZ-CJFctjtR.js.br +0 -0
  80. package/dist/client/assets/dagre-GXQ25YYZ-CJFctjtR.js.gz +0 -0
  81. package/dist/client/assets/defaultLocale-CrowFXzY.js.br +0 -0
  82. package/dist/client/assets/defaultLocale-CrowFXzY.js.gz +0 -0
  83. package/dist/client/assets/diagram-S7CK7UJ4-e7Jn-RGH.js +30 -0
  84. package/dist/client/assets/diagram-S7CK7UJ4-e7Jn-RGH.js.br +0 -0
  85. package/dist/client/assets/diagram-S7CK7UJ4-e7Jn-RGH.js.gz +0 -0
  86. package/dist/client/assets/diagram-UQ7AKVKN-B1G-uMf2.js +41 -0
  87. package/dist/client/assets/diagram-UQ7AKVKN-B1G-uMf2.js.br +0 -0
  88. package/dist/client/assets/diagram-UQ7AKVKN-B1G-uMf2.js.gz +0 -0
  89. package/dist/client/assets/{diagram-FQU43EPY-CA9ZCbUn.js → diagram-VSXAHHWV-cp7u53yF.js} +3 -3
  90. package/dist/client/assets/diagram-VSXAHHWV-cp7u53yF.js.br +0 -0
  91. package/dist/client/assets/diagram-VSXAHHWV-cp7u53yF.js.gz +0 -0
  92. package/dist/client/assets/diagram-VX7I27RA-DJWrVfMd.js +24 -0
  93. package/dist/client/assets/diagram-VX7I27RA-DJWrVfMd.js.br +0 -0
  94. package/dist/client/assets/diagram-VX7I27RA-DJWrVfMd.js.gz +0 -0
  95. package/dist/client/assets/diagram-Z3DM3KII-B-IZbqzJ.js +24 -0
  96. package/dist/client/assets/diagram-Z3DM3KII-B-IZbqzJ.js.br +0 -0
  97. package/dist/client/assets/diagram-Z3DM3KII-B-IZbqzJ.js.gz +0 -0
  98. package/dist/client/assets/diffWorker-CAzvFFr7.js +27 -0
  99. package/dist/client/assets/diffWorker-CAzvFFr7.js.br +0 -0
  100. package/dist/client/assets/diffWorker-CAzvFFr7.js.gz +0 -0
  101. package/dist/client/assets/{ebnfDiagram-CCIWWBDH-C01FJ1W6.js → ebnfDiagram-PWID7BFC-Bt4zDbpn.js} +1 -1
  102. package/dist/client/assets/ebnfDiagram-PWID7BFC-Bt4zDbpn.js.br +0 -0
  103. package/dist/client/assets/ebnfDiagram-PWID7BFC-Bt4zDbpn.js.gz +0 -0
  104. package/dist/client/assets/erDiagram-RLTQ6QDP-DUPOkndO.js +99 -0
  105. package/dist/client/assets/erDiagram-RLTQ6QDP-DUPOkndO.js.br +0 -0
  106. package/dist/client/assets/erDiagram-RLTQ6QDP-DUPOkndO.js.gz +0 -0
  107. package/dist/client/assets/flowDiagram-HODETNUW-CBSvTIxa.js +168 -0
  108. package/dist/client/assets/flowDiagram-HODETNUW-CBSvTIxa.js.br +0 -0
  109. package/dist/client/assets/flowDiagram-HODETNUW-CBSvTIxa.js.gz +0 -0
  110. package/dist/client/assets/ganttDiagram-EL5Y4UJY-C7BvkSc8.js +292 -0
  111. package/dist/client/assets/ganttDiagram-EL5Y4UJY-C7BvkSc8.js.br +0 -0
  112. package/dist/client/assets/ganttDiagram-EL5Y4UJY-C7BvkSc8.js.gz +0 -0
  113. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-C4v6Do2L.js +106 -0
  114. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-C4v6Do2L.js.br +0 -0
  115. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-C4v6Do2L.js.gz +0 -0
  116. package/dist/client/assets/index-BaBARzax.css +1 -0
  117. package/dist/client/assets/index-BaBARzax.css.br +0 -0
  118. package/dist/client/assets/index-BaBARzax.css.gz +0 -0
  119. package/dist/client/assets/{index-Ca-rq7yX.js → index-UqXCGE5m.js} +4 -4
  120. package/dist/client/assets/index-UqXCGE5m.js.br +0 -0
  121. package/dist/client/assets/index-UqXCGE5m.js.gz +0 -0
  122. package/dist/client/assets/infoDiagram-27XIBGKW-CVQtEdgb.js +2 -0
  123. package/dist/client/assets/{ishikawaDiagram-FXEZZL3T-B_RdP3jn.js → ishikawaDiagram-5VMMS53U-Cf7tUoyW.js} +5 -5
  124. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Cf7tUoyW.js.br +0 -0
  125. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Cf7tUoyW.js.gz +0 -0
  126. package/dist/client/assets/{journeyDiagram-5HDEW3XC-B2nObc7o.js → journeyDiagram-3NMN7TZE-B-9CWrlr.js} +5 -5
  127. package/dist/client/assets/journeyDiagram-3NMN7TZE-B-9CWrlr.js.br +0 -0
  128. package/dist/client/assets/journeyDiagram-3NMN7TZE-B-9CWrlr.js.gz +0 -0
  129. package/dist/client/assets/{kanban-definition-HUTT4EX6-7b37SN5M.js → kanban-definition-UXKFOSKX-LDN2IZeo.js} +7 -7
  130. package/dist/client/assets/kanban-definition-UXKFOSKX-LDN2IZeo.js.br +0 -0
  131. package/dist/client/assets/kanban-definition-UXKFOSKX-LDN2IZeo.js.gz +0 -0
  132. package/dist/client/assets/katex-55ZPZeOF.css.br +0 -0
  133. package/dist/client/assets/katex-55ZPZeOF.css.gz +0 -0
  134. package/dist/client/assets/katex-DnlPpQZa.js.br +0 -0
  135. package/dist/client/assets/katex-DnlPpQZa.js.gz +0 -0
  136. package/dist/client/assets/katex-HP8lGamR.js.br +0 -0
  137. package/dist/client/assets/katex-HP8lGamR.js.gz +0 -0
  138. package/dist/client/assets/layout-DvqSuFgF.js +1 -0
  139. package/dist/client/assets/layout-DvqSuFgF.js.br +0 -0
  140. package/dist/client/assets/layout-DvqSuFgF.js.gz +0 -0
  141. package/dist/client/assets/{linear-6VNI0WmU.js → linear-D43LQnis.js} +1 -1
  142. package/dist/client/assets/linear-D43LQnis.js.br +0 -0
  143. package/dist/client/assets/linear-D43LQnis.js.gz +0 -0
  144. package/dist/client/assets/mermaid.core-DiblHLKe.js +308 -0
  145. package/dist/client/assets/mermaid.core-DiblHLKe.js.br +0 -0
  146. package/dist/client/assets/mermaid.core-DiblHLKe.js.gz +0 -0
  147. package/dist/client/assets/{mindmap-definition-LN4V7U3C-DjuOw0RL.js → mindmap-definition-YA3MSWOX-k3f4uWuu.js} +3 -3
  148. package/dist/client/assets/mindmap-definition-YA3MSWOX-k3f4uWuu.js.br +0 -0
  149. package/dist/client/assets/mindmap-definition-YA3MSWOX-k3f4uWuu.js.gz +0 -0
  150. package/dist/client/assets/ordinal-Cboi1Yqb.js.br +0 -0
  151. package/dist/client/assets/ordinal-Cboi1Yqb.js.gz +0 -0
  152. package/dist/client/assets/{pegDiagram-2B236MQR-CflwKQn8.js → pegDiagram-XKGWAZYB-Dj32Fl3j.js} +1 -1
  153. package/dist/client/assets/pegDiagram-XKGWAZYB-Dj32Fl3j.js.br +0 -0
  154. package/dist/client/assets/pegDiagram-XKGWAZYB-Dj32Fl3j.js.gz +0 -0
  155. package/dist/client/assets/pieDiagram-E7YTZNPT-DWGSixfl.js +39 -0
  156. package/dist/client/assets/pieDiagram-E7YTZNPT-DWGSixfl.js.br +0 -0
  157. package/dist/client/assets/pieDiagram-E7YTZNPT-DWGSixfl.js.gz +0 -0
  158. package/dist/client/assets/purify.es-4eNOHKSq.js +3 -0
  159. package/dist/client/assets/purify.es-4eNOHKSq.js.br +0 -0
  160. package/dist/client/assets/purify.es-4eNOHKSq.js.gz +0 -0
  161. package/dist/client/assets/{quadrantDiagram-ABIIQ3AL-XlkePQlX.js → quadrantDiagram-AXDQQJYC-BPScfZWR.js} +1 -1
  162. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BPScfZWR.js.br +0 -0
  163. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BPScfZWR.js.gz +0 -0
  164. package/dist/client/assets/railroadDiagram-O6MQD6OU-CL00HIC2.js +1 -0
  165. package/dist/client/assets/railroadDiagram-O6MQD6OU-CL00HIC2.js.br +0 -0
  166. package/dist/client/assets/railroadDiagram-O6MQD6OU-CL00HIC2.js.gz +0 -0
  167. package/dist/client/assets/react-XDCjal2T.js.br +0 -0
  168. package/dist/client/assets/react-XDCjal2T.js.gz +0 -0
  169. package/dist/client/assets/{requirementDiagram-TGXJPOKE-DQzmk2Py.js → requirementDiagram-BXWQKSXE-CosES4L6.js} +12 -12
  170. package/dist/client/assets/requirementDiagram-BXWQKSXE-CosES4L6.js.br +0 -0
  171. package/dist/client/assets/requirementDiagram-BXWQKSXE-CosES4L6.js.gz +0 -0
  172. package/dist/client/assets/sankeyDiagram-P5KCCOFB-CjM8CYFn.js +40 -0
  173. package/dist/client/assets/sankeyDiagram-P5KCCOFB-CjM8CYFn.js.br +0 -0
  174. package/dist/client/assets/sankeyDiagram-P5KCCOFB-CjM8CYFn.js.gz +0 -0
  175. package/dist/client/assets/{sequenceDiagram-DBY2YBRQ-COlWE5v4.js → sequenceDiagram-WJ2MYXX4-3RKv_35o.js} +1 -1
  176. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-3RKv_35o.js.br +0 -0
  177. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-3RKv_35o.js.gz +0 -0
  178. package/dist/client/assets/{sizeCapture-X5ZJPWSS-BAyWY8FR.js → sizeCapture-INFHLROL-BrVkA4VD.js} +1 -1
  179. package/dist/client/assets/sizeCapture-INFHLROL-BrVkA4VD.js.br +0 -0
  180. package/dist/client/assets/sizeCapture-INFHLROL-BrVkA4VD.js.gz +0 -0
  181. package/dist/client/assets/sparkles-B3pwUd8-.js +1 -0
  182. package/dist/client/assets/stateDiagram-D77RDMKH-DeWhyAVC.js +1 -0
  183. package/dist/client/assets/stateDiagram-D77RDMKH-DeWhyAVC.js.br +0 -0
  184. package/dist/client/assets/stateDiagram-D77RDMKH-DeWhyAVC.js.gz +0 -0
  185. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-DvdrGmTm.js +1 -0
  186. package/dist/client/assets/swimlanes-42K2YHIH-i2m0Wmhn.js +1 -0
  187. package/dist/client/assets/swimlanes-42K2YHIH-i2m0Wmhn.js.br +0 -0
  188. package/dist/client/assets/swimlanes-42K2YHIH-i2m0Wmhn.js.gz +0 -0
  189. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DIzij9pB.js +8 -0
  190. package/dist/client/assets/terminal-C7X98Amf.js.br +0 -0
  191. package/dist/client/assets/terminal-C7X98Amf.js.gz +0 -0
  192. package/dist/client/assets/{timeline-definition-FHXFAJF6-CBpp3qTq.js → timeline-definition-24CTP7MA-BImN0AS_.js} +1 -1
  193. package/dist/client/assets/timeline-definition-24CTP7MA-BImN0AS_.js.br +0 -0
  194. package/dist/client/assets/timeline-definition-24CTP7MA-BImN0AS_.js.gz +0 -0
  195. package/dist/client/assets/vennDiagram-4TSXK5OY-DVUHKmvC.js +34 -0
  196. package/dist/client/assets/vennDiagram-4TSXK5OY-DVUHKmvC.js.br +0 -0
  197. package/dist/client/assets/vennDiagram-4TSXK5OY-DVUHKmvC.js.gz +0 -0
  198. package/dist/client/assets/{wardleyDiagram-EHGQE667-BgYh502A.js → wardleyDiagram-VM6X3IG4-B9qi-hc7.js} +4 -4
  199. package/dist/client/assets/wardleyDiagram-VM6X3IG4-B9qi-hc7.js.br +0 -0
  200. package/dist/client/assets/wardleyDiagram-VM6X3IG4-B9qi-hc7.js.gz +0 -0
  201. package/dist/client/assets/xychartDiagram-S5SC5T6Z-3jgBcYVl.js +7 -0
  202. package/dist/client/assets/xychartDiagram-S5SC5T6Z-3jgBcYVl.js.br +0 -0
  203. package/dist/client/assets/xychartDiagram-S5SC5T6Z-3jgBcYVl.js.gz +0 -0
  204. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-38-022d7c89c800.woff2 +0 -0
  205. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-39-63f8fa5b3eba.woff2 +0 -0
  206. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3a-2d8d46cc4dca.woff2 +0 -0
  207. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3b-e75aed5d3969.woff2 +0 -0
  208. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c-ac2534aae681.woff2 +0 -0
  209. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c0-8c49a98e75c4.woff2 +0 -0
  210. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c1-971c5e7a86ce.woff2 +0 -0
  211. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c2-e5c4893acfb9.woff2 +0 -0
  212. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c3-156f2560c871.woff2 +0 -0
  213. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c4-49f0d18a7492.woff2 +0 -0
  214. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c5-33d81ad28c5c.woff2 +0 -0
  215. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3c6-5c301879d053.woff2 +0 -0
  216. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-icons-3d-52c90894de44.woff2 +0 -0
  217. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Bold-text-9e8d9df2dd02.woff2 +0 -0
  218. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-38-7942d3c93afb.woff2 +0 -0
  219. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-39-19989a2be535.woff2 +0 -0
  220. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3a-7786ff4a4dd9.woff2 +0 -0
  221. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3b-a759fd623d7e.woff2 +0 -0
  222. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c-2a1178076740.woff2 +0 -0
  223. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c0-6f2c7518f354.woff2 +0 -0
  224. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c1-4bf64cae9dd2.woff2 +0 -0
  225. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c2-7f26d4c7240b.woff2 +0 -0
  226. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c3-fc8e5a85d620.woff2 +0 -0
  227. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c4-91819b7977d3.woff2 +0 -0
  228. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c5-26933eec54e2.woff2 +0 -0
  229. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3c6-af186404c8af.woff2 +0 -0
  230. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-icons-3d-b004d85f5642.woff2 +0 -0
  231. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-BoldItalic-text-da002b4e56d3.woff2 +0 -0
  232. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-38-b3e69191d92f.woff2 +0 -0
  233. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-39-c4d8d66882cb.woff2 +0 -0
  234. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3a-27609324e8a3.woff2 +0 -0
  235. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3b-5e73d85d7506.woff2 +0 -0
  236. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c-7e535d65bbdb.woff2 +0 -0
  237. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c0-6465060a06a1.woff2 +0 -0
  238. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c1-9fd72ccd9350.woff2 +0 -0
  239. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c2-ea7dd77de270.woff2 +0 -0
  240. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c3-12808f88907a.woff2 +0 -0
  241. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c4-14b598e5e739.woff2 +0 -0
  242. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c5-3d40530ce6c2.woff2 +0 -0
  243. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3c6-7020aec0d9e1.woff2 +0 -0
  244. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-icons-3d-19831897003a.woff2 +0 -0
  245. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Italic-text-b7a9c776b048.woff2 +0 -0
  246. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-38-a637901140d8.woff2 +0 -0
  247. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-39-838726e8eeca.woff2 +0 -0
  248. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3a-ec149087d0b9.woff2 +0 -0
  249. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3b-db8e5a24d580.woff2 +0 -0
  250. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c-2290d2ad4621.woff2 +0 -0
  251. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c0-3b9edaf85d65.woff2 +0 -0
  252. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c1-5e7fb0696bbc.woff2 +0 -0
  253. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c2-cfad2884adf5.woff2 +0 -0
  254. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c3-d641de88278b.woff2 +0 -0
  255. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c4-3b0227356b3b.woff2 +0 -0
  256. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c5-9dc67c4d20b4.woff2 +0 -0
  257. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3c6-c5b444110c62.woff2 +0 -0
  258. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-icons-3d-2b19b65bb43a.woff2 +0 -0
  259. package/dist/client/fonts/terminal/JetBrainsMonoNLNerdFontMono-Regular-text-d7b9316fdf4f.woff2 +0 -0
  260. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-4e-46bdca5c323f.woff2 +0 -0
  261. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-4f-17200dc0dd0d.woff2 +0 -0
  262. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-50-370e36250c30.woff2 +0 -0
  263. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-51-66352f738581.woff2 +0 -0
  264. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-52-191f4025d2b5.woff2 +0 -0
  265. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-53-fb0a637c39bf.woff2 +0 -0
  266. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-54-66f2e72c9ca0.woff2 +0 -0
  267. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-55-54b538fd4fd8.woff2 +0 -0
  268. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-56-88f45aeb2030.woff2 +0 -0
  269. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-57-154d4324f0ce.woff2 +0 -0
  270. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-58-1660c86b8a05.woff2 +0 -0
  271. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-59-31a4c5afa3aa.woff2 +0 -0
  272. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5a-fa1d1941710e.woff2 +0 -0
  273. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5b-031a2b2ebeb7.woff2 +0 -0
  274. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5c-065b634c07b3.woff2 +0 -0
  275. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5d-71f6cd3ed180.woff2 +0 -0
  276. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5e-f59de7a6e5c5.woff2 +0 -0
  277. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-5f-8cbe737b6011.woff2 +0 -0
  278. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-60-22913526da09.woff2 +0 -0
  279. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-61-c810c1d1a3a3.woff2 +0 -0
  280. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-62-9464d5d87d65.woff2 +0 -0
  281. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-63-79564d99f5da.woff2 +0 -0
  282. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-64-4b7cff1dae6f.woff2 +0 -0
  283. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-65-8dd48db5e297.woff2 +0 -0
  284. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-66-a808e22a3d14.woff2 +0 -0
  285. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-67-ae5f61af3f79.woff2 +0 -0
  286. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-68-a46bf47bd9ba.woff2 +0 -0
  287. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-69-28210414eafb.woff2 +0 -0
  288. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6a-6bfb1f5e4fb7.woff2 +0 -0
  289. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6b-39be890e04e4.woff2 +0 -0
  290. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6c-79a4ff740d98.woff2 +0 -0
  291. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6d-2de5a763980e.woff2 +0 -0
  292. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6e-8e55b339244d.woff2 +0 -0
  293. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-6f-a56caf9fc7fc.woff2 +0 -0
  294. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-70-d70c6ee8e03c.woff2 +0 -0
  295. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-71-ac6f5f86dfef.woff2 +0 -0
  296. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-72-db3d346ecc61.woff2 +0 -0
  297. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-73-e7371bd71f0b.woff2 +0 -0
  298. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-74-43946d9b2f0b.woff2 +0 -0
  299. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-75-ea7cf53e31fa.woff2 +0 -0
  300. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-76-04c7fa4e0ebf.woff2 +0 -0
  301. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-77-24d70898f6b8.woff2 +0 -0
  302. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-78-c6a5d7135296.woff2 +0 -0
  303. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-79-7812cb6432aa.woff2 +0 -0
  304. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7a-6e123be5cd36.woff2 +0 -0
  305. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7b-a183ddc6890f.woff2 +0 -0
  306. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7c-0895291ece9c.woff2 +0 -0
  307. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7d-1d44252384cf.woff2 +0 -0
  308. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7e-7be4dc6f056e.woff2 +0 -0
  309. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-7f-0d8e987db151.woff2 +0 -0
  310. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-80-c0c154bb8be0.woff2 +0 -0
  311. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-81-5343baca5ce7.woff2 +0 -0
  312. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-82-6d89af9614ce.woff2 +0 -0
  313. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-83-fa17ef529c5b.woff2 +0 -0
  314. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-84-287ecb493fad.woff2 +0 -0
  315. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-85-fea695c48165.woff2 +0 -0
  316. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-86-8bb35373cb82.woff2 +0 -0
  317. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-87-f83e9f70a6cc.woff2 +0 -0
  318. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-88-894cd19292c1.woff2 +0 -0
  319. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-89-2903a6eaf546.woff2 +0 -0
  320. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8a-3ce275bfcf96.woff2 +0 -0
  321. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8b-3aaeb26309a6.woff2 +0 -0
  322. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8c-719b6608b746.woff2 +0 -0
  323. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8d-a7f1ccd0dfb7.woff2 +0 -0
  324. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8e-d503ad5c4958.woff2 +0 -0
  325. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-8f-18c6d04746c8.woff2 +0 -0
  326. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-90-e9d94d915dfe.woff2 +0 -0
  327. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-91-c258b07ec626.woff2 +0 -0
  328. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-92-e4833a556b60.woff2 +0 -0
  329. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-94-0889f5b84499.woff2 +0 -0
  330. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-95-7ef116efe7ee.woff2 +0 -0
  331. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-96-afbc0d2cacda.woff2 +0 -0
  332. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-97-df3903d86f65.woff2 +0 -0
  333. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-98-0f21094931ee.woff2 +0 -0
  334. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-99-eb95f4bead58.woff2 +0 -0
  335. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-9a-764e8b8723ec.woff2 +0 -0
  336. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-9b-33a540b9196a.woff2 +0 -0
  337. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-9c-60d6040aa049.woff2 +0 -0
  338. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-9e-4a64c65bf44d.woff2 +0 -0
  339. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-cjk-9f-4d84fba11345.woff2 +0 -0
  340. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Bold-Subset-punctuation-f1b7708e797a.woff2 +0 -0
  341. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-4e-bb1ec5541ecc.woff2 +0 -0
  342. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-4f-d6e8daa67360.woff2 +0 -0
  343. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-50-63c2ae7f85e8.woff2 +0 -0
  344. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-51-41b6e0624888.woff2 +0 -0
  345. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-52-57de15003b8d.woff2 +0 -0
  346. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-53-94382657e2bc.woff2 +0 -0
  347. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-54-177141086f32.woff2 +0 -0
  348. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-55-5ec6fae9813a.woff2 +0 -0
  349. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-56-720aa493b429.woff2 +0 -0
  350. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-57-a8884711a286.woff2 +0 -0
  351. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-58-42a3e7e1fe9a.woff2 +0 -0
  352. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-59-887ee4253daa.woff2 +0 -0
  353. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-5a-c45806889e3c.woff2 +0 -0
  354. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-5b-da142b99dca9.woff2 +0 -0
  355. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-5c-2bb495e5b511.woff2 +0 -0
  356. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-5d-9da87d6061f2.woff2 +0 -0
  357. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-5e-e4010764e593.woff2 +0 -0
  358. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-5f-a9c9021f6e01.woff2 +0 -0
  359. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-60-306f229a68e0.woff2 +0 -0
  360. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-61-6e4546c5f52a.woff2 +0 -0
  361. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-62-a73e47933059.woff2 +0 -0
  362. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-63-e8f49f472799.woff2 +0 -0
  363. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-64-37b54957eadc.woff2 +0 -0
  364. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-65-2742b20127ad.woff2 +0 -0
  365. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-66-239656e7fe56.woff2 +0 -0
  366. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-67-5dfa72b26c3f.woff2 +0 -0
  367. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-68-fe3d1fc05aae.woff2 +0 -0
  368. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-69-22535dbbd090.woff2 +0 -0
  369. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-6a-c4117cd520aa.woff2 +0 -0
  370. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-6b-895d3349f7de.woff2 +0 -0
  371. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-6c-56a0c71eb1b4.woff2 +0 -0
  372. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-6d-9ec807661604.woff2 +0 -0
  373. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-6e-3b633363cd57.woff2 +0 -0
  374. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-6f-91a1f1c31b75.woff2 +0 -0
  375. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-70-3a904a2a2371.woff2 +0 -0
  376. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-71-e8efb60879b0.woff2 +0 -0
  377. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-72-591318b99498.woff2 +0 -0
  378. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-73-d8f444050aa7.woff2 +0 -0
  379. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-74-55a832a12d7e.woff2 +0 -0
  380. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-75-660977996a4c.woff2 +0 -0
  381. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-76-441a04df9fb5.woff2 +0 -0
  382. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-77-5915143c4398.woff2 +0 -0
  383. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-78-242fbc33c745.woff2 +0 -0
  384. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-79-24d13953150a.woff2 +0 -0
  385. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-7a-41973af74017.woff2 +0 -0
  386. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-7b-f9661fdaf003.woff2 +0 -0
  387. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-7c-ef5167770bf7.woff2 +0 -0
  388. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-7d-d84ad5d95f37.woff2 +0 -0
  389. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-7e-66841a1c6381.woff2 +0 -0
  390. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-7f-5090e017351a.woff2 +0 -0
  391. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-80-9ad74a67c2b9.woff2 +0 -0
  392. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-81-423a60a6dcf1.woff2 +0 -0
  393. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-82-aad812217807.woff2 +0 -0
  394. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-83-3dc74dbac89c.woff2 +0 -0
  395. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-84-68db7802ffe8.woff2 +0 -0
  396. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-85-fa235a7160e4.woff2 +0 -0
  397. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-86-75a6a33d0db2.woff2 +0 -0
  398. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-87-7d98ea8ce063.woff2 +0 -0
  399. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-88-363fa8f178aa.woff2 +0 -0
  400. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-89-f2d185e8721f.woff2 +0 -0
  401. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-8a-e372253a07f5.woff2 +0 -0
  402. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-8b-0af53db9bdc1.woff2 +0 -0
  403. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-8c-6a43d3643480.woff2 +0 -0
  404. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-8d-09c4b5345b99.woff2 +0 -0
  405. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-8e-122a752954a6.woff2 +0 -0
  406. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-8f-c651bbfffeb3.woff2 +0 -0
  407. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-90-ab0a5fef3083.woff2 +0 -0
  408. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-91-e07b5cbe4792.woff2 +0 -0
  409. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-92-cba0a8ee6758.woff2 +0 -0
  410. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-94-e7a6bd14e248.woff2 +0 -0
  411. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-95-420f721d52ba.woff2 +0 -0
  412. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-96-90fd476b83f2.woff2 +0 -0
  413. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-97-34036fc287f7.woff2 +0 -0
  414. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-98-5c3cdd76911e.woff2 +0 -0
  415. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-99-73e6090fd7c8.woff2 +0 -0
  416. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-9a-673ebaebe683.woff2 +0 -0
  417. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-9b-90a5a3ee22d6.woff2 +0 -0
  418. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-9c-116d201c978b.woff2 +0 -0
  419. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-9e-78db36865caa.woff2 +0 -0
  420. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-cjk-9f-27e8d16243d5.woff2 +0 -0
  421. package/dist/client/fonts/terminal/NotoSansMonoCJKsc-Subset-punctuation-a4288065ed29.woff2 +0 -0
  422. package/dist/client/fonts/terminal/manifest.json +1349 -0
  423. package/dist/client/fonts/terminal/manifest.json.br +0 -0
  424. package/dist/client/fonts/terminal/manifest.json.gz +0 -0
  425. package/dist/client/icons/agents/claude.svg.br +0 -0
  426. package/dist/client/icons/agents/claude.svg.gz +0 -0
  427. package/dist/client/icons/agents/codex.svg.br +0 -0
  428. package/dist/client/icons/agents/codex.svg.gz +0 -0
  429. package/dist/client/icons/agents/copilot.svg.br +0 -0
  430. package/dist/client/icons/agents/copilot.svg.gz +0 -0
  431. package/dist/client/icons/agents/droid.svg.br +0 -0
  432. package/dist/client/icons/agents/droid.svg.gz +0 -0
  433. package/dist/client/icons/agents/gemini.svg.br +0 -0
  434. package/dist/client/icons/agents/gemini.svg.gz +0 -0
  435. package/dist/client/icons/agents/goose.svg.br +0 -0
  436. package/dist/client/icons/agents/goose.svg.gz +0 -0
  437. package/dist/client/index.html +7 -52
  438. package/dist/client/index.html.br +0 -0
  439. package/dist/client/index.html.gz +0 -0
  440. package/dist/client/sw-notifications.js.br +0 -0
  441. package/dist/client/sw-notifications.js.gz +0 -0
  442. package/dist/client/sw.js +1 -1
  443. package/dist/client/sw.js.br +0 -0
  444. package/dist/client/sw.js.gz +0 -0
  445. package/dist/client/workbox-9845bf53.js.br +0 -0
  446. package/dist/client/workbox-9845bf53.js.gz +0 -0
  447. package/dist/server/agent/installers.js +47 -27
  448. package/dist/server/cli.js +4 -4
  449. package/dist/server/entry.js +57 -145
  450. package/dist/server/routes/auth.js +9 -3
  451. package/dist/server/routes/filesystem.js +39 -9
  452. package/dist/server/routes/local.js +3 -2
  453. package/dist/server/routes/terminal.js +337 -225
  454. package/dist/server/utils/apiAccess.js +27 -0
  455. package/dist/server/utils/apiCachePolicy.js +10 -0
  456. package/dist/server/utils/authProtection.js +140 -38
  457. package/dist/server/utils/cookieSecurity.js +3 -2
  458. package/dist/server/utils/csrfProtection.js +2 -6
  459. package/dist/server/utils/previewValidation.js +16 -0
  460. package/dist/server/utils/publicSecurity.js +44 -0
  461. package/dist/server/utils/requestDeadline.js +2 -0
  462. package/dist/server/utils/requestSecurity.js +23 -28
  463. package/dist/server/utils/staticAssets.js +97 -0
  464. package/dist/server/utils/terminalClientAttachment.js +61 -0
  465. package/dist/server/utils/terminalHandshakeDimensions.js +9 -0
  466. package/dist/server/utils/terminalOutputDelivery.js +90 -0
  467. package/dist/server/utils/tmuxClientRedraw.js +16 -0
  468. package/dist/server/utils/tmuxInitialScreen.js +50 -0
  469. package/dist/server/utils/tmuxResizeReady.js +56 -0
  470. package/dist/server/utils/webSocketSecurity.js +28 -0
  471. package/package.json +7 -4
  472. package/runtime-manifest.json +4 -4
  473. package/scripts/generate-font-subsets.py +88 -0
  474. package/scripts/precompress-client.mjs +28 -0
  475. package/dist/client/assets/ModelPreview-BzNON-7A.js +0 -4108
  476. package/dist/client/assets/app-qUUCmslY.js +0 -632
  477. package/dist/client/assets/arc-Cc4T1vtw.js +0 -1
  478. package/dist/client/assets/architectureDiagram-ZJ3FMSHR-CA5578rJ.js +0 -36
  479. package/dist/client/assets/blockDiagram-677ZJIJ3-CCyKnFX-.js +0 -132
  480. package/dist/client/assets/c4Diagram-LMCZKHZV-SjGfmHL4.js +0 -10
  481. package/dist/client/assets/channel-DsQFJkms.js +0 -1
  482. package/dist/client/assets/chunk-32BRIVSS-CF9O6bVF.js +0 -1
  483. package/dist/client/assets/chunk-RYQCIY6F-DaVQTtgL.js +0 -1
  484. package/dist/client/assets/chunk-VR4S4FIN-DEcVDuQJ.js +0 -1
  485. package/dist/client/assets/classDiagram-OUVF2IWQ-BiBG6J-j.js +0 -1
  486. package/dist/client/assets/classDiagram-v2-EOCWNBFH-BiBG6J-j.js +0 -1
  487. package/dist/client/assets/cynefinDiagram-TSTJHNR4-DGjbhF2-.js +0 -62
  488. package/dist/client/assets/dagre-VKFMJZFB-CoLOphm4.js +0 -4
  489. package/dist/client/assets/diagram-G47NLZAW-BpR2yCdT.js +0 -24
  490. package/dist/client/assets/diagram-NH7WQ7WH-DIZpypfO.js +0 -24
  491. package/dist/client/assets/diagram-OA4YK3LP-S9oRNVSL.js +0 -30
  492. package/dist/client/assets/diagram-WEI45ONY-Dv-XqhXv.js +0 -41
  493. package/dist/client/assets/diffWorker-Bg2YXCD-.js +0 -27
  494. package/dist/client/assets/erDiagram-Q63AITRT-CMDd2A57.js +0 -85
  495. package/dist/client/assets/flowDiagram-23GEKE2U-Bu5kfa1t.js +0 -156
  496. package/dist/client/assets/ganttDiagram-NO4QXBWP-tfVpOhLu.js +0 -292
  497. package/dist/client/assets/gitGraphDiagram-IHSO6WYX-CWM8oPLo.js +0 -106
  498. package/dist/client/assets/graph-D2o_JWn5.js +0 -1
  499. package/dist/client/assets/index-C13NrW5y.css +0 -1
  500. package/dist/client/assets/infoDiagram-FWYZ7A6U-CYuG0BfG.js +0 -2
  501. package/dist/client/assets/layout-1eBIAoSl.js +0 -1
  502. package/dist/client/assets/map-BdqsVdb3.js +0 -1
  503. package/dist/client/assets/mermaid.core-BMGv3SNm.js +0 -306
  504. package/dist/client/assets/pieDiagram-ENE6RG2P-Dp5j3kXt.js +0 -39
  505. package/dist/client/assets/purify.es-CC4Brkr_.js +0 -3
  506. package/dist/client/assets/railroadDiagram-RFXS5EU6-Dzq5SEwb.js +0 -1
  507. package/dist/client/assets/sankeyDiagram-HTMAVEWB-Yuu-Dn7F.js +0 -40
  508. package/dist/client/assets/stateDiagram-2N3HPSRC-DE_g6UKp.js +0 -1
  509. package/dist/client/assets/stateDiagram-v2-6OUMAXLB-CuFHnjvX.js +0 -1
  510. package/dist/client/assets/swimlanes-5IMT3BWC-SdPYQWPe.js +0 -2
  511. package/dist/client/assets/swimlanesDiagram-G3AALYLV-f7M07VuB.js +0 -8
  512. package/dist/client/assets/vennDiagram-L72KCM5P-Cfm5mfc0.js +0 -34
  513. package/dist/client/assets/xychartDiagram-FW5EYKEG-mAm5oI6Y.js +0 -7
  514. package/dist/client/registerSW.js +0 -1
@@ -0,0 +1,2 @@
1
+ import{a0 as K,aJ as ce,as as s,e as le,n as de,I as me,g as he}from"./app-tT08GaCs.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as xe}from"./sparkles-B3pwUd8-.js";const ue=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],fe=K("chevron-left",ue);const pe=[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]],ye=K("git-branch",pe);const ge=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"m21 3-7 7",key:"1l2asr"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M9 21H3v-6",key:"wtvkvv"}]],be=K("maximize-2",ge);const ke=[["path",{d:"m14 10 7-7",key:"oa77jy"}],["path",{d:"M20 10h-6V4",key:"mjg0md"}],["path",{d:"m3 21 7-7",key:"tjx5ai"}],["path",{d:"M4 14h6v6",key:"rmj7iw"}]],ve=K("minimize-2",ke);function Ne(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function we(t){switch(t){case"entry":case"source":return"bg-sky-400";case"ui":return"bg-fuchsia-400";case"risk":return"bg-destructive";case"test":return"bg-emerald-400";default:return"bg-primary"}}function je(t){if(!t)return;const d=typeof t.sectionIndex=="number"?` section ${t.sectionIndex+1}`:"",i=typeof t.hunkIndex=="number"?` hunk ${t.hunkIndex+1}`:"";return`${t.filePath}${i}${d}`}function J({anchor:t,children:d,onNavigate:i,className:o,style:r,elementRef:g,onActivate:l}){return!t&&!l?s.jsx("span",{ref:g,className:o,style:r,children:d}):s.jsx("button",{ref:g,type:"button",onClick:()=>{l?.(),t&&i(t)},title:je(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const R=190,U=92,Q=132,Me=28,C=16,ee=18,X=54,te=24,ae=18,Ee=8,z=24,B=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function ne(t){return B[t%B.length]}function _e(t,d){return`${t.from}->${t.to}:${d}`}function $e(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(U,36+Math.max(0,o-1)*ae)}function se(t,d,i){if(i<=1)return t.y+t.height/2;const o=Math.max(0,t.height-36),r=Math.min(o,(i-1)*ae);return t.y+t.height/2-r/2+r/(i-1)*d}function oe(t,d,i){return t.slice().sort((o,r)=>{const g=d[o],l=d[r],a=i==="from"?g.toNode:g.fromNode,h=i==="from"?l.toNode:l.fromNode;return a.y-h.y||a.index-h.index||g.index-l.index})}function De(t,d){const i=new Map;for(const o of t){if(Math.abs(o.toNode.layer-o.fromNode.layer)!==1)continue;const r=`${o.fromNode.layer}:${o.toNode.layer}`,g=i.get(r)??[];g.push(o),i.set(r,g)}for(const o of i.values()){o.sort((h,u)=>(h.fromY+h.toY)/2-(u.fromY+u.toY)/2||h.index-u.index);const r=[];o.forEach((h,u)=>{const N=(h.fromY+h.toY)/2,M=Math.max(z,d[h.key]??0)/2;if(u===0){r.push(N);return}const w=o[u-1],E=Math.max(z,d[w.key]??0)/2;r.push(Math.max(N,r[u-1]+E+M+Ee))});const g=r.reduce((h,u,N)=>h+u-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,u)=>h-g-Math.max(z,d[o[u].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,u)=>{h.laneY=r[u]-g+a})}}function Ie(t,d,i={},o={}){const r=new Map(t.map((n,m)=>[n.id,{node:n,index:m}])),g=d.filter(n=>r.has(n.from)&&r.has(n.to)),l=new Map,a=new Map;for(const n of t)l.set(n.id,[]),a.set(n.id,[]);for(const n of g)l.get(n.to)?.push(n.from),a.get(n.from)?.push(n.to);const h=new Map,u=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(u.has(n))return 0;u.add(n);const c=l.get(n)??[],x=c.length===0?0:Math.max(...c.map(N))+1;return u.delete(n),h.set(n,x),x};for(const n of t)N(n.id);const M=new Map;for(const n of t){const m=h.get(n.id)??0,c=M.get(m)??[],x=r.get(n.id);x&&c.push(x),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((x,f)=>x.index-f.index);let c=C+X;m.forEach(({node:x,index:f},j)=>{const I=Math.max($e(x.id,l,a),Math.ceil(i[x.id]??U));w.push({node:x,index:f,layer:n,row:j,x:C+n*(R+Q),y:c,height:I}),c+=I+Me})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),x=E.get(n.to);return!c||!x?[]:[{...n,key:_e(n,m),index:m,fromNode:c,toNode:x,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:x.y+x.height/2,laneY:(c.y+c.height/2+x.y+x.height/2)/2}]}),_=new Map,G=new Map;v.forEach((n,m)=>{_.set(n.from,[..._.get(n.from)??[],m]),G.set(n.to,[...G.get(n.to)??[],m])});for(const[n,m]of _){const c=oe(m,v,"from");c.forEach((x,f)=>{const j=v[x];j.fromPortIndex=f,j.fromY=se(E.get(n),f,c.length)})}for(const[n,m]of G){const c=oe(m,v,"to");c.forEach((x,f)=>{const j=v[x];j.toPortIndex=f,j.toY=se(E.get(n),f,c.length)})}De(v,o);let Y=0;v.forEach(n=>{const m=Math.min(n.fromNode.layer,n.toNode.layer),c=Math.max(n.fromNode.layer,n.toNode.layer);if(c-m<=1)return;const f=Y;Y+=1,n.routeIndex=f;const j=w.filter(A=>A.layer>=m&&A.layer<=c),I=Math.min(...j.map(A=>A.y))-te-(Math.floor(f/2)+1)*ee,S=Math.max(...j.map(A=>A.y+A.height))+te+(Math.floor(f/2)+1)*ee;n.laneY=f%2===0?Math.max(C,I):S});const O=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+X+U,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(z,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(O+1)*R+O*Q,height:W+C+X}}function re(t,d=12){const i=t[0];if(!i)return"";const o=[`M ${i.x} ${i.y}`];for(let r=1;r<t.length;r+=1){const g=t[r-1],l=t[r],a=t[r+1];if(!a){o.push(`L ${l.x} ${l.y}`);continue}const h=l.x-g.x,u=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(u),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||u&&M){o.push(`L ${l.x} ${l.y}`);continue}const v=Math.min(d,w/2,E/2),_={x:l.x-Math.sign(h)*v,y:l.y-Math.sign(u)*v},G={x:l.x+Math.sign(N)*v,y:l.y+Math.sign(M)*v};o.push(`L ${_.x} ${_.y}`),o.push(`Q ${l.x} ${l.y} ${G.x} ${G.y}`)}return o.join(" ")}function Ae(t){const d=t.fromNode.x+R+8,i=t.fromY,o=t.toNode.x-8,r=t.toY,g=Math.abs(t.toNode.layer-t.fromNode.layer),l=d+22+t.fromPortIndex*5,a=o-22-t.toPortIndex*5;return g<=1?re([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}]):re([{x:d,y:i},{x:l,y:i},{x:l,y:t.laneY},{x:a,y:t.laneY},{x:a,y:r},{x:o,y:r}])}function Ge(t){const d=t.fromNode.x+R+8,i=t.toNode.x-8,o=Math.abs(t.toNode.layer-t.fromNode.layer),r=Math.max(34,Math.abs(i-d));return o<=1?{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(72,Math.min(108,r-34))}:{x:(d+i)/2,y:t.laneY,maxWidth:Math.max(84,Math.min(120,r*.3))}}function Ce({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=Ne(t,d),h=D.useRef(new Map),u=D.useRef(new Map),[N,M]=D.useState({}),[w,E]=D.useState({}),[v,_]=D.useState(null),[G,Y]=D.useState(null),[O,W]=D.useState(null),[n,m]=D.useState(null),c=D.useMemo(()=>a?Ie(a.nodes,a.edges,N,w):null,[N,w,a]);if(D.useLayoutEffect(()=>{if(!a)return;const e={};for(const p of a.nodes){const b=h.current.get(p.id);b&&(e[p.id]=b.offsetHeight)}M(p=>{const b=Object.keys(p),$=Object.keys(e);return b.length===$.length&&$.every(k=>p[k]===e[k])?p:e});const y={};for(const[p,b]of u.current)y[p]=b.offsetHeight;E(p=>{const b=Object.keys(p),$=Object.keys(y);return b.length===$.length&&$.every(k=>p[k]===y[k])?p:y})},[a]),!a||!c)return null;const x=`walkthrough-arrow-${l.replace(/[^a-zA-Z0-9_-]/g,"")||"default"}`,f=O??n,j=f?null:v??G,I=c.edges.some(e=>e.key===j)?j:null,S=c.edges.find(e=>e.key===I),A=f?c.edges.filter(e=>e.from===f||e.to===f):[],V=f?new Set(A.map(e=>e.key)):null,q=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):S?new Set([S.from,S.to]):null,T=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??T.get(e.id)),H=L.findIndex(e=>e.id===n),F=e=>{if(L.length===0)return;const y=H<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,H+e)),p=L[y],b=p.anchor??T.get(p.id);b&&(m(p.id),Y(null),i(b))};return s.jsxs("section",{className:"mb-2 px-0 py-0",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[s.jsx("span",{className:"flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-primary/12 text-primary",children:s.jsx(xe,{size:14})}),s.jsxs("div",{className:"min-w-0 flex-1",children:[s.jsx("div",{className:"whitespace-normal break-words text-[12px] font-semibold leading-snug text-foreground",children:a.title}),a.summary&&s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:a.summary})]}),s.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[o&&L.length>0&&s.jsxs(s.Fragment,{children:[s.jsx("button",{type:"button",onClick:()=>F(-1),disabled:H===0,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Previous change","aria-label":"Previous change",children:s.jsx(fe,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[H<0?"—":H+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>F(1),disabled:H===L.length-1,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95 disabled:pointer-events-none disabled:opacity-30",title:"Next change","aria-label":"Next change",children:s.jsx(le,{size:15})})]}),r&&s.jsx("button",{type:"button",onClick:r,className:"inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:o?"Exit full-screen DAG review":"Review from DAG in full screen","aria-label":o?"Exit full-screen DAG review":"Review from DAG in full screen",children:o?s.jsx(ve,{size:15}):s.jsx(be,{size:15})})]})]}),a.highlights.length>0&&s.jsx("div",{className:"mt-2 grid gap-1.5",children:a.highlights.slice(0,4).map((e,y)=>s.jsxs("div",{className:"rounded-md bg-surface-2 px-2 py-1.5",children:[s.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.tag&&s.jsx("span",{className:"shrink-0 rounded bg-surface-elevated px-1.5 py-0.5 text-[9px] font-semibold text-primary",children:e.tag}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.what})]}),s.jsx("div",{className:"mt-0.5 text-[10px] leading-snug text-muted-foreground",children:e.effect})]},`${e.what}-${y}`))}),a.nodes.length>0&&s.jsxs("div",{className:"mt-2",children:[s.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2 text-[10px] text-muted-foreground",children:[s.jsxs("div",{className:"flex items-center gap-1.5 font-semibold uppercase tracking-[0.12em]",children:[s.jsx(ye,{size:11}),"DAG"]}),a.edges.some(e=>e.label?.trim())&&s.jsx("span",{className:"normal-case tracking-normal",children:g("diffViewer.focusPathHint")})]}),s.jsx("div",{className:"overflow-x-auto rounded-md border border-border/15 bg-surface-2 p-1.5",onWheel:e=>e.stopPropagation(),children:s.jsxs("div",{className:"relative",style:{width:c.width,height:c.height},children:[s.jsxs("svg",{className:"absolute inset-0",width:c.width,height:c.height,"aria-hidden":"true",children:[s.jsx("defs",{children:B.map((e,y)=>s.jsx("marker",{id:`${x}-${y}`,viewBox:"0 0 10 10",refX:"8.5",refY:"5",markerWidth:"5",markerHeight:"5",orient:"auto",markerUnits:"strokeWidth",children:s.jsx("path",{d:"M0,0 L10,5 L0,10 Z",fill:e})},e))}),c.edges.map(e=>{const y=Ae(e),p=ne(e.index),b=I===e.key||!!V?.has(e.key),$=!!((I||f)&&!b);return s.jsxs("g",{className:"transition-opacity duration-150",style:{opacity:$?.3:1},children:[s.jsx("path",{className:"pointer-events-none",d:y,fill:"none",stroke:"var(--surface-2)",strokeWidth:b?7:5,strokeLinecap:"round"}),s.jsx("path",{className:"pointer-events-none transition-[stroke-width,opacity] duration-150",d:y,fill:"none",stroke:p,strokeWidth:b?3:1.8,strokeLinecap:"round",markerEnd:`url(#${x}-${e.index%B.length})`}),s.jsx("path",{"data-dag-edge":e.key,d:y,fill:"none",stroke:"transparent",strokeWidth:"14",className:"cursor-pointer",onPointerEnter:()=>_(e.key),onPointerLeave:()=>_(k=>k===e.key?null:k),onClick:()=>{m(null),Y(k=>k===e.key?null:e.key)}}),s.jsx("circle",{className:"pointer-events-none",cx:e.fromNode.x+R+8,cy:e.fromY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"}),s.jsx("circle",{className:"pointer-events-none",cx:e.toNode.x-8,cy:e.toY,r:b?4:3,fill:p,stroke:"var(--surface-2)",strokeWidth:"2"})]},e.key)})]}),c.edges.map(e=>{const y=e.label?.trim();if(!y)return null;const{x:p,y:b,maxWidth:$}=Ge(e),k=ne(e.index),Z=I===e.key||!!V?.has(e.key),ie=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?u.current.set(e.key,P):u.current.delete(e.key)},type:"button","data-dag-edge-label":e.key,className:"absolute -translate-x-1/2 -translate-y-1/2 whitespace-normal break-words rounded-md border bg-surface-elevated px-1.5 py-1 text-center text-[9px] leading-[11px] shadow-sm transition-[opacity,box-shadow,transform] duration-150 [overflow-wrap:anywhere] hover:shadow-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/60",style:{left:p,top:b,maxWidth:$,width:"max-content",borderColor:k,color:k,opacity:ie?.38:1,boxShadow:Z?`0 0 0 2px ${k}, 0 6px 18px rgb(0 0 0 / 0.24)`:void 0},title:`${e.fromNode.index+1} ${e.fromNode.node.title} → ${e.toNode.index+1} ${e.toNode.node.title}${e.desc?`
2
+ ${e.desc}`:""}`,"aria-pressed":G===e.key,onPointerEnter:()=>_(e.key),onPointerLeave:()=>_(P=>P===e.key?null:P),onClick:()=>{m(null),Y(P=>P===e.key?null:e.key)},children:[s.jsxs("span",{className:"block font-bold tabular-nums",children:[e.fromNode.index+1," → ",e.toNode.index+1]}),s.jsx("span",{className:"block text-muted-foreground",children:y})]},`${e.key}-label`)}),c.nodes.map(({node:e,index:y,x:p,y:b,height:$})=>s.jsxs(J,{elementRef:k=>{k?h.current.set(e.id,k):h.current.delete(e.id)},anchor:e.anchor??T.get(e.id),onActivate:()=>{m(e.id),Y(null)},onNavigate:i,className:`absolute overflow-hidden rounded-lg border bg-surface/95 px-2.5 py-2 text-foreground shadow-[0_10px_24px_rgba(0,0,0,0.18)] transition-[opacity,border-color,box-shadow] duration-150 ${q?.has(e.id)?"border-primary/60 shadow-[0_0_0_1px_rgb(var(--primary-rgb)/0.28),0_10px_24px_rgba(0,0,0,0.22)]":q?"border-border/15 opacity-40":"border-border/25"}`,style:{left:p,top:b,width:R,minHeight:$},children:[s.jsx("span",{className:"absolute inset-0",onPointerEnter:()=>W(e.id),onPointerLeave:()=>W(k=>k===e.id?null:k)}),s.jsx("span",{className:`pointer-events-none absolute bottom-2 left-0 top-2 w-[3px] rounded-r-full ${we(e.kind)}`}),s.jsxs("div",{className:"pointer-events-none relative flex min-w-0 items-center gap-1.5",children:[s.jsx("span",{className:"flex h-4 w-4 shrink-0 items-center justify-center rounded-full bg-primary/15 text-[9px] font-bold text-primary",children:y+1}),s.jsx("span",{className:"min-w-0 flex-1 whitespace-normal break-words text-[11px] font-semibold leading-snug text-foreground",children:e.title}),e.anchor&&s.jsx(de,{size:11,className:"shrink-0 opacity-70"})]}),e.kind&&s.jsx("div",{className:"pointer-events-none relative mt-0.5 truncate text-[9px] font-semibold uppercase tracking-[0.08em] text-muted-foreground/80",children:e.kind}),s.jsx("div",{className:"pointer-events-none relative mt-0.5 whitespace-normal break-words text-[10px] leading-snug text-muted-foreground",children:e.business})]},e.id))]})})]}),(a.risks.length>0||a.checks.length>0)&&s.jsxs("div",{className:"mt-2 grid gap-1.5",children:[a.risks.slice(0,3).map((e,y)=>s.jsxs(J,{anchor:e.anchor,onNavigate:i,className:"flex w-full items-start gap-1.5 rounded-md border border-[rgb(var(--warning-rgb)_/_0.25)] bg-[rgb(var(--warning-rgb)_/_0.10)] px-2 py-1.5 text-[10px] text-muted-foreground",children:[s.jsx(me,{size:12,className:"mt-0.5 shrink-0 text-[color:var(--warning)]"}),s.jsx("span",{className:"min-w-0 whitespace-normal break-words leading-snug",children:e.title})]},`${e.title}-${y}`)),a.checks.slice(0,3).map((e,y)=>s.jsxs("div",{className:"flex items-start gap-1.5 rounded-md bg-surface-2 px-2 py-1.5 text-[10px] text-muted-foreground",children:[s.jsx(he,{size:12,className:"mt-0.5 shrink-0 text-primary"}),s.jsx("span",{className:"min-w-0 whitespace-normal break-words leading-snug",children:e})]},`${e}-${y}`))]})]})}export{Ce as C,ye as G,be as M,ve as a};
@@ -0,0 +1 @@
1
+ import{as as t}from"./app-tT08GaCs.js";import{C as s}from"./ChangeWalkthroughPanel-u9y3e-pI.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-B3pwUd8-.js";const e="/tmp/termdock-dag-playground",i={version:1,id:"dag-playground",repoRoot:e,workspaceRoot:e,title:"改动解释升级为可点击导览",summary:"这是一页免登录 playground,用真实 ChangeWalkthroughPanel 调 DAG 的节点、边、label 和密度。",generatedBy:"dag-playground",injectedAt:Date.now(),highlights:[{what:"先看总览,再看链路",effect:"读者不用先进入 diff,也能理解整批改动目的。",tag:"理解"},{what:"多条链路直接画出来",effect:"分支、汇合、验证路径不再靠 next 文本猜。",tag:"链路"},{what:"点击节点跳回证据",effect:"导览和真实 diff 之间形成闭环。",tag:"导航"}],nodes:[{id:"export",title:"导出 section 级 diff",kind:"source",business:"CLI 把 hunk 拆成多个连续改动 section,并为每个 section 生成稳定 fingerprint。这里故意写长一点,用来验证 DAG 节点是否会按照真实文本高度撑开,而不是被固定高度裁掉。",anchor:{repoRoot:e,filePath:"src/server/cli.ts",hunkIndex:0,sectionIndex:0}},{id:"prompt",title:"约束 AI 输出",kind:"process",business:"提示词要求先写总览,再逐 section 生成解释。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/RightSidebar.tsx",hunkIndex:0}},{id:"schema",title:"校验导览结构",kind:"process",business:"检查节点、边和锚点字段是否完整。",anchor:{repoRoot:e,filePath:"src/server/utils/changeAuditStore.ts",hunkIndex:0}},{id:"fallback",title:"补齐兼容字段",kind:"process",business:"旧版结果缺字段时生成稳定回退值。",anchor:{repoRoot:e,filePath:"src/server/utils/changeAuditStore.ts",hunkIndex:1}},{id:"store",title:"保存整批导览结构",kind:"process",business:"服务端把 walkthrough 作为一等数据持久化。",anchor:{repoRoot:e,filePath:"src/server/utils/changeAuditStore.ts",hunkIndex:0}},{id:"api",title:"前端读取总览",kind:"api",business:"一次请求拿到 records 和 walkthroughs。",anchor:{repoRoot:e,filePath:"src/lib/terminal/api.ts",hunkIndex:0}},{id:"panel",title:"渲染 DAG 导览",kind:"ui",business:"用节点和边表达实现链路,节点可点击。节点内容可能是一两句话,也可能包含较长的业务解释;布局需要先测量 DOM 高度,再重新计算每一行节点的 y 坐标和连线端点。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/ChangeWalkthroughPanel.tsx",hunkIndex:0}},{id:"jump",title:"跳回真实 diff",kind:"ui",business:"点击节点后定位到文件、hunk 或 section。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/RightSidebar.tsx",hunkIndex:1}},{id:"section",title:"贴近改动展示解释",kind:"ui",business:"section 解释跟在对应 diff 块后面,而不是堆在 hunk 顶部。这个节点也故意写得更长,用来观察右侧分支和下方验证节点的连线是否会避让变高后的卡片。",anchor:{repoRoot:e,filePath:"src/lib/components/sidebar/DiffViewer.tsx",hunkIndex:0,sectionIndex:1}},{id:"verify",title:"验证导出和注入",kind:"test",business:"跑 lint、install、health、资源检查和注入自测。"}],edges:[{from:"export",to:"prompt",label:"提供输入",desc:"sectionFingerprint 让 AI 可以稳定引用。"},{from:"export",to:"schema",label:"结构校验",desc:"先确认输入可以稳定落库。"},{from:"export",to:"fallback",label:"兼容旧数据",desc:"为历史记录补齐必要字段。"},{from:"prompt",to:"store",label:"注入",desc:"AI payload 写回本地服务。"},{from:"schema",to:"store",label:"通过后保存",desc:"合法结构进入存储层。"},{from:"fallback",to:"store",label:"归一化后保存",desc:"兼容数据与新数据走同一链路。"},{from:"store",to:"api",label:"读取",desc:"浏览器从服务端拿到导览。"},{from:"api",to:"panel",label:"渲染",desc:"结构化数据变成导览图。"},{from:"panel",to:"jump",label:"点击",desc:"节点驱动 diff 定位。"},{from:"jump",to:"section",label:"定位",desc:"落到对应 section 解释。"},{from:"export",to:"verify",label:"验证",desc:"导出结构要覆盖 tracked/untracked。"},{from:"section",to:"verify",label:"回归",desc:"确认展示位置和交互。"}],sections:[],risks:[{title:"边和 label 不能遮住节点主体。"},{title:"窄侧栏下横向滚动要可控。"}],checks:["在 360px、560px、900px 宽度下截图检查。","确认边的箭头、label 背板和节点层级清楚。","确认节点点击区域和 hover 状态可感知。"]};function h(){return t.jsx("div",{className:"min-h-screen bg-background p-5 text-foreground","data-dag-playground":!0,children:t.jsxs("div",{className:"mx-auto max-w-[72rem]",children:[t.jsxs("div",{className:"mb-3",children:[t.jsx("h1",{className:"text-sm font-semibold",children:"DAG Playground"}),t.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"Auth-free playground for tuning the real ChangeWalkthroughPanel."})]}),t.jsxs("div",{className:"grid gap-4 lg:grid-cols-[360px_minmax(0,1fr)]",children:[t.jsx("div",{className:"min-w-0",children:t.jsx(s,{walkthroughs:[i],repoRoot:e,onNavigate:o=>{console.info("[DagPlayground] navigate",o)}})}),t.jsx("div",{className:"min-w-0",children:t.jsx(s,{walkthroughs:[i],repoRoot:e,onNavigate:o=>{console.info("[DagPlayground] navigate",o)}})})]})]})})}export{h as DagPlayground};
@@ -0,0 +1,370 @@
1
+ import{as as t}from"./app-tT08GaCs.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as k,S as C,D as _}from"./DiffViewer-CxxOpsVz.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";const u={kotlin:{label:"Kotlin function signature + callback",path:"SearchHintIconHelper.kt",diff:`diff --git a/SearchHintIconHelper.kt b/SearchHintIconHelper.kt
2
+ --- a/SearchHintIconHelper.kt
3
+ +++ b/SearchHintIconHelper.kt
4
+ @@ -43,15 +43,20 @@ object SearchHintIconHelper {
5
+
6
+ /** _________________________ Hybrid 标 _________________________ **/
7
+
8
+ - fun buildNinePatchHybridIcon(alpha: Int, searchHintBeen: SearchHintBeen?, url: String, appendString: String?, tv: EditText, iconLeftMargin: Int, rootView: ViewGroup?, isSaaS: Boolean? = false) {
9
+ + fun buildNinePatchHybridIcon(alpha: Int, searchHintBeen: SearchHintBeen?, url: String, appendString: String?, tv: EditText, iconLeftMargin: Int, rootView: ViewGroup?, isSaaS: Boolean? = false, shouldAttach: () -> Boolean = { true }) {
10
+ val ninePatchTV = buildNinePatchTextView(
11
+ text = SearchHintIconStrategy.getHintIconText(searchHintBeen),
12
+ color = SearchHintIconStrategy.getHintIconTextColor(searchHintBeen),
13
+ )
14
+ ResizableImageLoader.loadResizableImage(ninePatchTV, url, object :
15
+ ResizableImageLoader.LoadResizableImageCallback {
16
+ override fun onSuccess(ninePatchDrawable: NinePatchDrawable) {
17
+ + if (!shouldAttach()) {
18
+ + return
19
+ + }
20
+ createTagView(alpha, appendString, tv, iconLeftMargin, rootView, isSaaS, ninePatchTV, null)
21
+ }
22
+ })
23
+ @@ -79,7 +84,7 @@ object SearchHintIconHelper {
24
+ rootView?.addView(ninePatchTV)
25
+ ninePatchTV.setOnClickListener {
26
+ - tracker.reportClick(searchHintBeen, url)
27
+ + tracker.reportClick(searchHintBeen, url, source = "hint_icon")
28
+ }
29
+ }`},formatting:{label:"Formatting and whitespace noise",path:"settings.ts",diff:`diff --git a/settings.ts b/settings.ts
30
+ --- a/settings.ts
31
+ +++ b/settings.ts
32
+ @@ -10,14 +10,16 @@ export function normalizeSettings(input: Partial<Settings>): Settings {
33
+ - return { theme: input.theme ?? 'dark', fontSize: input.fontSize ?? 13, wrap: input.wrap ?? true };
34
+ + return {
35
+ + theme: input.theme ?? 'dark',
36
+ + fontSize: input.fontSize ?? 13,
37
+ + wrap: input.wrap ?? true,
38
+ + };
39
+ }
40
+
41
+ export function isEnabled(value: string | null): boolean {
42
+ - return value === '1' || value === 'true' || value === 'yes'
43
+ + return value === '1' || value === 'true' || value === 'yes';
44
+ }
45
+
46
+ export const DEFAULT_FILTERS = [
47
+ - 'node_modules', 'dist', 'coverage',
48
+ + 'node_modules',
49
+ + 'dist',
50
+ + 'coverage',
51
+ ];`},json:{label:"JSON long-line mutation",path:"payload.json",diff:`diff --git a/payload.json b/payload.json
52
+ --- a/payload.json
53
+ +++ b/payload.json
54
+ @@ -1,9 +1,11 @@
55
+ {
56
+ "workspaceRoot": "/Users/bytedance/vscode/termdock",
57
+ - "mode": "basic",
58
+ + "mode": "advanced",
59
+ "features": {
60
+ "diff": true,
61
+ - "inline": "chars"
62
+ + "inline": "words",
63
+ + "split": true,
64
+ + "ignoreWhitespace": "trim"
65
+ },
66
+ - "updatedAt": 1783660000
67
+ + "updatedAt": 1783661200
68
+ }`},moved:{label:"Moved block + small edits",path:"DiffToolbar.tsx",diff:`diff --git a/DiffToolbar.tsx b/DiffToolbar.tsx
69
+ --- a/DiffToolbar.tsx
70
+ +++ b/DiffToolbar.tsx
71
+ @@ -1,28 +1,32 @@
72
+ export function DiffToolbar({ settings, onChange }: Props) {
73
+ - const inlineOptions = [
74
+ - { value: 'words', label: 'Words' },
75
+ - { value: 'chars', label: 'Characters' },
76
+ - { value: 'none', label: 'Off' },
77
+ - ];
78
+ -
79
+ const algorithmOptions = [
80
+ { value: 'default', label: 'Default' },
81
+ + { value: 'histogram', label: 'Histogram' },
82
+ { value: 'patience', label: 'Patience' },
83
+ - { value: 'histogram', label: 'Histogram' },
84
+ ];
85
+
86
+ const whitespaceOptions = [
87
+ { value: 'default', label: 'All' },
88
+ { value: 'trim', label: 'Trim' },
89
+ { value: 'ignore', label: 'Ignore' },
90
+ + { value: 'ignore-blank-lines', label: 'No blank lines' },
91
+ ];
92
+
93
+ + const inlineOptions = [
94
+ + { value: 'words', label: 'Words' },
95
+ + { value: 'chars', label: 'Characters' },
96
+ + { value: 'none', label: 'Off' },
97
+ + ];
98
+ +
99
+ return (
100
+ <div className="toolbar">
101
+ - <Select label="Inline" value={settings.inline} options={inlineOptions} onChange={onChange.inline} />
102
+ <Select label="Algorithm" value={settings.algorithm} options={algorithmOptions} onChange={onChange.algorithm} />
103
+ <Select label="Whitespace" value={settings.whitespace} options={whitespaceOptions} onChange={onChange.whitespace} />
104
+ + <Select label="Inline" value={settings.inline} options={inlineOptions} onChange={onChange.inline} />
105
+ </div>
106
+ );
107
+ }`},imports:{label:"Import-only noise",path:"SearchPresenter.kt",diff:`diff --git a/SearchPresenter.kt b/SearchPresenter.kt
108
+ --- a/SearchPresenter.kt
109
+ +++ b/SearchPresenter.kt
110
+ @@ -1,10 +1,11 @@
111
+ package com.example.search
112
+
113
+ -import com.example.search.model.OldWord
114
+ import com.example.search.model.SuggestWord
115
+ +import com.example.search.model.SearchHint
116
+ import com.example.search.tracker.SearchTracker
117
+ +import com.example.search.util.SearchSession
118
+ import kotlinx.coroutines.CoroutineScope
119
+ -import kotlinx.coroutines.Job
120
+ +import kotlinx.coroutines.SupervisorJob
121
+
122
+ class SearchPresenter(
123
+ private val tracker: SearchTracker,
124
+ )`},importTypeExpansion:{label:"Same-line import type expansion",path:"DiffStreamItem.tsx",diff:`diff --git a/src/lib/components/sidebar/DiffStreamItem.tsx b/src/lib/components/sidebar/DiffStreamItem.tsx
125
+ --- a/src/lib/components/sidebar/DiffStreamItem.tsx
126
+ +++ b/src/lib/components/sidebar/DiffStreamItem.tsx
127
+ @@ -1,6 +1,6 @@
128
+ import { useEffect, useState, useRef } from 'react';
129
+ -import type { ChangeAuditRecord, GitChangedFile } from '../../terminal/api';
130
+ -import { DiffViewer, type DiffViewType } from './DiffViewer';
131
+ +import type { ChangeAuditRecord, GitChangedFile, GitDiffOptions } from '../../terminal/api';
132
+ +import { DiffViewer, type DiffInlineMode, type DiffViewType } from './DiffViewer';
133
+
134
+ export interface DiffStreamFile {
135
+ path: string;`},commentContext:{label:"Kotlin block comment across hunks",path:"CommentContext.kt",oldSource:`class CommentContext {
136
+ /**
137
+ * Explains old behavior.
138
+ */
139
+ fun activeValue(): String {
140
+ return "old"
141
+ }
142
+
143
+ /**
144
+ * A second comment that ends before the next function.
145
+ */
146
+ fun nextValue(): String {
147
+ return "next"
148
+ }
149
+ }`,diff:`diff --git a/CommentContext.kt b/CommentContext.kt
150
+ --- a/CommentContext.kt
151
+ +++ b/CommentContext.kt
152
+ @@ -1,8 +1,8 @@
153
+ class CommentContext {
154
+ /**
155
+ - * Explains old behavior.
156
+ + * Explains new behavior.
157
+ */
158
+ fun activeValue(): String {
159
+ - return "old"
160
+ + return "new"
161
+ }
162
+
163
+ @@ -10,6 +10,9 @@ class CommentContext {
164
+ * A second comment that ends before the next function.
165
+ */
166
+ fun nextValue(): String {
167
+ - return "next"
168
+ + val value = "next"
169
+ + println(value)
170
+ + return value
171
+ }
172
+ }`},insertThenModify:{label:"Insert block then modify next line",path:"InsertThenModify.ts",diff:`diff --git a/InsertThenModify.ts b/InsertThenModify.ts
173
+ --- a/InsertThenModify.ts
174
+ +++ b/InsertThenModify.ts
175
+ @@ -1,7 +1,10 @@
176
+ export function buildConfig(input: Input): Config {
177
+ const config = createBaseConfig(input);
178
+ + config.enableDiffLab = true;
179
+ + config.inlineMode = 'words';
180
+ + config.algorithm = 'histogram';
181
+ - config.timeoutMs = 1000;
182
+ + config.timeoutMs = 1500;
183
+ config.retry = 2;
184
+ return config;
185
+ }`},unrelatedReplacement:{label:"Unrelated replacement lines",path:"UnrelatedReplacement.ts",diff:`diff --git a/UnrelatedReplacement.ts b/UnrelatedReplacement.ts
186
+ --- a/UnrelatedReplacement.ts
187
+ +++ b/UnrelatedReplacement.ts
188
+ @@ -1,5 +1,5 @@
189
+ export function updateSession(request: Request) {
190
+ - const retries = calculateRetryBudget(request);
191
+ + notifyObservers(session.status);
192
+ return session;
193
+ }`},repeatedScaffolding:{label:"Repeated code with one real replacement",path:"RepeatedScaffolding.ts",diff:`diff --git a/RepeatedScaffolding.ts b/RepeatedScaffolding.ts
194
+ --- a/RepeatedScaffolding.ts
195
+ +++ b/RepeatedScaffolding.ts
196
+ @@ -1,6 +1,7 @@
197
+ export function renderItems(items: Item[]) {
198
+ - items.map((item) => renderLegacy(item));
199
+ - items.map((item) => renderLegacy(item));
200
+ + logger.debug('rendering modern items');
201
+ + items.map((item) => renderModern(item));
202
+ + items.map((item) => renderLegacy(item));
203
+ flushRenderQueue();
204
+ }`},movedAndEdited:{label:"Moved block across hunks with an edit",path:"MovedAndEdited.ts",diff:`diff --git a/MovedAndEdited.ts b/MovedAndEdited.ts
205
+ --- a/MovedAndEdited.ts
206
+ +++ b/MovedAndEdited.ts
207
+ @@ -1,8 +1,5 @@
208
+ export function run(input: Input) {
209
+ - const timeoutMs = config.timeoutMs;
210
+ - return runTask(timeoutMs);
211
+ -
212
+ prepare(input);
213
+ return execute(input);
214
+ }
215
+ @@ -20,4 +17,7 @@ export function configure(config: Config) {
216
+ validate(config);
217
+ + const timeoutMs = config.timeoutMs;
218
+ + return runTask(timeoutMs, signal);
219
+ +
220
+ persist(config);
221
+ }`},ifWrapper:{label:"Wrap an unchanged block in an if",path:"TaskRunner.ts",diff:`diff --git a/TaskRunner.ts b/TaskRunner.ts
222
+ --- a/TaskRunner.ts
223
+ +++ b/TaskRunner.ts
224
+ @@ -8,7 +8,9 @@ export function runTask(input: Input) {
225
+ const context = createContext(input);
226
+ - prepare(context);
227
+ - executeTask(context);
228
+ - finish(context);
229
+ + if (shouldRun(context)) {
230
+ + prepare(context);
231
+ + executeTask(context);
232
+ + finish(context);
233
+ + }
234
+ return context;
235
+ }`},loopNesting:{label:"Reorder nested loops while preserving the inner block",path:"BlockRanges.ts",diff:`diff --git a/BlockRanges.ts b/BlockRanges.ts
236
+ --- a/BlockRanges.ts
237
+ +++ b/BlockRanges.ts
238
+ @@ -1,8 +1,9 @@
239
+ function projectBlockRanges(ranges: InlineDiffRange[], block: BlockText) {
240
+ - for (const range of ranges) {
241
+ - const rangeEnd = range.start + range.length;
242
+ - for (const line of block.lines) {
243
+ + for (const line of block.lines) {
244
+ + const lineRanges: InlineDiffRange[] = [];
245
+ + for (const range of ranges) {
246
+ + const rangeEnd = range.start + range.length;
247
+ const start = Math.max(range.start, line.start);
248
+ const end = Math.min(rangeEnd, line.end);
249
+ if (end <= start) continue;
250
+ }`},addedFile:{label:"Entirely added file",path:"NewFeature.ts",diff:`diff --git a/NewFeature.ts b/NewFeature.ts
251
+ new file mode 100644
252
+ --- /dev/null
253
+ +++ b/NewFeature.ts
254
+ @@ -0,0 +1,5 @@
255
+ +export function newFeature(): string {
256
+ + const status = 'ready';
257
+ + announce(status);
258
+ + return status;
259
+ +}`},deletedFile:{label:"Entirely deleted file",path:"LegacyFeature.ts",diff:`diff --git a/LegacyFeature.ts b/LegacyFeature.ts
260
+ deleted file mode 100644
261
+ --- a/LegacyFeature.ts
262
+ +++ /dev/null
263
+ @@ -1,5 +0,0 @@
264
+ -export function legacyFeature(): string {
265
+ - const status = 'deprecated';
266
+ - warn(status);
267
+ - return status;
268
+ -}`},renameOnly:{label:"Rename without content changes",path:"NewName.ts",diff:`diff --git a/OldName.ts b/NewName.ts
269
+ similarity index 100%
270
+ rename from OldName.ts
271
+ rename to NewName.ts`},renamedWithEdit:{label:"Rename with a content edit",path:"NewConfig.ts",diff:`diff --git a/OldConfig.ts b/NewConfig.ts
272
+ similarity index 88%
273
+ rename from OldConfig.ts
274
+ rename to NewConfig.ts
275
+ --- a/OldConfig.ts
276
+ +++ b/NewConfig.ts
277
+ @@ -1,3 +1,3 @@
278
+ export const config = {
279
+ - timeoutMs: 1000,
280
+ + timeoutMs: 1500,
281
+ };`},binaryFile:{label:"Binary file changed",path:"preview.png",diff:`diff --git a/preview.png b/preview.png
282
+ index 1111111..2222222 100644
283
+ Binary files a/preview.png and b/preview.png differ`},blankAndTabs:{label:"Blank lines + tabs/spaces only",path:"Whitespace.ts",diff:`diff --git a/Whitespace.ts b/Whitespace.ts
284
+ --- a/Whitespace.ts
285
+ +++ b/Whitespace.ts
286
+ @@ -1,6 +1,6 @@
287
+ export function whitespace() {
288
+ - const value = readValue();
289
+ -
290
+ + const value = readValue();
291
+ +
292
+ return value;
293
+ }`.replace(/\n/gu,`\r
294
+ `)},noFinalNewline:{label:"No final newline marker",path:"NoFinalNewline.txt",diff:`diff --git a/NoFinalNewline.txt b/NoFinalNewline.txt
295
+ --- a/NoFinalNewline.txt
296
+ +++ b/NoFinalNewline.txt
297
+ @@ -1 +1 @@
298
+ -status=old
299
+ \
300
+ +status=new
301
+ \`},unicodeGraphemes:{label:"CJK + emoji + combining marks",path:"messages.ts",diff:`diff --git a/messages.ts b/messages.ts
302
+ --- a/messages.ts
303
+ +++ b/messages.ts
304
+ @@ -1,5 +1,5 @@
305
+ export const messages = {
306
+ - status: '正在连接 👩‍💻 café',
307
+ + status: '连接成功 👩🏽‍💻 café',
308
+ action: '继续',
309
+ };`},longLine:{label:"Very long line with one mutation",path:"generated.ts",diff:`diff --git a/generated.ts b/generated.ts
310
+ --- a/generated.ts
311
+ +++ b/generated.ts
312
+ @@ -1,3 +1,3 @@
313
+ export const generated = {
314
+ - payload: "${"stable-segment-".repeat(90)}OLD_VALUE${"-stable-tail".repeat(35)}",
315
+ + payload: "${"stable-segment-".repeat(90)}NEW_VALUE${"-stable-tail".repeat(35)}",
316
+ };`},ambiguousDuplicates:{label:"Ambiguous duplicate lines",path:"DuplicatePipeline.ts",diff:`diff --git a/DuplicatePipeline.ts b/DuplicatePipeline.ts
317
+ --- a/DuplicatePipeline.ts
318
+ +++ b/DuplicatePipeline.ts
319
+ @@ -1,8 +1,9 @@
320
+ export function pipeline(item: Item) {
321
+ - process(item);
322
+ - process(item);
323
+ - saveLegacy(item);
324
+ - process(item);
325
+ + process(item);
326
+ + audit(item);
327
+ + process(item);
328
+ + saveModern(item);
329
+ + process(item);
330
+ finish(item);
331
+ }`},commentStringCollision:{label:"Comment/string similarity collision",path:"RetryLogger.ts",diff:`diff --git a/RetryLogger.ts b/RetryLogger.ts
332
+ --- a/RetryLogger.ts
333
+ +++ b/RetryLogger.ts
334
+ @@ -1,6 +1,6 @@
335
+ export function reportRetry(error: Error) {
336
+ - // retry request after backoff
337
+ - logger.info('request failed');
338
+ + logger.info('retry request after backoff');
339
+ + // request failed permanently
340
+ capture(error);
341
+ }`},multiHunkMixed:{label:"Multiple hunks with mixed change types",path:"MixedChanges.ts",diff:`diff --git a/MixedChanges.ts b/MixedChanges.ts
342
+ --- a/MixedChanges.ts
343
+ +++ b/MixedChanges.ts
344
+ @@ -1,5 +1,6 @@
345
+ export function start(config: Config) {
346
+ - connect(config, 1000);
347
+ + connect(config, 1500);
348
+ + logConnection(config);
349
+ return config;
350
+ }
351
+ @@ -20,6 +21,5 @@ export function stop(session: Session) {
352
+ flush(session);
353
+ - reportLegacyMetrics(session);
354
+ disconnect(session);
355
+ return session;
356
+ }`},multiFilePatch:{label:"Multiple files in one patch",path:"First.ts",diff:`diff --git a/First.ts b/First.ts
357
+ --- a/First.ts
358
+ +++ b/First.ts
359
+ @@ -1 +1 @@
360
+ -export const first = 'old';
361
+ \
362
+ +export const first = 'new';
363
+ \
364
+ diff --git a/Second.ts b/Second.ts
365
+ new file mode 100644
366
+ --- /dev/null
367
+ +++ b/Second.ts
368
+ @@ -0,0 +1,2 @@
369
+ +export const second = true;
370
+ +announce(second);`}};function h(){if(typeof window>"u")return"kotlin";const o=new URLSearchParams(window.location.search).get("fixture");return o&&o in u?o:"kotlin"}function b(){return typeof window>"u"?"unified":new URLSearchParams(window.location.search).get("view")==="split"?"split":"unified"}function x(){if(typeof window>"u")return"words";const i=new URLSearchParams(window.location.search).get("inline");return i==="none"||i==="chars"||i==="words"?i:"words"}function w(){return typeof window>"u"?!0:new URLSearchParams(window.location.search).get("wrap")!=="off"}function L(){const[i,o]=a.useState(()=>h()),[d,c]=a.useState(()=>b()),[p,v]=a.useState(()=>k()),[f,m]=a.useState(()=>x()),[s,g]=a.useState(()=>w()),l=u[i],S=a.useMemo(()=>Object.entries(u),[]),r=d==="split"&&!p?"unified":d;return a.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const e=window.matchMedia(C),n=()=>v(e.matches);return n(),e.addEventListener?.("change",n),()=>e.removeEventListener?.("change",n)},[]),a.useEffect(()=>{if(typeof window>"u")return;let e=window.location.search;const n=()=>{window.location.search!==e&&(e=window.location.search,o(h()),c(b()),m(x()),g(w()))};window.addEventListener("popstate",n),window.addEventListener("pageshow",n),window.addEventListener("focus",n);const y=window.setInterval(n,250);return()=>{window.removeEventListener("popstate",n),window.removeEventListener("pageshow",n),window.removeEventListener("focus",n),window.clearInterval(y)}},[]),t.jsx("div",{className:"min-h-screen bg-background-subtle text-foreground","data-diff-lab":!0,"data-diff-lab-fixture":i,"data-diff-lab-view":r,"data-diff-lab-requested-view":d,"data-diff-lab-inline":f,"data-diff-lab-wrap":s?"on":"off",children:t.jsxs("div",{className:"mx-auto flex min-h-screen max-w-[1180px] flex-col px-4 py-4",children:[t.jsxs("header",{className:"mb-3 flex flex-wrap items-center justify-between gap-3 border-b border-border/20 pb-3",children:[t.jsxs("div",{children:[t.jsx("div",{className:"text-sm font-semibold",children:"Diff Lab"}),t.jsx("div",{className:"mt-0.5 text-[11px] text-muted-foreground",children:"Fixed fixtures for iterating diff rendering without app auth, PWA state, or live Git data."})]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[t.jsx("select",{value:i,onChange:e=>o(e.target.value),"aria-label":"Fixture",className:"h-8 rounded-md border border-border/30 bg-surface px-2 text-xs text-foreground outline-none",children:S.map(([e,n])=>t.jsx("option",{value:e,children:n.label},e))}),t.jsxs("div",{className:"inline-flex h-8 overflow-hidden rounded-full bg-surface-2 p-0.5",children:[t.jsx("button",{type:"button",onClick:()=>c("unified"),"aria-pressed":r==="unified",className:`rounded-full px-3 text-xs font-semibold ${r==="unified"?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:"Unified"}),t.jsx("button",{type:"button",onClick:()=>c("split"),disabled:!p,"aria-pressed":r==="split",className:`rounded-full px-3 text-xs font-semibold ${r==="split"?"bg-surface-elevated text-foreground":"text-muted-foreground"} disabled:cursor-not-allowed disabled:opacity-40`,children:"Split"})]}),t.jsx("div",{className:"inline-flex h-8 overflow-hidden rounded-full bg-surface-2 p-0.5",children:["none","words","chars"].map(e=>t.jsx("button",{type:"button",onClick:()=>m(e),className:`rounded-full px-3 text-xs font-semibold ${f===e?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:e},e))}),t.jsxs("button",{type:"button",onClick:()=>g(e=>!e),className:`h-8 rounded-full px-3 text-xs font-semibold ${s?"bg-primary/15 text-primary":"bg-surface-2 text-muted-foreground"}`,children:["Wrap ",s?"on":"off"]})]})]}),t.jsx("main",{className:"min-h-0 flex-1 overflow-auto rounded-lg border border-border/20 bg-surface",children:t.jsx(_,{filePath:l.path,repoRoot:"/tmp/termdock-diff-lab",changedFile:{path:l.path,absolutePath:`/tmp/termdock-diff-lab/${l.path}`,repoRoot:"/tmp/termdock-diff-lab",status:"modified",staged:!1,unstaged:!0,untracked:!1,tracked:!0,canStage:!1,canUnstage:!1,canStash:!1,canRestoreWorktree:!1},diffOverride:l.diff,oldSourceOverride:l.oldSource,active:!0,wrap:s,showScrollHint:!s,viewType:r,inlineMode:f})})]})})}export{u as DIFF_FIXTURES,L as DiffLab};
@@ -0,0 +1 @@
1
+ import{a0 as He,as as r,ak as tt,l as mt,e as pt,d as xt,aJ as gt,aP as vt,a3 as yt,B as bt,G as qe,aO as wt,av as kt,X as Rt,aL as Nt}from"./app-tT08GaCs.js";import{b as a,r as rt}from"./dnd-BCFAPC0L.js";import{S as nt}from"./sparkles-B3pwUd8-.js";import{D as jt,p as Dt,i as Mt}from"./DiffViewer-CxxOpsVz.js";const Tt=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],St=He("arrow-left",Tt);const It=[["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"M3 10a2 2 0 0 0 2 2h3",key:"1npucw"}],["path",{d:"M3 5v12a2 2 0 0 0 2 2h3",key:"x1gjn2"}]],Et=He("list-tree",It);const Ct=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],Ft=He("list",Ct);function st({selected:t,depth:o=0,title:i,leading:x,children:m,trailing:c,role:b,tabIndex:v,ariaExpanded:g,onClick:f,onKeyDown:y,onPointerDown:L,onPointerUp:T,onPointerCancel:E,dataAttributes:B}){return r.jsxs("div",{role:b,tabIndex:v,"aria-expanded":g,title:i,onClick:f,onKeyDown:y,onPointerDown:L,onPointerUp:T,onPointerCancel:E,...B,className:`group flex w-full cursor-pointer items-center gap-1 rounded px-2 py-1.5 text-left text-[13px] transition active:scale-[0.99] ${t?"bg-surface-elevated text-foreground":"text-muted-foreground hover:bg-surface-2 hover:text-foreground"}`,style:{paddingLeft:`${o*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:x}),r.jsx("span",{className:"min-w-0 flex-1",children:m}),c]})}function ot(t){return t.path.replace(/^\/+/,"")}function _t(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const o=t.path.split("/").filter(Boolean);return{name:o.pop()||t.path,dir:o.join("/")}}function at(t,o){const i=new Map,x=(c,b,v,g)=>{const f=c.get(b);if(f)return f;const y={path:v,name:b,childCount:0,directories:[],files:[]};return c.set(b,y),g?.directories.push(y),y};for(const c of t){const b=o(c).split("/").filter(Boolean);if(b.length<=1)continue;let v=i,g=null,f="";for(const y of b.slice(0,-1)){f=f?`${f}/${y}`:y;const L=x(v,y,f,g);g=L,v=new Map(L.directories.map(T=>[T.name,T]))}g?.files.push(c)}const m=c=>{const b=c.directories.map(m).sort((g,f)=>g.name.localeCompare(f.name)),v=c.files.sort((g,f)=>g.path.localeCompare(f.path));return{...c,directories:b,files:v,childCount:b.reduce((g,f)=>g+f.childCount,0)+v.length}};return Array.from(i.values()).map(m).sort((c,b)=>c.name.localeCompare(b.name))}function Be(t,o,i=0){const x=o.selectedKey===t.key||o.selectedKey===t.path||o.selectedKey===t.absolutePath,m=_t(t);return r.jsx(st,{selected:x,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{tt()||o.onSelectFile(t)},onKeyDown:c=>{c.key!=="Enter"&&c.key!==" "||(c.preventDefault(),o.onSelectFile(t))},leading:o.renderLeading(t),depth:i,trailing:o.renderTrailing?.(t),dataAttributes:{"data-diff-selection-path":t.key,"data-diff-file-path":t.path,"data-diff-absolute-path":t.absolutePath??"","data-diff-status":t.status},children:r.jsxs("span",{className:"select-text","data-sidebar-selectable":!0,children:[r.jsx("span",{className:`block truncate leading-snug ${x?"font-medium":""}`,children:m.name}),o.mode!=="tree"&&m.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:m.dir}),o.renderSubtitle?.(t)]})},t.key)}function ct(t,o,i,x,m){let c=t;const b=[t.name];for(;c.files.length===0&&c.directories.length===1;)c=c.directories[0],b.push(c.name);const v=b.join("/"),g=`${o}:${c.path}`,f=i.collapsedDirectoryKeys.has(g);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(st,{role:"button",tabIndex:0,onClick:()=>{tt()||i.onToggleDirectory(g)},onKeyDown:y=>{y.key!=="Enter"&&y.key!==" "||(y.preventDefault(),i.onToggleDirectory(g))},ariaExpanded:!f,depth:x,title:c.path,leading:f?r.jsx(pt,{size:13}):r.jsx(xt,{size:13}),trailing:r.jsxs("span",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("span",{className:"shrink-0 rounded bg-surface-2 px-1.5 py-0.5 text-[10px] text-muted-foreground/60 transition group-hover:text-muted-foreground",children:c.childCount}),i.renderDirectoryTrailing?.(c.path,m)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(mt,{size:14,className:"shrink-0 text-[color:var(--folder)]"}),r.jsx("span",{className:"min-w-0 flex-1 truncate leading-snug select-text","data-sidebar-selectable":!0,children:v})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[c.directories.map(y=>ct(y,o,i,x+1,m)),c.files.length>0&&r.jsx("div",{className:"space-y-px",children:c.files.map(y=>Be(y,i,x+1))})]})]},g)}function At(t,o){const i=o.getFileTreePath??ot,x=t.files.filter(c=>i(c).split("/").filter(Boolean).length<=1),m=at(t.files,i);return r.jsxs("div",{className:"space-y-px",children:[m.map(c=>ct(c,t.key,o,0,t)),x.length>0&&r.jsx("div",{className:"space-y-px",children:x.map(c=>Be(c,o))})]})}function Pt(t,o=ot){const i=[],x=c=>{for(const b of c.directories)x(b);i.push(...c.files)};for(const c of at(t,o))x(c);const m=new Set(i.map(c=>c.key));return i.push(...t.filter(c=>!m.has(c.key))),i}function zt(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(o=>{const i=!!o.header,x=!!o.collapsed;return r.jsxs("section",{className:i?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[o.header,!x&&r.jsx("div",{className:t.mode==="tree"?i?"space-y-px bg-surface/60 p-1":"space-y-px":i?"space-y-px bg-surface/60 p-1.5":"space-y-px",children:t.mode==="tree"?At(o,t):o.files.map(m=>Be(m,t))})]},o.key)})})}const Ee="termdock:diff-review:list-width:v1",Lt=120,Le=320,Ue=220,Ht=560;function Bt(t){return typeof t=="number"&&Number.isFinite(t)}function Ye(t,o){const i=Math.max(Ue,o-360),x=Math.min(Ht,i);return Math.min(x,Math.max(Ue,t))}function Wt(){return kt(Ee,Bt)??Le}function $t({list:t,detail:o,mobile:i,mobileListHeader:x,mobileDetailHeader:m,desktopListHeader:c,backLabel:b,onMobileSlideChange:v,externalSwiperRef:g,desktopLayout:f="split",onDetailScroll:y,desktopSidePanel:L,desktopListClassName:T,detailOwnsScroll:E=!1}){const{t:B}=gt(),W=a.useRef(null),$=a.useRef(null),C=a.useRef(null),[O,V]=a.useState(Wt);a.useEffect(()=>{if(i||f!=="split")return;const p=$.current;p&&V(j=>Ye(j,p.clientWidth))},[f,i]);const ne=a.useCallback(p=>{i||f!=="split"||(p.preventDefault(),C.current={startX:p.clientX,startWidth:O,pointerId:p.pointerId},p.currentTarget.setPointerCapture(p.pointerId))},[f,O,i]),ie=a.useCallback(p=>{const j=C.current;if(!j||j.pointerId!==p.pointerId)return;const P=$.current?.clientWidth??window.innerWidth,D=Ye(j.startWidth+p.clientX-j.startX,P);V(D),vt(Ee,D,Lt)},[]),se=a.useCallback(p=>{const j=C.current;if(!(!j||j.pointerId!==p.pointerId)){C.current=null,yt(Ee);try{p.currentTarget.releasePointerCapture(p.pointerId)}catch{}}},[]);if(i){const p=()=>{const w=W.current;w&&w.slideTo(1)},j=()=>{const w=W.current;w&&w.slideTo(0)},P=typeof t=="function"?t({slideToDetail:p}):t,D=typeof m=="function"?m({slideToList:j,slideToDetail:p}):m;return r.jsxs(bt,{className:"h-full min-h-0 w-full",slidesPerView:1,resistanceRatio:.45,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:".swiper-no-swiping",allowTouchMove:!1,touchAngle:75,touchStartPreventDefault:!1,onSwiper:w=>{W.current=w,g&&(g.current=w)},onSlideChange:w=>{v?.(w.activeIndex)},children:[r.jsx(qe,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[x&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:x}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:P})]})}),r.jsx(qe,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden bg-surface",children:[r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:D??r.jsxs("button",{type:"button",onClick:j,className:"inline-flex h-9 shrink-0 items-center gap-1.5 rounded-full bg-surface-2 px-3 text-xs font-semibold text-muted-foreground transition hover:bg-surface-elevated hover:text-foreground active:scale-95",children:[r.jsx(St,{size:14}),b]})}),r.jsx("div",{className:E?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:E?void 0:w=>y?.(w.currentTarget),children:o})]})})]})}const G=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?E?r.jsxs("div",{className:"termdock-native-select min-h-0 flex-1 overflow-hidden px-2 pb-[calc(env(safe-area-inset-bottom)+4.5rem)]",children:[c&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:c}),G,r.jsx("div",{className:"mt-3 h-[calc(100%-3rem)] min-h-0 overflow-hidden rounded-xl border border-border/15 bg-surface",children:o})]}):r.jsxs("div",{className:"termdock-native-select termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain px-2 pb-[calc(env(safe-area-inset-bottom)+4.5rem)]",onScroll:p=>y?.(p.currentTarget),children:[c&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:c}),G,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:o})]}):r.jsxs("div",{ref:$,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:T??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:O},children:[c&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:c}),G]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":B("diffViewer.resizeNavigation"),title:B("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:ne,onPointerMove:ie,onPointerUp:se,onPointerCancel:se,onDoubleClick:()=>{V(Le),wt(Ee,Le)},children:r.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-border/30 transition group-hover:bg-primary/60"})}),r.jsx("div",{className:E?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:E?void 0:p=>y?.(p.currentTarget),children:o})]})}function Ot({mode:t,onModeChange:o,showAi:i=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-full bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>o("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-full transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Ft,{size:13})}),r.jsx("button",{type:"button",onClick:()=>o("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-full transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Et,{size:13})}),i&&r.jsx("button",{type:"button",onClick:()=>o("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-full transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(nt,{size:13})})]})}function Vt({groups:t,mode:o,onModeChange:i,selectedKey:x,collapsedDirectoryKeys:m,onToggleDirectory:c,onSelectFile:b,renderLeading:v,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:y,detail:L,mobile:T,backLabel:E,compact:B=!1,emptyContent:W,listPrefix:$,aiContent:C,listContainerClassName:O="px-2 py-2",detailContainerClassName:V="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:ne,renderMobileDetailHeader:ie,externalSwiperRef:se,onMobileSlideChange:G,slideToDetailOnMobile:p=!0,desktopLayout:j="split",onDetailScroll:P,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:z}){const[X,oe]=a.useState(!1);a.useEffect(()=>{if(!X)return;const F=_=>{_.key==="Escape"&&oe(!1)};return document.addEventListener("keydown",F),()=>document.removeEventListener("keydown",F)},[X]);const le=r.jsx(Ot,{mode:o,onModeChange:i,showAi:!!C}),be=o==="tree"?"tree":"list",ue=ne?ne(le):r.jsx("div",{className:"flex justify-end",children:le}),de=t.some(F=>F.files.length>0),U=r.jsx($t,{mobile:X?!1:T,backLabel:E,externalSwiperRef:se,onMobileSlideChange:G,desktopLayout:X?"split":j,onDetailScroll:P,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:z,mobileListHeader:T?ue:void 0,desktopListHeader:T?void 0:ue,mobileDetailHeader:ie,list:({slideToDetail:F})=>r.jsx("div",{className:O,children:o==="ai"?typeof C=="function"?C({slideToDetail:F,fullscreen:X,toggleFullscreen:()=>oe(_=>!_)}):C??W:r.jsxs(r.Fragment,{children:[$,de?r.jsx(zt,{groups:t,selectedKey:x,mode:be,mobile:T,compact:B,collapsedDirectoryKeys:m,onToggleDirectory:c,onSelectFile:_=>{b(_),T&&p&&window.requestAnimationFrame(F)},renderLeading:v,renderTrailing:g,renderDirectoryTrailing:f,renderSubtitle:y}):W]})}),detail:r.jsx("div",{className:z?"h-full min-h-0":V,children:L})});return!X||typeof document>"u"?U:rt.createPortal(r.jsxs("div",{className:"fixed inset-0 z-modal-panel flex min-h-0 flex-col bg-surface text-foreground",children:[r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b border-border/15 bg-[var(--chrome-bg)] px-3",children:[r.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[r.jsx(nt,{size:15,className:"shrink-0 text-primary"}),r.jsx("span",{className:"truncate text-[12px] font-semibold",children:"DAG Review"}),r.jsx("span",{className:"hidden text-[10px] text-muted-foreground sm:inline",children:"Select a step to inspect its exact change"})]}),r.jsx("button",{type:"button",onClick:()=>oe(!1),className:"inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition hover:bg-surface-2 hover:text-foreground active:scale-95",title:"Exit full-screen DAG review (Esc)","aria-label":"Exit full-screen DAG review",children:r.jsx(Rt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:U})]}),document.body)}const Gt=96,Pe=44;function Xt({file:t,repoRoot:o,selectionPath:i,displayName:x,displayDir:m,selected:c,activePane:b,visible:v,reusableContent:g=!1,estimatedHeight:f,lightweight:y=!1,wrap:L,showScrollHint:T,viewType:E,inlineMode:B,diffOptions:W,reloadKey:$=0,auditRecords:C,diffOverride:O,preparedDiff:V,renderBadge:ne,onInsertDiffReference:ie,onHunkGitAction:se,onReferenceCopied:G,insertedReferenceKey:p,copiedReferenceKey:j,onClearAuditRecord:P,onContentReady:D,onHeightChange:w}){const z=a.useRef(null),X=a.useRef(null),oe=a.useRef(null),[le,be]=a.useState(null),ue=a.useRef(64),de=a.useRef(f??104),U=a.useRef(null),F=a.useRef(null),_=a.useRef(!1),ae=a.useRef(!1),A=a.useRef(null),[K,fe]=a.useState(!1),[we,Me]=a.useState(!1),ke=t.absolutePath||(o?`${o}/${t.path}`:t.path),J=a.useCallback(()=>{ae.current||(ae.current=!0,Me(!0),D?.(i))},[D,i]);a.useLayoutEffect(()=>(_.current=!1,ae.current=!1,U.current=null,F.current=null,A.current!==null&&(window.clearTimeout(A.current),A.current=null),fe(!1),Me(!1),()=>{A.current!==null&&(window.clearTimeout(A.current),A.current=null)}),[O,V,$,g,v]),a.useLayoutEffect(()=>{const k=U.current;!K||k===null||Math.abs((f??104)-k)>=1||(U.current=null,J())},[J,f,K]),a.useLayoutEffect(()=>{if(!v||!K)return;const k=oe.current;if(!k)return;const q=()=>{if(!_.current||ae.current)return;const ce=Math.ceil(Math.max(k.getBoundingClientRect().height,k.scrollHeight)),Te=ue.current;ce>0&&Te!==ce&&(ue.current=ce,be(ce));const Z=z.current;if(!Z)return;const he=X.current?.getBoundingClientRect().height??Pe,ee=Math.ceil(Math.max(Z.scrollHeight,he+ce+1));ee<=0||F.current===ee||(F.current=ee,A.current!==null&&window.clearTimeout(A.current),A.current=window.setTimeout(()=>{if(A.current=null,!_.current||ae.current)return;const I=F.current;if(I===null)return;const S=de.current;if(U.current=I,Math.abs(S-I)<1||!w){de.current=I,U.current=null,J();return}de.current=I,w(i,S,I)},Gt))};if(q(),typeof ResizeObserver>"u")return;const Ne=new ResizeObserver(q);return Ne.observe(k),()=>Ne.disconnect()},[J,w,i,K,v]);const Re=v&&!we;return r.jsxs("div",{ref:z,"data-diff-stream-item":i,"data-diff-selection-path":i,"data-diff-file-path":t.path,"data-diff-absolute-path":ke,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${Re||!v?"overflow-hidden":""} ${c?"bg-surface-elevated/35":""}`,style:v?Re?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:X,"data-diff-stream-header":!0,className:`sticky top-0 z-10 flex min-w-0 items-center gap-2 border-b border-border/15 px-3 py-2 backdrop-blur ${c?"bg-surface-elevated/95":"bg-surface/95"}`,children:[ne(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:ke,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:x}),m&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:m})]})]}),r.jsxs("div",{ref:oe,className:"relative","data-diff-stream-body":!0,style:v?{minHeight:we?64:Math.max(le??64,(f??104)-Pe)}:{height:Math.max(le??64,(f??104)-Pe)},children:[v?r.jsx(jt,{active:b,repoRoot:o,filePath:t.path,referenceFilePath:ke,changedFile:t,wrap:L,showScrollHint:T,viewType:E,inlineMode:B,diffOptions:W,reloadKey:$,embedded:!0,lightweight:y,auditRecords:C,diffOverride:O,preparedDiff:V,onClearAuditRecord:P,onContentReady:()=>{if(g){_.current=!0,fe(!0),J();return}_.current||(_.current=!0,fe(!0))},onInsertDiffReference:ie,onHunkGitAction:se,onReferenceCopied:G,insertedReferenceKey:p,copiedReferenceKey:j}):r.jsx("div",{className:"flex h-full min-h-16 items-center justify-center bg-surface px-3 py-4 text-center text-xs text-muted-foreground",children:t.path}),v&&K&&!we&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const Qe=8,Kt=3,Je=2,ze=1600,Ze=104,qt=1e3,ye=new Map;function Ut(t,o){for(ye.delete(t),ye.set(t,o);ye.size>qt;){const i=ye.keys().next().value;if(i===void 0)break;ye.delete(i)}}function Yt(t,o){return!!(t&&t.diffOverride===o.diffOverride&&t.reloadKey===o.reloadKey&&t.wrap===o.wrap&&t.showScrollHint===o.showScrollHint&&t.viewType===o.viewType&&t.inlineMode===o.inlineMode&&t.algorithm===o.algorithm&&t.whitespace===o.whitespace&&t.context===o.context)}const Qt={added:{label:"A",className:"text-[color:var(--diff-insert-strong)]",title:"Added"},modified:{label:"M",className:"text-[color:var(--diff-hunk-accent)]",title:"Modified"},deleted:{label:"D",className:"text-[color:var(--diff-delete-strong)]",title:"Deleted"},renamed:{label:"R",className:"text-muted-foreground",title:"Renamed"},copied:{label:"C",className:"text-[color:var(--diff-insert-strong)]",title:"Copied"},untracked:{label:"U",className:"text-[color:var(--diff-insert-strong)]",title:"Untracked (new file)"},conflicted:{label:"!",className:"text-destructive",title:"Conflicted"},unknown:{label:"?",className:"text-muted-foreground",title:"Unknown"}};function nr({status:t}){const o=Qt[t]??{label:"?",className:"text-muted-foreground",title:t};return r.jsx("span",{className:`w-4 shrink-0 text-center text-[10px] font-mono font-bold ${o.className}`,title:o.title,children:o.label})}function sr(t,o){return o?{key:o,nonce:t.nonce+1}:t}function or({files:t,groups:o,selectedKey:i,onSelectFile:x,mode:m,onModeChange:c,collapsedDirectoryKeys:b,onToggleDirectory:v,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:y,renderSubtitle:L,renderStreamBadge:T,onInsertDiffReference:E,onHunkGitAction:B,onReferenceCopied:W,insertedReferenceKey:$,copiedReferenceKey:C,onClearAuditRecord:O,mobile:V,backLabel:ne,compact:ie,desktopLayout:se,wrap:G,showScrollHint:p,diffViewType:j,inlineMode:P,diffOptions:D,activePane:w,reloadKey:z=0,renderListHeader:X,renderMobileDetailHeader:oe,emptyContent:le,listPrefix:be,aiContent:ue,listContainerClassName:de,detailContainerClassName:U,desktopSidePanel:F,desktopListClassName:_,onDetailScroll:ae,initialDetailScrollTop:A,scrollToKey:K,scrollToKeyNonce:fe=0,externalSwiperRef:we,onMobileSlideChange:Me,slideToDetailOnMobile:ke}){const J=Nt(e=>e.rootPath),Re=a.useMemo(()=>e=>i===e.key||i===e.path||i===e.absolutePath,[i]),k=a.useMemo(()=>{const e=new Map;for(const s of t)e.set(s.key,s),s.path&&e.set(s.path,s),s.absolutePath&&e.set(s.absolutePath,s);const n=[],l=new Set;for(const s of o){const d=m==="tree"?Pt(s.files):s.files;for(const h of d){const u=e.get(h.key);!u||l.has(u.key)||(n.push(u),l.add(u.key))}}for(const s of t)l.has(s.key)||n.push(s);return n},[t,o,m]),q=a.useRef(null),Ne=a.useRef(null),ce=a.useRef(null),Te=a.useRef(z),Z=a.useRef(0),he=a.useRef(null),ee=a.useRef(new Map(ye)),I=a.useRef({key:null,top:0}),S=a.useRef(new Set),je=a.useRef(new Map),Ce=a.useRef(new Map),H=a.useRef(null),We=a.useRef(()=>{}),De=a.useRef([]),pe=a.useRef(new Map),$e=a.useRef({tops:[],heights:[],bottom:0}),[Oe,it]=a.useState(()=>new Set),[lt,ut]=a.useState(0),[te,xe]=a.useState({top:0,height:0}),Se=a.useMemo(()=>k.map(e=>e.key),[k]),Ie=Se.join("");Ce.current=new Map(k.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:z,wrap:G,showScrollHint:p,viewType:j,inlineMode:P,algorithm:D?.algorithm,whitespace:D?.whitespace,context:D?.context}])),De.current=Se,pe.current=new Map(Se.map((e,n)=>[e,n]));const R=a.useMemo(()=>{const e=Se.map(s=>ee.current.get(s)??Ze),n=new Array(e.length);for(let s=0;s<e.length;s+=1)n[s]=s===0?0:n[s-1]+e[s-1];const l=e.length>0?n[e.length-1]+e[e.length-1]:0;return{tops:n,heights:e,bottom:l}},[lt,Ie]);$e.current=R;const me=a.useMemo(()=>K?k.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[k,K]),Fe=a.useMemo(()=>i?k.find(e=>i===e.key||i===e.path||i===e.absolutePath)?.key??null:null,[k,i]),Y=a.useMemo(()=>{const e=R.tops.length;if(e===0)return-1;let n=0,l=e;for(;n<l;){const s=Math.floor((n+l)/2);R.tops[s]<=te.top+1?n=s+1:l=s}return Math.min(e-1,Math.max(0,n-1))},[R.tops,te.top]);a.useEffect(()=>{if(!w||Y<0)return;const e=[Y];for(let s=1;s<=Kt;s+=1)e.push(Y+s),e.push(Y-s);const n=e.filter((s,d)=>s>=0&&s<k.length&&e.indexOf(s)===d).map(s=>k[s]).filter(s=>s.diffOverride===void 0&&!!(s.repoRoot??J));let l=!1;return(async()=>{for(let s=0;s<n.length&&!l;s+=Je){const d=n.slice(s,s+Je);await Promise.all(d.map(h=>{const u=h.repoRoot??J,N=et(h.path,u);return Dt(N,u??void 0,P??"words",D).catch(()=>{})}))}})(),()=>{l=!0}},[w,k,D,P,J,Y]);const re=a.useCallback(e=>{S.current=e,it(e)},[]),Ve=a.useMemo(()=>{const e=te.top-ze,n=te.top+te.height+ze,l=new Set;let s=0,d=R.tops.length;for(;s<d;){const u=Math.floor((s+d)/2);R.tops[u]<=e?s=u+1:d=u}const h=Math.max(0,s-1);for(let u=h;u<R.tops.length;u+=1){const N=R.tops[u];if(N>n)break;N+R.heights[u]>=e&&N<=n&&l.add(u)}for(let u=Y-1;u<=Y+1;u+=1)u>=0&&u<R.tops.length&&l.add(u);return Array.from(l).sort((u,N)=>u-N)},[R,te,Y]),_e=a.useCallback(()=>{if(H.current)return;const e=De.current;if(e.length===0)return;const n=I.current.key,l=Math.min(e.length-1,(n!==null?pe.current.get(n):void 0)??Math.max(0,Y)),s=u=>Math.abs((pe.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=Qe;u+=1){const N=l+u,M=l-u;N<e.length&&!S.current.has(e[N])&&d.push(e[N]),M>=0&&!S.current.has(e[M])&&d.push(e[M])}const h=d[0];if(h){if(S.current.size>=Qe){const u=s(h),N=Array.from(S.current).filter(Q=>Q!==H.current).sort((Q,ve)=>s(ve)-s(Q))[0];if(!N||s(N)<=u)return;const M=new Set(S.current);M.delete(N),re(M)}H.current=h,re(new Set(S.current).add(h))}},[re,Y]);We.current=_e;const ge=a.useCallback(e=>{if(S.current.has(e))return;const n=H.current;if(n&&n!==e){const l=new Set(S.current);l.delete(n),re(l),H.current=null}H.current=e,re(new Set(S.current).add(e))},[re]),Ge=a.useCallback(e=>{if(!S.current.has(e))return;const n=Ce.current.get(e);n&&je.current.set(e,n),H.current===e&&(H.current=null),window.requestAnimationFrame(()=>We.current())},[]),Xe=a.useCallback((e,n,l)=>{if(Math.abs(l-n)<1)return;const s=ee.current.get(e);s!==void 0&&Math.abs(s-l)<1||(ee.current.set(e,l),Ut(e,l),ut(d=>d+1))},[]);a.useLayoutEffect(()=>{if(Te.current!==z){Te.current=z;for(const e of k){if(e.diffOverride!==void 0)continue;const n=et(e.path,e.repoRoot);Mt(n,e.repoRoot??void 0,D)}}},[k,D,z]),a.useLayoutEffect(()=>{const e=q.current;if(!e)return;const n=()=>{const s=Math.max(0,Math.ceil(e.clientHeight));if(s===0)return;const d=e.scrollTop;xe(h=>h.height===s&&h.top===d?h:{top:d,height:s})};if(n(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(n);return l.observe(e),()=>l.disconnect()},[V]),a.useEffect(()=>{Fe&&ge(Fe)},[ge,Fe]),a.useEffect(()=>{const e=new Set(De.current);for(const n of Array.from(ee.current.keys()))e.has(n)||ee.current.delete(n);for(const n of Array.from(S.current))if(!e.has(n)){const l=new Set(S.current);l.delete(n),re(l)}for(const n of Array.from(je.current.keys()))e.has(n)||je.current.delete(n);if(H.current&&!e.has(H.current)&&(H.current=null),k.length===0){H.current=null,je.current.clear(),re(new Set);return}_e()},[k.length,Ie,_e,Ve,re]);const Ke=a.useCallback(e=>{q.current=e;const n=Z.current,l=e.scrollTop;Z.current=l;const s=d=>{const h=$e.current,u=De.current;let N=0,M=h.tops.length;for(;N<M;){const Ae=Math.floor((N+M)/2);h.tops[Ae]<=d+1?N=Ae+1:M=Ae}const Q=Math.min(u.length-1,Math.max(0,N-1)),ve=u[Q]??null;I.current={key:ve,top:h.tops[Q]??0},ve&&ge(ve)};Math.abs(l-n)>=ze?(rt.flushSync(()=>{xe({top:l,height:e.clientHeight})}),s(l)):he.current===null&&(he.current=window.requestAnimationFrame(()=>{he.current=null;const d=q.current;if(d){const h=d.scrollTop;xe({top:h,height:d.clientHeight}),s(h)}})),ae?.(e)},[ae,ge]);a.useEffect(()=>()=>{he.current!==null&&window.cancelAnimationFrame(he.current)},[]),a.useLayoutEffect(()=>{const e=q.current;if(!e)return;const n=I.current;if(n.key===null)return;const l=pe.current.get(n.key);if(l===void 0)return;const s=(R.tops[l]??n.top)-n.top;if(Math.abs(s)<1)return;const d=e.scrollTop+s;Z.current=d,xe(h=>({top:d,height:h.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[R]),a.useLayoutEffect(()=>{const e=De.current,n=R.tops;if(e.length===0){I.current={key:null,top:0};return}const l=Z.current,s=l+(q.current?.clientHeight??te.height),d=I.current;if(d.key!==null){const M=pe.current.get(d.key);if(M!==void 0){const Q=n[M]??0;if(Q+(R.heights[M]??Ze)>l&&Q<s){I.current={key:d.key,top:Q};return}}}let h=0,u=n.length;for(;h<u;){const M=Math.floor((h+u)/2);n[M]<=l+1?h=M+1:u=M}const N=Math.min(n.length-1,Math.max(0,h-1));I.current={key:e[N]??null,top:n[N]??0}}),a.useLayoutEffect(()=>{if(!me||Ne.current===fe)return;const e=pe.current.get(me);if(e===void 0)return;ge(me),I.current={key:me,top:R.tops[e]??0};const n=q.current;if(!n)return;Ne.current=fe;const l=R.tops[e]??0;typeof n.scrollTo=="function"?n.scrollTo({top:l,behavior:"instant"}):n.scrollTop=l;const s=n.scrollTop;Z.current=s,xe({top:s,height:n.clientHeight})},[R,te.height,ge,me,fe]),a.useLayoutEffect(()=>{if(A===void 0||me)return;const e=Ie;if(ce.current===e)return;const n=q.current;if(!n)return;ce.current=e;const l=Math.max(0,R.bottom-n.clientHeight),s=Math.min(Math.max(0,A),l);typeof n.scrollTo=="function"?n.scrollTo({top:s,behavior:"instant"}):n.scrollTop=s;const d=n.scrollTop;Z.current=d,xe({top:d,height:n.clientHeight})},[R.bottom,A,Ie,me]);const dt=a.useCallback((e,n)=>{const l=Re(e),s=Ce.current.get(e.key),d=s!==void 0&&Yt(je.current.get(e.key),s);return r.jsx(Xt,{file:Jt(e),repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:w,visible:Oe.has(e.key),reusableContent:d,estimatedHeight:n,lightweight:!1,wrap:G,showScrollHint:p,viewType:j,inlineMode:P,diffOptions:D,reloadKey:z,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderBadge:h=>T(h,e),onInsertDiffReference:e.onInsertDiffReference??E,onHunkGitAction:e.onHunkGitAction??B,onReferenceCopied:W,insertedReferenceKey:$,copiedReferenceKey:C,onClearAuditRecord:O,onContentReady:Ge,onHeightChange:Xe})},[w,C,D,j,Ge,Xe,P,$,Re,Oe,O,B,E,W,z,T,p,G]),ft=r.jsx("div",{"data-diff-stream-content":!0,"data-diff-stream-canvas":!0,className:"termdock-diff-stream relative overflow-clip bg-surface will-change-transform",style:{height:Math.max(te.height,R.bottom)},children:Ve.map(e=>{const n=k[e];return n?r.jsx("div",{"data-diff-canvas-slot":n.key,className:"absolute inset-x-0",style:{top:R.tops[e]},children:dt(n,R.heights[e])},n.key):null})}),ht=r.jsx("div",{ref:q,className:"termdock-diff-stream termdock-diff-stream-scroller h-full max-h-full min-h-0 overflow-y-auto overscroll-contain bg-surface [overflow-anchor:none]",onScroll:e=>Ke(e.currentTarget),children:ft});return r.jsx(Vt,{groups:o,mode:m,onModeChange:c,selectedKey:i,collapsedDirectoryKeys:b,onToggleDirectory:v,onSelectFile:x,renderLeading:g,renderTrailing:f,renderDirectoryTrailing:y,renderSubtitle:L,detail:ht,mobile:V,backLabel:ne,compact:ie,emptyContent:le,listPrefix:be,aiContent:ue,listContainerClassName:de,detailContainerClassName:U,renderListHeader:X,renderMobileDetailHeader:oe,externalSwiperRef:we,onMobileSlideChange:Me,slideToDetailOnMobile:ke,desktopLayout:se,onDetailScroll:Ke,desktopSidePanel:F,desktopListClassName:_,detailOwnsScroll:!0})}function Jt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function et(t,o){if(t)return o&&t.startsWith(`${o}/`)?t.slice(o.length+1):t}export{St as A,nr as C,or as D,Et as L,Pt as f,sr as n};
@@ -0,0 +1,2 @@
1
+ import{as as u}from"./app-tT08GaCs.js";import{b as o}from"./dnd-BCFAPC0L.js";import{D}from"./DiffReview-DNkXOQ2y.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./sparkles-B3pwUd8-.js";import"./DiffViewer-CxxOpsVz.js";const w=40,p="/tmp/termdock-diff-review-lab";function h(n,l){const i=[`diff --git a/${n} b/${n}`,`--- a/${n}`,`+++ b/${n}`,`@@ -1,${l} +1,${l} @@`];for(let t=0;t<l;t+=1)t%5===0&&i.push(`-const removed_${t} = ${t};`),t%3===0&&i.push(`+const added_${t} = ${t} * 2;`),i.push(` context line ${t} in ${n}`);return i.join(`
2
+ `)}function j(n,l){return Array.from({length:w},(i,t)=>{const r=6+t*7%60,d=`src/module${String(t).padStart(2,"0")}/File${t}.ts`,a=`${p}/${d}`,f=h(d,r),m=h(d,1);return{key:a,path:d,absolutePath:a,status:"modified",repoRoot:p,displayName:`File${t}.ts`,displayDir:`src/module${String(t).padStart(2,"0")} · ${r} lines`,diffOverride:!l||n.has(t)?f:m,auditRecords:[]}})}function K(){const n=o.useMemo(()=>{if(typeof window>"u")return 0;const e=new URLSearchParams(window.location.search).get("delay"),s=e===null?0:Number.parseInt(e,10);return Number.isInteger(s)&&s>0?s:0},[]),l=n>0,[i,t]=o.useState(()=>new Set);o.useEffect(()=>{if(!l)return;const e=Array.from({length:w},(s,c)=>window.setTimeout(()=>{t(R=>{const y=new Set(R);return y.add(c),y})},n+c*20));return()=>e.forEach(s=>window.clearTimeout(s))},[l,n]);const r=o.useMemo(()=>j(i,l),[i,l]),d=o.useMemo(()=>[{key:"mock-repo",root:p,label:"diff-review-lab",files:r.map(e=>({key:e.key,path:e.path,absolutePath:e.absolutePath,displayName:e.displayName,displayDir:e.displayDir,status:e.status}))}],[r]),a=o.useMemo(()=>{if(typeof window>"u")return null;const e=new URLSearchParams(window.location.search).get("select");if(e===null)return null;const s=Number.parseInt(e,10);return Number.isInteger(s)&&s>=0&&s<r.length?s:null},[r.length]),[f,m]=o.useState(()=>a!==null?r[a].key:null),[b,g]=o.useState(()=>({key:a!==null?r[a].key:null,nonce:a!==null?1:0})),[S,x]=o.useState("list"),[$,k]=o.useState(new Set),[v,N]=o.useState(a!==null?1:0);return u.jsxs("div",{className:"flex h-screen flex-col bg-background text-foreground","data-diff-review-lab":!0,children:[u.jsxs("div",{className:"shrink-0 border-b border-border/20 px-3 py-2 text-xs text-muted-foreground",children:["DiffReview Lab · ",r.length," mock files · selected: ",u.jsx("span",{"data-lab-selected":!0,children:f??"none"})," · slide ",v]}),u.jsx("div",{className:"min-h-0 flex-1",children:u.jsx(D,{mobile:!0,backLabel:"Back",files:r,groups:d,selectedKey:f,scrollToKey:b.key,scrollToKeyNonce:b.nonce,mode:S,onModeChange:e=>{e!=="ai"&&x(e)},collapsedDirectoryKeys:$,onToggleDirectory:e=>k(s=>{const c=new Set(s);return c.has(e)?c.delete(e):c.add(e),c}),onSelectFile:e=>{m(e.key),g(s=>({key:e.key,nonce:s.nonce+1}))},onMobileSlideChange:N,renderLeading:()=>null,renderStreamBadge:e=>u.jsx("span",{className:"text-[10px] text-muted-foreground",children:e}),wrap:!0,showScrollHint:!1,activePane:!0})})]})}export{K as DiffReviewLab};