claude-code-workflow 7.2.18 → 7.2.20

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 (200) hide show
  1. package/.claude/commands/workflow/analyze-with-file.md +33 -8
  2. package/.codex/skills/analyze-with-file/SKILL.md +55 -8
  3. package/ccw/dist/core/routes/agent-definitions-routes.d.ts.map +1 -1
  4. package/ccw/dist/core/routes/agent-definitions-routes.js +152 -6
  5. package/ccw/dist/core/routes/agent-definitions-routes.js.map +1 -1
  6. package/ccw/frontend/dist/assets/{AlertDialog-5DA_OF9w.js → AlertDialog-Cukb0xv2.js} +2 -2
  7. package/ccw/frontend/dist/assets/{AlertDialog-5DA_OF9w.js.map → AlertDialog-Cukb0xv2.js.map} +1 -1
  8. package/ccw/frontend/dist/assets/{AnalysisPage-MoK5luZM.js → AnalysisPage-Ddmv0J4x.js} +2 -2
  9. package/ccw/frontend/dist/assets/{AnalysisPage-MoK5luZM.js.map → AnalysisPage-Ddmv0J4x.js.map} +1 -1
  10. package/ccw/frontend/dist/assets/{ApiSettingsPage-OreSF7CY.js → ApiSettingsPage-DMkrTZDX.js} +2 -2
  11. package/ccw/frontend/dist/assets/{ApiSettingsPage-OreSF7CY.js.map → ApiSettingsPage-DMkrTZDX.js.map} +1 -1
  12. package/ccw/frontend/dist/assets/{CliModeToggle-B_Vu8NDb.js → CliModeToggle-DXenjpbe.js} +2 -2
  13. package/ccw/frontend/dist/assets/{CliModeToggle-B_Vu8NDb.js.map → CliModeToggle-DXenjpbe.js.map} +1 -1
  14. package/ccw/frontend/dist/assets/{CliSessionSharePage-Bb3DrLGF.js → CliSessionSharePage-B-ZIMqmX.js} +2 -2
  15. package/ccw/frontend/dist/assets/{CliSessionSharePage-Bb3DrLGF.js.map → CliSessionSharePage-B-ZIMqmX.js.map} +1 -1
  16. package/ccw/frontend/dist/assets/{CliViewerPage-BS4zrFVp.js → CliViewerPage-9YxGyLxh.js} +2 -2
  17. package/ccw/frontend/dist/assets/{CliViewerPage-BS4zrFVp.js.map → CliViewerPage-9YxGyLxh.js.map} +1 -1
  18. package/ccw/frontend/dist/assets/{CodexLensPage-BWSIk06e.js → CodexLensPage-B_uv5wdn.js} +2 -2
  19. package/ccw/frontend/dist/assets/{CodexLensPage-BWSIk06e.js.map → CodexLensPage-B_uv5wdn.js.map} +1 -1
  20. package/ccw/frontend/dist/assets/{Collapsible-Cw1zJkjU.js → Collapsible-C2qk3yV0.js} +2 -2
  21. package/ccw/frontend/dist/assets/{Collapsible-Cw1zJkjU.js.map → Collapsible-C2qk3yV0.js.map} +1 -1
  22. package/ccw/frontend/dist/assets/{CommandsManagerPage-a240GHzx.js → CommandsManagerPage-DBtaWxLB.js} +2 -2
  23. package/ccw/frontend/dist/assets/{CommandsManagerPage-a240GHzx.js.map → CommandsManagerPage-DBtaWxLB.js.map} +1 -1
  24. package/ccw/frontend/dist/assets/{DeepWikiPage-CZ4pN-5G.js → DeepWikiPage-d9K4_TgG.js} +2 -2
  25. package/ccw/frontend/dist/assets/{DeepWikiPage-CZ4pN-5G.js.map → DeepWikiPage-d9K4_TgG.js.map} +1 -1
  26. package/ccw/frontend/dist/assets/{EndpointsPage-Ct66AIze.js → EndpointsPage-DhW6hYrI.js} +2 -2
  27. package/ccw/frontend/dist/assets/{EndpointsPage-Ct66AIze.js.map → EndpointsPage-DhW6hYrI.js.map} +1 -1
  28. package/ccw/frontend/dist/assets/{ExplorerPage-DAZkXx2Q.js → ExplorerPage-DYYpCvtB.js} +2 -2
  29. package/ccw/frontend/dist/assets/{ExplorerPage-DAZkXx2Q.js.map → ExplorerPage-DYYpCvtB.js.map} +1 -1
  30. package/ccw/frontend/dist/assets/{FixSessionPage-cDE32BH8.js → FixSessionPage-CSmiT5SE.js} +2 -2
  31. package/ccw/frontend/dist/assets/{FixSessionPage-cDE32BH8.js.map → FixSessionPage-CSmiT5SE.js.map} +1 -1
  32. package/ccw/frontend/dist/assets/{FloatingFileBrowser-tgDOT5P0.js → FloatingFileBrowser-DvMsXLdP.js} +2 -2
  33. package/ccw/frontend/dist/assets/{FloatingFileBrowser-tgDOT5P0.js.map → FloatingFileBrowser-DvMsXLdP.js.map} +1 -1
  34. package/ccw/frontend/dist/assets/{FloatingPanel-Diyvdyo1.js → FloatingPanel-sqezhSI8.js} +2 -2
  35. package/ccw/frontend/dist/assets/{FloatingPanel-Diyvdyo1.js.map → FloatingPanel-sqezhSI8.js.map} +1 -1
  36. package/ccw/frontend/dist/assets/{GraphExplorerPage-CPwRsfd2.js → GraphExplorerPage-DS8ghMFM.js} +2 -2
  37. package/ccw/frontend/dist/assets/{GraphExplorerPage-CPwRsfd2.js.map → GraphExplorerPage-DS8ghMFM.js.map} +1 -1
  38. package/ccw/frontend/dist/assets/{HistoryPage-D2F7j-xY.js → HistoryPage-B-x1RyHu.js} +2 -2
  39. package/ccw/frontend/dist/assets/{HistoryPage-D2F7j-xY.js.map → HistoryPage-B-x1RyHu.js.map} +1 -1
  40. package/ccw/frontend/dist/assets/{HookManagerPage-Cq_CqegO.js → HookManagerPage-BbxpDb68.js} +2 -2
  41. package/ccw/frontend/dist/assets/{HookManagerPage-Cq_CqegO.js.map → HookManagerPage-BbxpDb68.js.map} +1 -1
  42. package/ccw/frontend/dist/assets/{InstallationsPage-DeBLZFZg.js → InstallationsPage-3bShz_Ai.js} +2 -2
  43. package/ccw/frontend/dist/assets/{InstallationsPage-DeBLZFZg.js.map → InstallationsPage-3bShz_Ai.js.map} +1 -1
  44. package/ccw/frontend/dist/assets/{IssueHubPage-DqytkqBW.js → IssueHubPage-BQY_Hh3e.js} +2 -2
  45. package/ccw/frontend/dist/assets/{IssueHubPage-DqytkqBW.js.map → IssueHubPage-BQY_Hh3e.js.map} +1 -1
  46. package/ccw/frontend/dist/assets/{LiteTasksPage-BOknokuo.js → LiteTasksPage-vD_8fQcR.js} +17 -22
  47. package/ccw/frontend/dist/assets/LiteTasksPage-vD_8fQcR.js.map +1 -0
  48. package/ccw/frontend/dist/assets/{McpManagerPage-DPF421ki.js → McpManagerPage-CI5ZzB8A.js} +2 -2
  49. package/ccw/frontend/dist/assets/{McpManagerPage-DPF421ki.js.map → McpManagerPage-CI5ZzB8A.js.map} +1 -1
  50. package/ccw/frontend/dist/assets/{MemoryPage-CK-QH9cl.js → MemoryPage-CNuj2eNg.js} +2 -2
  51. package/ccw/frontend/dist/assets/{MemoryPage-CK-QH9cl.js.map → MemoryPage-CNuj2eNg.js.map} +1 -1
  52. package/ccw/frontend/dist/assets/{NotFoundPage-Bk_u5rzz.js → NotFoundPage-BrnAXkb1.js} +2 -2
  53. package/ccw/frontend/dist/assets/{NotFoundPage-Bk_u5rzz.js.map → NotFoundPage-BrnAXkb1.js.map} +1 -1
  54. package/ccw/frontend/dist/assets/{OrchestratorPage-B9ND5ptW.js → OrchestratorPage-CH81PGt4.js} +2 -2
  55. package/ccw/frontend/dist/assets/{OrchestratorPage-B9ND5ptW.js.map → OrchestratorPage-CH81PGt4.js.map} +1 -1
  56. package/ccw/frontend/dist/assets/{ProjectOverviewPage-0DUpa-rl.js → ProjectOverviewPage-dwiEXl2O.js} +2 -2
  57. package/ccw/frontend/dist/assets/{ProjectOverviewPage-0DUpa-rl.js.map → ProjectOverviewPage-dwiEXl2O.js.map} +1 -1
  58. package/ccw/frontend/dist/assets/{PromptHistoryPage-B--0N_wr.js → PromptHistoryPage-CabgLjJU.js} +2 -2
  59. package/ccw/frontend/dist/assets/{PromptHistoryPage-B--0N_wr.js.map → PromptHistoryPage-CabgLjJU.js.map} +1 -1
  60. package/ccw/frontend/dist/assets/{ReviewSessionPage-DJtY0kQl.js → ReviewSessionPage-DAMrNFn8.js} +2 -2
  61. package/ccw/frontend/dist/assets/{ReviewSessionPage-DJtY0kQl.js.map → ReviewSessionPage-DAMrNFn8.js.map} +1 -1
  62. package/ccw/frontend/dist/assets/{RulesManagerPage-yW19Un_V.js → RulesManagerPage-4jzmxPn0.js} +2 -2
  63. package/ccw/frontend/dist/assets/{RulesManagerPage-yW19Un_V.js.map → RulesManagerPage-4jzmxPn0.js.map} +1 -1
  64. package/ccw/frontend/dist/assets/{SessionDetailPage-tr8g0Hc1.js → SessionDetailPage-C5Btktmp.js} +2 -2
  65. package/ccw/frontend/dist/assets/{SessionDetailPage-tr8g0Hc1.js.map → SessionDetailPage-C5Btktmp.js.map} +1 -1
  66. package/ccw/frontend/dist/assets/{SessionsPage-CxDytLfb.js → SessionsPage-CQIB4E8m.js} +2 -2
  67. package/ccw/frontend/dist/assets/{SessionsPage-CxDytLfb.js.map → SessionsPage-CQIB4E8m.js.map} +1 -1
  68. package/ccw/frontend/dist/assets/SettingsPage-Yi9UAfm7.js +150 -0
  69. package/ccw/frontend/dist/assets/SettingsPage-Yi9UAfm7.js.map +1 -0
  70. package/ccw/frontend/dist/assets/{SkillsManagerPage-C0MOJy-C.js → SkillsManagerPage-BqfvYSkT.js} +2 -2
  71. package/ccw/frontend/dist/assets/{SkillsManagerPage-C0MOJy-C.js.map → SkillsManagerPage-BqfvYSkT.js.map} +1 -1
  72. package/ccw/frontend/dist/assets/{SpecsSettingsPage-D9Y6-U-n.js → SpecsSettingsPage-BdVPM5R6.js} +4 -4
  73. package/ccw/frontend/dist/assets/{SpecsSettingsPage-D9Y6-U-n.js.map → SpecsSettingsPage-BdVPM5R6.js.map} +1 -1
  74. package/ccw/frontend/dist/assets/{Switch-BEfkMCxZ.js → Switch-BG929kV0.js} +2 -2
  75. package/ccw/frontend/dist/assets/{Switch-BEfkMCxZ.js.map → Switch-BG929kV0.js.map} +1 -1
  76. package/ccw/frontend/dist/assets/{TabsNavigation-Dit0DM3m.js → TabsNavigation-Bol1y09b.js} +2 -2
  77. package/ccw/frontend/dist/assets/{TabsNavigation-Dit0DM3m.js.map → TabsNavigation-Bol1y09b.js.map} +1 -1
  78. package/ccw/frontend/dist/assets/{TaskDrawer-XN-D_bDk.js → TaskDrawer-Dwutrn8_.js} +2 -2
  79. package/ccw/frontend/dist/assets/{TaskDrawer-XN-D_bDk.js.map → TaskDrawer-Dwutrn8_.js.map} +1 -1
  80. package/ccw/frontend/dist/assets/{TeamPage-BOwkjrDi.js → TeamPage-CpCSwpxD.js} +2 -2
  81. package/ccw/frontend/dist/assets/{TeamPage-BOwkjrDi.js.map → TeamPage-CpCSwpxD.js.map} +1 -1
  82. package/ccw/frontend/dist/assets/{TerminalDashboardPage-X8RymrSN.js → TerminalDashboardPage-DODKjOeK.js} +2 -2
  83. package/ccw/frontend/dist/assets/{TerminalDashboardPage-X8RymrSN.js.map → TerminalDashboardPage-DODKjOeK.js.map} +1 -1
  84. package/ccw/frontend/dist/assets/{archive-BMXBzq8R.js → archive-CQw634kD.js} +2 -2
  85. package/ccw/frontend/dist/assets/{archive-BMXBzq8R.js.map → archive-CQw634kD.js.map} +1 -1
  86. package/ccw/frontend/dist/assets/{archive-restore-DHvAhQBT.js → archive-restore-B-_EG6wE.js} +2 -2
  87. package/ccw/frontend/dist/assets/{archive-restore-DHvAhQBT.js.map → archive-restore-B-_EG6wE.js.map} +1 -1
  88. package/ccw/frontend/dist/assets/{arrow-right-CBObFEN0.js → arrow-right-CcQtxBrU.js} +2 -2
  89. package/ccw/frontend/dist/assets/{arrow-right-CBObFEN0.js.map → arrow-right-CcQtxBrU.js.map} +1 -1
  90. package/ccw/frontend/dist/assets/{bookmark-plus-D-2SQ5pV.js → bookmark-plus-Cl-BbcpR.js} +2 -2
  91. package/ccw/frontend/dist/assets/{bookmark-plus-D-2SQ5pV.js.map → bookmark-plus-Cl-BbcpR.js.map} +1 -1
  92. package/ccw/frontend/dist/assets/{bot-DS7saQkk.js → bot-CLSNSkW_.js} +2 -2
  93. package/ccw/frontend/dist/assets/{bot-DS7saQkk.js.map → bot-CLSNSkW_.js.map} +1 -1
  94. package/ccw/frontend/dist/assets/{braces-D0pAnktp.js → braces-DWwkaDS6.js} +2 -2
  95. package/ccw/frontend/dist/assets/{braces-D0pAnktp.js.map → braces-DWwkaDS6.js.map} +1 -1
  96. package/ccw/frontend/dist/assets/{circle-stop-FWSboNE6.js → circle-stop-DiS7e6ma.js} +2 -2
  97. package/ccw/frontend/dist/assets/{circle-stop-FWSboNE6.js.map → circle-stop-DiS7e6ma.js.map} +1 -1
  98. package/ccw/frontend/dist/assets/{cpu-BNM2uIpY.js → cpu-CuvHUVXO.js} +2 -2
  99. package/ccw/frontend/dist/assets/{cpu-BNM2uIpY.js.map → cpu-CuvHUVXO.js.map} +1 -1
  100. package/ccw/frontend/dist/assets/{ellipsis-vertical-GwdnnWQj.js → ellipsis-vertical-BoVlINSw.js} +2 -2
  101. package/ccw/frontend/dist/assets/{ellipsis-vertical-GwdnnWQj.js.map → ellipsis-vertical-BoVlINSw.js.map} +1 -1
  102. package/ccw/frontend/dist/assets/{eye-kV2pWXQ5.js → eye-BEMOdcAN.js} +2 -2
  103. package/ccw/frontend/dist/assets/{eye-kV2pWXQ5.js.map → eye-BEMOdcAN.js.map} +1 -1
  104. package/ccw/frontend/dist/assets/{eye-off-6o-KYsBM.js → eye-off-C5HS4Ytm.js} +2 -2
  105. package/ccw/frontend/dist/assets/{eye-off-6o-KYsBM.js.map → eye-off-C5HS4Ytm.js.map} +1 -1
  106. package/ccw/frontend/dist/assets/{file-json-Q4_Blhd8.js → file-json-DQ9XLq0B.js} +2 -2
  107. package/ccw/frontend/dist/assets/{file-json-Q4_Blhd8.js.map → file-json-DQ9XLq0B.js.map} +1 -1
  108. package/ccw/frontend/dist/assets/{file-text-DSroEAMu.js → file-text-TGs_qCbw.js} +2 -2
  109. package/ccw/frontend/dist/assets/{file-text-DSroEAMu.js.map → file-text-TGs_qCbw.js.map} +1 -1
  110. package/ccw/frontend/dist/assets/{filter-A5I9Xz7E.js → filter-CIuCqnDB.js} +2 -2
  111. package/ccw/frontend/dist/assets/{filter-A5I9Xz7E.js.map → filter-CIuCqnDB.js.map} +1 -1
  112. package/ccw/frontend/dist/assets/{folder-DNNgXVVH.js → folder-BkivHBwn.js} +2 -2
  113. package/ccw/frontend/dist/assets/{folder-DNNgXVVH.js.map → folder-BkivHBwn.js.map} +1 -1
  114. package/ccw/frontend/dist/assets/{gauge-PfGM68A8.js → gauge-CtM68fVY.js} +2 -2
  115. package/ccw/frontend/dist/assets/{gauge-PfGM68A8.js.map → gauge-CtM68fVY.js.map} +1 -1
  116. package/ccw/frontend/dist/assets/{globe-C3X8YQrU.js → globe-DpnrINqP.js} +2 -2
  117. package/ccw/frontend/dist/assets/{globe-C3X8YQrU.js.map → globe-DpnrINqP.js.map} +1 -1
  118. package/ccw/frontend/dist/assets/{grid-3x3-DpyJO-oF.js → grid-3x3-SjX0a5JH.js} +2 -2
  119. package/ccw/frontend/dist/assets/{grid-3x3-DpyJO-oF.js.map → grid-3x3-SjX0a5JH.js.map} +1 -1
  120. package/ccw/frontend/dist/assets/{hard-drive-C2PQHoNg.js → hard-drive-ByAmnoEg.js} +2 -2
  121. package/ccw/frontend/dist/assets/{hard-drive-C2PQHoNg.js.map → hard-drive-ByAmnoEg.js.map} +1 -1
  122. package/ccw/frontend/dist/assets/{hash-DX8VaW1j.js → hash-DbLc3VOZ.js} +2 -2
  123. package/ccw/frontend/dist/assets/{hash-DX8VaW1j.js.map → hash-DbLc3VOZ.js.map} +1 -1
  124. package/ccw/frontend/dist/assets/{history-BXaQEkhy.js → history-Botz5Z5d.js} +2 -2
  125. package/ccw/frontend/dist/assets/{history-BXaQEkhy.js.map → history-Botz5Z5d.js.map} +1 -1
  126. package/ccw/frontend/dist/assets/{index-BiN-BRcE.js → index-BGvyf4-9.js} +2 -2
  127. package/ccw/frontend/dist/assets/{index-BiN-BRcE.js.map → index-BGvyf4-9.js.map} +1 -1
  128. package/ccw/frontend/dist/assets/index-BoqylFO4.css +39 -0
  129. package/ccw/frontend/dist/assets/{index-B8K8MdMl.js → index-DP_mTJI8.js} +3 -3
  130. package/ccw/frontend/dist/assets/{index-B8K8MdMl.js.map → index-DP_mTJI8.js.map} +1 -1
  131. package/ccw/frontend/dist/assets/{index-Dpe_7YH0.js → index-MkgdhX7a.js} +2 -2
  132. package/ccw/frontend/dist/assets/{index-Dpe_7YH0.js.map → index-MkgdhX7a.js.map} +1 -1
  133. package/ccw/frontend/dist/assets/{index-4zmlzlPo.js → index-ni-tG9rm.js} +2 -2
  134. package/ccw/frontend/dist/assets/{index-4zmlzlPo.js.map → index-ni-tG9rm.js.map} +1 -1
  135. package/ccw/frontend/dist/assets/{layout-grid-CUqTukRt.js → layout-grid-11E4bGJz.js} +2 -2
  136. package/ccw/frontend/dist/assets/{layout-grid-CUqTukRt.js.map → layout-grid-11E4bGJz.js.map} +1 -1
  137. package/ccw/frontend/dist/assets/{lightbulb-h90ex0mh.js → lightbulb-8KrKY82b.js} +2 -2
  138. package/ccw/frontend/dist/assets/{lightbulb-h90ex0mh.js.map → lightbulb-8KrKY82b.js.map} +1 -1
  139. package/ccw/frontend/dist/assets/{link-2-1-DjXqTg.js → link-2-BUn6RILb.js} +2 -2
  140. package/ccw/frontend/dist/assets/{link-2-1-DjXqTg.js.map → link-2-BUn6RILb.js.map} +1 -1
  141. package/ccw/frontend/dist/assets/{link-DbyJpuls.js → link-CmP254Ai.js} +2 -2
  142. package/ccw/frontend/dist/assets/{link-DbyJpuls.js.map → link-CmP254Ai.js.map} +1 -1
  143. package/ccw/frontend/dist/assets/{list-CU0leArg.js → list-BAwzl4a2.js} +2 -2
  144. package/ccw/frontend/dist/assets/{list-CU0leArg.js.map → list-BAwzl4a2.js.map} +1 -1
  145. package/ccw/frontend/dist/assets/{map-pin-DheJ6EJB.js → map-pin-gi342rqk.js} +2 -2
  146. package/ccw/frontend/dist/assets/{map-pin-DheJ6EJB.js.map → map-pin-gi342rqk.js.map} +1 -1
  147. package/ccw/frontend/dist/assets/{messages-square-Bmo5DCr1.js → messages-square-C1Lh8q8b.js} +2 -2
  148. package/ccw/frontend/dist/assets/{messages-square-Bmo5DCr1.js.map → messages-square-C1Lh8q8b.js.map} +1 -1
  149. package/ccw/frontend/dist/assets/{minimize-2-h1gktUQ6.js → minimize-2-OgWNLKdq.js} +2 -2
  150. package/ccw/frontend/dist/assets/{minimize-2-h1gktUQ6.js.map → minimize-2-OgWNLKdq.js.map} +1 -1
  151. package/ccw/frontend/dist/assets/{package-CmuCX6Z_.js → package-Djsvs5qp.js} +2 -2
  152. package/ccw/frontend/dist/assets/{package-CmuCX6Z_.js.map → package-Djsvs5qp.js.map} +1 -1
  153. package/ccw/frontend/dist/assets/{plug-Jz5HaKIu.js → plug-DvSZP2cp.js} +2 -2
  154. package/ccw/frontend/dist/assets/{plug-Jz5HaKIu.js.map → plug-DvSZP2cp.js.map} +1 -1
  155. package/ccw/frontend/dist/assets/{power-CpN5I4BU.js → power-BY7vTLmU.js} +2 -2
  156. package/ccw/frontend/dist/assets/{power-CpN5I4BU.js.map → power-BY7vTLmU.js.map} +1 -1
  157. package/ccw/frontend/dist/assets/{save-B3iyK-h8.js → save-DXfqv84T.js} +2 -2
  158. package/ccw/frontend/dist/assets/{save-B3iyK-h8.js.map → save-DXfqv84T.js.map} +1 -1
  159. package/ccw/frontend/dist/assets/{send-CYO-YU9A.js → send-E2o2LZSX.js} +2 -2
  160. package/ccw/frontend/dist/assets/{send-CYO-YU9A.js.map → send-E2o2LZSX.js.map} +1 -1
  161. package/ccw/frontend/dist/assets/settings-2-ChD1LFHH.js +7 -0
  162. package/ccw/frontend/dist/assets/settings-2-ChD1LFHH.js.map +1 -0
  163. package/ccw/frontend/dist/assets/{square-check-big-1h37S4wz.js → square-check-big-CBymuqmD.js} +2 -2
  164. package/ccw/frontend/dist/assets/{square-check-big-1h37S4wz.js.map → square-check-big-CBymuqmD.js.map} +1 -1
  165. package/ccw/frontend/dist/assets/{square-pen-BS0-oO7y.js → square-pen-BfaiJgOX.js} +2 -2
  166. package/ccw/frontend/dist/assets/{square-pen-BS0-oO7y.js.map → square-pen-BfaiJgOX.js.map} +1 -1
  167. package/ccw/frontend/dist/assets/{star-Dal-o3Lo.js → star-DHMWqZ09.js} +2 -2
  168. package/ccw/frontend/dist/assets/{star-Dal-o3Lo.js.map → star-DHMWqZ09.js.map} +1 -1
  169. package/ccw/frontend/dist/assets/{style-wEWj0pe8.js → style-wvcOEAiM.js} +2 -2
  170. package/ccw/frontend/dist/assets/{style-wEWj0pe8.js.map → style-wvcOEAiM.js.map} +1 -1
  171. package/ccw/frontend/dist/assets/{target-BB9AJiC7.js → target-B8AMmf_N.js} +2 -2
  172. package/ccw/frontend/dist/assets/{target-BB9AJiC7.js.map → target-B8AMmf_N.js.map} +1 -1
  173. package/ccw/frontend/dist/assets/{test-tube-DDnQZrAm.js → test-tube-BpDeTJi1.js} +2 -2
  174. package/ccw/frontend/dist/assets/{test-tube-DDnQZrAm.js.map → test-tube-BpDeTJi1.js.map} +1 -1
  175. package/ccw/frontend/dist/assets/{upload-DshzYJC_.js → upload-pflkdIDG.js} +2 -2
  176. package/ccw/frontend/dist/assets/{upload-DshzYJC_.js.map → upload-pflkdIDG.js.map} +1 -1
  177. package/ccw/frontend/dist/assets/{useApiSettings-DkV-yWup.js → useApiSettings-BPx4DyKT.js} +2 -2
  178. package/ccw/frontend/dist/assets/{useApiSettings-DkV-yWup.js.map → useApiSettings-BPx4DyKT.js.map} +1 -1
  179. package/ccw/frontend/dist/assets/{useCli-CnwgIkqD.js → useCli-D1jfH3XA.js} +2 -2
  180. package/ccw/frontend/dist/assets/{useCli-CnwgIkqD.js.map → useCli-D1jfH3XA.js.map} +1 -1
  181. package/ccw/frontend/dist/assets/{useCommands-S0sc5bfK.js → useCommands-DhR71vpa.js} +2 -2
  182. package/ccw/frontend/dist/assets/{useCommands-S0sc5bfK.js.map → useCommands-DhR71vpa.js.map} +1 -1
  183. package/ccw/frontend/dist/assets/{useDebounce-HxG5rpQo.js → useDebounce-a6Yyer3m.js} +2 -2
  184. package/ccw/frontend/dist/assets/{useDebounce-HxG5rpQo.js.map → useDebounce-a6Yyer3m.js.map} +1 -1
  185. package/ccw/frontend/dist/assets/{useFileExplorer-CTg0zndf.js → useFileExplorer-B8W2JTj2.js} +2 -2
  186. package/ccw/frontend/dist/assets/{useFileExplorer-CTg0zndf.js.map → useFileExplorer-B8W2JTj2.js.map} +1 -1
  187. package/ccw/frontend/dist/assets/{useLocale-C2BlVToA.js → useLocale-aMHdQIL_.js} +2 -2
  188. package/ccw/frontend/dist/assets/{useLocale-C2BlVToA.js.map → useLocale-aMHdQIL_.js.map} +1 -1
  189. package/ccw/frontend/dist/assets/{useSkills-8IWJgwQU.js → useSkills-BHpc2LtN.js} +3 -3
  190. package/ccw/frontend/dist/assets/{useSkills-8IWJgwQU.js.map → useSkills-BHpc2LtN.js.map} +1 -1
  191. package/ccw/frontend/dist/assets/{useSystemSettings-BAtCCf8T.js → useSystemSettings-BFD0SvEF.js} +2 -2
  192. package/ccw/frontend/dist/assets/{useSystemSettings-BAtCCf8T.js.map → useSystemSettings-BFD0SvEF.js.map} +1 -1
  193. package/ccw/frontend/dist/assets/{wand-sparkles-CI1Tfudg.js → wand-sparkles-dYtI2IKM.js} +2 -2
  194. package/ccw/frontend/dist/assets/{wand-sparkles-CI1Tfudg.js.map → wand-sparkles-dYtI2IKM.js.map} +1 -1
  195. package/ccw/frontend/dist/index.html +2 -2
  196. package/package.json +1 -1
  197. package/ccw/frontend/dist/assets/LiteTasksPage-BOknokuo.js.map +0 -1
  198. package/ccw/frontend/dist/assets/SettingsPage-DJltvfrs.js +0 -144
  199. package/ccw/frontend/dist/assets/SettingsPage-DJltvfrs.js.map +0 -1
  200. package/ccw/frontend/dist/assets/index-D6YeIKg_.css +0 -39
@@ -1,7 +1,7 @@
1
- import{O as a,u as d,j as e,aP as n,c as s}from"./index-B8K8MdMl.js";import{C as i}from"./cpu-BNM2uIpY.js";/**
1
+ import{O as a,u as d,j as e,aP as n,c as s}from"./index-DP_mTJI8.js";import{C as i}from"./cpu-CuvHUVXO.js";/**
2
2
  * @license lucide-react v0.460.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
6
  */const c=a("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);function u({currentMode:r,onModeChange:t}){const{formatMessage:o}=d();return e.jsxs("div",{className:"inline-flex items-center rounded-full border border-border bg-muted/50 p-0.5",children:[e.jsxs("button",{onClick:()=>t("claude"),className:s("inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-medium transition-all",r==="claude"?"bg-primary text-primary-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:[e.jsx(n,{className:"w-3.5 h-3.5"}),o({id:"mcp.mode.claude"})]}),e.jsxs("button",{onClick:()=>t("codex"),className:s("inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-medium transition-all",r==="codex"?"bg-primary text-primary-foreground shadow-sm":"text-muted-foreground hover:text-foreground"),children:[e.jsx(i,{className:"w-3.5 h-3.5"}),o({id:"mcp.mode.codex"})]})]})}export{u as C,c as L};
7
- //# sourceMappingURL=CliModeToggle-B_Vu8NDb.js.map
7
+ //# sourceMappingURL=CliModeToggle-DXenjpbe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CliModeToggle-B_Vu8NDb.js","sources":["../../../../node_modules/lucide-react/dist/esm/icons/lock.js","../../src/components/mcp/CliModeToggle.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Lock = createLucideIcon(\"Lock\", [\n [\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n]);\n\nexport { Lock as default };\n//# sourceMappingURL=lock.js.map\n","// ========================================\r\n// CLI Mode Toggle Component\r\n// ========================================\r\n// Compact badge-style toggle between Claude and Codex CLI modes\r\n\r\nimport { useIntl } from 'react-intl';\r\nimport { Terminal, Cpu } from 'lucide-react';\r\nimport { cn } from '@/lib/utils';\r\n\r\n// ========== Types ==========\r\n\r\nexport type CliMode = 'claude' | 'codex';\r\n\r\nexport interface CliModeToggleProps {\r\n currentMode: CliMode;\r\n onModeChange: (mode: CliMode) => void;\r\n codexConfigPath?: string;\r\n}\r\n\r\n// ========== Component ==========\r\n\r\nexport function CliModeToggle({\r\n currentMode,\r\n onModeChange,\r\n}: CliModeToggleProps) {\r\n const { formatMessage } = useIntl();\r\n\r\n return (\r\n <div className=\"inline-flex items-center rounded-full border border-border bg-muted/50 p-0.5\">\r\n <button\r\n onClick={() => onModeChange('claude')}\r\n className={cn(\r\n 'inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-medium transition-all',\r\n currentMode === 'claude'\r\n ? 'bg-primary text-primary-foreground shadow-sm'\r\n : 'text-muted-foreground hover:text-foreground'\r\n )}\r\n >\r\n <Terminal className=\"w-3.5 h-3.5\" />\r\n {formatMessage({ id: 'mcp.mode.claude' })}\r\n </button>\r\n <button\r\n onClick={() => onModeChange('codex')}\r\n className={cn(\r\n 'inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-medium transition-all',\r\n currentMode === 'codex'\r\n ? 'bg-primary text-primary-foreground shadow-sm'\r\n : 'text-muted-foreground hover:text-foreground'\r\n )}\r\n >\r\n <Cpu className=\"w-3.5 h-3.5\" />\r\n {formatMessage({ id: 'mcp.mode.codex' })}\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CliModeToggle;\r\n"],"names":["Lock","createLucideIcon","CliModeToggle","currentMode","onModeChange","formatMessage","useIntl","jsxs","cn","jsx","Terminal","Cpu"],"mappings":"2GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,OAAQ,CACpC,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACxF,CAAC,OAAQ,CAAE,EAAG,2BAA4B,IAAK,QAAQ,CAAE,CAC3D,CAAC,ECSM,SAASC,EAAc,CAC5B,YAAAC,EACA,aAAAC,CACF,EAAuB,CACrB,KAAM,CAAE,cAAAC,CAAA,EAAkBC,EAAA,EAE1B,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,+EACb,SAAA,CAAAA,EAAAA,KAAC,SAAA,CACC,QAAS,IAAMH,EAAa,QAAQ,EACpC,UAAWI,EACT,6FACAL,IAAgB,SACZ,+CACA,6CAAA,EAGN,SAAA,CAAAM,EAAAA,IAACC,EAAA,CAAS,UAAU,aAAA,CAAc,EACjCL,EAAc,CAAE,GAAI,iBAAA,CAAmB,CAAA,CAAA,CAAA,EAE1CE,EAAAA,KAAC,SAAA,CACC,QAAS,IAAMH,EAAa,OAAO,EACnC,UAAWI,EACT,6FACAL,IAAgB,QACZ,+CACA,6CAAA,EAGN,SAAA,CAAAM,EAAAA,IAACE,EAAA,CAAI,UAAU,aAAA,CAAc,EAC5BN,EAAc,CAAE,GAAI,gBAAA,CAAkB,CAAA,CAAA,CAAA,CACzC,EACF,CAEJ","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"CliModeToggle-DXenjpbe.js","sources":["../../../../node_modules/lucide-react/dist/esm/icons/lock.js","../../src/components/mcp/CliModeToggle.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Lock = createLucideIcon(\"Lock\", [\n [\"rect\", { width: \"18\", height: \"11\", x: \"3\", y: \"11\", rx: \"2\", ry: \"2\", key: \"1w4ew1\" }],\n [\"path\", { d: \"M7 11V7a5 5 0 0 1 10 0v4\", key: \"fwvmzm\" }]\n]);\n\nexport { Lock as default };\n//# sourceMappingURL=lock.js.map\n","// ========================================\r\n// CLI Mode Toggle Component\r\n// ========================================\r\n// Compact badge-style toggle between Claude and Codex CLI modes\r\n\r\nimport { useIntl } from 'react-intl';\r\nimport { Terminal, Cpu } from 'lucide-react';\r\nimport { cn } from '@/lib/utils';\r\n\r\n// ========== Types ==========\r\n\r\nexport type CliMode = 'claude' | 'codex';\r\n\r\nexport interface CliModeToggleProps {\r\n currentMode: CliMode;\r\n onModeChange: (mode: CliMode) => void;\r\n codexConfigPath?: string;\r\n}\r\n\r\n// ========== Component ==========\r\n\r\nexport function CliModeToggle({\r\n currentMode,\r\n onModeChange,\r\n}: CliModeToggleProps) {\r\n const { formatMessage } = useIntl();\r\n\r\n return (\r\n <div className=\"inline-flex items-center rounded-full border border-border bg-muted/50 p-0.5\">\r\n <button\r\n onClick={() => onModeChange('claude')}\r\n className={cn(\r\n 'inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-medium transition-all',\r\n currentMode === 'claude'\r\n ? 'bg-primary text-primary-foreground shadow-sm'\r\n : 'text-muted-foreground hover:text-foreground'\r\n )}\r\n >\r\n <Terminal className=\"w-3.5 h-3.5\" />\r\n {formatMessage({ id: 'mcp.mode.claude' })}\r\n </button>\r\n <button\r\n onClick={() => onModeChange('codex')}\r\n className={cn(\r\n 'inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-medium transition-all',\r\n currentMode === 'codex'\r\n ? 'bg-primary text-primary-foreground shadow-sm'\r\n : 'text-muted-foreground hover:text-foreground'\r\n )}\r\n >\r\n <Cpu className=\"w-3.5 h-3.5\" />\r\n {formatMessage({ id: 'mcp.mode.codex' })}\r\n </button>\r\n </div>\r\n );\r\n}\r\n\r\nexport default CliModeToggle;\r\n"],"names":["Lock","createLucideIcon","CliModeToggle","currentMode","onModeChange","formatMessage","useIntl","jsxs","cn","jsx","Terminal","Cpu"],"mappings":"2GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAOC,EAAiB,OAAQ,CACpC,CAAC,OAAQ,CAAE,MAAO,KAAM,OAAQ,KAAM,EAAG,IAAK,EAAG,KAAM,GAAI,IAAK,GAAI,IAAK,IAAK,SAAU,EACxF,CAAC,OAAQ,CAAE,EAAG,2BAA4B,IAAK,QAAQ,CAAE,CAC3D,CAAC,ECSM,SAASC,EAAc,CAC5B,YAAAC,EACA,aAAAC,CACF,EAAuB,CACrB,KAAM,CAAE,cAAAC,CAAA,EAAkBC,EAAA,EAE1B,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,+EACb,SAAA,CAAAA,EAAAA,KAAC,SAAA,CACC,QAAS,IAAMH,EAAa,QAAQ,EACpC,UAAWI,EACT,6FACAL,IAAgB,SACZ,+CACA,6CAAA,EAGN,SAAA,CAAAM,EAAAA,IAACC,EAAA,CAAS,UAAU,aAAA,CAAc,EACjCL,EAAc,CAAE,GAAI,iBAAA,CAAmB,CAAA,CAAA,CAAA,EAE1CE,EAAAA,KAAC,SAAA,CACC,QAAS,IAAMH,EAAa,OAAO,EACnC,UAAWI,EACT,6FACAL,IAAgB,QACZ,+CACA,6CAAA,EAGN,SAAA,CAAAM,EAAAA,IAACE,EAAA,CAAI,UAAU,aAAA,CAAc,EAC5BN,EAAc,CAAE,GAAI,gBAAA,CAAkB,CAAA,CAAA,CAAA,CACzC,EACF,CAEJ","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- import{u as R,bs as k,r as t,eh as M,ei as B,j as e,B as x,cN as A,e as L,am as P,C as y,I as O,c as T}from"./index-B8K8MdMl.js";function U(n,d){const c=`/api/cli-sessions/${encodeURIComponent(n)}/stream`,o=new URLSearchParams({shareToken:d,includeBuffer:"1"});return`${c}?${o.toString()}`}function I(){const{formatMessage:n}=R(),[d]=k(),c=d.get("sessionKey")??"",o=d.get("shareToken")??"",l=t.useMemo(()=>typeof window<"u"?window.location.href:"",[]),[v,i]=t.useState("idle"),[j,b]=t.useState(null),u=t.useRef(null),m=t.useRef(null),p=t.useRef(null);t.useEffect(()=>{if(!u.current||m.current)return;const s=new M.Terminal({convertEol:!0,cursorBlink:!1,disableStdin:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',fontSize:12,scrollback:1e4}),r=new B.FitAddon;return s.loadAddon(r),s.open(u.current),r.fit(),m.current=s,p.current=r,()=>{try{s.dispose()}finally{m.current=null,p.current=null}}},[]),t.useEffect(()=>{const s=u.current,r=p.current;if(!s||!r)return;const a=new ResizeObserver(()=>r.fit());return a.observe(s),()=>a.disconnect()},[]),t.useEffect(()=>{const s=m.current;if(!s)return;if(!c||!o){i("error"),b(n({id:"issues.terminal.share.missingParams"}));return}b(null),i("connecting");const r=U(c,o),a=new EventSource(r);let f=!1;const S=g=>{try{const h=JSON.parse(g.data);s.reset(),s.clear(),s.write(h.buffer||""),f=!0,i("connected")}catch{}},E=g=>{try{const h=JSON.parse(g.data);typeof h.data=="string"&&s.write(h.data),f||(f=!0,i("connected"))}catch{}},C=()=>{i(f?"reconnecting":"connecting")};return a.addEventListener("buffer",S),a.addEventListener("output",E),a.onerror=C,()=>{try{a.close()}catch{}}},[n,c,o]);const w=t.useMemo(()=>{switch(v){case"connected":return e.jsx(x,{variant:"success",children:n({id:"issues.terminal.share.connected"})});case"reconnecting":case"connecting":return e.jsx(x,{variant:"secondary",children:n({id:"issues.terminal.share.connecting"})});case"error":return e.jsx(x,{variant:"destructive",children:n({id:"issues.terminal.share.error"})});default:return e.jsx(x,{variant:"secondary",children:"—"})}},[v,n]),N=async()=>{if(l)try{await navigator.clipboard.writeText(l)}catch{}};return e.jsx("div",{className:"min-h-screen bg-background p-6",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"w-5 h-5 text-muted-foreground"}),e.jsx("h1",{className:"text-lg font-semibold text-foreground truncate",children:n({id:"issues.terminal.share.pageTitle"})}),w]}),e.jsx("div",{className:"mt-1 text-xs text-muted-foreground font-mono truncate",children:c||"—"})]}),e.jsx("div",{className:"flex items-center gap-2 shrink-0",children:e.jsxs(L,{variant:"outline",onClick:N,disabled:!l,children:[e.jsx(P,{className:"w-4 h-4 mr-2"}),n({id:"common.actions.copy"})]})})]}),j&&e.jsx(y,{className:"p-4 border-destructive/50 bg-destructive/5",children:e.jsx("div",{className:"text-sm text-destructive",children:j})}),e.jsxs(y,{className:"p-3 space-y-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:n({id:"issues.terminal.share.linkLabel"})}),e.jsx(O,{value:l,readOnly:!0})]}),e.jsx("div",{className:T("rounded-md border border-border bg-black/90 overflow-hidden"),children:e.jsx("div",{ref:u,className:"h-[70vh] w-full"})})]})})}export{I as CliSessionSharePage,I as default};
2
- //# sourceMappingURL=CliSessionSharePage-Bb3DrLGF.js.map
1
+ import{u as R,bs as k,r as t,eh as M,ei as B,j as e,B as x,cO as A,e as L,am as O,C as y,I as P,c as T}from"./index-DP_mTJI8.js";function U(n,d){const c=`/api/cli-sessions/${encodeURIComponent(n)}/stream`,o=new URLSearchParams({shareToken:d,includeBuffer:"1"});return`${c}?${o.toString()}`}function I(){const{formatMessage:n}=R(),[d]=k(),c=d.get("sessionKey")??"",o=d.get("shareToken")??"",l=t.useMemo(()=>typeof window<"u"?window.location.href:"",[]),[v,i]=t.useState("idle"),[j,b]=t.useState(null),u=t.useRef(null),m=t.useRef(null),p=t.useRef(null);t.useEffect(()=>{if(!u.current||m.current)return;const s=new M.Terminal({convertEol:!0,cursorBlink:!1,disableStdin:!0,fontFamily:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',fontSize:12,scrollback:1e4}),r=new B.FitAddon;return s.loadAddon(r),s.open(u.current),r.fit(),m.current=s,p.current=r,()=>{try{s.dispose()}finally{m.current=null,p.current=null}}},[]),t.useEffect(()=>{const s=u.current,r=p.current;if(!s||!r)return;const a=new ResizeObserver(()=>r.fit());return a.observe(s),()=>a.disconnect()},[]),t.useEffect(()=>{const s=m.current;if(!s)return;if(!c||!o){i("error"),b(n({id:"issues.terminal.share.missingParams"}));return}b(null),i("connecting");const r=U(c,o),a=new EventSource(r);let f=!1;const S=g=>{try{const h=JSON.parse(g.data);s.reset(),s.clear(),s.write(h.buffer||""),f=!0,i("connected")}catch{}},E=g=>{try{const h=JSON.parse(g.data);typeof h.data=="string"&&s.write(h.data),f||(f=!0,i("connected"))}catch{}},C=()=>{i(f?"reconnecting":"connecting")};return a.addEventListener("buffer",S),a.addEventListener("output",E),a.onerror=C,()=>{try{a.close()}catch{}}},[n,c,o]);const w=t.useMemo(()=>{switch(v){case"connected":return e.jsx(x,{variant:"success",children:n({id:"issues.terminal.share.connected"})});case"reconnecting":case"connecting":return e.jsx(x,{variant:"secondary",children:n({id:"issues.terminal.share.connecting"})});case"error":return e.jsx(x,{variant:"destructive",children:n({id:"issues.terminal.share.error"})});default:return e.jsx(x,{variant:"secondary",children:"—"})}},[v,n]),N=async()=>{if(l)try{await navigator.clipboard.writeText(l)}catch{}};return e.jsx("div",{className:"min-h-screen bg-background p-6",children:e.jsxs("div",{className:"max-w-5xl mx-auto space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(A,{className:"w-5 h-5 text-muted-foreground"}),e.jsx("h1",{className:"text-lg font-semibold text-foreground truncate",children:n({id:"issues.terminal.share.pageTitle"})}),w]}),e.jsx("div",{className:"mt-1 text-xs text-muted-foreground font-mono truncate",children:c||"—"})]}),e.jsx("div",{className:"flex items-center gap-2 shrink-0",children:e.jsxs(L,{variant:"outline",onClick:N,disabled:!l,children:[e.jsx(O,{className:"w-4 h-4 mr-2"}),n({id:"common.actions.copy"})]})})]}),j&&e.jsx(y,{className:"p-4 border-destructive/50 bg-destructive/5",children:e.jsx("div",{className:"text-sm text-destructive",children:j})}),e.jsxs(y,{className:"p-3 space-y-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground",children:n({id:"issues.terminal.share.linkLabel"})}),e.jsx(P,{value:l,readOnly:!0})]}),e.jsx("div",{className:T("rounded-md border border-border bg-black/90 overflow-hidden"),children:e.jsx("div",{ref:u,className:"h-[70vh] w-full"})})]})})}export{I as CliSessionSharePage,I as default};
2
+ //# sourceMappingURL=CliSessionSharePage-B-ZIMqmX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CliSessionSharePage-Bb3DrLGF.js","sources":["../../src/pages/CliSessionSharePage.tsx"],"sourcesContent":["// ========================================\n// CLI Session Share Page\n// ========================================\n// Read-only viewer for a PTY-backed CLI session using SSE + shareToken.\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useSearchParams } from 'react-router-dom';\nimport { Terminal as XTerm } from 'xterm';\nimport { FitAddon } from 'xterm-addon-fit';\nimport { Copy, Monitor } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Card } from '@/components/ui/Card';\nimport { Badge } from '@/components/ui/Badge';\nimport { Input } from '@/components/ui/Input';\nimport { cn } from '@/lib/utils';\n\ntype ConnectionState = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'error';\n\nfunction buildStreamUrl(sessionKey: string, shareToken: string): string {\n const apiPath = `/api/cli-sessions/${encodeURIComponent(sessionKey)}/stream`;\n const params = new URLSearchParams({\n shareToken,\n includeBuffer: '1',\n });\n return `${apiPath}?${params.toString()}`;\n}\n\nexport function CliSessionSharePage() {\n const { formatMessage } = useIntl();\n const [searchParams] = useSearchParams();\n\n const sessionKey = searchParams.get('sessionKey') ?? '';\n const shareToken = searchParams.get('shareToken') ?? '';\n\n const shareUrl = useMemo(() => (typeof window !== 'undefined' ? window.location.href : ''), []);\n\n const [connection, setConnection] = useState<ConnectionState>('idle');\n const [error, setError] = useState<string | null>(null);\n\n const terminalHostRef = useRef<HTMLDivElement | null>(null);\n const xtermRef = useRef<XTerm | null>(null);\n const fitAddonRef = useRef<FitAddon | null>(null);\n\n // Init xterm\n useEffect(() => {\n if (!terminalHostRef.current) return;\n if (xtermRef.current) return;\n\n const term = new XTerm({\n convertEol: true,\n cursorBlink: false,\n disableStdin: true,\n fontFamily:\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n fontSize: 12,\n scrollback: 10_000,\n });\n const fitAddon = new FitAddon();\n term.loadAddon(fitAddon);\n term.open(terminalHostRef.current);\n fitAddon.fit();\n\n xtermRef.current = term;\n fitAddonRef.current = fitAddon;\n\n return () => {\n try {\n term.dispose();\n } finally {\n xtermRef.current = null;\n fitAddonRef.current = null;\n }\n };\n }, []);\n\n // Resize observer -> fit\n useEffect(() => {\n const host = terminalHostRef.current;\n const fitAddon = fitAddonRef.current;\n if (!host || !fitAddon) return;\n\n const ro = new ResizeObserver(() => fitAddon.fit());\n ro.observe(host);\n return () => ro.disconnect();\n }, []);\n\n // Connect SSE\n useEffect(() => {\n const term = xtermRef.current;\n if (!term) return;\n\n if (!sessionKey || !shareToken) {\n setConnection('error');\n setError(formatMessage({ id: 'issues.terminal.share.missingParams' }));\n return;\n }\n\n setError(null);\n setConnection('connecting');\n\n const streamUrl = buildStreamUrl(sessionKey, shareToken);\n const es = new EventSource(streamUrl);\n\n let hasConnected = false;\n\n const onBuffer = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as { buffer?: string };\n term.reset();\n term.clear();\n term.write(payload.buffer || '');\n hasConnected = true;\n setConnection('connected');\n } catch {\n // ignore parse errors\n }\n };\n\n const onOutput = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as { data?: string };\n if (typeof payload.data === 'string') {\n term.write(payload.data);\n }\n if (!hasConnected) {\n hasConnected = true;\n setConnection('connected');\n }\n } catch {\n // ignore parse errors\n }\n };\n\n const onError = () => {\n setConnection(hasConnected ? 'reconnecting' : 'connecting');\n };\n\n es.addEventListener('buffer', onBuffer as any);\n es.addEventListener('output', onOutput as any);\n es.onerror = onError;\n\n return () => {\n try {\n es.close();\n } catch {\n // ignore\n }\n };\n }, [formatMessage, sessionKey, shareToken]);\n\n const connectionBadge = useMemo(() => {\n switch (connection) {\n case 'connected':\n return <Badge variant=\"success\">{formatMessage({ id: 'issues.terminal.share.connected' })}</Badge>;\n case 'reconnecting':\n case 'connecting':\n return <Badge variant=\"secondary\">{formatMessage({ id: 'issues.terminal.share.connecting' })}</Badge>;\n case 'error':\n return <Badge variant=\"destructive\">{formatMessage({ id: 'issues.terminal.share.error' })}</Badge>;\n default:\n return <Badge variant=\"secondary\">—</Badge>;\n }\n }, [connection, formatMessage]);\n\n const handleCopyLink = async () => {\n if (!shareUrl) return;\n try {\n await navigator.clipboard.writeText(shareUrl);\n } catch {\n // ignore\n }\n };\n\n return (\n <div className=\"min-h-screen bg-background p-6\">\n <div className=\"max-w-5xl mx-auto space-y-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2\">\n <Monitor className=\"w-5 h-5 text-muted-foreground\" />\n <h1 className=\"text-lg font-semibold text-foreground truncate\">\n {formatMessage({ id: 'issues.terminal.share.pageTitle' })}\n </h1>\n {connectionBadge}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground font-mono truncate\">\n {sessionKey || '—'}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n <Button variant=\"outline\" onClick={handleCopyLink} disabled={!shareUrl}>\n <Copy className=\"w-4 h-4 mr-2\" />\n {formatMessage({ id: 'common.actions.copy' })}\n </Button>\n </div>\n </div>\n\n {error && (\n <Card className=\"p-4 border-destructive/50 bg-destructive/5\">\n <div className=\"text-sm text-destructive\">{error}</div>\n </Card>\n )}\n\n <Card className=\"p-3 space-y-2\">\n <div className=\"text-xs text-muted-foreground\">{formatMessage({ id: 'issues.terminal.share.linkLabel' })}</div>\n <Input value={shareUrl} readOnly />\n </Card>\n\n <div className={cn('rounded-md border border-border bg-black/90 overflow-hidden')}>\n <div ref={terminalHostRef} className=\"h-[70vh] w-full\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport default CliSessionSharePage;\n"],"names":["buildStreamUrl","sessionKey","shareToken","apiPath","params","CliSessionSharePage","formatMessage","useIntl","searchParams","useSearchParams","shareUrl","useMemo","connection","setConnection","useState","error","setError","terminalHostRef","useRef","xtermRef","fitAddonRef","useEffect","term","XTerm","fitAddon","FitAddon","host","ro","streamUrl","es","hasConnected","onBuffer","event","payload","onOutput","onError","connectionBadge","jsx","Badge","handleCopyLink","jsxs","Monitor","Button","Copy","Card","Input","cn"],"mappings":"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"}
1
+ {"version":3,"file":"CliSessionSharePage-B-ZIMqmX.js","sources":["../../src/pages/CliSessionSharePage.tsx"],"sourcesContent":["// ========================================\n// CLI Session Share Page\n// ========================================\n// Read-only viewer for a PTY-backed CLI session using SSE + shareToken.\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useSearchParams } from 'react-router-dom';\nimport { Terminal as XTerm } from 'xterm';\nimport { FitAddon } from 'xterm-addon-fit';\nimport { Copy, Monitor } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Card } from '@/components/ui/Card';\nimport { Badge } from '@/components/ui/Badge';\nimport { Input } from '@/components/ui/Input';\nimport { cn } from '@/lib/utils';\n\ntype ConnectionState = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'error';\n\nfunction buildStreamUrl(sessionKey: string, shareToken: string): string {\n const apiPath = `/api/cli-sessions/${encodeURIComponent(sessionKey)}/stream`;\n const params = new URLSearchParams({\n shareToken,\n includeBuffer: '1',\n });\n return `${apiPath}?${params.toString()}`;\n}\n\nexport function CliSessionSharePage() {\n const { formatMessage } = useIntl();\n const [searchParams] = useSearchParams();\n\n const sessionKey = searchParams.get('sessionKey') ?? '';\n const shareToken = searchParams.get('shareToken') ?? '';\n\n const shareUrl = useMemo(() => (typeof window !== 'undefined' ? window.location.href : ''), []);\n\n const [connection, setConnection] = useState<ConnectionState>('idle');\n const [error, setError] = useState<string | null>(null);\n\n const terminalHostRef = useRef<HTMLDivElement | null>(null);\n const xtermRef = useRef<XTerm | null>(null);\n const fitAddonRef = useRef<FitAddon | null>(null);\n\n // Init xterm\n useEffect(() => {\n if (!terminalHostRef.current) return;\n if (xtermRef.current) return;\n\n const term = new XTerm({\n convertEol: true,\n cursorBlink: false,\n disableStdin: true,\n fontFamily:\n 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n fontSize: 12,\n scrollback: 10_000,\n });\n const fitAddon = new FitAddon();\n term.loadAddon(fitAddon);\n term.open(terminalHostRef.current);\n fitAddon.fit();\n\n xtermRef.current = term;\n fitAddonRef.current = fitAddon;\n\n return () => {\n try {\n term.dispose();\n } finally {\n xtermRef.current = null;\n fitAddonRef.current = null;\n }\n };\n }, []);\n\n // Resize observer -> fit\n useEffect(() => {\n const host = terminalHostRef.current;\n const fitAddon = fitAddonRef.current;\n if (!host || !fitAddon) return;\n\n const ro = new ResizeObserver(() => fitAddon.fit());\n ro.observe(host);\n return () => ro.disconnect();\n }, []);\n\n // Connect SSE\n useEffect(() => {\n const term = xtermRef.current;\n if (!term) return;\n\n if (!sessionKey || !shareToken) {\n setConnection('error');\n setError(formatMessage({ id: 'issues.terminal.share.missingParams' }));\n return;\n }\n\n setError(null);\n setConnection('connecting');\n\n const streamUrl = buildStreamUrl(sessionKey, shareToken);\n const es = new EventSource(streamUrl);\n\n let hasConnected = false;\n\n const onBuffer = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as { buffer?: string };\n term.reset();\n term.clear();\n term.write(payload.buffer || '');\n hasConnected = true;\n setConnection('connected');\n } catch {\n // ignore parse errors\n }\n };\n\n const onOutput = (event: MessageEvent) => {\n try {\n const payload = JSON.parse(event.data) as { data?: string };\n if (typeof payload.data === 'string') {\n term.write(payload.data);\n }\n if (!hasConnected) {\n hasConnected = true;\n setConnection('connected');\n }\n } catch {\n // ignore parse errors\n }\n };\n\n const onError = () => {\n setConnection(hasConnected ? 'reconnecting' : 'connecting');\n };\n\n es.addEventListener('buffer', onBuffer as any);\n es.addEventListener('output', onOutput as any);\n es.onerror = onError;\n\n return () => {\n try {\n es.close();\n } catch {\n // ignore\n }\n };\n }, [formatMessage, sessionKey, shareToken]);\n\n const connectionBadge = useMemo(() => {\n switch (connection) {\n case 'connected':\n return <Badge variant=\"success\">{formatMessage({ id: 'issues.terminal.share.connected' })}</Badge>;\n case 'reconnecting':\n case 'connecting':\n return <Badge variant=\"secondary\">{formatMessage({ id: 'issues.terminal.share.connecting' })}</Badge>;\n case 'error':\n return <Badge variant=\"destructive\">{formatMessage({ id: 'issues.terminal.share.error' })}</Badge>;\n default:\n return <Badge variant=\"secondary\">—</Badge>;\n }\n }, [connection, formatMessage]);\n\n const handleCopyLink = async () => {\n if (!shareUrl) return;\n try {\n await navigator.clipboard.writeText(shareUrl);\n } catch {\n // ignore\n }\n };\n\n return (\n <div className=\"min-h-screen bg-background p-6\">\n <div className=\"max-w-5xl mx-auto space-y-4\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <div className=\"flex items-center gap-2\">\n <Monitor className=\"w-5 h-5 text-muted-foreground\" />\n <h1 className=\"text-lg font-semibold text-foreground truncate\">\n {formatMessage({ id: 'issues.terminal.share.pageTitle' })}\n </h1>\n {connectionBadge}\n </div>\n <div className=\"mt-1 text-xs text-muted-foreground font-mono truncate\">\n {sessionKey || '—'}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n <Button variant=\"outline\" onClick={handleCopyLink} disabled={!shareUrl}>\n <Copy className=\"w-4 h-4 mr-2\" />\n {formatMessage({ id: 'common.actions.copy' })}\n </Button>\n </div>\n </div>\n\n {error && (\n <Card className=\"p-4 border-destructive/50 bg-destructive/5\">\n <div className=\"text-sm text-destructive\">{error}</div>\n </Card>\n )}\n\n <Card className=\"p-3 space-y-2\">\n <div className=\"text-xs text-muted-foreground\">{formatMessage({ id: 'issues.terminal.share.linkLabel' })}</div>\n <Input value={shareUrl} readOnly />\n </Card>\n\n <div className={cn('rounded-md border border-border bg-black/90 overflow-hidden')}>\n <div ref={terminalHostRef} className=\"h-[70vh] w-full\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport default CliSessionSharePage;\n"],"names":["buildStreamUrl","sessionKey","shareToken","apiPath","params","CliSessionSharePage","formatMessage","useIntl","searchParams","useSearchParams","shareUrl","useMemo","connection","setConnection","useState","error","setError","terminalHostRef","useRef","xtermRef","fitAddonRef","useEffect","term","XTerm","fitAddon","FitAddon","host","ro","streamUrl","es","hasConnected","onBuffer","event","payload","onOutput","onError","connectionBadge","jsx","Badge","handleCopyLink","jsxs","Monitor","Button","Copy","Card","Input","cn"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import{O as z,u as S,r as a,e6 as L,e7 as N,j as e,x as q,e8 as H,e as G,a7 as J,c as b,y as K,z as Q,A as Y,b as W,I as X,aP as M,K as me,k as he,N as R,l as Z,e9 as E,D as ee,d as te,f as se,g as A,h as re,X as ae,ea as fe,eb as ne,ec as ge,ed as F,b7 as pe,ee as _,n as be,J as je,ef as we,cM as ve,ap as Ne,v as ye,bs as ke,eg as Ce}from"./index-B8K8MdMl.js";import{S as Me,a as Se,V as U,C as Te,R as De}from"./style-wEWj0pe8.js";import{M as Ve}from"./index-BiN-BRcE.js";import{L as Ee}from"./layout-grid-CUqTukRt.js";import{M as Pe,a as Oe}from"./minimize-2-h1gktUQ6.js";import"./braces-D0pAnktp.js";import"./index-Dpe_7YH0.js";/**
1
+ import{O as z,u as S,r as a,e6 as L,e7 as N,j as e,x as q,e8 as H,e as G,a7 as J,c as b,y as K,z as Q,A as Y,b as W,I as X,aP as M,K as me,k as he,N as R,l as Z,e9 as E,D as ee,d as te,f as se,g as A,h as re,X as ae,ea as fe,eb as ne,ec as ge,ed as F,b7 as pe,ee as _,n as be,J as je,ef as we,cN as ve,ap as Ne,v as ye,bs as ke,eg as Ce}from"./index-DP_mTJI8.js";import{S as Me,a as Se,V as U,C as Te,R as De}from"./style-wvcOEAiM.js";import{M as Ve}from"./index-BGvyf4-9.js";import{L as Ee}from"./layout-grid-11E4bGJz.js";import{M as Pe,a as Oe}from"./minimize-2-OgWNLKdq.js";import"./braces-DWwkaDS6.js";import"./index-MkgdhX7a.js";/**
2
2
  * @license lucide-react v0.460.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -19,4 +19,4 @@ import{O as z,u as S,r as a,e6 as L,e7 as N,j as e,x as q,e8 as H,e as G,a7 as J
19
19
  * This source code is licensed under the ISC license.
20
20
  * See the LICENSE file in the root directory of this source tree.
21
21
  */const B=z("Pin",[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]]),ze={running:{icon:R,color:"text-indigo-500",label:"Running"},completed:{icon:he,color:"text-emerald-500",label:"Completed"},error:{icon:me,color:"text-rose-500",label:"Error"}};function $e(t){const s=Date.now()-t;return s<6e4?"Just now":s<36e5?`${Math.floor(s/6e4)}m ago`:s<864e5?`${Math.floor(s/36e5)}h ago`:new Date(t).toLocaleDateString()}function oe(t,r){return`${r.tool}-${r.mode}`}function Re({executionId:t,execution:r,onSelect:s}){const d=ze[r.status],o=d.icon;return e.jsxs("button",{onClick:s,className:b("w-full flex items-center gap-3 p-3 rounded-lg","border border-border/50 bg-muted/30","hover:bg-muted/50 hover:border-border","transition-all duration-150","text-left"),children:[e.jsx("div",{className:"flex items-center justify-center w-8 h-8 rounded-md bg-primary/10",children:e.jsx(M,{className:"h-4 w-4 text-primary"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-medium text-sm text-foreground truncate",children:oe(t,r)}),e.jsx(o,{className:b("h-3.5 w-3.5 shrink-0",d.color,r.status==="running"&&"animate-spin")})]}),e.jsx("div",{className:"flex items-center gap-2 mt-0.5",children:e.jsx("span",{className:"text-xs text-muted-foreground truncate",children:t})})]}),e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground shrink-0",children:[e.jsx(Z,{className:"h-3 w-3"}),e.jsx("span",{children:$e(r.startTime)})]})]})}function Fe({paneId:t,className:r}){const{formatMessage:s}=S(),[d,o]=a.useState(!1),[i,u]=a.useState(""),m=L(n=>n.executions),j=N(n=>n.addTab),p=N(n=>n.panes),w=a.useMemo(()=>{const n=p[t];return n?new Set(n.tabs.map(l=>l.executionId)):new Set},[p,t]),y=a.useMemo(()=>{const l=Object.entries(m).filter(([f,x])=>{if(!i)return!0;const C=i.toLowerCase();return f.toLowerCase().includes(C)||x.tool.toLowerCase().includes(C)||x.mode.toLowerCase().includes(C)});return l.sort((f,x)=>x[1].startTime-f[1].startTime),l},[m,i]),h=a.useCallback((n,l)=>{const f=oe(n,l);j(t,n,f),o(!1),u("")},[t,j]),g=Object.keys(m).length,v=y.filter(([n])=>!w.has(n)).length;return e.jsxs(q,{open:d,onOpenChange:o,children:[e.jsx(H,{asChild:!0,children:e.jsx(G,{variant:"ghost",size:"icon",className:b("h-6 w-6 shrink-0",r),"aria-label":s({id:"cliViewer.tabs.addTab",defaultMessage:"Add tab"}),children:e.jsx(J,{className:"h-4 w-4"})})}),e.jsxs(K,{className:"sm:max-w-md",children:[e.jsx(Q,{children:e.jsx(Y,{children:s({id:"cliViewer.picker.selectExecution",defaultMessage:"Select Execution"})})}),e.jsxs("div",{className:"relative",children:[e.jsx(W,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(X,{placeholder:s({id:"cliViewer.picker.searchExecutions",defaultMessage:"Search executions..."}),value:i,onChange:n=>u(n.target.value),className:"pl-9"})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto space-y-2",children:y.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(M,{className:"h-8 w-8 text-muted-foreground mb-2"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s(g===0?{id:"cliViewer.picker.noExecutions",defaultMessage:"No executions available"}:{id:"cliViewer.picker.noMatchingExecutions",defaultMessage:"No matching executions"})})]}):y.map(([n,l])=>{const f=w.has(n);return e.jsxs("div",{className:"relative",children:[e.jsx(Re,{executionId:n,execution:l,onSelect:()=>h(n,l)}),f&&e.jsx("div",{className:"absolute inset-0 bg-background/60 rounded-lg flex items-center justify-center",children:e.jsx("span",{className:"text-xs text-muted-foreground bg-muted px-2 py-1 rounded",children:s({id:"cliViewer.picker.alreadyOpen",defaultMessage:"Already open"})})})]},n)})}),g>0&&e.jsx("div",{className:"text-xs text-muted-foreground text-center pt-2 border-t border-border/50",children:s({id:"cliViewer.picker.executionCount",defaultMessage:"{available} of {total} executions available"},{available:v,total:g})})]})]})}const _e={idle:"bg-slate-400 dark:bg-slate-500"},O="application/x-cli-viewer-tab";function Ue({tab:t,paneId:r,isActive:s,onSelect:d,onClose:o,onTogglePin:i}){const[u,m]=a.useState(!1),[j,p]=a.useState(!1),w=N(x=>x.moveTab),y=E(),h=a.useMemo(()=>t.title.split("-")[0]||t.title,[t.title]),g=a.useCallback(x=>{const C={tabId:t.id,sourcePaneId:r};x.dataTransfer.setData(O,JSON.stringify(C)),x.dataTransfer.effectAllowed="move",m(!0)},[t.id,r]),v=a.useCallback(()=>{m(!1)},[]),n=a.useCallback(x=>{x.dataTransfer.types.includes(O)&&(x.preventDefault(),x.dataTransfer.dropEffect="move",p(!0))},[]),l=a.useCallback(()=>{p(!1)},[]),f=a.useCallback(x=>{x.preventDefault(),p(!1);const C=x.dataTransfer.getData(O);if(C)try{const T=JSON.parse(C),{tabId:D,sourcePaneId:V}=T;if(D===t.id)return;const c=y[r];if(!c)return;const k=c.tabs.findIndex(P=>P.id===t.id);if(k===-1)return;w(V,D,r,k)}catch(T){console.error("[TabBar] Failed to parse drag data:",T)}},[t.id,r,y,w]);return e.jsxs("div",{role:"tab",tabIndex:0,draggable:!t.isPinned,onDragStart:g,onDragEnd:v,onDragOver:n,onDragLeave:l,onDrop:f,onClick:d,onKeyDown:x=>{(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),d())},className:b("group relative flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs","border border-border/50 shrink-0 min-w-0 max-w-[160px]","transition-all duration-150 select-none",s?"bg-slate-100 dark:bg-slate-800 border-slate-300 dark:border-slate-600 shadow-sm":"bg-muted/30 hover:bg-muted/50 border-border/30",t.isPinned&&"border-amber-500/50",u&&"opacity-50 cursor-grabbing",j&&"border-primary border-dashed bg-primary/10",!t.isPinned&&"cursor-grab"),title:t.title,children:[e.jsx("span",{className:b("w-1.5 h-1.5 rounded-full shrink-0",_e.idle)}),e.jsx("span",{className:"font-medium text-[11px] truncate",children:h}),t.isPinned&&e.jsx(B,{className:"h-2.5 w-2.5 text-amber-500 shrink-0"}),e.jsxs("div",{className:"flex items-center gap-0.5 ml-auto opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsx("button",{onClick:i,className:"p-0.5 rounded hover:bg-primary/10 transition-colors","aria-label":t.isPinned?"Unpin tab":"Pin tab",children:t.isPinned?e.jsx(Ie,{className:"h-2.5 w-2.5 text-amber-500"}):e.jsx(B,{className:"h-2.5 w-2.5 text-muted-foreground hover:text-amber-500"})}),!t.isPinned&&e.jsx("button",{onClick:o,className:"p-0.5 rounded hover:bg-rose-500/20 transition-colors","aria-label":"Close tab",children:e.jsx(ae,{className:"h-2.5 w-2.5 text-rose-600 dark:text-rose-400"})})]})]})}function Be({paneId:t,className:r}){const{formatMessage:s}=S(),[d,o]=a.useState(!1),u=E()[t],m=N(c=>c.setActiveTab),j=N(c=>c.removeTab),p=N(c=>c.togglePinTab),w=N(c=>c.addPane),y=N(c=>c.removePane),h=N(c=>c.moveTab),g=a.useCallback(c=>{m(t,c)},[t,m]),v=a.useCallback((c,k)=>{c.stopPropagation(),j(t,k)},[t,j]),n=a.useCallback((c,k)=>{c.stopPropagation(),p(k)},[p]),l=a.useCallback(()=>{w(t,"horizontal")},[t,w]),f=a.useCallback(()=>{w(t,"vertical")},[t,w]),x=a.useCallback(()=>{y(t)},[t,y]),C=a.useCallback(c=>{c.dataTransfer.types.includes(O)&&(c.preventDefault(),c.dataTransfer.dropEffect="move",o(!0))},[]),T=a.useCallback(c=>{c.currentTarget.contains(c.relatedTarget)||o(!1)},[]),D=a.useCallback(c=>{c.preventDefault(),o(!1);const k=c.dataTransfer.getData(O);if(k)try{const P=JSON.parse(k),{tabId:de,sourcePaneId:ue}=P,xe=(u==null?void 0:u.tabs.length)||0;h(ue,de,t,xe)}catch(P){console.error("[TabBar] Failed to parse drag data:",P)}},[t,u,h]),V=a.useMemo(()=>u?[...u.tabs].sort((c,k)=>c.isPinned!==k.isPinned?c.isPinned?-1:1:c.order-k.order):[],[u]);return u?e.jsxs("div",{className:b("flex items-center gap-1 px-2 py-1.5","bg-muted/30 border-b border-border/50","overflow-x-auto scrollbar-thin scrollbar-thumb-muted scrollbar-track-transparent",r),children:[e.jsx("div",{onDragOver:C,onDragLeave:T,onDrop:D,className:b("flex items-center gap-1 flex-1 min-w-0 overflow-x-auto",d&&"bg-primary/5 border border-primary border-dashed rounded"),children:V.length===0?e.jsx("span",{className:"text-xs text-muted-foreground px-2",children:s({id:"cliViewer.tabs.noTabs",defaultMessage:"No tabs open"})}):V.map(c=>e.jsx(Ue,{tab:c,paneId:t,isActive:u.activeTabId===c.id,onSelect:()=>g(c.id),onClose:k=>v(k,c.id),onTogglePin:k=>n(k,c.id)},c.id))}),e.jsx(Fe,{paneId:t}),e.jsxs(ee,{children:[e.jsx(te,{asChild:!0,children:e.jsx(G,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0","aria-label":"Pane actions",children:e.jsx(Le,{className:"h-4 w-4"})})}),e.jsxs(se,{align:"end",className:"w-48",children:[e.jsxs(A,{onClick:l,children:[e.jsx(Me,{className:"h-4 w-4 mr-2"}),s({id:"cliViewer.paneActions.splitHorizontal",defaultMessage:"Split Horizontal"})]}),e.jsxs(A,{onClick:f,children:[e.jsx(Se,{className:"h-4 w-4 mr-2"}),s({id:"cliViewer.paneActions.splitVertical",defaultMessage:"Split Vertical"})]}),e.jsx(re,{}),e.jsxs(A,{onClick:x,className:"text-rose-600 dark:text-rose-400",children:[e.jsx(ae,{className:"h-4 w-4 mr-2"}),s({id:"cliViewer.paneActions.closePane",defaultMessage:"Close Pane"})]})]})]})]}):null}function qe(){const{formatMessage:t}=S();return e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center text-muted-foreground gap-4",children:[e.jsx(M,{className:"h-12 w-12 opacity-30"}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-sm font-medium",children:t({id:"cliViewer.noActiveTab",defaultMessage:"No active tab"})}),e.jsx("p",{className:"text-xs mt-1",children:t({id:"cliViewer.selectOrCreate",defaultMessage:"Select a tab or start a new CLI execution"})})]})]})}function He({executionId:t}){const{formatMessage:r}=S();return e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center text-muted-foreground gap-4",children:[e.jsx(M,{className:"h-12 w-12 opacity-30"}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-sm font-medium",children:r({id:"cliViewer.executionNotFound",defaultMessage:"Execution not found"})}),e.jsx("p",{className:"text-xs mt-1 font-mono opacity-50",children:t})]})]})}function Ge(){const{formatMessage:t}=S();return e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center text-muted-foreground gap-4",children:[e.jsx(R,{className:"h-8 w-8 animate-spin opacity-50"}),e.jsx("div",{className:"text-center",children:e.jsx("p",{className:"text-sm",children:t({id:"cliViewer.syncingExecution",defaultMessage:"Syncing execution data..."})})})]})}function Je({line:t}){const r={stdout:"text-foreground",stderr:"text-rose-600 dark:text-rose-400 bg-rose-500/5",thought:"text-blue-600 dark:text-blue-400 italic bg-blue-500/5",system:"text-amber-600 dark:text-amber-400 bg-amber-500/5",metadata:"text-muted-foreground text-xs",tool_call:"text-emerald-600 dark:text-emerald-400 bg-emerald-500/5 font-mono"};return e.jsx("div",{className:b("px-3 py-1 text-sm","border-l-2 border-transparent",r[t.type]||"text-foreground",t.type==="stderr"&&"border-l-rose-500",t.type==="thought"&&"border-l-blue-500",t.type==="system"&&"border-l-amber-500",t.type==="tool_call"&&"border-l-emerald-500"),children:t.type==="thought"||t.type==="tool_call"?e.jsx(Ve,{content:t.content,format:"markdown"}):e.jsx("pre",{className:"whitespace-pre-wrap break-words font-mono text-xs",children:t.content})})}function Ke({execution:t,executionId:r}){const{formatMessage:s}=S();return!t.output||t.output.length===0?e.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center text-muted-foreground gap-4",children:[e.jsx(M,{className:"h-12 w-12 opacity-30"}),e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-sm",children:t.status==="running"?s({id:"cliViewer.waitingForOutput",defaultMessage:"Waiting for output..."}):s({id:"cliViewer.noOutput",defaultMessage:"No output"})}),t.status==="running"&&e.jsx(R,{className:"h-4 w-4 animate-spin mt-2 mx-auto opacity-50"})]})]}):e.jsx(ge,{autoScroll:t.status==="running",showScrollButton:!0,children:e.jsx("div",{className:"py-2",children:t.output.map((d,o)=>e.jsx(Je,{line:d},`${r}-line-${o}`))})})}function Qe({paneId:t,className:r}){const s=N(m=>fe(m,t)),d=L(m=>m.executions),{isLoading:o}=ne(!0),i=a.useMemo(()=>s!=null&&s.executionId&&d[s.executionId]||null,[s==null?void 0:s.executionId,d]),u=a.useMemo(()=>s?!i&&o?e.jsx(Ge,{}):i?e.jsx(Ke,{execution:i,executionId:s.executionId}):e.jsx(He,{executionId:s.executionId}):e.jsx(qe,{}),[s,i,o]);return e.jsx("div",{className:b("flex-1 min-h-0 flex flex-col overflow-hidden","bg-background",r),children:u})}function ie({paneId:t,className:r}){const d=E()[t],o=F(),i=N(j=>j.setFocusedPane),u=o===t,m=a.useCallback(()=>{u||i(t)},[u,t,i]);return d?e.jsxs("div",{className:b("h-full flex flex-col","bg-card dark:bg-surface-900","border border-border/50","rounded-sm overflow-hidden",u&&"ring-1 ring-primary/50",r),onClick:m,role:"region","aria-label":`CLI Viewer Pane ${t}`,children:[e.jsx(Be,{paneId:t}),e.jsx(Qe,{paneId:t})]}):e.jsx("div",{className:b("h-full flex items-center justify-center",r),children:e.jsx("span",{className:"text-muted-foreground text-sm",children:"Pane not found"})})}function $({className:t}){const{formatMessage:r}=S();return e.jsx("div",{className:b("h-full flex flex-col items-center justify-center","bg-card dark:bg-surface-900","text-muted-foreground",t),children:e.jsxs("div",{className:"flex flex-col items-center gap-6 max-w-md text-center p-8",children:[e.jsxs("div",{className:"relative",children:[e.jsx(M,{className:"h-16 w-16 opacity-20"}),e.jsx("div",{className:"absolute -bottom-1 -right-1 bg-primary/10 rounded-full p-1.5",children:e.jsx(pe,{className:"h-4 w-4 text-primary"})})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold text-foreground mb-2",children:r({id:"cliViewer.emptyState.title",defaultMessage:"CLI Viewer"})}),e.jsx("p",{className:"text-sm",children:r({id:"cliViewer.emptyState.description",defaultMessage:"Start a CLI execution to see the output here."})})]}),e.jsxs("div",{className:"flex flex-col gap-3 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ae,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{children:r({id:"cliViewer.emptyState.hint1",defaultMessage:'Use "ccw cli" command to start an execution'})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(M,{className:"h-4 w-4 shrink-0"}),e.jsx("span",{children:r({id:"cliViewer.emptyState.hint2",defaultMessage:"Active executions will appear as tabs"})})]})]})]})})}function I(t){return typeof t=="string"}function le({group:t,minSize:r,onSizeChange:s}){const d=E(),o=a.useMemo(()=>t.children.filter(i=>I(i)?d[i]!==void 0:!0),[t.children,d]);return o.length===0?e.jsx($,{}):e.jsx(U,{vertical:t.direction==="vertical",defaultSizes:t.sizes,onChange:s,className:"h-full",children:o.map((i,u)=>e.jsx(U.Pane,{minSize:r,children:I(i)?e.jsx(ie,{paneId:i}):e.jsx(le,{group:i,minSize:r,onSizeChange:s})},I(i)?i:`group-${u}`))})}function Ye({className:t}){const r=_(),s=E(),d=a.useRef(!1),o=a.useRef(r.sizes);a.useEffect(()=>{d.current||(o.current=r.sizes)},[r.sizes]);const i=a.useCallback(m=>{o.current&&m.length===o.current.length&&m.every((j,p)=>Math.abs(j-o.current[p])<.1)||(d.current=!0,o.current=m,N.getState().setLayout(j=>({...j,sizes:m})),queueMicrotask(()=>{d.current=!1}))},[]),u=a.useMemo(()=>{if(!r.children||r.children.length===0)return e.jsx($,{});if(r.children.length===1&&I(r.children[0])){const m=r.children[0];return s[m]?e.jsx(ie,{paneId:m}):e.jsx($,{})}return e.jsx(le,{group:r,minSize:200,onSizeChange:i})},[r,s,i]);return e.jsx("div",{className:b("h-full w-full overflow-hidden","bg-background",t),children:u})}const We=[{id:"single",icon:we,labelId:"cliViewer.layout.single"},{id:"split-h",icon:Te,labelId:"cliViewer.layout.splitH"},{id:"split-v",icon:De,labelId:"cliViewer.layout.splitV"},{id:"grid-2x2",icon:Ee,labelId:"cliViewer.layout.grid"}],Xe="split-h",ce={running:{color:"bg-blue-500 animate-pulse"},completed:{color:"bg-green-500"},error:{color:"bg-red-500"}};function Ze(t){const r=t.children.length;if(r===0||r===1)return"single";if(r===2){if(!t.children.some(o=>typeof o!="string"))return t.direction==="horizontal"?"split-h":"split-v";if(t.children.every(o=>typeof o!="string"))return"grid-2x2"}return t.direction==="horizontal"?"split-h":"split-v"}function et(t){const s=Date.now()-t;return s<6e4?"Just now":s<36e5?`${Math.floor(s/6e4)}m ago`:s<864e5?`${Math.floor(s/36e5)}h ago`:new Date(t).toLocaleDateString()}function tt({isFullscreen:t,onToggleFullscreen:r}){const{formatMessage:s}=S(),d=be(),o=_(),i=F(),{initializeDefaultLayout:u,reset:m,addTab:j}=N(),p=L(l=>l.executions),w=a.useMemo(()=>Ze(o),[o]),y=a.useMemo(()=>Object.keys(p).length,[p]),h=a.useMemo(()=>Object.values(p).filter(l=>l.status==="running").length,[p]),g=a.useCallback(()=>{d(-1)},[d]),v=a.useCallback(l=>{u(l)},[u]),n=a.useCallback(()=>{m(),u(Xe)},[m,u]);return e.jsxs("div",{className:"flex items-center gap-1 px-2 h-[40px] border-b border-border bg-muted/30 shrink-0",children:[e.jsx("button",{onClick:g,className:b("p-1.5 rounded transition-colors","text-muted-foreground hover:text-foreground hover:bg-muted"),title:s({id:"cliViewer.toolbar.back",defaultMessage:"Back"}),children:e.jsx(je,{className:"w-3.5 h-3.5"})}),e.jsx("div",{className:"w-px h-5 bg-border mx-1"}),We.map(l=>{const f=w===l.id;return e.jsx("button",{onClick:()=>v(l.id),className:b("p-1.5 rounded transition-colors",f?"bg-primary/10 text-primary":"text-muted-foreground hover:text-foreground hover:bg-muted"),title:s({id:l.labelId}),children:e.jsx(l.icon,{className:"w-3.5 h-3.5"})},l.id)}),e.jsx("div",{className:"w-px h-5 bg-border mx-1"}),e.jsx(st,{focusedPaneId:i}),e.jsx("div",{className:"w-px h-5 bg-border mx-1"}),e.jsx("button",{onClick:n,className:b("p-1.5 rounded transition-colors","text-muted-foreground hover:text-foreground hover:bg-muted"),title:s({id:"cliViewer.toolbar.clearAll"}),children:e.jsx(ve,{className:"w-3.5 h-3.5"})}),e.jsxs("div",{className:"flex items-center gap-1 ml-auto",children:[e.jsxs(ee,{children:[e.jsx(te,{asChild:!0,children:e.jsxs("button",{className:b("flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs transition-colors","text-muted-foreground hover:text-foreground hover:bg-muted"),children:[e.jsx(M,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:h>0?`${h} ${s({id:"cliViewer.toolbar.running",defaultMessage:"running"})}`:`${y} ${s({id:"cliViewer.toolbar.executions",defaultMessage:"executions"})}`}),h>0&&e.jsx("span",{className:"w-2 h-2 rounded-full bg-green-500 animate-pulse"}),e.jsx(Ne,{className:"w-3 h-3"})]})}),e.jsxs(se,{align:"end",sideOffset:4,children:[e.jsx(ye,{children:s({id:"cliViewer.toolbar.executionsList",defaultMessage:"Recent Executions"})}),e.jsx(re,{}),Object.entries(p).length===0?e.jsx("div",{className:"px-2 py-4 text-center text-xs text-muted-foreground",children:s({id:"cliViewer.picker.noExecutions",defaultMessage:"No executions available"})}):Object.entries(p).sort((l,f)=>f[1].startTime-l[1].startTime).slice(0,10).map(([l,f])=>e.jsxs(A,{className:"flex items-center gap-2 text-xs",onClick:()=>{if(i){const x=`${f.tool}-${f.mode}`;j(i,l,x)}},children:[e.jsx("span",{className:b("w-2 h-2 rounded-full shrink-0",ce[f.status].color)}),e.jsx("span",{className:"truncate flex-1",children:f.tool}),e.jsx("span",{className:"text-muted-foreground",children:f.mode})]},l))]})]}),e.jsx("div",{className:"w-px h-5 bg-border mx-1"}),e.jsx("button",{onClick:r,className:b("p-1.5 rounded transition-colors",t?"bg-primary/10 text-primary":"text-muted-foreground hover:text-foreground hover:bg-muted"),title:s(t?{id:"cliViewer.toolbar.exitFullscreen",defaultMessage:"Exit Fullscreen"}:{id:"cliViewer.toolbar.fullscreen",defaultMessage:"Fullscreen"}),children:t?e.jsx(Pe,{className:"w-3.5 h-3.5"}):e.jsx(Oe,{className:"w-3.5 h-3.5"})}),e.jsx("span",{className:"text-xs text-muted-foreground font-medium ml-2",children:s({id:"cliViewer.page.title"})})]})]})}function st({focusedPaneId:t}){const{formatMessage:r}=S(),[s,d]=a.useState(!1),[o,i]=a.useState(""),u=L(h=>h.executions),m=N(h=>h.panes),j=N(h=>h.addTab),p=a.useMemo(()=>{if(!t)return new Set;const h=m[t];return h?new Set(h.tabs.map(g=>g.executionId)):new Set},[m,t]),w=a.useMemo(()=>{const g=Object.entries(u).filter(([v,n])=>{if(!o)return!0;const l=o.toLowerCase();return v.toLowerCase().includes(l)||n.tool.toLowerCase().includes(l)||n.mode.toLowerCase().includes(l)});return g.sort((v,n)=>n[1].startTime-v[1].startTime),g},[u,o]),y=a.useCallback((h,g,v)=>{t&&(j(t,h,`${g}-${v}`),d(!1),i(""))},[t,j]);return t?e.jsxs(q,{open:s,onOpenChange:d,children:[e.jsx(H,{asChild:!0,children:e.jsxs("button",{className:b("flex items-center gap-1.5 px-2.5 py-1.5 rounded-md text-xs transition-colors","text-muted-foreground hover:text-foreground hover:bg-muted"),children:[e.jsx(J,{className:"w-3.5 h-3.5"}),e.jsx("span",{children:r({id:"cliViewer.toolbar.addExecution",defaultMessage:"Add"})})]})}),e.jsxs(K,{className:"sm:max-w-md",children:[e.jsx(Q,{children:e.jsx(Y,{children:r({id:"cliViewer.picker.selectExecution",defaultMessage:"Select Execution"})})}),e.jsxs("div",{className:"relative",children:[e.jsx(W,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(X,{placeholder:r({id:"cliViewer.picker.searchExecutions",defaultMessage:"Search executions..."}),value:o,onChange:h=>i(h.target.value),className:"pl-9"})]}),e.jsx("div",{className:"max-h-[300px] overflow-y-auto space-y-2",children:w.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(M,{className:"h-8 w-8 text-muted-foreground mb-2"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:Object.keys(u).length===0?r({id:"cliViewer.picker.noExecutions",defaultMessage:"No executions available"}):r({id:"cliViewer.picker.noMatchingExecutions",defaultMessage:"No matching executions"})})]}):w.map(([h,g])=>{const v=p.has(h);return e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>y(h,g.tool,g.mode),disabled:v,className:b("w-full flex items-center gap-3 p-3 rounded-lg","border border-border/50 bg-muted/30","hover:bg-muted/50 hover:border-border","transition-all duration-150","text-left",v&&"opacity-50 cursor-not-allowed"),children:[e.jsx("div",{className:"flex items-center justify-center w-8 h-8 rounded-md bg-primary/10",children:e.jsx(M,{className:"h-4 w-4 text-primary"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("span",{className:"font-medium text-sm text-foreground truncate",children:[g.tool,"-",g.mode]}),e.jsx("span",{className:b("w-2 h-2 rounded-full shrink-0",ce[g.status].color)})]}),e.jsx("span",{className:"text-xs text-muted-foreground truncate",children:h})]}),e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground shrink-0",children:[e.jsx(Z,{className:"h-3 w-3"}),e.jsx("span",{children:et(g.startTime)})]})]}),v&&e.jsx("div",{className:"absolute inset-0 bg-background/60 rounded-lg flex items-center justify-center",children:e.jsx("span",{className:"text-xs text-muted-foreground bg-muted px-2 py-1 rounded",children:r({id:"cliViewer.picker.alreadyOpen",defaultMessage:"Already open"})})})]},h)})})]})]}):null}function rt(t,r){const s=new Set(Object.keys(r));return Object.entries(t).flatMap(([d,o])=>o.tabs.filter(i=>!s.has(i.executionId)).map(i=>({paneId:d,tabId:i.id,executionId:i.executionId})))}const at="split-h";function nt(t){let r=0;const s=d=>{for(const o of d)typeof o=="string"?r++:s(o.children)};return s(t.children),r}function mt(){const[t,r]=ke(),[s,d]=a.useState(!1),o=_(),i=E(),u=F(),{initializeDefaultLayout:m,addTab:j,removeTab:p}=N(),w=L(n=>n.executions),{isLoading:y,isFetching:h}=ne(!0);Ce();const g=a.useRef(new Set);a.useEffect(()=>{Object.values(i).flatMap(l=>l.tabs.map(f=>f.executionId)).forEach(l=>g.current.add(l))},[]),a.useEffect(()=>{const n=Object.keys(i);if(n.length===0)return;const l=N.getState().addTab,f=Object.keys(w).filter(x=>!g.current.has(x));f.length!==0&&f.forEach((x,C)=>{g.current.add(x);const T=w[x],D=T.tool.split("-")[0],V=n[C%n.length];l(V,x,`${D} (${T.mode})`)})},[w,i]),a.useEffect(()=>{if(y||h)return;const n=rt(i,w);n.length!==0&&n.forEach(({paneId:l,tabId:f,executionId:x})=>{g.current.delete(x),p(l,f)})},[w,h,y,i,p]),a.useEffect(()=>{nt(o)===0&&m(at)},[o,m]),a.useEffect(()=>{const n=t.get("executionId");n&&u&&(j(u,n,`Execution ${n.slice(0,8)}`),r(l=>{const f=new URLSearchParams(l);return f.delete("executionId"),f}))},[t,u,j,r]);const v=()=>{d(n=>!n)};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx(tt,{isFullscreen:s,onToggleFullscreen:v}),e.jsx("div",{className:"flex-1 min-h-0 bg-background",children:e.jsx(Ye,{})})]})}export{mt as CliViewerPage,mt as default};
22
- //# sourceMappingURL=CliViewerPage-BS4zrFVp.js.map
22
+ //# sourceMappingURL=CliViewerPage-9YxGyLxh.js.map