termdock 1.4.260 → 1.4.262

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 (329) hide show
  1. package/dist/client/assets/App-Cb_XllaU.js +156 -0
  2. package/dist/client/assets/App-Cb_XllaU.js.br +0 -0
  3. package/dist/client/assets/App-Cb_XllaU.js.gz +0 -0
  4. package/dist/client/assets/{ChangeWalkthroughPanel-C-WqvjtC.js → ChangeWalkthroughPanel-jX6d1ENn.js} +2 -2
  5. package/dist/client/assets/ChangeWalkthroughPanel-jX6d1ENn.js.br +0 -0
  6. package/dist/client/assets/ChangeWalkthroughPanel-jX6d1ENn.js.gz +0 -0
  7. package/dist/client/assets/{DagPlayground-BZDpEJGy.js → DagPlayground-TGM2t4Ye.js} +1 -1
  8. package/dist/client/assets/DagPlayground-TGM2t4Ye.js.br +0 -0
  9. package/dist/client/assets/DagPlayground-TGM2t4Ye.js.gz +0 -0
  10. package/dist/client/assets/{DiffLab-C3-p91uh.js → DiffLab-Cw8cAI4p.js} +2 -2
  11. package/dist/client/assets/DiffLab-Cw8cAI4p.js.br +0 -0
  12. package/dist/client/assets/DiffLab-Cw8cAI4p.js.gz +0 -0
  13. package/dist/client/assets/{DiffReview-CWhKgYZN.js → DiffReview-BpxhFZLY.js} +1 -1
  14. package/dist/client/assets/DiffReview-BpxhFZLY.js.br +0 -0
  15. package/dist/client/assets/DiffReview-BpxhFZLY.js.gz +0 -0
  16. package/dist/client/assets/{DiffReviewLab-DVwuJrVG.js → DiffReviewLab-CV_QO6UR.js} +1 -1
  17. package/dist/client/assets/DiffReviewLab-CV_QO6UR.js.br +0 -0
  18. package/dist/client/assets/DiffReviewLab-CV_QO6UR.js.gz +0 -0
  19. package/dist/client/assets/DiffViewer-680KNh4c.js +36 -0
  20. package/dist/client/assets/DiffViewer-680KNh4c.js.br +0 -0
  21. package/dist/client/assets/DiffViewer-680KNh4c.js.gz +0 -0
  22. package/dist/client/assets/{ModelPreview-CB63ulOp.js → ModelPreview-CUlJCDwX.js} +1 -1
  23. package/dist/client/assets/ModelPreview-CUlJCDwX.js.br +0 -0
  24. package/dist/client/assets/ModelPreview-CUlJCDwX.js.gz +0 -0
  25. package/dist/client/assets/RightSidebar-ClSRXoi2.js +1678 -0
  26. package/dist/client/assets/RightSidebar-ClSRXoi2.js.br +0 -0
  27. package/dist/client/assets/RightSidebar-ClSRXoi2.js.gz +0 -0
  28. package/dist/client/assets/{abnfDiagram-VCTEODGH-DXqSSIIQ.js → abnfDiagram-VCTEODGH-BOd7FTr2.js} +1 -1
  29. package/dist/client/assets/abnfDiagram-VCTEODGH-BOd7FTr2.js.br +0 -0
  30. package/dist/client/assets/abnfDiagram-VCTEODGH-BOd7FTr2.js.gz +0 -0
  31. package/dist/client/assets/app-Bl11JYak.js +35 -0
  32. package/dist/client/assets/app-Bl11JYak.js.br +0 -0
  33. package/dist/client/assets/app-Bl11JYak.js.gz +0 -0
  34. package/dist/client/assets/{arc-DbWPugQ5.js → arc-BPAf1nZK.js} +1 -1
  35. package/dist/client/assets/arc-BPAf1nZK.js.br +0 -0
  36. package/dist/client/assets/arc-BPAf1nZK.js.gz +0 -0
  37. package/dist/client/assets/{architectureDiagram-5GKGNRK7-DMFOu5nX.js → architectureDiagram-5GKGNRK7-fQvzZnB9.js} +1 -1
  38. package/dist/client/assets/architectureDiagram-5GKGNRK7-fQvzZnB9.js.br +0 -0
  39. package/dist/client/assets/architectureDiagram-5GKGNRK7-fQvzZnB9.js.gz +0 -0
  40. package/dist/client/assets/{blockDiagram-I7D4REHJ-CKLkxDEj.js → blockDiagram-I7D4REHJ-BwLMUrdi.js} +1 -1
  41. package/dist/client/assets/blockDiagram-I7D4REHJ-BwLMUrdi.js.br +0 -0
  42. package/dist/client/assets/blockDiagram-I7D4REHJ-BwLMUrdi.js.gz +0 -0
  43. package/dist/client/assets/{c4Diagram-7LVT6UL2-C78zNGxr.js → c4Diagram-7LVT6UL2-EoyhDhQx.js} +1 -1
  44. package/dist/client/assets/c4Diagram-7LVT6UL2-EoyhDhQx.js.br +0 -0
  45. package/dist/client/assets/c4Diagram-7LVT6UL2-EoyhDhQx.js.gz +0 -0
  46. package/dist/client/assets/channel-BUQABAmH.js +1 -0
  47. package/dist/client/assets/{chunk-2Q5K7J3B-uCAhVp1i.js → chunk-2Q5K7J3B-BV2VpCfF.js} +1 -1
  48. package/dist/client/assets/{chunk-5VM5RSS4-T4xbmOTq.js → chunk-5VM5RSS4-BFiQW7Ta.js} +1 -1
  49. package/dist/client/assets/{chunk-F27PBJKO-ClPpIDx4.js → chunk-F27PBJKO-DqlURJFH.js} +1 -1
  50. package/dist/client/assets/chunk-F27PBJKO-DqlURJFH.js.br +0 -0
  51. package/dist/client/assets/chunk-F27PBJKO-DqlURJFH.js.gz +0 -0
  52. package/dist/client/assets/{chunk-IMKFNOWR-Bx2Jj2by.js → chunk-IMKFNOWR-BcM_EtAP.js} +1 -1
  53. package/dist/client/assets/chunk-IMKFNOWR-BcM_EtAP.js.br +0 -0
  54. package/dist/client/assets/chunk-IMKFNOWR-BcM_EtAP.js.gz +0 -0
  55. package/dist/client/assets/{chunk-JWPE2WC7-CIVmiUX8.js → chunk-JWPE2WC7-B8NvVdil.js} +1 -1
  56. package/dist/client/assets/{chunk-POPQ4Y6H-DU6qR259.js → chunk-POPQ4Y6H-B5Vz70dF.js} +1 -1
  57. package/dist/client/assets/{chunk-SVP7TREG-zxsu_mRX.js → chunk-SVP7TREG-CVv3_3sI.js} +1 -1
  58. package/dist/client/assets/chunk-SVP7TREG-CVv3_3sI.js.br +0 -0
  59. package/dist/client/assets/chunk-SVP7TREG-CVv3_3sI.js.gz +0 -0
  60. package/dist/client/assets/{chunk-TICWLB2K-DfhkM5vB.js → chunk-TICWLB2K-Wpnx00aD.js} +1 -1
  61. package/dist/client/assets/chunk-TICWLB2K-Wpnx00aD.js.br +0 -0
  62. package/dist/client/assets/chunk-TICWLB2K-Wpnx00aD.js.gz +0 -0
  63. package/dist/client/assets/{chunk-XXDRQBXY-mPuTW6Qu.js → chunk-XXDRQBXY-aBQvQ4Ji.js} +1 -1
  64. package/dist/client/assets/classDiagram-ZZMXUADV-ZOMwbuDI.js +1 -0
  65. package/dist/client/assets/classDiagram-v2-VYDZK3BY-ZOMwbuDI.js +1 -0
  66. package/dist/client/assets/{cose-bilkent-JH36ORCC-nFW6grC2.js → cose-bilkent-JH36ORCC-DWySu0Hm.js} +1 -1
  67. package/dist/client/assets/cose-bilkent-JH36ORCC-DWySu0Hm.js.br +0 -0
  68. package/dist/client/assets/{cose-bilkent-JH36ORCC-nFW6grC2.js.gz → cose-bilkent-JH36ORCC-DWySu0Hm.js.gz} +0 -0
  69. package/dist/client/assets/{cynefin-OW5HDTMX-WWNymBE7.js → cynefin-OW5HDTMX-BEUAB_wN.js} +1 -1
  70. package/dist/client/assets/cynefin-OW5HDTMX-BEUAB_wN.js.br +0 -0
  71. package/dist/client/assets/cynefin-OW5HDTMX-BEUAB_wN.js.gz +0 -0
  72. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-Cnu1881_.js → cynefinDiagram-5FMLGOSQ-CCfHefWz.js} +1 -1
  73. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CCfHefWz.js.br +0 -0
  74. package/dist/client/assets/{cynefinDiagram-5FMLGOSQ-Cnu1881_.js.gz → cynefinDiagram-5FMLGOSQ-CCfHefWz.js.gz} +0 -0
  75. package/dist/client/assets/{dagre-GXQ25YYZ-ZnFSJ_PQ.js → dagre-GXQ25YYZ-CRPX2oo7.js} +1 -1
  76. package/dist/client/assets/dagre-GXQ25YYZ-CRPX2oo7.js.br +0 -0
  77. package/dist/client/assets/dagre-GXQ25YYZ-CRPX2oo7.js.gz +0 -0
  78. package/dist/client/assets/{diagram-S7CK7UJ4-NDwa39k2.js → diagram-S7CK7UJ4-Pg--K2pK.js} +1 -1
  79. package/dist/client/assets/diagram-S7CK7UJ4-Pg--K2pK.js.br +0 -0
  80. package/dist/client/assets/diagram-S7CK7UJ4-Pg--K2pK.js.gz +0 -0
  81. package/dist/client/assets/{diagram-UQ7AKVKN-GvOo_Md9.js → diagram-UQ7AKVKN-CzU1IUDD.js} +1 -1
  82. package/dist/client/assets/diagram-UQ7AKVKN-CzU1IUDD.js.br +0 -0
  83. package/dist/client/assets/diagram-UQ7AKVKN-CzU1IUDD.js.gz +0 -0
  84. package/dist/client/assets/{diagram-VSXAHHWV-D0tpjVaU.js → diagram-VSXAHHWV-D3ns7ZFW.js} +1 -1
  85. package/dist/client/assets/diagram-VSXAHHWV-D3ns7ZFW.js.br +0 -0
  86. package/dist/client/assets/diagram-VSXAHHWV-D3ns7ZFW.js.gz +0 -0
  87. package/dist/client/assets/{diagram-VX7I27RA-CE8gl6ZC.js → diagram-VX7I27RA-0PzViCov.js} +1 -1
  88. package/dist/client/assets/diagram-VX7I27RA-0PzViCov.js.br +0 -0
  89. package/dist/client/assets/diagram-VX7I27RA-0PzViCov.js.gz +0 -0
  90. package/dist/client/assets/{diagram-Z3DM3KII-Dn9svAcp.js → diagram-Z3DM3KII-Cm6dBe6-.js} +1 -1
  91. package/dist/client/assets/diagram-Z3DM3KII-Cm6dBe6-.js.br +0 -0
  92. package/dist/client/assets/diagram-Z3DM3KII-Cm6dBe6-.js.gz +0 -0
  93. package/dist/client/assets/{ebnfDiagram-PWID7BFC-BeIVOITU.js → ebnfDiagram-PWID7BFC-BxSW6eBA.js} +1 -1
  94. package/dist/client/assets/ebnfDiagram-PWID7BFC-BxSW6eBA.js.br +0 -0
  95. package/dist/client/assets/ebnfDiagram-PWID7BFC-BxSW6eBA.js.gz +0 -0
  96. package/dist/client/assets/{erDiagram-RLTQ6QDP-CYb2hJnW.js → erDiagram-RLTQ6QDP-DpWE-TjX.js} +1 -1
  97. package/dist/client/assets/{erDiagram-RLTQ6QDP-CYb2hJnW.js.br → erDiagram-RLTQ6QDP-DpWE-TjX.js.br} +0 -0
  98. package/dist/client/assets/erDiagram-RLTQ6QDP-DpWE-TjX.js.gz +0 -0
  99. package/dist/client/assets/{flowDiagram-HODETNUW-BrCWf4Jw.js → flowDiagram-HODETNUW-DYO0LUmp.js} +1 -1
  100. package/dist/client/assets/flowDiagram-HODETNUW-DYO0LUmp.js.br +0 -0
  101. package/dist/client/assets/flowDiagram-HODETNUW-DYO0LUmp.js.gz +0 -0
  102. package/dist/client/assets/{ganttDiagram-EL5Y4UJY-CaEV35iE.js → ganttDiagram-EL5Y4UJY-CIq6FHXs.js} +1 -1
  103. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CIq6FHXs.js.br +0 -0
  104. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CIq6FHXs.js.gz +0 -0
  105. package/dist/client/assets/{gestureArbiter-CqdDGsl4.js → gestureArbiter-DPglmaJZ.js} +1 -1
  106. package/dist/client/assets/gestureArbiter-DPglmaJZ.js.br +0 -0
  107. package/dist/client/assets/gestureArbiter-DPglmaJZ.js.gz +0 -0
  108. package/dist/client/assets/{gitGraphDiagram-WWUBYQGX-BSW6F8uE.js → gitGraphDiagram-WWUBYQGX-Ck5V0n5a.js} +1 -1
  109. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Ck5V0n5a.js.br +0 -0
  110. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-Ck5V0n5a.js.gz +0 -0
  111. package/dist/client/assets/{index-mZxreyvP.css → index-ddQQwU7M.css} +1 -1
  112. package/dist/client/assets/index-ddQQwU7M.css.br +0 -0
  113. package/dist/client/assets/index-ddQQwU7M.css.gz +0 -0
  114. package/dist/client/assets/{infoDiagram-27XIBGKW-DC9P1VSK.js → infoDiagram-27XIBGKW-DCWx_lXp.js} +1 -1
  115. package/dist/client/assets/{ishikawaDiagram-5VMMS53U-CC5aFdsA.js → ishikawaDiagram-5VMMS53U-Dri_MMmE.js} +1 -1
  116. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Dri_MMmE.js.br +0 -0
  117. package/dist/client/assets/ishikawaDiagram-5VMMS53U-Dri_MMmE.js.gz +0 -0
  118. package/dist/client/assets/{journeyDiagram-3NMN7TZE-2Aoz11wC.js → journeyDiagram-3NMN7TZE-BIBa8ZPU.js} +1 -1
  119. package/dist/client/assets/journeyDiagram-3NMN7TZE-BIBa8ZPU.js.br +0 -0
  120. package/dist/client/assets/journeyDiagram-3NMN7TZE-BIBa8ZPU.js.gz +0 -0
  121. package/dist/client/assets/{kanban-definition-UXKFOSKX-D6YFB_Z0.js → kanban-definition-UXKFOSKX-CVvCyGTR.js} +1 -1
  122. package/dist/client/assets/kanban-definition-UXKFOSKX-CVvCyGTR.js.br +0 -0
  123. package/dist/client/assets/kanban-definition-UXKFOSKX-CVvCyGTR.js.gz +0 -0
  124. package/dist/client/assets/{layout-Dd8_VbyA.js → layout-CePKkZZM.js} +1 -1
  125. package/dist/client/assets/layout-CePKkZZM.js.br +0 -0
  126. package/dist/client/assets/layout-CePKkZZM.js.gz +0 -0
  127. package/dist/client/assets/{linear-CJMS1SaH.js → linear-C2Jk6X94.js} +1 -1
  128. package/dist/client/assets/linear-C2Jk6X94.js.br +0 -0
  129. package/dist/client/assets/linear-C2Jk6X94.js.gz +0 -0
  130. package/dist/client/assets/{mermaid.core-D2G7U75v.js → mermaid.core-B0TLkbaQ.js} +5 -5
  131. package/dist/client/assets/mermaid.core-B0TLkbaQ.js.br +0 -0
  132. package/dist/client/assets/mermaid.core-B0TLkbaQ.js.gz +0 -0
  133. package/dist/client/assets/{mindmap-definition-YA3MSWOX-BMKObGIP.js → mindmap-definition-YA3MSWOX-BiqaDyAI.js} +1 -1
  134. package/dist/client/assets/mindmap-definition-YA3MSWOX-BiqaDyAI.js.br +0 -0
  135. package/dist/client/assets/mindmap-definition-YA3MSWOX-BiqaDyAI.js.gz +0 -0
  136. package/dist/client/assets/{passwordBootstrap-Bq6gHj2O.js → passwordBootstrap-D8QzMobL.js} +2 -2
  137. package/dist/client/assets/passwordBootstrap-D8QzMobL.js.br +0 -0
  138. package/dist/client/assets/passwordBootstrap-D8QzMobL.js.gz +0 -0
  139. package/dist/client/assets/{pegDiagram-XKGWAZYB-DqLntL3k.js → pegDiagram-XKGWAZYB-mBmk-WA4.js} +1 -1
  140. package/dist/client/assets/pegDiagram-XKGWAZYB-mBmk-WA4.js.br +0 -0
  141. package/dist/client/assets/pegDiagram-XKGWAZYB-mBmk-WA4.js.gz +0 -0
  142. package/dist/client/assets/{pieDiagram-E7YTZNPT-C-vUASJL.js → pieDiagram-E7YTZNPT-CNLgv2X-.js} +1 -1
  143. package/dist/client/assets/pieDiagram-E7YTZNPT-CNLgv2X-.js.br +0 -0
  144. package/dist/client/assets/pieDiagram-E7YTZNPT-CNLgv2X-.js.gz +0 -0
  145. package/dist/client/assets/{quadrantDiagram-AXDQQJYC-BD5TrRYq.js → quadrantDiagram-AXDQQJYC-B6R_6sAT.js} +1 -1
  146. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B6R_6sAT.js.br +0 -0
  147. package/dist/client/assets/quadrantDiagram-AXDQQJYC-B6R_6sAT.js.gz +0 -0
  148. package/dist/client/assets/{railroadDiagram-O6MQD6OU-BwYnnmcE.js → railroadDiagram-O6MQD6OU-CMHZvyFR.js} +1 -1
  149. package/dist/client/assets/railroadDiagram-O6MQD6OU-CMHZvyFR.js.br +0 -0
  150. package/dist/client/assets/railroadDiagram-O6MQD6OU-CMHZvyFR.js.gz +0 -0
  151. package/dist/client/assets/{referenceLongPress-DC0noWIU.js → referenceLongPress-BclZaogy.js} +1 -1
  152. package/dist/client/assets/referenceLongPress-BclZaogy.js.br +0 -0
  153. package/dist/client/assets/referenceLongPress-BclZaogy.js.gz +0 -0
  154. package/dist/client/assets/{requirementDiagram-BXWQKSXE-B0rZBE2S.js → requirementDiagram-BXWQKSXE-Chcr9JIV.js} +1 -1
  155. package/dist/client/assets/requirementDiagram-BXWQKSXE-Chcr9JIV.js.br +0 -0
  156. package/dist/client/assets/requirementDiagram-BXWQKSXE-Chcr9JIV.js.gz +0 -0
  157. package/dist/client/assets/{sankeyDiagram-P5KCCOFB-8xihEeEz.js → sankeyDiagram-P5KCCOFB-DgOdSJOh.js} +1 -1
  158. package/dist/client/assets/sankeyDiagram-P5KCCOFB-DgOdSJOh.js.br +0 -0
  159. package/dist/client/assets/sankeyDiagram-P5KCCOFB-DgOdSJOh.js.gz +0 -0
  160. package/dist/client/assets/{sequenceDiagram-WJ2MYXX4-C7nrszfj.js → sequenceDiagram-WJ2MYXX4-CLgh_PNU.js} +1 -1
  161. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CLgh_PNU.js.br +0 -0
  162. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-CLgh_PNU.js.gz +0 -0
  163. package/dist/client/assets/{sizeCapture-INFHLROL-Cpbpxkib.js → sizeCapture-INFHLROL-C7Ai3zIt.js} +1 -1
  164. package/dist/client/assets/sizeCapture-INFHLROL-C7Ai3zIt.js.br +0 -0
  165. package/dist/client/assets/sizeCapture-INFHLROL-C7Ai3zIt.js.gz +0 -0
  166. package/dist/client/assets/{sparkles-C6EB6xDX.js → sparkles-DikPE3OY.js} +1 -1
  167. package/dist/client/assets/{stateDiagram-D77RDMKH-LLshgiUk.js → stateDiagram-D77RDMKH-BjzRCePZ.js} +1 -1
  168. package/dist/client/assets/stateDiagram-D77RDMKH-BjzRCePZ.js.br +0 -0
  169. package/dist/client/assets/stateDiagram-D77RDMKH-BjzRCePZ.js.gz +0 -0
  170. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-C9yeiSIs.js +1 -0
  171. package/dist/client/assets/{swimlanes-42K2YHIH-D5kogY3u.js → swimlanes-42K2YHIH-DfyuNxsB.js} +1 -1
  172. package/dist/client/assets/swimlanes-42K2YHIH-DfyuNxsB.js.br +0 -0
  173. package/dist/client/assets/swimlanes-42K2YHIH-DfyuNxsB.js.gz +0 -0
  174. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-BFAodsZz.js +8 -0
  175. package/dist/client/assets/{timeline-definition-24CTP7MA-F4vFRXIm.js → timeline-definition-24CTP7MA-BvSf8YQs.js} +1 -1
  176. package/dist/client/assets/timeline-definition-24CTP7MA-BvSf8YQs.js.br +0 -0
  177. package/dist/client/assets/timeline-definition-24CTP7MA-BvSf8YQs.js.gz +0 -0
  178. package/dist/client/assets/{triangle-alert-HOIUoGzB.js → triangle-alert-nWNzdjS5.js} +1 -1
  179. package/dist/client/assets/{vennDiagram-4TSXK5OY-C1W4mA7H.js → vennDiagram-4TSXK5OY-BPs48uzW.js} +1 -1
  180. package/dist/client/assets/{vennDiagram-4TSXK5OY-C1W4mA7H.js.br → vennDiagram-4TSXK5OY-BPs48uzW.js.br} +0 -0
  181. package/dist/client/assets/vennDiagram-4TSXK5OY-BPs48uzW.js.gz +0 -0
  182. package/dist/client/assets/{wardleyDiagram-VM6X3IG4-Bj-fiIIR.js → wardleyDiagram-VM6X3IG4-DSa8jkGg.js} +1 -1
  183. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DSa8jkGg.js.br +0 -0
  184. package/dist/client/assets/wardleyDiagram-VM6X3IG4-DSa8jkGg.js.gz +0 -0
  185. package/dist/client/assets/{xychartDiagram-S5SC5T6Z-BBUrV_aE.js → xychartDiagram-S5SC5T6Z-C4Gb4X25.js} +1 -1
  186. package/dist/client/assets/xychartDiagram-S5SC5T6Z-C4Gb4X25.js.br +0 -0
  187. package/dist/client/assets/xychartDiagram-S5SC5T6Z-C4Gb4X25.js.gz +0 -0
  188. package/dist/client/index.html +2 -2
  189. package/dist/client/index.html.br +0 -0
  190. package/dist/client/index.html.gz +0 -0
  191. package/dist/client/sw.js +1 -1
  192. package/dist/client/sw.js.br +0 -0
  193. package/dist/client/sw.js.gz +0 -0
  194. package/dist/server/cli.js +336 -99
  195. package/dist/server/entry.js +11 -0
  196. package/dist/server/routes/terminal.js +45 -0
  197. package/dist/server/supervisor.js +525 -0
  198. package/dist/server/utils/backoff.js +15 -0
  199. package/dist/server/utils/crashForensics.js +227 -0
  200. package/dist/server/utils/healthProbe.js +92 -0
  201. package/dist/server/utils/ptySpawnBackoff.js +2 -1
  202. package/dist/server/utils/serverHealth.js +126 -0
  203. package/dist/server/utils/serverLogger.js +27 -4
  204. package/dist/server/utils/supervisorClient.js +151 -0
  205. package/dist/server/utils/supervisorProtocol.js +159 -0
  206. package/dist/server/utils/termdockState.js +62 -0
  207. package/package.json +1 -1
  208. package/runtime-manifest.json +3 -3
  209. package/dist/client/assets/App-CZk_DziZ.js +0 -156
  210. package/dist/client/assets/App-CZk_DziZ.js.br +0 -0
  211. package/dist/client/assets/App-CZk_DziZ.js.gz +0 -0
  212. package/dist/client/assets/ChangeWalkthroughPanel-C-WqvjtC.js.br +0 -0
  213. package/dist/client/assets/ChangeWalkthroughPanel-C-WqvjtC.js.gz +0 -0
  214. package/dist/client/assets/DagPlayground-BZDpEJGy.js.br +0 -0
  215. package/dist/client/assets/DagPlayground-BZDpEJGy.js.gz +0 -0
  216. package/dist/client/assets/DiffLab-C3-p91uh.js.br +0 -0
  217. package/dist/client/assets/DiffLab-C3-p91uh.js.gz +0 -0
  218. package/dist/client/assets/DiffReview-CWhKgYZN.js.br +0 -0
  219. package/dist/client/assets/DiffReview-CWhKgYZN.js.gz +0 -0
  220. package/dist/client/assets/DiffReviewLab-DVwuJrVG.js.br +0 -0
  221. package/dist/client/assets/DiffReviewLab-DVwuJrVG.js.gz +0 -0
  222. package/dist/client/assets/DiffViewer-CVrIRwTf.js +0 -35
  223. package/dist/client/assets/DiffViewer-CVrIRwTf.js.br +0 -0
  224. package/dist/client/assets/DiffViewer-CVrIRwTf.js.gz +0 -0
  225. package/dist/client/assets/ModelPreview-CB63ulOp.js.br +0 -0
  226. package/dist/client/assets/ModelPreview-CB63ulOp.js.gz +0 -0
  227. package/dist/client/assets/RightSidebar-B9JmuyiA.js +0 -1678
  228. package/dist/client/assets/RightSidebar-B9JmuyiA.js.br +0 -0
  229. package/dist/client/assets/RightSidebar-B9JmuyiA.js.gz +0 -0
  230. package/dist/client/assets/abnfDiagram-VCTEODGH-DXqSSIIQ.js.br +0 -0
  231. package/dist/client/assets/abnfDiagram-VCTEODGH-DXqSSIIQ.js.gz +0 -0
  232. package/dist/client/assets/app-B32WWSws.js +0 -35
  233. package/dist/client/assets/app-B32WWSws.js.br +0 -0
  234. package/dist/client/assets/app-B32WWSws.js.gz +0 -0
  235. package/dist/client/assets/arc-DbWPugQ5.js.br +0 -0
  236. package/dist/client/assets/arc-DbWPugQ5.js.gz +0 -0
  237. package/dist/client/assets/architectureDiagram-5GKGNRK7-DMFOu5nX.js.br +0 -0
  238. package/dist/client/assets/architectureDiagram-5GKGNRK7-DMFOu5nX.js.gz +0 -0
  239. package/dist/client/assets/blockDiagram-I7D4REHJ-CKLkxDEj.js.br +0 -0
  240. package/dist/client/assets/blockDiagram-I7D4REHJ-CKLkxDEj.js.gz +0 -0
  241. package/dist/client/assets/c4Diagram-7LVT6UL2-C78zNGxr.js.br +0 -0
  242. package/dist/client/assets/c4Diagram-7LVT6UL2-C78zNGxr.js.gz +0 -0
  243. package/dist/client/assets/channel-Dv1JMWuX.js +0 -1
  244. package/dist/client/assets/chunk-F27PBJKO-ClPpIDx4.js.br +0 -0
  245. package/dist/client/assets/chunk-F27PBJKO-ClPpIDx4.js.gz +0 -0
  246. package/dist/client/assets/chunk-IMKFNOWR-Bx2Jj2by.js.br +0 -0
  247. package/dist/client/assets/chunk-IMKFNOWR-Bx2Jj2by.js.gz +0 -0
  248. package/dist/client/assets/chunk-SVP7TREG-zxsu_mRX.js.br +0 -0
  249. package/dist/client/assets/chunk-SVP7TREG-zxsu_mRX.js.gz +0 -0
  250. package/dist/client/assets/chunk-TICWLB2K-DfhkM5vB.js.br +0 -0
  251. package/dist/client/assets/chunk-TICWLB2K-DfhkM5vB.js.gz +0 -0
  252. package/dist/client/assets/classDiagram-ZZMXUADV-BlTnvDlc.js +0 -1
  253. package/dist/client/assets/classDiagram-v2-VYDZK3BY-BlTnvDlc.js +0 -1
  254. package/dist/client/assets/cose-bilkent-JH36ORCC-nFW6grC2.js.br +0 -0
  255. package/dist/client/assets/cynefin-OW5HDTMX-WWNymBE7.js.br +0 -0
  256. package/dist/client/assets/cynefin-OW5HDTMX-WWNymBE7.js.gz +0 -0
  257. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-Cnu1881_.js.br +0 -0
  258. package/dist/client/assets/dagre-GXQ25YYZ-ZnFSJ_PQ.js.br +0 -0
  259. package/dist/client/assets/dagre-GXQ25YYZ-ZnFSJ_PQ.js.gz +0 -0
  260. package/dist/client/assets/diagram-S7CK7UJ4-NDwa39k2.js.br +0 -0
  261. package/dist/client/assets/diagram-S7CK7UJ4-NDwa39k2.js.gz +0 -0
  262. package/dist/client/assets/diagram-UQ7AKVKN-GvOo_Md9.js.br +0 -0
  263. package/dist/client/assets/diagram-UQ7AKVKN-GvOo_Md9.js.gz +0 -0
  264. package/dist/client/assets/diagram-VSXAHHWV-D0tpjVaU.js.br +0 -0
  265. package/dist/client/assets/diagram-VSXAHHWV-D0tpjVaU.js.gz +0 -0
  266. package/dist/client/assets/diagram-VX7I27RA-CE8gl6ZC.js.br +0 -0
  267. package/dist/client/assets/diagram-VX7I27RA-CE8gl6ZC.js.gz +0 -0
  268. package/dist/client/assets/diagram-Z3DM3KII-Dn9svAcp.js.br +0 -0
  269. package/dist/client/assets/diagram-Z3DM3KII-Dn9svAcp.js.gz +0 -0
  270. package/dist/client/assets/ebnfDiagram-PWID7BFC-BeIVOITU.js.br +0 -0
  271. package/dist/client/assets/ebnfDiagram-PWID7BFC-BeIVOITU.js.gz +0 -0
  272. package/dist/client/assets/erDiagram-RLTQ6QDP-CYb2hJnW.js.gz +0 -0
  273. package/dist/client/assets/flowDiagram-HODETNUW-BrCWf4Jw.js.br +0 -0
  274. package/dist/client/assets/flowDiagram-HODETNUW-BrCWf4Jw.js.gz +0 -0
  275. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CaEV35iE.js.br +0 -0
  276. package/dist/client/assets/ganttDiagram-EL5Y4UJY-CaEV35iE.js.gz +0 -0
  277. package/dist/client/assets/gestureArbiter-CqdDGsl4.js.br +0 -0
  278. package/dist/client/assets/gestureArbiter-CqdDGsl4.js.gz +0 -0
  279. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BSW6F8uE.js.br +0 -0
  280. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-BSW6F8uE.js.gz +0 -0
  281. package/dist/client/assets/index-mZxreyvP.css.br +0 -0
  282. package/dist/client/assets/index-mZxreyvP.css.gz +0 -0
  283. package/dist/client/assets/ishikawaDiagram-5VMMS53U-CC5aFdsA.js.br +0 -0
  284. package/dist/client/assets/ishikawaDiagram-5VMMS53U-CC5aFdsA.js.gz +0 -0
  285. package/dist/client/assets/journeyDiagram-3NMN7TZE-2Aoz11wC.js.br +0 -0
  286. package/dist/client/assets/journeyDiagram-3NMN7TZE-2Aoz11wC.js.gz +0 -0
  287. package/dist/client/assets/kanban-definition-UXKFOSKX-D6YFB_Z0.js.br +0 -0
  288. package/dist/client/assets/kanban-definition-UXKFOSKX-D6YFB_Z0.js.gz +0 -0
  289. package/dist/client/assets/layout-Dd8_VbyA.js.br +0 -0
  290. package/dist/client/assets/layout-Dd8_VbyA.js.gz +0 -0
  291. package/dist/client/assets/linear-CJMS1SaH.js.br +0 -0
  292. package/dist/client/assets/linear-CJMS1SaH.js.gz +0 -0
  293. package/dist/client/assets/mermaid.core-D2G7U75v.js.br +0 -0
  294. package/dist/client/assets/mermaid.core-D2G7U75v.js.gz +0 -0
  295. package/dist/client/assets/mindmap-definition-YA3MSWOX-BMKObGIP.js.br +0 -0
  296. package/dist/client/assets/mindmap-definition-YA3MSWOX-BMKObGIP.js.gz +0 -0
  297. package/dist/client/assets/passwordBootstrap-Bq6gHj2O.js.br +0 -0
  298. package/dist/client/assets/passwordBootstrap-Bq6gHj2O.js.gz +0 -0
  299. package/dist/client/assets/pegDiagram-XKGWAZYB-DqLntL3k.js.br +0 -0
  300. package/dist/client/assets/pegDiagram-XKGWAZYB-DqLntL3k.js.gz +0 -0
  301. package/dist/client/assets/pieDiagram-E7YTZNPT-C-vUASJL.js.br +0 -0
  302. package/dist/client/assets/pieDiagram-E7YTZNPT-C-vUASJL.js.gz +0 -0
  303. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BD5TrRYq.js.br +0 -0
  304. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BD5TrRYq.js.gz +0 -0
  305. package/dist/client/assets/railroadDiagram-O6MQD6OU-BwYnnmcE.js.br +0 -0
  306. package/dist/client/assets/railroadDiagram-O6MQD6OU-BwYnnmcE.js.gz +0 -0
  307. package/dist/client/assets/referenceLongPress-DC0noWIU.js.br +0 -0
  308. package/dist/client/assets/referenceLongPress-DC0noWIU.js.gz +0 -0
  309. package/dist/client/assets/requirementDiagram-BXWQKSXE-B0rZBE2S.js.br +0 -0
  310. package/dist/client/assets/requirementDiagram-BXWQKSXE-B0rZBE2S.js.gz +0 -0
  311. package/dist/client/assets/sankeyDiagram-P5KCCOFB-8xihEeEz.js.br +0 -0
  312. package/dist/client/assets/sankeyDiagram-P5KCCOFB-8xihEeEz.js.gz +0 -0
  313. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-C7nrszfj.js.br +0 -0
  314. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-C7nrszfj.js.gz +0 -0
  315. package/dist/client/assets/sizeCapture-INFHLROL-Cpbpxkib.js.br +0 -0
  316. package/dist/client/assets/sizeCapture-INFHLROL-Cpbpxkib.js.gz +0 -0
  317. package/dist/client/assets/stateDiagram-D77RDMKH-LLshgiUk.js.br +0 -0
  318. package/dist/client/assets/stateDiagram-D77RDMKH-LLshgiUk.js.gz +0 -0
  319. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-rk1xljvU.js +0 -1
  320. package/dist/client/assets/swimlanes-42K2YHIH-D5kogY3u.js.br +0 -0
  321. package/dist/client/assets/swimlanes-42K2YHIH-D5kogY3u.js.gz +0 -0
  322. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DsAFJkqm.js +0 -8
  323. package/dist/client/assets/timeline-definition-24CTP7MA-F4vFRXIm.js.br +0 -0
  324. package/dist/client/assets/timeline-definition-24CTP7MA-F4vFRXIm.js.gz +0 -0
  325. package/dist/client/assets/vennDiagram-4TSXK5OY-C1W4mA7H.js.gz +0 -0
  326. package/dist/client/assets/wardleyDiagram-VM6X3IG4-Bj-fiIIR.js.br +0 -0
  327. package/dist/client/assets/wardleyDiagram-VM6X3IG4-Bj-fiIIR.js.gz +0 -0
  328. package/dist/client/assets/xychartDiagram-S5SC5T6Z-BBUrV_aE.js.br +0 -0
  329. package/dist/client/assets/xychartDiagram-S5SC5T6Z-BBUrV_aE.js.gz +0 -0
@@ -1,2 +1,2 @@
1
- import{a4 as re,cH as ce,bd as s,d as le}from"./app-B32WWSws.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-C6EB6xDX.js";import{M as me,G as he,L as ue,T as xe,C as fe}from"./triangle-alert-HOIUoGzB.js";const pe=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ye=re("chevron-left",pe);const ge=[["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"}]],be=re("minimize-2",ge);function ke(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function ve(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 Ne(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 Q({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:Ne(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,X=92,q=132,we=28,C=16,J=18,T=54,ee=24,ae=18,je=8,B=24,z=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function te(t){return z[t%z.length]}function Me(t,d){return`${t.from}->${t.to}:${d}`}function Ee(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(X,36+Math.max(0,o-1)*ae)}function ne(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 se(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 $e(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,x)=>(h.fromY+h.toY)/2-(x.fromY+x.toY)/2||h.index-x.index);const r=[];o.forEach((h,x)=>{const N=(h.fromY+h.toY)/2,M=Math.max(B,d[h.key]??0)/2;if(x===0){r.push(N);return}const w=o[x-1],E=Math.max(B,d[w.key]??0)/2;r.push(Math.max(N,r[x-1]+E+M+je))});const g=r.reduce((h,x,N)=>h+x-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,x)=>h-g-Math.max(B,d[o[x].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,x)=>{h.laneY=r[x]-g+a})}}function _e(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,x=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(x.has(n))return 0;x.add(n);const c=l.get(n)??[],u=c.length===0?0:Math.max(...c.map(N))+1;return x.delete(n),h.set(n,u),u};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)??[],u=r.get(n.id);u&&c.push(u),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((u,f)=>u.index-f.index);let c=C+T;m.forEach(({node:u,index:f},j)=>{const I=Math.max(Ee(u.id,l,a),Math.ceil(i[u.id]??X));w.push({node:u,index:f,layer:n,row:j,x:C+n*(R+q),y:c,height:I}),c+=I+we})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),u=E.get(n.to);return!c||!u?[]:[{...n,key:Me(n,m),index:m,fromNode:c,toNode:u,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:u.y+u.height/2,laneY:(c.y+c.height/2+u.y+u.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=se(m,v,"from");c.forEach((u,f)=>{const j=v[u];j.fromPortIndex=f,j.fromY=ne(E.get(n),f,c.length)})}for(const[n,m]of G){const c=se(m,v,"to");c.forEach((u,f)=>{const j=v[u];j.toPortIndex=f,j.toY=ne(E.get(n),f,c.length)})}$e(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))-ee-(Math.floor(f/2)+1)*J,S=Math.max(...j.map(A=>A.y+A.height))+ee+(Math.floor(f/2)+1)*J;n.laneY=f%2===0?Math.max(C,I):S});const O=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+T+X,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(B,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(O+1)*R+O*q,height:W+C+T}}function oe(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,x=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(x),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||x&&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(x)*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 De(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?oe([{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}]):oe([{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 Ie(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 Pe({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=ke(t,d),h=D.useRef(new Map),x=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?_e(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 x.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 u=`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):[],U=f?new Set(A.map(e=>e.key)):null,F=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):S?new Set([S.from,S.to]):null,K=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??K.get(e.id)),H=L.findIndex(e=>e.id===n),V=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??K.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(de,{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:()=>V(-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(ye,{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:()=>V(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(be,{size:15}):s.jsx(me,{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(he,{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:z.map((e,y)=>s.jsx("marker",{id:`${u}-${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=De(e),p=te(e.index),b=I===e.key||!!U?.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(#${u}-${e.index%z.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:_}=Ie(e),k=te(e.index),Z=I===e.key||!!U?.has(e.key),ie=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?x.current.set(e.key,P):x.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(Q,{elementRef:k=>{k?h.current.set(e.id,k):h.current.delete(e.id)},anchor:e.anchor??K.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 ${F?.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)]":F?"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 ${ve(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(ue,{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(Q,{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(xe,{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(fe,{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{Pe as C,be as M};
1
+ import{a4 as re,cJ as ce,bf as s,d as le}from"./app-Bl11JYak.js";import{b as D}from"./dnd-BCFAPC0L.js";import{S as de}from"./sparkles-DikPE3OY.js";import{M as me,G as he,L as ue,T as xe,C as fe}from"./triangle-alert-nWNzdjS5.js";const pe=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],ye=re("chevron-left",pe);const ge=[["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"}]],be=re("minimize-2",ge);function ke(t,d){return(d?t.filter(o=>o.repoRoot===d):t).slice().sort((o,r)=>r.injectedAt-o.injectedAt)[0]??null}function ve(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 Ne(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:Ne(t),className:`${o} text-left transition hover:border-primary/35 hover:bg-primary/15 active:scale-[0.99]`,style:r,children:d})}const H=190,X=92,Q=132,we=28,C=16,q=18,T=54,ee=24,ae=18,je=8,B=24,z=["rgb(var(--primary-rgb))","rgb(var(--accent-rgb))","rgb(var(--warning-rgb))","rgb(var(--success-rgb))","rgb(192 132 252)"];function te(t){return z[t%z.length]}function Me(t,d){return`${t.from}->${t.to}:${d}`}function Ee(t,d,i){const o=Math.max(d.get(t)?.length??0,i.get(t)?.length??0);return Math.max(X,36+Math.max(0,o-1)*ae)}function ne(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 se(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 $e(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,x)=>(h.fromY+h.toY)/2-(x.fromY+x.toY)/2||h.index-x.index);const r=[];o.forEach((h,x)=>{const N=(h.fromY+h.toY)/2,M=Math.max(B,d[h.key]??0)/2;if(x===0){r.push(N);return}const w=o[x-1],E=Math.max(B,d[w.key]??0)/2;r.push(Math.max(N,r[x-1]+E+M+je))});const g=r.reduce((h,x,N)=>h+x-(o[N].fromY+o[N].toY)/2,0)/Math.max(1,r.length),l=Math.min(...r.map((h,x)=>h-g-Math.max(B,d[o[x].key]??0)/2)),a=Math.max(0,C-l);o.forEach((h,x)=>{h.laneY=r[x]-g+a})}}function _e(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,x=new Set,N=n=>{const m=h.get(n);if(m!==void 0)return m;if(x.has(n))return 0;x.add(n);const c=l.get(n)??[],u=c.length===0?0:Math.max(...c.map(N))+1;return x.delete(n),h.set(n,u),u};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)??[],u=r.get(n.id);u&&c.push(u),M.set(m,c)}const w=[];for(const[n,m]of M.entries()){m.sort((u,f)=>u.index-f.index);let c=C+T;m.forEach(({node:u,index:f},j)=>{const I=Math.max(Ee(u.id,l,a),Math.ceil(i[u.id]??X));w.push({node:u,index:f,layer:n,row:j,x:C+n*(H+Q),y:c,height:I}),c+=I+we})}const E=new Map(w.map(n=>[n.node.id,n])),v=g.flatMap((n,m)=>{const c=E.get(n.from),u=E.get(n.to);return!c||!u?[]:[{...n,key:Me(n,m),index:m,fromNode:c,toNode:u,routeIndex:m,fromPortIndex:0,toPortIndex:0,fromY:c.y+c.height/2,toY:u.y+u.height/2,laneY:(c.y+c.height/2+u.y+u.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=se(m,v,"from");c.forEach((u,f)=>{const j=v[u];j.fromPortIndex=f,j.fromY=ne(E.get(n),f,c.length)})}for(const[n,m]of G){const c=se(m,v,"to");c.forEach((u,f)=>{const j=v[u];j.toPortIndex=f,j.toY=ne(E.get(n),f,c.length)})}$e(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))-ee-(Math.floor(f/2)+1)*q,S=Math.max(...j.map(A=>A.y+A.height))+ee+(Math.floor(f/2)+1)*q;n.laneY=f%2===0?Math.max(C,I):S});const O=Math.max(0,...w.map(n=>n.layer)),W=Math.max(C+T+X,...w.map(n=>n.y+n.height),...v.map(n=>n.laneY+Math.max(B,o[n.key]??0)/2));return{nodes:w,edges:v,width:C*2+(O+1)*H+O*Q,height:W+C+T}}function oe(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,x=l.y-g.y,N=a.x-l.x,M=a.y-l.y,w=Math.abs(h)+Math.abs(x),E=Math.abs(N)+Math.abs(M);if(w===0||E===0||h&&N||x&&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(x)*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 De(t){const d=t.fromNode.x+H+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?oe([{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}]):oe([{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 Ie(t){const d=t.fromNode.x+H+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 Pe({walkthroughs:t,repoRoot:d,onNavigate:i,fullscreen:o=!1,onToggleFullscreen:r}){const{t:g}=ce(),l=D.useId(),a=ke(t,d),h=D.useRef(new Map),x=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?_e(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 x.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 u=`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):[],U=f?new Set(A.map(e=>e.key)):null,F=f?new Set([f,...A.flatMap(e=>[e.from,e.to])]):S?new Set([S.from,S.to]):null,K=new Map(a.sections.filter(e=>e.nodeId&&e.anchor).map(e=>[e.nodeId,e.anchor])),L=a.nodes.filter(e=>e.anchor??K.get(e.id)),R=L.findIndex(e=>e.id===n),V=e=>{if(L.length===0)return;const y=R<0?e<0?L.length-1:0:Math.min(L.length-1,Math.max(0,R+e)),p=L[y],b=p.anchor??K.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(de,{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:()=>V(-1),disabled:R===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(ye,{size:15})}),s.jsxs("span",{className:"min-w-8 text-center text-[10px] tabular-nums text-muted-foreground",children:[R<0?"—":R+1,"/",L.length]}),s.jsx("button",{type:"button",onClick:()=>V(1),disabled:R===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(be,{size:15}):s.jsx(me,{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(he,{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:z.map((e,y)=>s.jsx("marker",{id:`${u}-${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=De(e),p=te(e.index),b=I===e.key||!!U?.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(#${u}-${e.index%z.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+H+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:_}=Ie(e),k=te(e.index),Z=I===e.key||!!U?.has(e.key),ie=!!((I||f)&&!Z);return s.jsxs("button",{ref:P=>{P?x.current.set(e.key,P):x.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??K.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 ${F?.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)]":F?"border-border/15 opacity-40":"border-border/25"}`,style:{left:p,top:b,width:H,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 ${ve(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(ue,{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(xe,{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(fe,{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{Pe as C,be as M};
@@ -1 +1 @@
1
- import{bd as t}from"./app-B32WWSws.js";import{C as s}from"./ChangeWalkthroughPanel-C-WqvjtC.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-C6EB6xDX.js";import"./triangle-alert-HOIUoGzB.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 p(){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{p as DagPlayground};
1
+ import{bf as t}from"./app-Bl11JYak.js";import{C as s}from"./ChangeWalkthroughPanel-jX6d1ENn.js";import"./react-XDCjal2T.js";import"./dnd-BCFAPC0L.js";import"./terminal-C7X98Amf.js";import"./sparkles-DikPE3OY.js";import"./triangle-alert-nWNzdjS5.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 p(){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{p as DagPlayground};
@@ -1,4 +1,4 @@
1
- import{bd as t}from"./app-B32WWSws.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as k,S as C,D as I}from"./DiffViewer-CVrIRwTf.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-DC0noWIU.js";const u={chineseParagraphExpansion:{label:"Chinese paragraph expansion (AGENTS.md)",path:"AGENTS.md",diff:"diff --git a/AGENTS.md b/AGENTS.md\n--- a/AGENTS.md\n+++ b/AGENTS.md\n@@ -51,3 +51,3 @@\n 5. 编辑任务不自动授权提交或发布。\n-6. 查看字节内部平台链接或页面时优先查找并使用 `bytedcli` 对应子命令获取结构化信息;仅在确认 `bytedcli` 不支持、受鉴权或能力限制,或无法取得具体信息后,才使用 AI Chrome / `agent-browser` 等浏览器方式补充,禁止一开始直接使用浏览器。\n+6. 查看或读取字节内部平台的数据、链接或页面时,先使用对应的结构化 CLI:飞书群聊、文档、Base、Minutes 等优先使用 `lark-cli`,其他内部平台先查找并使用 `bytedcli` 对应子命令。只有确认 CLI 不支持、受鉴权或能力限制,或无法取得具体信息后,才允许用 AI Chrome、`agent-browser`、Computer Use 或其他桌面 GUI 方式补充。用户说“读一下群消息”“看一下页面内容”等,默认是数据读取请求,不因为目标应用已经打开或登录就视为桌面操作请求;只有用户明确要求点击、输入、拖拽等可见界面操作时,才可直接使用 Computer Use。\n 7. 值班机 / DevBox 共享运维仓库例外。"},multilineRewrite:{label:"Multi-line alignment function rewrite",path:"DiffViewer.tsx",diff:`diff --git a/DiffViewer.tsx b/DiffViewer.tsx
1
+ import{bf as e}from"./app-Bl11JYak.js";import{b as a}from"./dnd-BCFAPC0L.js";import{c as I,S as N,D as R}from"./DiffViewer-680KNh4c.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./referenceLongPress-BclZaogy.js";const u={chineseParagraphExpansion:{label:"Chinese paragraph expansion (AGENTS.md)",path:"AGENTS.md",diff:"diff --git a/AGENTS.md b/AGENTS.md\n--- a/AGENTS.md\n+++ b/AGENTS.md\n@@ -51,3 +51,3 @@\n 5. 编辑任务不自动授权提交或发布。\n-6. 查看字节内部平台链接或页面时优先查找并使用 `bytedcli` 对应子命令获取结构化信息;仅在确认 `bytedcli` 不支持、受鉴权或能力限制,或无法取得具体信息后,才使用 AI Chrome / `agent-browser` 等浏览器方式补充,禁止一开始直接使用浏览器。\n+6. 查看或读取字节内部平台的数据、链接或页面时,先使用对应的结构化 CLI:飞书群聊、文档、Base、Minutes 等优先使用 `lark-cli`,其他内部平台先查找并使用 `bytedcli` 对应子命令。只有确认 CLI 不支持、受鉴权或能力限制,或无法取得具体信息后,才允许用 AI Chrome、`agent-browser`、Computer Use 或其他桌面 GUI 方式补充。用户说“读一下群消息”“看一下页面内容”等,默认是数据读取请求,不因为目标应用已经打开或登录就视为桌面操作请求;只有用户明确要求点击、输入、拖拽等可见界面操作时,才可直接使用 Computer Use。\n 7. 值班机 / DevBox 共享运维仓库例外。"},multilineRewrite:{label:"Multi-line alignment function rewrite",path:"DiffViewer.tsx",diff:`diff --git a/DiffViewer.tsx b/DiffViewer.tsx
2
2
  --- a/DiffViewer.tsx
3
3
  +++ b/DiffViewer.tsx
4
4
  @@ -714,28 +714,14 @@
@@ -406,4 +406,4 @@ new file mode 100644
406
406
  +++ b/Second.ts
407
407
  @@ -0,0 +1,2 @@
408
408
  +export const second = true;
409
- +announce(second);`}};function h(){if(typeof window>"u")return"kotlin";const r=new URLSearchParams(window.location.search).get("fixture");return r&&r in u?r:"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 D(){const[i,r]=a.useState(()=>h()),[d,c]=a.useState(()=>b()),[p,v]=a.useState(()=>k()),[f,m]=a.useState(()=>x()),[l,g]=a.useState(()=>w()),s=u[i],S=a.useMemo(()=>Object.entries(u),[]),o=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,r(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":o,"data-diff-lab-requested-view":d,"data-diff-lab-inline":f,"data-diff-lab-wrap":l?"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=>r(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":o==="unified",className:`rounded-full px-3 text-xs font-semibold ${o==="unified"?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:"Unified"}),t.jsx("button",{type:"button",onClick:()=>c("split"),disabled:!p,"aria-pressed":o==="split",className:`rounded-full px-3 text-xs font-semibold ${o==="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 ${l?"bg-primary/15 text-primary":"bg-surface-2 text-muted-foreground"}`,children:["Wrap ",l?"on":"off"]})]})]}),t.jsx("main",{className:"min-h-0 flex-1 overflow-auto rounded-lg border border-border/20 bg-surface",children:t.jsx(I,{filePath:s.path,repoRoot:"/tmp/termdock-diff-lab",changedFile:{path:s.path,absolutePath:`/tmp/termdock-diff-lab/${s.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:s.diff,oldSourceOverride:s.oldSource,active:!0,wrap:l,embedded:new URLSearchParams(window.location.search).get("embedded")==="1",viewType:o,inlineMode:f})})]})})}export{u as DIFF_FIXTURES,D as DiffLab};
409
+ +announce(second);`}};function b(){if(typeof window>"u")return"kotlin";const r=new URLSearchParams(window.location.search).get("fixture");return r&&r in u?r:"kotlin"}function x(){return typeof window>"u"?"unified":new URLSearchParams(window.location.search).get("view")==="split"?"split":"unified"}function w(){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 v(){return typeof window>"u"?!0:new URLSearchParams(window.location.search).get("wrap")!=="off"}function F(){const[i,r]=a.useState(()=>b()),[d,c]=a.useState(()=>x()),[p,S]=a.useState(()=>I()),[f,m]=a.useState(()=>w()),[l,g]=a.useState(()=>v()),[h,y]=a.useState(null),s=u[i],k=a.useMemo(()=>Object.entries(u),[]),o=d==="split"&&!p?"unified":d;return a.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const t=window.matchMedia(N),n=()=>S(t.matches);return n(),t.addEventListener?.("change",n),()=>t.removeEventListener?.("change",n)},[]),a.useEffect(()=>{if(typeof window>"u")return;let t=window.location.search;const n=()=>{window.location.search!==t&&(t=window.location.search,r(b()),c(x()),m(w()),g(v()))};window.addEventListener("popstate",n),window.addEventListener("pageshow",n),window.addEventListener("focus",n);const C=window.setInterval(n,250);return()=>{window.removeEventListener("popstate",n),window.removeEventListener("pageshow",n),window.removeEventListener("focus",n),window.clearInterval(C)}},[]),e.jsx("div",{className:"min-h-screen bg-background-subtle text-foreground","data-diff-lab":!0,"data-diff-lab-fixture":i,"data-diff-lab-view":o,"data-diff-lab-requested-view":d,"data-diff-lab-inline":f,"data-diff-lab-wrap":l?"on":"off",children:e.jsxs("div",{className:"mx-auto flex min-h-screen max-w-[1180px] flex-col px-4 py-4",children:[e.jsxs("header",{className:"mb-3 flex flex-wrap items-center justify-between gap-3 border-b border-border/20 pb-3",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-sm font-semibold",children:"Diff Lab"}),e.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."})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("select",{value:i,onChange:t=>r(t.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:k.map(([t,n])=>e.jsx("option",{value:t,children:n.label},t))}),e.jsxs("div",{className:"inline-flex h-8 overflow-hidden rounded-full bg-surface-2 p-0.5",children:[e.jsx("button",{type:"button",onClick:()=>c("unified"),"aria-pressed":o==="unified",className:`rounded-full px-3 text-xs font-semibold ${o==="unified"?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:"Unified"}),e.jsx("button",{type:"button",onClick:()=>c("split"),disabled:!p,"aria-pressed":o==="split",className:`rounded-full px-3 text-xs font-semibold ${o==="split"?"bg-surface-elevated text-foreground":"text-muted-foreground"} disabled:cursor-not-allowed disabled:opacity-40`,children:"Split"})]}),e.jsx("div",{className:"inline-flex h-8 overflow-hidden rounded-full bg-surface-2 p-0.5",children:["none","words","chars"].map(t=>e.jsx("button",{type:"button",onClick:()=>m(t),className:`rounded-full px-3 text-xs font-semibold ${f===t?"bg-surface-elevated text-foreground":"text-muted-foreground"}`,children:t},t))}),e.jsxs("button",{type:"button",onClick:()=>g(t=>!t),className:`h-8 rounded-full px-3 text-xs font-semibold ${l?"bg-primary/15 text-primary":"bg-surface-2 text-muted-foreground"}`,children:["Wrap ",l?"on":"off"]})]})]}),e.jsx("main",{className:"min-h-0 flex-1 overflow-auto rounded-lg border border-border/20 bg-surface",children:e.jsx(R,{onInsertDiffReference:(t,n)=>y({label:t,text:n}),filePath:s.path,repoRoot:"/tmp/termdock-diff-lab",changedFile:{path:s.path,absolutePath:`/tmp/termdock-diff-lab/${s.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:s.diff,oldSourceOverride:s.oldSource,active:!0,wrap:l,embedded:new URLSearchParams(window.location.search).get("embedded")==="1",viewType:o,inlineMode:f})}),e.jsxs("section",{className:"mt-3 rounded-lg border border-border/20 bg-surface p-3",children:[e.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground",children:"Inserted reference"}),e.jsx("div",{className:"mt-1 font-mono text-[11px] text-foreground","data-diff-lab-inserted-label":!0,children:h?.label??""}),e.jsx("pre",{className:"mt-1 max-h-64 overflow-auto whitespace-pre-wrap break-all rounded border border-border/20 bg-surface-2 p-2 font-mono text-[11px] text-foreground","data-diff-lab-inserted":!0,children:h?.text??""})]})]})})}export{u as DIFF_FIXTURES,F as DiffLab};
@@ -1 +1 @@
1
- import{a4 as Qe,bd as r,d as ut,c as dt,cH as ft,cS as ht,ah as mt,a as pt,cR as xt,bv as gt,X as vt}from"./app-B32WWSws.js";import{b as o,r as Ye}from"./dnd-BCFAPC0L.js";import{h as Je,F as bt,b as yt,c as Xe}from"./gestureArbiter-CqdDGsl4.js";import{S as Ze}from"./sparkles-C6EB6xDX.js";import{D as wt,i as kt}from"./DiffViewer-CVrIRwTf.js";const Rt=[["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"}]],jt=Qe("list-tree",Rt);const Nt=[["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"}]],Mt=Qe("list",Nt);function et({selected:t,depth:n=0,title:i,leading:p,children:h,trailing:a,role:y,tabIndex:v,ariaExpanded:x,onClick:f,onKeyDown:b,onPointerDown:L,onPointerUp:M,onPointerCancel:C,dataAttributes:$}){return r.jsxs("div",{role:y,tabIndex:v,"aria-expanded":x,title:i,onClick:f,onKeyDown:b,onPointerDown:L,onPointerUp:M,onPointerCancel:C,...$,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:`${n*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:p}),r.jsx("span",{className:"min-w-0 flex-1",children:h}),a]})}function tt(t){return t.path.replace(/^\/+/,"")}function Tt(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const n=t.path.split("/").filter(Boolean);return{name:n.pop()||t.path,dir:n.join("/")}}function rt(t,n){const i=new Map,p=(a,y,v,x)=>{const f=a.get(y);if(f)return f;const b={path:v,name:y,childCount:0,directories:[],files:[]};return a.set(y,b),x?.directories.push(b),b};for(const a of t){const y=n(a).split("/").filter(Boolean);if(y.length<=1)continue;let v=i,x=null,f="";for(const b of y.slice(0,-1)){f=f?`${f}/${b}`:b;const L=p(v,b,f,x);x=L,v=new Map(L.directories.map(M=>[M.name,M]))}x?.files.push(a)}const h=a=>{const y=a.directories.map(h).sort((x,f)=>x.name.localeCompare(f.name)),v=a.files.sort((x,f)=>x.path.localeCompare(f.path));return{...a,directories:y,files:v,childCount:y.reduce((x,f)=>x+f.childCount,0)+v.length}};return Array.from(i.values()).map(h).sort((a,y)=>a.name.localeCompare(y.name))}function He(t,n,i=0){const p=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Tt(t);return r.jsx(et,{selected:p,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{Je()||n.onSelectFile(t)},onKeyDown:a=>{a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),n.onSelectFile(t))},leading:n.renderLeading(t),depth:i,trailing:n.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 ${p?"font-medium":""}`,children:h.name}),n.mode!=="tree"&&h.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:h.dir}),n.renderSubtitle?.(t)]})},t.key)}function nt(t,n,i,p,h){let a=t;const y=[t.name];for(;a.files.length===0&&a.directories.length===1;)a=a.directories[0],y.push(a.name);const v=y.join("/"),x=`${n}:${a.path}`,f=i.collapsedDirectoryKeys.has(x);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(et,{role:"button",tabIndex:0,onClick:()=>{Je()||i.onToggleDirectory(x)},onKeyDown:b=>{b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),i.onToggleDirectory(x))},ariaExpanded:!f,depth:p,title:a.path,leading:f?r.jsx(ut,{size:13}):r.jsx(dt,{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:a.childCount}),i.renderDirectoryTrailing?.(a.path,h)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(bt,{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:[a.directories.map(b=>nt(b,n,i,p+1,h)),a.files.length>0&&r.jsx("div",{className:"space-y-px",children:a.files.map(b=>He(b,i,p+1))})]})]},x)}function Dt(t,n){const i=n.getFileTreePath??tt,p=t.files.filter(a=>i(a).split("/").filter(Boolean).length<=1),h=rt(t.files,i);return r.jsxs("div",{className:"space-y-px",children:[h.map(a=>nt(a,t.key,n,0,t)),p.length>0&&r.jsx("div",{className:"space-y-px",children:p.map(a=>He(a,n))})]})}function St(t,n=tt){const i=[],p=a=>{for(const y of a.directories)p(y);i.push(...a.files)};for(const a of rt(t,n))p(a);const h=new Set(i.map(a=>a.key));return i.push(...t.filter(a=>!h.has(a.key))),i}function It(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(n=>{const i=!!n.header,p=!!n.collapsed;return r.jsxs("section",{className:i?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[n.header,!p&&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"?Dt(n,t):n.files.map(h=>He(h,t))})]},n.key)})})}const Ee="termdock:diff-review:list-width:v1",Et=120,Le=320,Ke=220,Ct=560;function Ft(t){return typeof t=="number"&&Number.isFinite(t)}function Oe(t,n){const i=Math.max(Ke,n-360),p=Math.min(Ct,i);return Math.min(p,Math.max(Ke,t))}function _t(){return gt(Ee,Ft)??Le}function At({list:t,detail:n,mobile:i,mobileListHeader:p,mobileDetailHeader:h,desktopListHeader:a,backLabel:y,onMobileSlideChange:v,externalSwiperRef:x,desktopLayout:f="split",onDetailScroll:b,desktopSidePanel:L,desktopListClassName:M,detailOwnsScroll:C=!1}){const{t:$}=ft(),P=o.useRef(null),O=o.useRef(null),F=o.useRef(null),[V,q]=o.useState(_t);o.useEffect(()=>{if(i||f!=="split")return;const m=O.current;m&&q(j=>Oe(j,m.clientWidth))},[f,i]);const se=o.useCallback(m=>{i||f!=="split"||(m.preventDefault(),F.current={startX:m.clientX,startWidth:V,pointerId:m.pointerId},m.currentTarget.setPointerCapture(m.pointerId))},[f,V,i]),le=o.useCallback(m=>{const j=F.current;if(!j||j.pointerId!==m.pointerId)return;const T=O.current?.clientWidth??window.innerWidth,D=Oe(j.startWidth+m.clientX-j.startX,T);q(D),ht(Ee,D,Et)},[]),oe=o.useCallback(m=>{const j=F.current;if(!(!j||j.pointerId!==m.pointerId)){F.current=null,mt(Ee);try{m.currentTarget.releasePointerCapture(m.pointerId)}catch{}}},[]);if(i){const m=()=>{const w=P.current;w&&w.slideTo(1)},j=()=>{const w=P.current;w&&w.slideTo(0)},T=typeof t=="function"?t({slideToDetail:m}):t,D=typeof h=="function"?h({slideToList:j,slideToDetail:m}):h;return r.jsxs(yt,{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=>{P.current=w,x&&(x.current=w)},onSlideChange:w=>{v?.(w.activeIndex)},children:[r.jsx(Xe,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[p&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:p}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:T})]})}),r.jsx(Xe,{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(pt,{size:14}),y]})}),r.jsx("div",{className:C?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:C?void 0:w=>b?.(w.currentTarget),children:n})]})})]})}const G=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?C?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:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),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:n})]}):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:m=>b?.(m.currentTarget),children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):r.jsxs("div",{ref:O,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:M??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:V},children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":$("diffViewer.resizeNavigation"),title:$("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:se,onPointerMove:le,onPointerUp:oe,onPointerCancel:oe,onDoubleClick:()=>{q(Le),xt(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:C?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:C?void 0:m=>b?.(m.currentTarget),children:n})]})}function zt({mode:t,onModeChange:n,showAi:i=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-md bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>n("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Mt,{size:13})}),r.jsx("button",{type:"button",onClick:()=>n("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(jt,{size:13})}),i&&r.jsx("button",{type:"button",onClick:()=>n("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Ze,{size:13})})]})}function Lt({groups:t,mode:n,onModeChange:i,selectedKey:p,collapsedDirectoryKeys:h,onToggleDirectory:a,onSelectFile:y,renderLeading:v,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:b,detail:L,mobile:M,backLabel:C,compact:$=!1,emptyContent:P,listPrefix:O,aiContent:F,listContainerClassName:V="px-2 py-2",detailContainerClassName:q="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:se,renderMobileDetailHeader:le,externalSwiperRef:oe,onMobileSlideChange:G,slideToDetailOnMobile:m=!0,desktopLayout:j="split",onDetailScroll:T,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:J}){const[X,ce]=o.useState(!1);o.useEffect(()=>{if(!X)return;const E=H=>{H.key==="Escape"&&ce(!1)};return document.addEventListener("keydown",E),()=>document.removeEventListener("keydown",E)},[X]);const me=r.jsx(zt,{mode:n,onModeChange:i,showAi:!!F}),pe=n==="tree"?"tree":"list",Z=se?se(me):r.jsx("div",{className:"flex justify-end",children:me}),ee=t.some(E=>E.files.length>0),te=r.jsx(At,{mobile:X?!1:M,backLabel:C,externalSwiperRef:oe,onMobileSlideChange:G,desktopLayout:X?"split":j,onDetailScroll:T,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:J,mobileListHeader:M?Z:void 0,desktopListHeader:M?void 0:Z,mobileDetailHeader:le,list:({slideToDetail:E})=>r.jsx("div",{className:V,children:n==="ai"?typeof F=="function"?F({slideToDetail:E,fullscreen:X,toggleFullscreen:()=>ce(H=>!H)}):F??P:r.jsxs(r.Fragment,{children:[O,ee?r.jsx(It,{groups:t,selectedKey:p,mode:pe,mobile:M,compact:$,collapsedDirectoryKeys:h,onToggleDirectory:a,onSelectFile:H=>{y(H),M&&m&&window.requestAnimationFrame(E)},renderLeading:v,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:b}):P]})}),detail:r.jsx("div",{className:J?"h-full min-h-0":q,children:L})});return!X||typeof document>"u"?te:Ye.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(Ze,{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:()=>ce(!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(vt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:te})]}),document.body)}const Ht=96,Ae=44;function Pt({file:t,repoRoot:n,selectionPath:i,displayName:p,displayDir:h,selected:a,activePane:y,visible:v,reusableContent:x=!1,estimatedHeight:f,lightweight:b=!1,wrap:L,viewType:M,inlineMode:C,diffOptions:$,reloadKey:P=0,auditRecords:O,diffOverride:F,preparedDiff:V,renderBadge:q,onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:G,copiedReferenceKey:m,onClearAuditRecord:j,onContentReady:T,onHeightChange:D}){const w=o.useRef(null),J=o.useRef(null),X=o.useRef(null),[ce,me]=o.useState(null),pe=o.useRef(64),Z=o.useRef(f??104),ee=o.useRef(null),te=o.useRef(null),E=o.useRef(!1),H=o.useRef(!1),z=o.useRef(null),[K,ue]=o.useState(!1),[ke,Te]=o.useState(!1),Re=t.absolutePath||(n?`${n}/${t.path}`:t.path),ie=o.useCallback(()=>{H.current||(H.current=!0,Te(!0),T?.(i))},[T,i]);o.useLayoutEffect(()=>(E.current=!1,H.current=!1,ee.current=null,te.current=null,z.current!==null&&(window.clearTimeout(z.current),z.current=null),ue(!1),Te(!1),()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)}),[F,V,P,x,v]),o.useLayoutEffect(()=>{const I=ee.current;!K||I===null||Math.abs((f??104)-I)>=1||(ee.current=null,ie())},[ie,f,K]),o.useLayoutEffect(()=>{if(!v||!K)return;const I=X.current;if(!I)return;const je=()=>{if(!E.current)return;const xe=I.firstElementChild;if(!xe)return;const W=Math.ceil(Math.max(xe.getBoundingClientRect().height,xe.scrollHeight,64)),fe=pe.current;if(W>0&&fe!==W&&(pe.current=W,me(W)),!w.current)return;const U=J.current?.getBoundingClientRect().height??Ae,S=Math.ceil(U+W+1);S<=0||te.current===S||(te.current=S,z.current!==null&&window.clearTimeout(z.current),z.current=window.setTimeout(()=>{if(z.current=null,!E.current)return;const A=te.current;if(A===null)return;const ae=Z.current;if(H.current){Z.current=A,Math.abs(ae-A)>=1&&D?.(i,ae,A),T?.(i);return}if(ee.current=A,Math.abs(ae-A)<1||!D){Z.current=A,ee.current=null,ie();return}Z.current=A,D(i,ae,A)},Ht))};if(je(),typeof ResizeObserver>"u")return;const de=new ResizeObserver(je);return de.observe(I),I.firstElementChild&&de.observe(I.firstElementChild),J.current&&de.observe(J.current),()=>de.disconnect()},[ie,T,D,i,K,v,L,M,C]);const _=v&&!ke;return r.jsxs("div",{ref:w,"data-diff-stream-item":i,"data-diff-selection-path":i,"data-diff-file-path":t.path,"data-diff-absolute-path":Re,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${_||!v?"overflow-hidden":""} ${a?"bg-surface-elevated/35":""}`,style:v?_?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:J,"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 ${a?"bg-surface-elevated/95":"bg-surface/95"}`,children:[q(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:Re,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:p}),h&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:h})]})]}),r.jsxs("div",{ref:X,className:"relative","data-diff-stream-body":!0,style:v?{minHeight:ke?64:Math.max(ce??64,(f??104)-Ae)}:{height:Math.max(ce??64,(f??104)-Ae)},children:[v?r.jsx(wt,{active:y,repoRoot:n,filePath:t.path,referenceFilePath:Re,changedFile:t,wrap:L,viewType:M,inlineMode:C,diffOptions:$,reloadKey:P,embedded:!0,lightweight:b,auditRecords:O,diffOverride:F,preparedDiff:V,onClearAuditRecord:j,onContentReady:()=>{if(x){E.current=!0,ue(!0),ie();return}E.current||(E.current=!0,ue(!0))},onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:G,copiedReferenceKey:m}):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&&!ke&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const qe=8,ze=1600,Ue=104,Wt=1e3,we=new Map;function Bt(t,n){for(we.delete(t),we.set(t,n);we.size>Wt;){const i=we.keys().next().value;if(i===void 0)break;we.delete(i)}}function $t(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.reloadKey===n.reloadKey&&t.wrap===n.wrap&&t.viewType===n.viewType&&t.inlineMode===n.inlineMode&&t.algorithm===n.algorithm&&t.whitespace===n.whitespace&&t.context===n.context)}const Vt={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 Yt({status:t}){const n=Vt[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 ${n.className}`,title:n.title,children:n.label})}function Jt(t,n){return n?{key:n,nonce:t.nonce+1}:t}function Zt({files:t,groups:n,selectedKey:i,onSelectFile:p,mode:h,onModeChange:a,collapsedDirectoryKeys:y,onToggleDirectory:v,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:L,renderStreamBadge:M,onInsertDiffReference:C,onHunkGitAction:$,onReferenceCopied:P,insertedReferenceKey:O,copiedReferenceKey:F,onClearAuditRecord:V,mobile:q,backLabel:se,compact:le,desktopLayout:oe,wrap:G,diffViewType:m,inlineMode:j,diffOptions:T,activePane:D,reloadKey:w=0,renderListHeader:J,renderMobileDetailHeader:X,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,desktopSidePanel:te,desktopListClassName:E,onDetailScroll:H,initialDetailScrollTop:z,scrollToKey:K,scrollToKeyNonce:ue=0,externalSwiperRef:ke,onMobileSlideChange:Te,slideToDetailOnMobile:Re}){const ie=o.useMemo(()=>e=>i===e.key||i===e.path||i===e.absolutePath,[i]),_=o.useMemo(()=>{const e=new Map;for(const c of t)e.set(c.key,c),c.path&&e.set(c.path,c),c.absolutePath&&e.set(c.absolutePath,c);const s=[],l=new Set;for(const c of n){const d=h==="tree"?St(c.files):c.files;for(const g of d){const u=e.get(g.key);!u||l.has(u.key)||(s.push(u),l.add(u.key))}}for(const c of t)l.has(c.key)||s.push(c);return s},[t,n,h]),I=o.useRef(null),je=o.useRef(null),de=o.useRef(null),xe=o.useRef(w),W=o.useRef(0),fe=o.useRef(null),ge=o.useRef(new Map(we)),U=o.useRef({key:null,top:0}),S=o.useRef(new Set),A=o.useRef(new Map),ae=o.useRef(new Map),B=o.useRef(null),Pe=o.useRef(()=>{}),Ne=o.useRef([]),he=o.useRef(new Map),We=o.useRef({tops:[],heights:[],bottom:0}),[De,st]=o.useState(()=>new Set),[ot,ct]=o.useState(0),[Q,ve]=o.useState({top:0,height:0}),Se=o.useMemo(()=>_.map(e=>e.key),[_]),Ie=Se.join("");ae.current=new Map(_.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:w,wrap:G,viewType:m,inlineMode:j,algorithm:T?.algorithm,whitespace:T?.whitespace,context:T?.context}])),Ne.current=Se,he.current=new Map(Se.map((e,s)=>[e,s]));const k=o.useMemo(()=>{const e=Se.map(c=>ge.current.get(c)??Ue),s=new Array(e.length);for(let c=0;c<e.length;c+=1)s[c]=c===0?0:s[c-1]+e[c-1];const l=e.length>0?s[e.length-1]+e[e.length-1]:0;return{tops:s,heights:e,bottom:l}},[ot,Ie]);We.current=k;const re=o.useMemo(()=>K?_.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[_,K]),Ce=o.useMemo(()=>i?_.find(e=>i===e.key||i===e.path||i===e.absolutePath)?.key??null:null,[_,i]),Me=o.useMemo(()=>{const e=k.tops.length;if(e===0)return-1;let s=0,l=e;for(;s<l;){const c=Math.floor((s+l)/2);k.tops[c]<=Q.top+1?s=c+1:l=c}return Math.min(e-1,Math.max(0,s-1))},[k.tops,Q.top]),ne=o.useCallback(e=>{S.current=e,st(e)},[]),Be=o.useMemo(()=>{const e=Q.top-ze,s=Q.top+Q.height+ze,l=new Set;let c=0,d=k.tops.length;for(;c<d;){const u=Math.floor((c+d)/2);k.tops[u]<=e?c=u+1:d=u}const g=Math.max(0,c-1);for(let u=g;u<k.tops.length;u+=1){const R=k.tops[u];if(R>s)break;R+k.heights[u]>=e&&R<=s&&l.add(u)}for(let u=Me-1;u<=Me+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of De){const R=he.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,Q,De,Me]),Fe=o.useCallback(()=>{if(!D||B.current)return;const e=Ne.current;if(e.length===0)return;const s=U.current.key,l=Math.min(e.length-1,(s!==null?he.current.get(s):void 0)??Math.max(0,Me)),c=u=>Math.abs((he.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=qe;u+=1){const R=l+u,N=l-u;R<e.length&&!S.current.has(e[R])&&d.push(e[R]),N>=0&&!S.current.has(e[N])&&d.push(e[N])}const g=d[0];if(g){if(S.current.size>=qe){const u=c(g),R=Array.from(S.current).filter(Y=>Y!==B.current).sort((Y,ye)=>c(ye)-c(Y))[0];if(!R||c(R)<=u)return;const N=new Set(S.current);N.delete(R),ne(N)}B.current=g,ne(new Set(S.current).add(g))}},[D,ne,Me]);Pe.current=Fe;const be=o.useCallback(e=>{if(S.current.has(e))return;const s=B.current;if(s&&s!==e){const l=new Set(S.current);l.delete(s),ne(l),B.current=null}B.current=e,ne(new Set(S.current).add(e))},[ne]),$e=o.useCallback(e=>{if(!S.current.has(e))return;const s=ae.current.get(e);s&&A.current.set(e,s),B.current===e&&(B.current=null),window.requestAnimationFrame(()=>Pe.current())},[]),Ve=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const c=ge.current.get(e);c!==void 0&&Math.abs(c-l)<1||(ge.current.set(e,l),Bt(e,l),ct(d=>d+1))},[]);o.useLayoutEffect(()=>{if(xe.current!==w){xe.current=w;for(const e of _){if(e.diffOverride!==void 0)continue;const s=Xt(e.path,e.repoRoot);kt(s,e.repoRoot??void 0,T)}}},[_,T,w]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=()=>{const c=Math.max(0,Math.ceil(e.clientHeight));if(c===0)return;const d=e.scrollTop;ve(g=>g.height===c&&g.top===d?g:{top:d,height:c})};if(s(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(s);return l.observe(e),()=>l.disconnect()},[q]),o.useEffect(()=>{D&&Ce&&be(Ce)},[D,be,Ce]),o.useEffect(()=>{const e=new Set(Ne.current);for(const s of Array.from(ge.current.keys()))e.has(s)||ge.current.delete(s);for(const s of Array.from(S.current))if(!e.has(s)){const l=new Set(S.current);l.delete(s),ne(l)}for(const s of Array.from(A.current.keys()))e.has(s)||A.current.delete(s);if(B.current&&!e.has(B.current)&&(B.current=null),_.length===0){B.current=null,A.current.clear(),ne(new Set);return}Fe()},[_.length,Ie,Fe,Be,ne]);const Ge=o.useCallback(e=>{I.current=e;const s=W.current,l=e.scrollTop;W.current=l;const c=d=>{const g=We.current,u=Ne.current;let R=0,N=g.tops.length;for(;R<N;){const _e=Math.floor((R+N)/2);g.tops[_e]<=d+1?R=_e+1:N=_e}const Y=Math.min(u.length-1,Math.max(0,R-1)),ye=u[Y]??null;U.current={key:ye,top:g.tops[Y]??0},ye&&be(ye)};Math.abs(l-s)>=ze?(Ye.flushSync(()=>{ve({top:l,height:e.clientHeight})}),c(l)):fe.current===null&&(fe.current=window.requestAnimationFrame(()=>{fe.current=null;const d=I.current;if(d){const g=d.scrollTop;ve({top:g,height:d.clientHeight}),c(g)}})),H?.(e)},[H,be]);o.useEffect(()=>()=>{fe.current!==null&&window.cancelAnimationFrame(fe.current)},[]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=U.current;if(s.key===null)return;const l=he.current.get(s.key);if(l===void 0)return;const c=(k.tops[l]??s.top)-s.top;if(Math.abs(c)<1)return;const d=e.scrollTop+c;W.current=d,ve(g=>({top:d,height:g.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Ne.current,s=k.tops;if(e.length===0){U.current={key:null,top:0};return}const l=W.current,c=l+(I.current?.clientHeight??Q.height),d=U.current;if(d.key!==null){const N=he.current.get(d.key);if(N!==void 0){const Y=s[N]??0;if(Y+(k.heights[N]??Ue)>l&&Y<c){U.current={key:d.key,top:Y};return}}}let g=0,u=s.length;for(;g<u;){const N=Math.floor((g+u)/2);s[N]<=l+1?g=N+1:u=N}const R=Math.min(s.length-1,Math.max(0,g-1));U.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!re)return;const e=je.current;if(e?.key===re&&e.nonce===ue)return;const s=he.current.get(re);if(s===void 0)return;be(re),U.current={key:re,top:k.tops[s]??0};const l=I.current;if(!l||l.clientHeight===0||Q.height!==l.clientHeight)return;je.current={key:re,nonce:ue};const c=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:c,behavior:"instant"}):l.scrollTop=c;const d=l.scrollTop;W.current=d,ve({top:d,height:l.clientHeight})},[k,Q.height,be,re,ue]),o.useLayoutEffect(()=>{if(z===void 0||re)return;const e=Ie;if(de.current===e)return;const s=I.current;if(!s)return;de.current=e;const l=Math.max(0,k.bottom-s.clientHeight),c=Math.min(Math.max(0,z),l);typeof s.scrollTo=="function"?s.scrollTo({top:c,behavior:"instant"}):s.scrollTop=c;const d=s.scrollTop;W.current=d,ve({top:d,height:s.clientHeight})},[k.bottom,z,Ie,re]);const it=o.useCallback((e,s)=>{const l=ie(e),c=ae.current.get(e.key),d=c!==void 0&&$t(A.current.get(e.key),c);return r.jsx(Pt,{file:Gt(e),repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:D,visible:De.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:G,viewType:m,inlineMode:j,diffOptions:T,reloadKey:w,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderBadge:g=>M(g,e),onInsertDiffReference:e.onInsertDiffReference??C,onHunkGitAction:e.onHunkGitAction??$,onReferenceCopied:P,insertedReferenceKey:O,copiedReferenceKey:F,onClearAuditRecord:V,onContentReady:$e,onHeightChange:Ve})},[D,F,T,m,$e,Ve,j,O,ie,De,V,$,C,P,w,M,G]),at=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(k.bottom,(k.tops.at(-1)??0)+Q.height)},children:Be.map(e=>{const s=_[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:it(s,k.heights[e])},s.key):null})}),lt=r.jsx("div",{ref:I,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=>Ge(e.currentTarget),children:at});return r.jsx(Lt,{groups:n,mode:h,onModeChange:a,selectedKey:i,collapsedDirectoryKeys:y,onToggleDirectory:v,onSelectFile:p,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:b,renderSubtitle:L,detail:lt,mobile:q,backLabel:se,compact:le,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,renderListHeader:J,renderMobileDetailHeader:X,externalSwiperRef:ke,onMobileSlideChange:Te,slideToDetailOnMobile:Re,desktopLayout:oe,onDetailScroll:Ge,desktopSidePanel:te,desktopListClassName:E,detailOwnsScroll:!0})}function Gt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function Xt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Yt as C,Zt as D,jt as L,St as f,Jt as n};
1
+ import{a4 as Qe,bf as r,d as ut,c as dt,cJ as ft,cU as ht,ai as mt,a as pt,cT as xt,bx as gt,X as bt}from"./app-Bl11JYak.js";import{b as o,r as Ye}from"./dnd-BCFAPC0L.js";import{h as Je,F as vt,b as yt,c as Xe}from"./gestureArbiter-DPglmaJZ.js";import{S as Ze}from"./sparkles-DikPE3OY.js";import{D as wt,i as kt}from"./DiffViewer-680KNh4c.js";const Rt=[["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"}]],jt=Qe("list-tree",Rt);const Nt=[["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"}]],Mt=Qe("list",Nt);function et({selected:t,depth:n=0,title:i,leading:p,children:h,trailing:a,role:y,tabIndex:b,ariaExpanded:x,onClick:f,onKeyDown:v,onPointerDown:L,onPointerUp:M,onPointerCancel:C,dataAttributes:$}){return r.jsxs("div",{role:y,tabIndex:b,"aria-expanded":x,title:i,onClick:f,onKeyDown:v,onPointerDown:L,onPointerUp:M,onPointerCancel:C,...$,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:`${n*14+8}px`},children:[r.jsx("span",{className:"flex min-w-[14px] shrink-0 items-center justify-center text-muted-foreground/80",children:p}),r.jsx("span",{className:"min-w-0 flex-1",children:h}),a]})}function tt(t){return t.path.replace(/^\/+/,"")}function Tt(t){if(t.displayName!==void 0||t.displayDir!==void 0)return{name:t.displayName||t.path,dir:t.displayDir||""};const n=t.path.split("/").filter(Boolean);return{name:n.pop()||t.path,dir:n.join("/")}}function rt(t,n){const i=new Map,p=(a,y,b,x)=>{const f=a.get(y);if(f)return f;const v={path:b,name:y,childCount:0,directories:[],files:[]};return a.set(y,v),x?.directories.push(v),v};for(const a of t){const y=n(a).split("/").filter(Boolean);if(y.length<=1)continue;let b=i,x=null,f="";for(const v of y.slice(0,-1)){f=f?`${f}/${v}`:v;const L=p(b,v,f,x);x=L,b=new Map(L.directories.map(M=>[M.name,M]))}x?.files.push(a)}const h=a=>{const y=a.directories.map(h).sort((x,f)=>x.name.localeCompare(f.name)),b=a.files.sort((x,f)=>x.path.localeCompare(f.path));return{...a,directories:y,files:b,childCount:y.reduce((x,f)=>x+f.childCount,0)+b.length}};return Array.from(i.values()).map(h).sort((a,y)=>a.name.localeCompare(y.name))}function He(t,n,i=0){const p=n.selectedKey===t.key||n.selectedKey===t.path||n.selectedKey===t.absolutePath,h=Tt(t);return r.jsx(et,{selected:p,role:"button",tabIndex:0,title:t.title??t.absolutePath??t.path,onClick:()=>{Je()||n.onSelectFile(t)},onKeyDown:a=>{a.key!=="Enter"&&a.key!==" "||(a.preventDefault(),n.onSelectFile(t))},leading:n.renderLeading(t),depth:i,trailing:n.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 ${p?"font-medium":""}`,children:h.name}),n.mode!=="tree"&&h.dir&&r.jsx("span",{className:"block truncate text-[10px] text-muted-foreground/75",children:h.dir}),n.renderSubtitle?.(t)]})},t.key)}function nt(t,n,i,p,h){let a=t;const y=[t.name];for(;a.files.length===0&&a.directories.length===1;)a=a.directories[0],y.push(a.name);const b=y.join("/"),x=`${n}:${a.path}`,f=i.collapsedDirectoryKeys.has(x);return r.jsxs("div",{className:"space-y-px",children:[r.jsx(et,{role:"button",tabIndex:0,onClick:()=>{Je()||i.onToggleDirectory(x)},onKeyDown:v=>{v.key!=="Enter"&&v.key!==" "||(v.preventDefault(),i.onToggleDirectory(x))},ariaExpanded:!f,depth:p,title:a.path,leading:f?r.jsx(ut,{size:13}):r.jsx(dt,{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:a.childCount}),i.renderDirectoryTrailing?.(a.path,h)]}),children:r.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[r.jsx(vt,{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:b})]})}),!f&&r.jsxs("div",{className:"space-y-px",children:[a.directories.map(v=>nt(v,n,i,p+1,h)),a.files.length>0&&r.jsx("div",{className:"space-y-px",children:a.files.map(v=>He(v,i,p+1))})]})]},x)}function Dt(t,n){const i=n.getFileTreePath??tt,p=t.files.filter(a=>i(a).split("/").filter(Boolean).length<=1),h=rt(t.files,i);return r.jsxs("div",{className:"space-y-px",children:[h.map(a=>nt(a,t.key,n,0,t)),p.length>0&&r.jsx("div",{className:"space-y-px",children:p.map(a=>He(a,n))})]})}function St(t,n=tt){const i=[],p=a=>{for(const y of a.directories)p(y);i.push(...a.files)};for(const a of rt(t,n))p(a);const h=new Set(i.map(a=>a.key));return i.push(...t.filter(a=>!h.has(a.key))),i}function It(t){return r.jsx("div",{className:t.mode==="tree"?"space-y-px pt-1":"space-y-2",children:t.groups.map(n=>{const i=!!n.header,p=!!n.collapsed;return r.jsxs("section",{className:i?"overflow-hidden rounded-lg border border-border/15 bg-surface/60":"",children:[n.header,!p&&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"?Dt(n,t):n.files.map(h=>He(h,t))})]},n.key)})})}const Ee="termdock:diff-review:list-width:v1",Et=120,Le=320,Ke=220,Ct=560;function Ft(t){return typeof t=="number"&&Number.isFinite(t)}function Oe(t,n){const i=Math.max(Ke,n-360),p=Math.min(Ct,i);return Math.min(p,Math.max(Ke,t))}function _t(){return gt(Ee,Ft)??Le}function At({list:t,detail:n,mobile:i,mobileListHeader:p,mobileDetailHeader:h,desktopListHeader:a,backLabel:y,onMobileSlideChange:b,externalSwiperRef:x,desktopLayout:f="split",onDetailScroll:v,desktopSidePanel:L,desktopListClassName:M,detailOwnsScroll:C=!1}){const{t:$}=ft(),P=o.useRef(null),O=o.useRef(null),F=o.useRef(null),[V,q]=o.useState(_t);o.useEffect(()=>{if(i||f!=="split")return;const m=O.current;m&&q(j=>Oe(j,m.clientWidth))},[f,i]);const se=o.useCallback(m=>{i||f!=="split"||(m.preventDefault(),F.current={startX:m.clientX,startWidth:V,pointerId:m.pointerId},m.currentTarget.setPointerCapture(m.pointerId))},[f,V,i]),le=o.useCallback(m=>{const j=F.current;if(!j||j.pointerId!==m.pointerId)return;const T=O.current?.clientWidth??window.innerWidth,D=Oe(j.startWidth+m.clientX-j.startX,T);q(D),ht(Ee,D,Et)},[]),oe=o.useCallback(m=>{const j=F.current;if(!(!j||j.pointerId!==m.pointerId)){F.current=null,mt(Ee);try{m.currentTarget.releasePointerCapture(m.pointerId)}catch{}}},[]);if(i){const m=()=>{const w=P.current;w&&w.slideTo(1)},j=()=>{const w=P.current;w&&w.slideTo(0)},T=typeof t=="function"?t({slideToDetail:m}):t,D=typeof h=="function"?h({slideToList:j,slideToDetail:m}):h;return r.jsxs(yt,{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=>{P.current=w,x&&(x.current=w)},onSlideChange:w=>{b?.(w.activeIndex)},children:[r.jsx(Xe,{className:"h-full min-h-0",children:r.jsxs("div",{className:"flex h-full min-h-0 flex-col overflow-hidden",children:[p&&r.jsx("div",{className:"shrink-0 border-b border-border/15 px-3 py-2",children:p}),r.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overscroll-contain",children:T})]})}),r.jsx(Xe,{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(pt,{size:14}),y]})}),r.jsx("div",{className:C?"min-h-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-h-0 flex-1 overflow-y-auto overscroll-contain",onScroll:C?void 0:w=>v?.(w.currentTarget),children:n})]})})]})}const G=typeof t=="function"?t({slideToDetail:()=>{}}):t;return f==="stacked"?C?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:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),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:n})]}):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:m=>v?.(m.currentTarget),children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G,r.jsx("div",{className:"mt-3 overflow-hidden rounded-xl border border-border/15 bg-surface",children:n})]}):r.jsxs("div",{ref:O,className:"flex h-full min-h-0 overflow-hidden",children:[L,r.jsxs("div",{className:M??"shrink-0 overflow-y-auto overscroll-contain border-r border-border/15 bg-surface",style:{width:V},children:[a&&r.jsx("div",{className:"sticky top-0 z-10 border-b border-border/15 bg-surface px-2 py-2",children:a}),G]}),r.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":$("diffViewer.resizeNavigation"),title:$("diffViewer.resizeNavigation"),className:"group relative z-10 w-2 shrink-0 cursor-col-resize touch-none border-r border-border/15 bg-surface",onPointerDown:se,onPointerMove:le,onPointerUp:oe,onPointerCancel:oe,onDoubleClick:()=>{q(Le),xt(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:C?"min-w-0 flex-1 overflow-hidden":"termdock-diff-stream-scroller min-w-0 flex-1 overflow-y-auto overscroll-contain",onScroll:C?void 0:m=>v?.(m.currentTarget),children:n})]})}function zt({mode:t,onModeChange:n,showAi:i=!1}){return r.jsxs("div",{className:"inline-flex h-7 shrink-0 overflow-hidden rounded-md bg-surface-2 p-0.5",children:[r.jsx("button",{type:"button",onClick:()=>n("list"),"aria-pressed":t==="list",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="list"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Mt,{size:13})}),r.jsx("button",{type:"button",onClick:()=>n("tree"),"aria-pressed":t==="tree",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="tree"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(jt,{size:13})}),i&&r.jsx("button",{type:"button",onClick:()=>n("ai"),"aria-pressed":t==="ai",className:`inline-flex h-6 w-7 items-center justify-center rounded-md transition active:scale-95 ${t==="ai"?"bg-surface-elevated text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:r.jsx(Ze,{size:13})})]})}function Lt({groups:t,mode:n,onModeChange:i,selectedKey:p,collapsedDirectoryKeys:h,onToggleDirectory:a,onSelectFile:y,renderLeading:b,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:v,detail:L,mobile:M,backLabel:C,compact:$=!1,emptyContent:P,listPrefix:O,aiContent:F,listContainerClassName:V="px-2 py-2",detailContainerClassName:q="termdock-native-select termdock-diff-stream-scroller min-h-0",renderListHeader:se,renderMobileDetailHeader:le,externalSwiperRef:oe,onMobileSlideChange:G,slideToDetailOnMobile:m=!0,desktopLayout:j="split",onDetailScroll:T,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:J}){const[X,ce]=o.useState(!1);o.useEffect(()=>{if(!X)return;const E=H=>{H.key==="Escape"&&ce(!1)};return document.addEventListener("keydown",E),()=>document.removeEventListener("keydown",E)},[X]);const me=r.jsx(zt,{mode:n,onModeChange:i,showAi:!!F}),pe=n==="tree"?"tree":"list",Z=se?se(me):r.jsx("div",{className:"flex justify-end",children:me}),ee=t.some(E=>E.files.length>0),te=r.jsx(At,{mobile:X?!1:M,backLabel:C,externalSwiperRef:oe,onMobileSlideChange:G,desktopLayout:X?"split":j,onDetailScroll:T,desktopSidePanel:D,desktopListClassName:w,detailOwnsScroll:J,mobileListHeader:M?Z:void 0,desktopListHeader:M?void 0:Z,mobileDetailHeader:le,list:({slideToDetail:E})=>r.jsx("div",{className:V,children:n==="ai"?typeof F=="function"?F({slideToDetail:E,fullscreen:X,toggleFullscreen:()=>ce(H=>!H)}):F??P:r.jsxs(r.Fragment,{children:[O,ee?r.jsx(It,{groups:t,selectedKey:p,mode:pe,mobile:M,compact:$,collapsedDirectoryKeys:h,onToggleDirectory:a,onSelectFile:H=>{y(H),M&&m&&window.requestAnimationFrame(E)},renderLeading:b,renderTrailing:x,renderDirectoryTrailing:f,renderSubtitle:v}):P]})}),detail:r.jsx("div",{className:J?"h-full min-h-0":q,children:L})});return!X||typeof document>"u"?te:Ye.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(Ze,{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:()=>ce(!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(bt,{size:16})})]}),r.jsx("div",{className:"min-h-0 flex-1",children:te})]}),document.body)}const Ht=96,Ae=44;function Pt({file:t,repoRoot:n,selectionPath:i,displayName:p,displayDir:h,selected:a,activePane:y,visible:b,reusableContent:x=!1,estimatedHeight:f,lightweight:v=!1,wrap:L,viewType:M,inlineMode:C,diffOptions:$,reloadKey:P=0,auditRecords:O,diffOverride:F,preparedDiff:V,renderBadge:q,onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:G,copiedReferenceKey:m,onClearAuditRecord:j,onContentReady:T,onHeightChange:D}){const w=o.useRef(null),J=o.useRef(null),X=o.useRef(null),[ce,me]=o.useState(null),pe=o.useRef(64),Z=o.useRef(f??104),ee=o.useRef(null),te=o.useRef(null),E=o.useRef(!1),H=o.useRef(!1),z=o.useRef(null),[K,ue]=o.useState(!1),[ke,Te]=o.useState(!1),Re=t.absolutePath||(n?`${n}/${t.path}`:t.path),ie=o.useCallback(()=>{H.current||(H.current=!0,Te(!0),T?.(i))},[T,i]);o.useLayoutEffect(()=>(E.current=!1,H.current=!1,ee.current=null,te.current=null,z.current!==null&&(window.clearTimeout(z.current),z.current=null),ue(!1),Te(!1),()=>{z.current!==null&&(window.clearTimeout(z.current),z.current=null)}),[F,V,P,x,b]),o.useLayoutEffect(()=>{const I=ee.current;!K||I===null||Math.abs((f??104)-I)>=1||(ee.current=null,ie())},[ie,f,K]),o.useLayoutEffect(()=>{if(!b||!K)return;const I=X.current;if(!I)return;const je=()=>{if(!E.current)return;const xe=I.firstElementChild;if(!xe)return;const W=Math.ceil(Math.max(xe.getBoundingClientRect().height,xe.scrollHeight,64)),fe=pe.current;if(W>0&&fe!==W&&(pe.current=W,me(W)),!w.current)return;const U=J.current?.getBoundingClientRect().height??Ae,S=Math.ceil(U+W+1);S<=0||te.current===S||(te.current=S,z.current!==null&&window.clearTimeout(z.current),z.current=window.setTimeout(()=>{if(z.current=null,!E.current)return;const A=te.current;if(A===null)return;const ae=Z.current;if(H.current){Z.current=A,Math.abs(ae-A)>=1&&D?.(i,ae,A),T?.(i);return}if(ee.current=A,Math.abs(ae-A)<1||!D){Z.current=A,ee.current=null,ie();return}Z.current=A,D(i,ae,A)},Ht))};if(je(),typeof ResizeObserver>"u")return;const de=new ResizeObserver(je);return de.observe(I),I.firstElementChild&&de.observe(I.firstElementChild),J.current&&de.observe(J.current),()=>de.disconnect()},[ie,T,D,i,K,b,L,M,C]);const _=b&&!ke;return r.jsxs("div",{ref:w,"data-diff-stream-item":i,"data-diff-selection-path":i,"data-diff-file-path":t.path,"data-diff-absolute-path":Re,className:`scroll-mt-3 border-b border-border/15 last:border-b-0 ${_||!b?"overflow-hidden":""} ${a?"bg-surface-elevated/35":""}`,style:b?_?{height:f??104}:void 0:{height:f??104},children:[r.jsxs("div",{ref:J,"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 ${a?"bg-surface-elevated/95":"bg-surface/95"}`,children:[q(t.status),r.jsxs("div",{className:"min-w-0 flex-1",title:Re,children:[r.jsx("div",{className:"truncate text-xs font-semibold text-foreground",children:p}),h&&r.jsx("div",{className:"truncate text-[10px] text-muted-foreground",children:h})]})]}),r.jsxs("div",{ref:X,className:"relative","data-diff-stream-body":!0,style:b?{minHeight:ke?64:Math.max(ce??64,(f??104)-Ae)}:{height:Math.max(ce??64,(f??104)-Ae)},children:[b?r.jsx(wt,{active:y,repoRoot:n,filePath:t.path,referenceFilePath:Re,changedFile:t,wrap:L,viewType:M,inlineMode:C,diffOptions:$,reloadKey:P,embedded:!0,lightweight:v,auditRecords:O,diffOverride:F,preparedDiff:V,onClearAuditRecord:j,onContentReady:()=>{if(x){E.current=!0,ue(!0),ie();return}E.current||(E.current=!0,ue(!0))},onInsertDiffReference:se,onHunkGitAction:le,onReferenceCopied:oe,insertedReferenceKey:G,copiedReferenceKey:m}):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}),b&&K&&!ke&&r.jsx("div",{"data-diff-measuring-overlay":!0,className:"absolute inset-0 z-20 bg-surface"})]})]})}const qe=8,ze=1600,Ue=104,Wt=1e3,we=new Map;function Bt(t,n){for(we.delete(t),we.set(t,n);we.size>Wt;){const i=we.keys().next().value;if(i===void 0)break;we.delete(i)}}function $t(t,n){return!!(t&&t.diffOverride===n.diffOverride&&t.reloadKey===n.reloadKey&&t.wrap===n.wrap&&t.viewType===n.viewType&&t.inlineMode===n.inlineMode&&t.algorithm===n.algorithm&&t.whitespace===n.whitespace&&t.context===n.context)}const Vt={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 Yt({status:t}){const n=Vt[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 ${n.className}`,title:n.title,children:n.label})}function Jt(t,n){return n?{key:n,nonce:t.nonce+1}:t}function Zt({files:t,groups:n,selectedKey:i,onSelectFile:p,mode:h,onModeChange:a,collapsedDirectoryKeys:y,onToggleDirectory:b,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:v,renderSubtitle:L,renderStreamBadge:M,onInsertDiffReference:C,onHunkGitAction:$,onReferenceCopied:P,insertedReferenceKey:O,copiedReferenceKey:F,onClearAuditRecord:V,mobile:q,backLabel:se,compact:le,desktopLayout:oe,wrap:G,diffViewType:m,inlineMode:j,diffOptions:T,activePane:D,reloadKey:w=0,renderListHeader:J,renderMobileDetailHeader:X,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,desktopSidePanel:te,desktopListClassName:E,onDetailScroll:H,initialDetailScrollTop:z,scrollToKey:K,scrollToKeyNonce:ue=0,externalSwiperRef:ke,onMobileSlideChange:Te,slideToDetailOnMobile:Re}){const ie=o.useMemo(()=>e=>i===e.key||i===e.path||i===e.absolutePath,[i]),_=o.useMemo(()=>{const e=new Map;for(const c of t)e.set(c.key,c),c.path&&e.set(c.path,c),c.absolutePath&&e.set(c.absolutePath,c);const s=[],l=new Set;for(const c of n){const d=h==="tree"?St(c.files):c.files;for(const g of d){const u=e.get(g.key);!u||l.has(u.key)||(s.push(u),l.add(u.key))}}for(const c of t)l.has(c.key)||s.push(c);return s},[t,n,h]),I=o.useRef(null),je=o.useRef(null),de=o.useRef(null),xe=o.useRef(w),W=o.useRef(0),fe=o.useRef(null),ge=o.useRef(new Map(we)),U=o.useRef({key:null,top:0}),S=o.useRef(new Set),A=o.useRef(new Map),ae=o.useRef(new Map),B=o.useRef(null),Pe=o.useRef(()=>{}),Ne=o.useRef([]),he=o.useRef(new Map),We=o.useRef({tops:[],heights:[],bottom:0}),[De,st]=o.useState(()=>new Set),[ot,ct]=o.useState(0),[Q,be]=o.useState({top:0,height:0}),Se=o.useMemo(()=>_.map(e=>e.key),[_]),Ie=Se.join("");ae.current=new Map(_.map(e=>[e.key,{diffOverride:e.diffOverride,reloadKey:w,wrap:G,viewType:m,inlineMode:j,algorithm:T?.algorithm,whitespace:T?.whitespace,context:T?.context}])),Ne.current=Se,he.current=new Map(Se.map((e,s)=>[e,s]));const k=o.useMemo(()=>{const e=Se.map(c=>ge.current.get(c)??Ue),s=new Array(e.length);for(let c=0;c<e.length;c+=1)s[c]=c===0?0:s[c-1]+e[c-1];const l=e.length>0?s[e.length-1]+e[e.length-1]:0;return{tops:s,heights:e,bottom:l}},[ot,Ie]);We.current=k;const re=o.useMemo(()=>K?_.find(e=>K===e.key||K===e.path||K===e.absolutePath)?.key??null:null,[_,K]),Ce=o.useMemo(()=>i?_.find(e=>i===e.key||i===e.path||i===e.absolutePath)?.key??null:null,[_,i]),Me=o.useMemo(()=>{const e=k.tops.length;if(e===0)return-1;let s=0,l=e;for(;s<l;){const c=Math.floor((s+l)/2);k.tops[c]<=Q.top+1?s=c+1:l=c}return Math.min(e-1,Math.max(0,s-1))},[k.tops,Q.top]),ne=o.useCallback(e=>{S.current=e,st(e)},[]),Be=o.useMemo(()=>{const e=Q.top-ze,s=Q.top+Q.height+ze,l=new Set;let c=0,d=k.tops.length;for(;c<d;){const u=Math.floor((c+d)/2);k.tops[u]<=e?c=u+1:d=u}const g=Math.max(0,c-1);for(let u=g;u<k.tops.length;u+=1){const R=k.tops[u];if(R>s)break;R+k.heights[u]>=e&&R<=s&&l.add(u)}for(let u=Me-1;u<=Me+1;u+=1)u>=0&&u<k.tops.length&&l.add(u);for(const u of De){const R=he.current.get(u);R!==void 0&&l.add(R)}return Array.from(l).sort((u,R)=>u-R)},[k,Q,De,Me]),Fe=o.useCallback(()=>{if(!D||B.current)return;const e=Ne.current;if(e.length===0)return;const s=U.current.key,l=Math.min(e.length-1,(s!==null?he.current.get(s):void 0)??Math.max(0,Me)),c=u=>Math.abs((he.current.get(u)??0)-l),d=[];S.current.has(e[l])||d.push(e[l]);for(let u=1;u<=qe;u+=1){const R=l+u,N=l-u;R<e.length&&!S.current.has(e[R])&&d.push(e[R]),N>=0&&!S.current.has(e[N])&&d.push(e[N])}const g=d[0];if(g){if(S.current.size>=qe){const u=c(g),R=Array.from(S.current).filter(Y=>Y!==B.current).sort((Y,ye)=>c(ye)-c(Y))[0];if(!R||c(R)<=u)return;const N=new Set(S.current);N.delete(R),ne(N)}B.current=g,ne(new Set(S.current).add(g))}},[D,ne,Me]);Pe.current=Fe;const ve=o.useCallback(e=>{if(S.current.has(e))return;const s=B.current;if(s&&s!==e){const l=new Set(S.current);l.delete(s),ne(l),B.current=null}B.current=e,ne(new Set(S.current).add(e))},[ne]),$e=o.useCallback(e=>{if(!S.current.has(e))return;const s=ae.current.get(e);s&&A.current.set(e,s),B.current===e&&(B.current=null),window.requestAnimationFrame(()=>Pe.current())},[]),Ve=o.useCallback((e,s,l)=>{if(Math.abs(l-s)<1)return;const c=ge.current.get(e);c!==void 0&&Math.abs(c-l)<1||(ge.current.set(e,l),Bt(e,l),ct(d=>d+1))},[]);o.useLayoutEffect(()=>{if(xe.current!==w){xe.current=w;for(const e of _){if(e.diffOverride!==void 0)continue;const s=Xt(e.path,e.repoRoot);kt(s,e.repoRoot??void 0,T)}}},[_,T,w]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=()=>{const c=Math.max(0,Math.ceil(e.clientHeight));if(c===0)return;const d=e.scrollTop;be(g=>g.height===c&&g.top===d?g:{top:d,height:c})};if(s(),typeof ResizeObserver>"u")return;const l=new ResizeObserver(s);return l.observe(e),()=>l.disconnect()},[q]),o.useEffect(()=>{D&&Ce&&ve(Ce)},[D,ve,Ce]),o.useEffect(()=>{const e=new Set(Ne.current);for(const s of Array.from(ge.current.keys()))e.has(s)||ge.current.delete(s);for(const s of Array.from(S.current))if(!e.has(s)){const l=new Set(S.current);l.delete(s),ne(l)}for(const s of Array.from(A.current.keys()))e.has(s)||A.current.delete(s);if(B.current&&!e.has(B.current)&&(B.current=null),_.length===0){B.current=null,A.current.clear(),ne(new Set);return}Fe()},[_.length,Ie,Fe,Be,ne]);const Ge=o.useCallback(e=>{I.current=e;const s=W.current,l=e.scrollTop;W.current=l;const c=d=>{const g=We.current,u=Ne.current;let R=0,N=g.tops.length;for(;R<N;){const _e=Math.floor((R+N)/2);g.tops[_e]<=d+1?R=_e+1:N=_e}const Y=Math.min(u.length-1,Math.max(0,R-1)),ye=u[Y]??null;U.current={key:ye,top:g.tops[Y]??0},ye&&ve(ye)};Math.abs(l-s)>=ze?(Ye.flushSync(()=>{be({top:l,height:e.clientHeight})}),c(l)):fe.current===null&&(fe.current=window.requestAnimationFrame(()=>{fe.current=null;const d=I.current;if(d){const g=d.scrollTop;be({top:g,height:d.clientHeight}),c(g)}})),H?.(e)},[H,ve]);o.useEffect(()=>()=>{fe.current!==null&&window.cancelAnimationFrame(fe.current)},[]),o.useLayoutEffect(()=>{const e=I.current;if(!e)return;const s=U.current;if(s.key===null)return;const l=he.current.get(s.key);if(l===void 0)return;const c=(k.tops[l]??s.top)-s.top;if(Math.abs(c)<1)return;const d=e.scrollTop+c;W.current=d,be(g=>({top:d,height:g.height})),typeof e.scrollTo=="function"?e.scrollTo({top:d,behavior:"instant"}):e.scrollTop=d},[k]),o.useLayoutEffect(()=>{const e=Ne.current,s=k.tops;if(e.length===0){U.current={key:null,top:0};return}const l=W.current,c=l+(I.current?.clientHeight??Q.height),d=U.current;if(d.key!==null){const N=he.current.get(d.key);if(N!==void 0){const Y=s[N]??0;if(Y+(k.heights[N]??Ue)>l&&Y<c){U.current={key:d.key,top:Y};return}}}let g=0,u=s.length;for(;g<u;){const N=Math.floor((g+u)/2);s[N]<=l+1?g=N+1:u=N}const R=Math.min(s.length-1,Math.max(0,g-1));U.current={key:e[R]??null,top:s[R]??0}}),o.useLayoutEffect(()=>{if(!re)return;const e=je.current;if(e?.key===re&&e.nonce===ue)return;const s=he.current.get(re);if(s===void 0)return;ve(re),U.current={key:re,top:k.tops[s]??0};const l=I.current;if(!l||l.clientHeight===0||Q.height!==l.clientHeight)return;je.current={key:re,nonce:ue};const c=k.tops[s]??0;typeof l.scrollTo=="function"?l.scrollTo({top:c,behavior:"instant"}):l.scrollTop=c;const d=l.scrollTop;W.current=d,be({top:d,height:l.clientHeight})},[k,Q.height,ve,re,ue]),o.useLayoutEffect(()=>{if(z===void 0||re)return;const e=Ie;if(de.current===e)return;const s=I.current;if(!s)return;de.current=e;const l=Math.max(0,k.bottom-s.clientHeight),c=Math.min(Math.max(0,z),l);typeof s.scrollTo=="function"?s.scrollTo({top:c,behavior:"instant"}):s.scrollTop=c;const d=s.scrollTop;W.current=d,be({top:d,height:s.clientHeight})},[k.bottom,z,Ie,re]);const it=o.useCallback((e,s)=>{const l=ie(e),c=ae.current.get(e.key),d=c!==void 0&&$t(A.current.get(e.key),c);return r.jsx(Pt,{file:Gt(e),repoRoot:e.repoRoot,selectionPath:e.key,displayName:e.displayName,displayDir:e.displayDir,selected:l,activePane:D,visible:De.has(e.key),reusableContent:d,estimatedHeight:s,lightweight:!1,wrap:G,viewType:m,inlineMode:j,diffOptions:T,reloadKey:w,auditRecords:e.auditRecords,diffOverride:e.diffOverride,renderBadge:g=>M(g,e),onInsertDiffReference:e.onInsertDiffReference??C,onHunkGitAction:e.onHunkGitAction??$,onReferenceCopied:P,insertedReferenceKey:O,copiedReferenceKey:F,onClearAuditRecord:V,onContentReady:$e,onHeightChange:Ve})},[D,F,T,m,$e,Ve,j,O,ie,De,V,$,C,P,w,M,G]),at=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(k.bottom,(k.tops.at(-1)??0)+Q.height)},children:Be.map(e=>{const s=_[e];return s?r.jsx("div",{"data-diff-canvas-slot":s.key,className:"absolute inset-x-0",style:{top:k.tops[e]},children:it(s,k.heights[e])},s.key):null})}),lt=r.jsx("div",{ref:I,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=>Ge(e.currentTarget),children:at});return r.jsx(Lt,{groups:n,mode:h,onModeChange:a,selectedKey:i,collapsedDirectoryKeys:y,onToggleDirectory:b,onSelectFile:p,renderLeading:x,renderTrailing:f,renderDirectoryTrailing:v,renderSubtitle:L,detail:lt,mobile:q,backLabel:se,compact:le,emptyContent:ce,listPrefix:me,aiContent:pe,listContainerClassName:Z,detailContainerClassName:ee,renderListHeader:J,renderMobileDetailHeader:X,externalSwiperRef:ke,onMobileSlideChange:Te,slideToDetailOnMobile:Re,desktopLayout:oe,onDetailScroll:Ge,desktopSidePanel:te,desktopListClassName:E,detailOwnsScroll:!0})}function Gt(t){return{path:t.path,absolutePath:t.absolutePath,status:t.status}}function Xt(t,n){if(t)return n&&t.startsWith(`${n}/`)?t.slice(n.length+1):t}export{Yt as C,Zt as D,jt as L,St as f,Jt as n};
@@ -1,2 +1,2 @@
1
- import{bd as i}from"./app-B32WWSws.js";import{b as n}from"./dnd-BCFAPC0L.js";import{D as I}from"./DiffReview-CWhKgYZN.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter-CqdDGsl4.js";import"./sparkles-C6EB6xDX.js";import"./DiffViewer-CVrIRwTf.js";import"./referenceLongPress-DC0noWIU.js";const x=40,b="/tmp/termdock-diff-review-lab";function S(r,c,l=!1){const d=[`diff --git a/${r} b/${r}`,`--- a/${r}`,`+++ b/${r}`,`@@ -1,${c} +1,${c} @@`];for(let t=0;t<c;t+=1)t%5===0&&d.push(`-const removed_${t} = ${t};`),t%3===0&&d.push(`+const added_${t} = ${t} * 2;`),d.push(` context line ${t} in ${r}${l?" long content for repeated wrap and resize checks".repeat(10):""}`);return d.join(`
1
+ import{bf as i}from"./app-Bl11JYak.js";import{b as n}from"./dnd-BCFAPC0L.js";import{D as I}from"./DiffReview-BpxhFZLY.js";import"./react-XDCjal2T.js";import"./terminal-C7X98Amf.js";import"./gestureArbiter-DPglmaJZ.js";import"./sparkles-DikPE3OY.js";import"./DiffViewer-680KNh4c.js";import"./referenceLongPress-BclZaogy.js";const x=40,b="/tmp/termdock-diff-review-lab";function S(r,c,l=!1){const d=[`diff --git a/${r} b/${r}`,`--- a/${r}`,`+++ b/${r}`,`@@ -1,${c} +1,${c} @@`];for(let t=0;t<c;t+=1)t%5===0&&d.push(`-const removed_${t} = ${t};`),t%3===0&&d.push(`+const added_${t} = ${t} * 2;`),d.push(` context line ${t} in ${r}${l?" long content for repeated wrap and resize checks".repeat(10):""}`);return d.join(`
2
2
  `)}function T(r,c,l){return Array.from({length:x},(d,t)=>{const f=6+t*7%60,a=`src/module${String(t).padStart(2,"0")}/File${t}.ts`,m=`${b}/${a}`,w=S(a,f,l),o=S(a,1,l);return{key:m,path:a,absolutePath:m,status:"modified",repoRoot:b,displayName:`File${t}.ts`,displayDir:`src/module${String(t).padStart(2,"0")} · ${f} lines`,diffOverride:!c||r.has(t)?w:o,auditRecords:[]}})}function B(){const[r,c]=n.useState(()=>new URLSearchParams(window.location.search).get("wrap")!=="off"),[l,d]=n.useState(()=>new URLSearchParams(window.location.search).get("view")==="split"),t=n.useMemo(()=>new URLSearchParams(window.location.search).get("long")==="1",[]),f=n.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},[]),a=f>0,[m,w]=n.useState(()=>new Set);n.useEffect(()=>{if(!a)return;const e=Array.from({length:x},(s,u)=>window.setTimeout(()=>{w(M=>{const g=new Set(M);return g.add(u),g})},f+u*20));return()=>e.forEach(s=>window.clearTimeout(s))},[a,f]);const o=n.useMemo(()=>T(m,a,t),[m,a,t]),k=n.useMemo(()=>[{key:"mock-repo",root:b,label:"diff-review-lab",files:o.map(e=>({key:e.key,path:e.path,absolutePath:e.absolutePath,displayName:e.displayName,displayDir:e.displayDir,status:e.status}))}],[o]),p=n.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<o.length?s:null},[o.length]),[h,$]=n.useState(()=>p!==null?o[p].key:null),[y,R]=n.useState(()=>({key:p!==null?o[p].key:null,nonce:p!==null?1:0})),[N,v]=n.useState("list"),[D,j]=n.useState(new Set),[L,P]=n.useState(p!==null?1:0);return i.jsxs("div",{className:"flex h-screen flex-col bg-background text-foreground","data-diff-review-lab":!0,children:[i.jsxs("div",{className:"shrink-0 border-b border-border/20 px-3 py-2 text-xs text-muted-foreground",children:[i.jsxs("button",{type:"button",className:"mr-2 rounded bg-surface-2 px-2 py-1",onClick:()=>c(e=>!e),"aria-pressed":r,children:["Wrap ",r?"on":"off"]}),i.jsx("button",{type:"button",className:"mr-2 rounded bg-surface-2 px-2 py-1",onClick:()=>d(e=>!e),"aria-pressed":l,children:l?"Split":"Unified"}),"DiffReview Lab · ",o.length," mock files · selected: ",i.jsx("span",{"data-lab-selected":!0,children:h??"none"})," · slide ",L]}),i.jsx("div",{className:"min-h-0 flex-1",children:i.jsx(I,{mobile:!0,backLabel:"Back",files:o,groups:k,selectedKey:h,scrollToKey:y.key,scrollToKeyNonce:y.nonce,mode:N,onModeChange:e=>{e!=="ai"&&v(e)},collapsedDirectoryKeys:D,onToggleDirectory:e=>j(s=>{const u=new Set(s);return u.has(e)?u.delete(e):u.add(e),u}),onSelectFile:e=>{$(e.key),R(s=>({key:e.key,nonce:s.nonce+1}))},onMobileSlideChange:P,renderLeading:()=>null,renderStreamBadge:e=>i.jsx("span",{className:"text-[10px] text-muted-foreground",children:e}),wrap:r,diffViewType:l?"split":"unified",activePane:!0})})]})}export{B as DiffReviewLab};