@hienlh/ppm 0.23.8 → 0.23.9

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 (314) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/{accounts-settings-section-BNcPvEq1.js → accounts-settings-section-hxemqOZw.js} +1 -1
  6. package/dist/web/assets/accounts-settings-section-hxemqOZw.js.br +0 -0
  7. package/dist/web/assets/accounts-settings-section-hxemqOZw.js.gz +0 -0
  8. package/dist/web/assets/{ai-resource-editor-DfVRMUHS.js → ai-resource-editor-uI76obDR.js} +1 -1
  9. package/dist/web/assets/ai-resource-editor-uI76obDR.js.br +0 -0
  10. package/dist/web/assets/ai-resource-editor-uI76obDR.js.gz +0 -0
  11. package/dist/web/assets/{ai-settings-section-Ezhw4Fef.js → ai-settings-section-Bmy9p9l-.js} +1 -1
  12. package/dist/web/assets/ai-settings-section-Bmy9p9l-.js.br +0 -0
  13. package/dist/web/assets/ai-settings-section-Bmy9p9l-.js.gz +0 -0
  14. package/dist/web/assets/{ai-settings-section-B_0-P8jx.js → ai-settings-section-CF39jnOD.js} +1 -1
  15. package/dist/web/assets/{appearance-settings-section-CPOAp0fY.js → appearance-settings-section-BCJK8_N6.js} +1 -1
  16. package/dist/web/assets/appearance-settings-section-BCJK8_N6.js.br +0 -0
  17. package/dist/web/assets/appearance-settings-section-BCJK8_N6.js.gz +0 -0
  18. package/dist/web/assets/{apps-panel-Cz7_o-M4.js → apps-panel-Dcu2wMIn.js} +1 -1
  19. package/dist/web/assets/apps-panel-Dcu2wMIn.js.br +0 -0
  20. package/dist/web/assets/apps-panel-Dcu2wMIn.js.gz +0 -0
  21. package/dist/web/assets/{branch-review-tab-BPx3kHrM.js → branch-review-tab-DEkdGqaE.js} +1 -1
  22. package/dist/web/assets/branch-review-tab-DEkdGqaE.js.br +0 -0
  23. package/dist/web/assets/branch-review-tab-DEkdGqaE.js.gz +0 -0
  24. package/dist/web/assets/{chat-tab-BadDM_j8.js → chat-tab-BVyBR3yR.js} +1 -1
  25. package/dist/web/assets/chat-tab-BVyBR3yR.js.br +5 -0
  26. package/dist/web/assets/chat-tab-BVyBR3yR.js.gz +0 -0
  27. package/dist/web/assets/{chat-tab-IqAY4c7p.js → chat-tab-Dj8kFoUi.js} +3 -3
  28. package/dist/web/assets/chat-tab-Dj8kFoUi.js.br +0 -0
  29. package/dist/web/assets/chat-tab-Dj8kFoUi.js.gz +0 -0
  30. package/dist/web/assets/{code-editor-Dmitw9QS.js → code-editor-BKpaBc8f.js} +3 -3
  31. package/dist/web/assets/code-editor-BKpaBc8f.js.br +0 -0
  32. package/dist/web/assets/code-editor-BKpaBc8f.js.gz +0 -0
  33. package/dist/web/assets/{codex-reset-credit-button-D2hal4bG.js → codex-reset-credit-button-Xt1ttURe.js} +1 -1
  34. package/dist/web/assets/codex-reset-credit-button-Xt1ttURe.js.br +0 -0
  35. package/dist/web/assets/codex-reset-credit-button-Xt1ttURe.js.gz +0 -0
  36. package/dist/web/assets/{conflict-editor-Cj_gUncw.js → conflict-editor-C9TZTGN2.js} +1 -1
  37. package/dist/web/assets/conflict-editor-C9TZTGN2.js.br +0 -0
  38. package/dist/web/assets/conflict-editor-C9TZTGN2.js.gz +0 -0
  39. package/dist/web/assets/{csv-preview-Be3ODNj0.js → csv-preview-BfX8PrGn.js} +1 -1
  40. package/dist/web/assets/csv-preview-BfX8PrGn.js.br +0 -0
  41. package/dist/web/assets/csv-preview-BfX8PrGn.js.gz +0 -0
  42. package/dist/web/assets/{database-viewer-B1b--4y8.js → database-viewer-DVHa4Mw7.js} +1 -1
  43. package/dist/web/assets/database-viewer-DVHa4Mw7.js.br +0 -0
  44. package/dist/web/assets/database-viewer-DVHa4Mw7.js.gz +0 -0
  45. package/dist/web/assets/{design-tab-8wi0IHss.js → design-tab-Dc8RIIMj.js} +1 -1
  46. package/dist/web/assets/design-tab-Dc8RIIMj.js.br +0 -0
  47. package/dist/web/assets/design-tab-Dc8RIIMj.js.gz +0 -0
  48. package/dist/web/assets/{designs-sidebar-panel-D5-1Q8zQ.js → designs-sidebar-panel-BDEgeNCO.js} +1 -1
  49. package/dist/web/assets/designs-sidebar-panel-BDEgeNCO.js.br +0 -0
  50. package/dist/web/assets/designs-sidebar-panel-BDEgeNCO.js.gz +0 -0
  51. package/dist/web/assets/{diff-viewer-Dcxk6UTG.js → diff-viewer-DYAwueSh.js} +1 -1
  52. package/dist/web/assets/diff-viewer-DYAwueSh.js.br +0 -0
  53. package/dist/web/assets/diff-viewer-DYAwueSh.js.gz +0 -0
  54. package/dist/web/assets/{editor-language-service-BVJQnTSV.js → editor-language-service-DufWCv_b.js} +1 -1
  55. package/dist/web/assets/editor-language-service-DufWCv_b.js.br +0 -0
  56. package/dist/web/assets/editor-language-service-DufWCv_b.js.gz +0 -0
  57. package/dist/web/assets/{explorer-body-CTkrlrI3.js → explorer-body-DW838S7p.js} +1 -1
  58. package/dist/web/assets/explorer-body-DW838S7p.js.br +0 -0
  59. package/dist/web/assets/explorer-body-DW838S7p.js.gz +0 -0
  60. package/dist/web/assets/{explorer-window-content-DH5AD3Ng.js → explorer-window-content-Cw4njYF9.js} +1 -1
  61. package/dist/web/assets/explorer-window-content-Cw4njYF9.js.br +0 -0
  62. package/dist/web/assets/explorer-window-content-Cw4njYF9.js.gz +0 -0
  63. package/dist/web/assets/{extension-manager-section-BJr6ccWw.js → extension-manager-section-CsudP-cF.js} +1 -1
  64. package/dist/web/assets/extension-manager-section-CsudP-cF.js.br +0 -0
  65. package/dist/web/assets/extension-manager-section-CsudP-cF.js.gz +0 -0
  66. package/dist/web/assets/{extension-webview-CYNXHd8D.js → extension-webview-BoeNtrL9.js} +1 -1
  67. package/dist/web/assets/extension-webview-BoeNtrL9.js.br +0 -0
  68. package/dist/web/assets/extension-webview-BoeNtrL9.js.gz +0 -0
  69. package/dist/web/assets/{files-settings-section-JX7o4lex.js → files-settings-section-C998uv6a.js} +1 -1
  70. package/dist/web/assets/files-settings-section-C998uv6a.js.br +0 -0
  71. package/dist/web/assets/files-settings-section-C998uv6a.js.gz +0 -0
  72. package/dist/web/assets/{general-settings-section-kF94Mz5q.js → general-settings-section-Dm0NPoo2.js} +1 -1
  73. package/dist/web/assets/general-settings-section-Dm0NPoo2.js.br +0 -0
  74. package/dist/web/assets/general-settings-section-Dm0NPoo2.js.gz +0 -0
  75. package/dist/web/assets/{git-log-panel-Crlp9ofM.js → git-log-panel-ZMLU_QWd.js} +1 -1
  76. package/dist/web/assets/git-log-panel-ZMLU_QWd.js.br +0 -0
  77. package/dist/web/assets/git-log-panel-ZMLU_QWd.js.gz +0 -0
  78. package/dist/web/assets/{glide-data-grid-O6MO5dKU.js → glide-data-grid-BuVHCdOY.js} +1 -1
  79. package/dist/web/assets/glide-data-grid-BuVHCdOY.js.br +0 -0
  80. package/dist/web/assets/glide-data-grid-BuVHCdOY.js.gz +0 -0
  81. package/dist/web/assets/{group-chat-tab-DGLSGf37.js → group-chat-tab-B2wk54Kb.js} +1 -1
  82. package/dist/web/assets/group-chat-tab-B2wk54Kb.js.br +0 -0
  83. package/dist/web/assets/group-chat-tab-B2wk54Kb.js.gz +0 -0
  84. package/dist/web/assets/{index-DQCw6d-2.js → index-D41mthBS.js} +5 -5
  85. package/dist/web/assets/index-D41mthBS.js.br +0 -0
  86. package/dist/web/assets/index-D41mthBS.js.gz +0 -0
  87. package/dist/web/assets/{jira-watcher-section-DwM7gqHT.js → jira-watcher-section-C1vWzVZJ.js} +1 -1
  88. package/dist/web/assets/{keybindings-store-CJtEHFIQ.js → keybindings-store-XUcWE5_j.js} +1 -1
  89. package/dist/web/assets/{keyboard-shortcuts-section-CewWGwiF.js → keyboard-shortcuts-section-CDYzFVbt.js} +1 -1
  90. package/dist/web/assets/keyboard-shortcuts-section-CDYzFVbt.js.br +0 -0
  91. package/dist/web/assets/keyboard-shortcuts-section-CDYzFVbt.js.gz +0 -0
  92. package/dist/web/assets/{language-servers-section-nricdxke.js → language-servers-section-DQH0qqem.js} +2 -2
  93. package/dist/web/assets/language-servers-section-DQH0qqem.js.br +0 -0
  94. package/dist/web/assets/language-servers-section-DQH0qqem.js.gz +0 -0
  95. package/dist/web/assets/{lsp-client-DRMEWb-z.js → lsp-client-Ce_E8lQ7.js} +1 -1
  96. package/dist/web/assets/lsp-client-Ce_E8lQ7.js.br +0 -0
  97. package/dist/web/assets/lsp-client-Ce_E8lQ7.js.gz +0 -0
  98. package/dist/web/assets/{markdown-renderer-Dab9Us6u.js → markdown-renderer-C9inQ_Z3.js} +1 -1
  99. package/dist/web/assets/markdown-renderer-C9inQ_Z3.js.br +0 -0
  100. package/dist/web/assets/markdown-renderer-C9inQ_Z3.js.gz +0 -0
  101. package/dist/web/assets/{markdown-renderer-D5-xliE9.js → markdown-renderer-CS193h6D.js} +1 -1
  102. package/dist/web/assets/{mobile-explorer-sheet-DtgdpvJ9.js → mobile-explorer-sheet-Dp5-b059.js} +1 -1
  103. package/dist/web/assets/mobile-explorer-sheet-Dp5-b059.js.br +0 -0
  104. package/dist/web/assets/mobile-explorer-sheet-Dp5-b059.js.gz +0 -0
  105. package/dist/web/assets/{new-design-dialog-Dd5KDB_p.js → new-design-dialog-Bw3xciYg.js} +1 -1
  106. package/dist/web/assets/new-design-dialog-Bw3xciYg.js.br +0 -0
  107. package/dist/web/assets/new-design-dialog-Bw3xciYg.js.gz +0 -0
  108. package/dist/web/assets/{notification-store-D2vTyp_Q.js → notification-store-3PN0fYtT.js} +1 -1
  109. package/dist/web/assets/{performance-panel-LMGefOQ2.js → performance-panel-Bl3RwJGZ.js} +1 -1
  110. package/dist/web/assets/performance-panel-Bl3RwJGZ.js.br +0 -0
  111. package/dist/web/assets/performance-panel-Bl3RwJGZ.js.gz +0 -0
  112. package/dist/web/assets/{ppmbot-settings-section-D67u6gPi.js → ppmbot-settings-section-BtKmsfqX.js} +1 -1
  113. package/dist/web/assets/ppmbot-settings-section-BtKmsfqX.js.br +0 -0
  114. package/dist/web/assets/ppmbot-settings-section-BtKmsfqX.js.gz +0 -0
  115. package/dist/web/assets/{problems-panel-DKgIw4uZ.js → problems-panel-dzNhRTnM.js} +1 -1
  116. package/dist/web/assets/problems-panel-dzNhRTnM.js.br +0 -0
  117. package/dist/web/assets/problems-panel-dzNhRTnM.js.gz +0 -0
  118. package/dist/web/assets/{process-table-BIAgC_jG.js → process-table-B9rXN1NM.js} +1 -1
  119. package/dist/web/assets/process-table-B9rXN1NM.js.br +0 -0
  120. package/dist/web/assets/process-table-B9rXN1NM.js.gz +0 -0
  121. package/dist/web/assets/{proxy-settings-section-CFiYcTBA.js → proxy-settings-section-BAFgwYyD.js} +1 -1
  122. package/dist/web/assets/proxy-settings-section-BAFgwYyD.js.br +0 -0
  123. package/dist/web/assets/proxy-settings-section-BAFgwYyD.js.gz +0 -0
  124. package/dist/web/assets/{remote-desktop-clipboard-notice-Bs3fZSRw.js → remote-desktop-clipboard-notice-C6tt5SDH.js} +1 -1
  125. package/dist/web/assets/remote-desktop-clipboard-notice-C6tt5SDH.js.br +0 -0
  126. package/dist/web/assets/remote-desktop-clipboard-notice-C6tt5SDH.js.gz +0 -0
  127. package/dist/web/assets/{remote-desktop-mobile-sheet-DgxTdWMh.js → remote-desktop-mobile-sheet-C6gFMzXV.js} +2 -2
  128. package/dist/web/assets/remote-desktop-mobile-sheet-C6gFMzXV.js.br +0 -0
  129. package/dist/web/assets/remote-desktop-mobile-sheet-C6gFMzXV.js.gz +0 -0
  130. package/dist/web/assets/{remote-desktop-mobile-view-DgGOfPVY.js → remote-desktop-mobile-view-kD5Q339l.js} +1 -1
  131. package/dist/web/assets/remote-desktop-mobile-view-kD5Q339l.js.br +0 -0
  132. package/dist/web/assets/remote-desktop-mobile-view-kD5Q339l.js.gz +0 -0
  133. package/dist/web/assets/{remote-desktop-readiness-gate-DOWryrQx.js → remote-desktop-readiness-gate-CqnG8BlK.js} +1 -1
  134. package/dist/web/assets/remote-desktop-readiness-gate-CqnG8BlK.js.br +0 -0
  135. package/dist/web/assets/remote-desktop-readiness-gate-CqnG8BlK.js.gz +0 -0
  136. package/dist/web/assets/{remote-desktop-window-content-7t0wQsHx.js → remote-desktop-window-content-BjZdvaQX.js} +1 -1
  137. package/dist/web/assets/remote-desktop-window-content-BjZdvaQX.js.br +0 -0
  138. package/dist/web/assets/remote-desktop-window-content-BjZdvaQX.js.gz +0 -0
  139. package/dist/web/assets/{schedules-settings-section-DGhG-b5O.js → schedules-settings-section-BrsGPl6j.js} +1 -1
  140. package/dist/web/assets/schedules-settings-section-BrsGPl6j.js.br +0 -0
  141. package/dist/web/assets/schedules-settings-section-BrsGPl6j.js.gz +0 -0
  142. package/dist/web/assets/{services-panel-0klE3O4g.js → services-panel-mDvWNRkg.js} +1 -1
  143. package/dist/web/assets/services-panel-mDvWNRkg.js.br +0 -0
  144. package/dist/web/assets/services-panel-mDvWNRkg.js.gz +0 -0
  145. package/dist/web/assets/{settings-body-CfqpqFfq.js → settings-body-DJKHimA7.js} +2 -2
  146. package/dist/web/assets/settings-body-DJKHimA7.js.br +0 -0
  147. package/dist/web/assets/settings-body-DJKHimA7.js.gz +0 -0
  148. package/dist/web/assets/{settings-tab-CHweH5Nh.js → settings-tab-DyLehsVr.js} +1 -1
  149. package/dist/web/assets/{settings-window-content-C6Od3qV7.js → settings-window-content-BMbDb3BQ.js} +1 -1
  150. package/dist/web/assets/{sql-query-editor-ALQ5_X0j.js → sql-query-editor-Ci0vTqmC.js} +1 -1
  151. package/dist/web/assets/sql-query-editor-Ci0vTqmC.js.br +0 -0
  152. package/dist/web/assets/sql-query-editor-Ci0vTqmC.js.gz +0 -0
  153. package/dist/web/assets/{sqlite-viewer-DKTty_jR.js → sqlite-viewer-kOyrMUsW.js} +1 -1
  154. package/dist/web/assets/sqlite-viewer-kOyrMUsW.js.br +0 -0
  155. package/dist/web/assets/sqlite-viewer-kOyrMUsW.js.gz +0 -0
  156. package/dist/web/assets/{system-monitor-body-D6J6lq7-.js → system-monitor-body-D1lzquYw.js} +2 -2
  157. package/dist/web/assets/system-monitor-body-D1lzquYw.js.br +0 -0
  158. package/dist/web/assets/system-monitor-body-D1lzquYw.js.gz +0 -0
  159. package/dist/web/assets/{system-monitor-tab-Di18zNNS.js → system-monitor-tab-anJ6hmrA.js} +1 -1
  160. package/dist/web/assets/{system-monitor-window-content-D1t30f32.js → system-monitor-window-content-BcV01XgX.js} +1 -1
  161. package/dist/web/assets/{tab-host-window-content-DTcx2D0O.js → tab-host-window-content-4kbVMd0b.js} +1 -1
  162. package/dist/web/assets/tab-host-window-content-4kbVMd0b.js.br +0 -0
  163. package/dist/web/assets/tab-host-window-content-4kbVMd0b.js.gz +0 -0
  164. package/dist/web/assets/{team-member-sheet-CFSbPG6n.js → team-member-sheet-K3MMar1L.js} +2 -2
  165. package/dist/web/assets/team-member-sheet-K3MMar1L.js.br +0 -0
  166. package/dist/web/assets/team-member-sheet-K3MMar1L.js.gz +0 -0
  167. package/dist/web/assets/{team-member-window-content-VeI6DGeM.js → team-member-window-content-DidC04eW.js} +1 -1
  168. package/dist/web/assets/team-member-window-content-DidC04eW.js.br +0 -0
  169. package/dist/web/assets/team-member-window-content-DidC04eW.js.gz +0 -0
  170. package/dist/web/assets/{terminal-tab-DgTfQKBI.js → terminal-tab-BlYiIu9A.js} +1 -1
  171. package/dist/web/assets/terminal-tab-BlYiIu9A.js.br +0 -0
  172. package/dist/web/assets/terminal-tab-BlYiIu9A.js.gz +0 -0
  173. package/dist/web/assets/{tool-cards-_fpYI1hB.js → tool-cards-BoW8_vQb.js} +2 -2
  174. package/dist/web/assets/tool-cards-BoW8_vQb.js.br +0 -0
  175. package/dist/web/assets/tool-cards-BoW8_vQb.js.gz +0 -0
  176. package/dist/web/assets/{use-inline-blame-Dv111BKY.js → use-inline-blame-I6_SHzP0.js} +1 -1
  177. package/dist/web/assets/use-inline-blame-I6_SHzP0.js.br +0 -0
  178. package/dist/web/assets/use-inline-blame-I6_SHzP0.js.gz +0 -0
  179. package/dist/web/assets/{use-lsp-CZTFJIXX.js → use-lsp-D6skvdIp.js} +1 -1
  180. package/dist/web/assets/use-lsp-D6skvdIp.js.br +0 -0
  181. package/dist/web/assets/use-lsp-D6skvdIp.js.gz +0 -0
  182. package/dist/web/assets/{use-monaco-theme-DL2dIG5L.js → use-monaco-theme-08OELBic.js} +1 -1
  183. package/dist/web/assets/{use-process-kill-D7D9QvJG.js → use-process-kill-4gRMygIV.js} +1 -1
  184. package/dist/web/assets/use-process-kill-4gRMygIV.js.br +0 -0
  185. package/dist/web/assets/use-process-kill-4gRMygIV.js.gz +0 -0
  186. package/dist/web/assets/{use-websocket-ziY-Gz_B.js → use-websocket-C1dxvoVt.js} +1 -1
  187. package/dist/web/assets/{video-preview-DzwY3q9W.js → video-preview-08dogvSP.js} +1 -1
  188. package/dist/web/assets/video-preview-08dogvSP.js.br +0 -0
  189. package/dist/web/assets/video-preview-08dogvSP.js.gz +0 -0
  190. package/dist/web/index.html +1 -1
  191. package/dist/web/index.html.br +0 -0
  192. package/dist/web/index.html.gz +0 -0
  193. package/dist/web/sw.js +1 -1
  194. package/dist/web/sw.js.br +0 -0
  195. package/dist/web/sw.js.gz +0 -0
  196. package/package.json +1 -1
  197. package/src/server/routes/chat.ts +12 -4
  198. package/src/web/components/chat/codex-usage-panel.tsx +26 -8
  199. package/dist/web/assets/accounts-settings-section-BNcPvEq1.js.br +0 -0
  200. package/dist/web/assets/accounts-settings-section-BNcPvEq1.js.gz +0 -0
  201. package/dist/web/assets/ai-resource-editor-DfVRMUHS.js.br +0 -0
  202. package/dist/web/assets/ai-resource-editor-DfVRMUHS.js.gz +0 -0
  203. package/dist/web/assets/ai-settings-section-Ezhw4Fef.js.br +0 -0
  204. package/dist/web/assets/ai-settings-section-Ezhw4Fef.js.gz +0 -0
  205. package/dist/web/assets/appearance-settings-section-CPOAp0fY.js.br +0 -0
  206. package/dist/web/assets/appearance-settings-section-CPOAp0fY.js.gz +0 -0
  207. package/dist/web/assets/apps-panel-Cz7_o-M4.js.br +0 -0
  208. package/dist/web/assets/apps-panel-Cz7_o-M4.js.gz +0 -0
  209. package/dist/web/assets/branch-review-tab-BPx3kHrM.js.br +0 -0
  210. package/dist/web/assets/branch-review-tab-BPx3kHrM.js.gz +0 -0
  211. package/dist/web/assets/chat-tab-BadDM_j8.js.br +0 -0
  212. package/dist/web/assets/chat-tab-BadDM_j8.js.gz +0 -0
  213. package/dist/web/assets/chat-tab-IqAY4c7p.js.br +0 -0
  214. package/dist/web/assets/chat-tab-IqAY4c7p.js.gz +0 -0
  215. package/dist/web/assets/code-editor-Dmitw9QS.js.br +0 -0
  216. package/dist/web/assets/code-editor-Dmitw9QS.js.gz +0 -0
  217. package/dist/web/assets/codex-reset-credit-button-D2hal4bG.js.br +0 -0
  218. package/dist/web/assets/codex-reset-credit-button-D2hal4bG.js.gz +0 -0
  219. package/dist/web/assets/conflict-editor-Cj_gUncw.js.br +0 -0
  220. package/dist/web/assets/conflict-editor-Cj_gUncw.js.gz +0 -0
  221. package/dist/web/assets/csv-preview-Be3ODNj0.js.br +0 -0
  222. package/dist/web/assets/csv-preview-Be3ODNj0.js.gz +0 -0
  223. package/dist/web/assets/database-viewer-B1b--4y8.js.br +0 -0
  224. package/dist/web/assets/database-viewer-B1b--4y8.js.gz +0 -0
  225. package/dist/web/assets/design-tab-8wi0IHss.js.br +0 -0
  226. package/dist/web/assets/design-tab-8wi0IHss.js.gz +0 -0
  227. package/dist/web/assets/designs-sidebar-panel-D5-1Q8zQ.js.br +0 -0
  228. package/dist/web/assets/designs-sidebar-panel-D5-1Q8zQ.js.gz +0 -0
  229. package/dist/web/assets/diff-viewer-Dcxk6UTG.js.br +0 -0
  230. package/dist/web/assets/diff-viewer-Dcxk6UTG.js.gz +0 -0
  231. package/dist/web/assets/editor-language-service-BVJQnTSV.js.br +0 -0
  232. package/dist/web/assets/editor-language-service-BVJQnTSV.js.gz +0 -0
  233. package/dist/web/assets/explorer-body-CTkrlrI3.js.br +0 -0
  234. package/dist/web/assets/explorer-body-CTkrlrI3.js.gz +0 -0
  235. package/dist/web/assets/explorer-window-content-DH5AD3Ng.js.br +0 -0
  236. package/dist/web/assets/explorer-window-content-DH5AD3Ng.js.gz +0 -0
  237. package/dist/web/assets/extension-manager-section-BJr6ccWw.js.br +0 -0
  238. package/dist/web/assets/extension-manager-section-BJr6ccWw.js.gz +0 -0
  239. package/dist/web/assets/extension-webview-CYNXHd8D.js.br +0 -0
  240. package/dist/web/assets/extension-webview-CYNXHd8D.js.gz +0 -0
  241. package/dist/web/assets/files-settings-section-JX7o4lex.js.br +0 -0
  242. package/dist/web/assets/files-settings-section-JX7o4lex.js.gz +0 -0
  243. package/dist/web/assets/general-settings-section-kF94Mz5q.js.br +0 -0
  244. package/dist/web/assets/general-settings-section-kF94Mz5q.js.gz +0 -0
  245. package/dist/web/assets/git-log-panel-Crlp9ofM.js.br +0 -0
  246. package/dist/web/assets/git-log-panel-Crlp9ofM.js.gz +0 -0
  247. package/dist/web/assets/glide-data-grid-O6MO5dKU.js.br +0 -0
  248. package/dist/web/assets/glide-data-grid-O6MO5dKU.js.gz +0 -0
  249. package/dist/web/assets/group-chat-tab-DGLSGf37.js.br +0 -0
  250. package/dist/web/assets/group-chat-tab-DGLSGf37.js.gz +0 -0
  251. package/dist/web/assets/index-DQCw6d-2.js.br +0 -0
  252. package/dist/web/assets/index-DQCw6d-2.js.gz +0 -0
  253. package/dist/web/assets/keyboard-shortcuts-section-CewWGwiF.js.br +0 -0
  254. package/dist/web/assets/keyboard-shortcuts-section-CewWGwiF.js.gz +0 -0
  255. package/dist/web/assets/language-servers-section-nricdxke.js.br +0 -0
  256. package/dist/web/assets/language-servers-section-nricdxke.js.gz +0 -0
  257. package/dist/web/assets/lsp-client-DRMEWb-z.js.br +0 -0
  258. package/dist/web/assets/lsp-client-DRMEWb-z.js.gz +0 -0
  259. package/dist/web/assets/markdown-renderer-Dab9Us6u.js.br +0 -0
  260. package/dist/web/assets/markdown-renderer-Dab9Us6u.js.gz +0 -0
  261. package/dist/web/assets/mobile-explorer-sheet-DtgdpvJ9.js.br +0 -0
  262. package/dist/web/assets/mobile-explorer-sheet-DtgdpvJ9.js.gz +0 -0
  263. package/dist/web/assets/new-design-dialog-Dd5KDB_p.js.br +0 -0
  264. package/dist/web/assets/new-design-dialog-Dd5KDB_p.js.gz +0 -0
  265. package/dist/web/assets/performance-panel-LMGefOQ2.js.br +0 -0
  266. package/dist/web/assets/performance-panel-LMGefOQ2.js.gz +0 -0
  267. package/dist/web/assets/ppmbot-settings-section-D67u6gPi.js.br +0 -0
  268. package/dist/web/assets/ppmbot-settings-section-D67u6gPi.js.gz +0 -0
  269. package/dist/web/assets/problems-panel-DKgIw4uZ.js.br +0 -0
  270. package/dist/web/assets/problems-panel-DKgIw4uZ.js.gz +0 -0
  271. package/dist/web/assets/process-table-BIAgC_jG.js.br +0 -0
  272. package/dist/web/assets/process-table-BIAgC_jG.js.gz +0 -0
  273. package/dist/web/assets/proxy-settings-section-CFiYcTBA.js.br +0 -0
  274. package/dist/web/assets/proxy-settings-section-CFiYcTBA.js.gz +0 -0
  275. package/dist/web/assets/remote-desktop-clipboard-notice-Bs3fZSRw.js.br +0 -0
  276. package/dist/web/assets/remote-desktop-clipboard-notice-Bs3fZSRw.js.gz +0 -0
  277. package/dist/web/assets/remote-desktop-mobile-sheet-DgxTdWMh.js.br +0 -0
  278. package/dist/web/assets/remote-desktop-mobile-sheet-DgxTdWMh.js.gz +0 -0
  279. package/dist/web/assets/remote-desktop-mobile-view-DgGOfPVY.js.br +0 -0
  280. package/dist/web/assets/remote-desktop-mobile-view-DgGOfPVY.js.gz +0 -0
  281. package/dist/web/assets/remote-desktop-readiness-gate-DOWryrQx.js.br +0 -0
  282. package/dist/web/assets/remote-desktop-readiness-gate-DOWryrQx.js.gz +0 -0
  283. package/dist/web/assets/remote-desktop-window-content-7t0wQsHx.js.br +0 -0
  284. package/dist/web/assets/remote-desktop-window-content-7t0wQsHx.js.gz +0 -0
  285. package/dist/web/assets/schedules-settings-section-DGhG-b5O.js.br +0 -0
  286. package/dist/web/assets/schedules-settings-section-DGhG-b5O.js.gz +0 -0
  287. package/dist/web/assets/services-panel-0klE3O4g.js.br +0 -0
  288. package/dist/web/assets/services-panel-0klE3O4g.js.gz +0 -0
  289. package/dist/web/assets/settings-body-CfqpqFfq.js.br +0 -0
  290. package/dist/web/assets/settings-body-CfqpqFfq.js.gz +0 -0
  291. package/dist/web/assets/sql-query-editor-ALQ5_X0j.js.br +0 -0
  292. package/dist/web/assets/sql-query-editor-ALQ5_X0j.js.gz +0 -0
  293. package/dist/web/assets/sqlite-viewer-DKTty_jR.js.br +0 -0
  294. package/dist/web/assets/sqlite-viewer-DKTty_jR.js.gz +0 -0
  295. package/dist/web/assets/system-monitor-body-D6J6lq7-.js.br +0 -0
  296. package/dist/web/assets/system-monitor-body-D6J6lq7-.js.gz +0 -0
  297. package/dist/web/assets/tab-host-window-content-DTcx2D0O.js.br +0 -0
  298. package/dist/web/assets/tab-host-window-content-DTcx2D0O.js.gz +0 -0
  299. package/dist/web/assets/team-member-sheet-CFSbPG6n.js.br +0 -0
  300. package/dist/web/assets/team-member-sheet-CFSbPG6n.js.gz +0 -0
  301. package/dist/web/assets/team-member-window-content-VeI6DGeM.js.br +0 -0
  302. package/dist/web/assets/team-member-window-content-VeI6DGeM.js.gz +0 -0
  303. package/dist/web/assets/terminal-tab-DgTfQKBI.js.br +0 -0
  304. package/dist/web/assets/terminal-tab-DgTfQKBI.js.gz +0 -0
  305. package/dist/web/assets/tool-cards-_fpYI1hB.js.br +0 -0
  306. package/dist/web/assets/tool-cards-_fpYI1hB.js.gz +0 -0
  307. package/dist/web/assets/use-inline-blame-Dv111BKY.js.br +0 -0
  308. package/dist/web/assets/use-inline-blame-Dv111BKY.js.gz +0 -0
  309. package/dist/web/assets/use-lsp-CZTFJIXX.js.br +0 -0
  310. package/dist/web/assets/use-lsp-CZTFJIXX.js.gz +0 -0
  311. package/dist/web/assets/use-process-kill-D7D9QvJG.js.br +0 -0
  312. package/dist/web/assets/use-process-kill-D7D9QvJG.js.gz +0 -0
  313. package/dist/web/assets/video-preview-DzwY3q9W.js.br +0 -0
  314. package/dist/web/assets/video-preview-DzwY3q9W.js.gz +0 -0
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{Mr as r,Vr as i,Wn as a,Yn as o,b as s,dr as c,j as l,lr as u,pr as d,un as f,xr as p,zr as m}from"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import"./settings-store-3jIBB8gx.js";import{n as h}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import"./panel-store-DrSH3Nhp.js";import"./window-store-B4cbZ5rr.js";import{i as g}from"./project-store-CCimwgGF.js";import"./tab-store-CUPgQIQz.js";import"./context-menu-CH1mvCwA.js";import"./file-store-DCU7_YyB.js";import{n as _}from"./use-is-mobile-CkO33jqU.js";import"./git-repo-store-CdoOpvmf.js";import{t as v}from"./button-CsmGH5xa.js";import{a as y,n as b,o as x,t as S}from"./dialog-z8PLkL8n.js";import{t as C}from"./mobile-bottom-sheet-CLic9ovp.js";import"./use-visual-viewport-C307OVeV.js";import"./fs-api-vF_bQoeL.js";import"./ws-auth-J3hw0Mhc.js";import{$ as w,an as T,at as E,ct as D,et as O,gn as k,it as A,lt as j,mn as ee,nt as te,on as M,ot as N,rt as P,sn as F,st as I,tt as L}from"./index-DQCw6d-2.js";import{t as R}from"./use-websocket-ziY-Gz_B.js";import{n as z}from"./tool-cards-_fpYI1hB.js";import"./use-blob-url-B3R1DMZ0.js";import{t as B}from"./markdown-renderer-Dab9Us6u.js";import"./run-in-terminal-Cdn9PaAl.js";var V=e(t(),1),H=8e3;function ne(e,t){let[n,r]=(0,V.useState)([]),[i,a]=(0,V.useState)([]),[o,s]=(0,V.useState)(`idle`),[c,l]=(0,V.useState)({}),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(!1),[g,_]=(0,V.useState)(null),v=(0,V.useRef)(new Map),y=(0,V.useCallback)(e=>{l(t=>{if(!t[e])return t;let n={...t};return delete n[e],n})},[]),b=(0,V.useCallback)(e=>{let t;try{t=JSON.parse(e.data)}catch{return}switch(t.type){case`ping`:return;case`group_state`:p(!0),s(t.status),a(t.members),h(t.status===`active`);return;case`group_message`:y(t.message.fromMember),r(e=>e.some(e=>e.id===t.message.id)?e:[...e,t.message]);return;case`member_status`:a(e=>e.map(e=>e.id===t.memberId?{...e,status:t.status}:e));return;case`typing`:{l(e=>({...e,[t.member]:!0}));let e=v.current,n=e.get(t.member);n&&clearTimeout(n),e.set(t.member,setTimeout(()=>y(t.member),H));return}case`turn_done`:return;case`group_done`:h(!1),s(`idle`),l({});return;case`error`:_(t.message),h(!1);return}},[y]),{send:x}=R({url:e&&t?`/ws/project/${encodeURIComponent(t)}/group/${encodeURIComponent(e)}`:``,onMessage:b,autoConnect:!!e&&!!t});return(0,V.useEffect)(()=>{let t=!1;r([]),a([]),l({}),s(`idle`),h(!1),_(null),p(!1);for(let e of v.current.values())clearTimeout(e);if(v.current.clear(),e)return d(!0),L(e,{limit:200}).then(e=>{t||r(t=>{let n=new Set(e.messages.map(e=>e.id)),r=t.filter(e=>!n.has(e.id));return[...e.messages,...r]})}).catch(e=>{t||_(e instanceof Error?e.message:`Failed to load feed`)}).finally(()=>{t||d(!1)}),()=>{t=!0}},[e]),{messages:n,members:i,status:o,typing:c,loading:u,isConnected:f,isRunning:m,error:g,sendMessage:(0,V.useCallback)(t=>{let n=t.trim();!n||!e||(_(null),h(!0),f?x(JSON.stringify({type:`message`,content:n})):N(e,n).catch(e=>{_(e instanceof Error?e.message:`Failed to send message`),h(!1)}))},[e,f,x]),stop:(0,V.useCallback)(()=>{e&&(f?x(JSON.stringify({type:`stop`})):I(e).catch(()=>{}),s(`paused`),h(!1))},[e,f,x]),resume:(0,V.useCallback)(()=>{e&&E(e).then(()=>{s(`active`),h(!0)}).catch(e=>_(e instanceof Error?e.message:`Failed to resume`))},[e])}}var U=n();function W(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}function G(e){try{let t=e<0xe8d4a51000?e*1e3:e;return new Date(t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}function K(e,t){return e.split(/(@[\p{L}\p{N}_]+)/gu).map((e,n)=>{if(e.startsWith(`@`)&&e.length>1){let r=t(e.slice(1));return(0,U.jsx)(`span`,{className:h(`font-semibold`,!r&&`text-primary`),style:r?{color:r}:void 0,children:e},n)}return e})}var re=(0,V.memo)(function({message:e,colorFor:t,isLeader:n,onViewFull:r}){let i=e.fromMember===`user`,a=i?`You`:e.fromMember,o=i?`var(--color-primary)`:t(e.fromMember)??`var(--accent)`,s=!i&&n(e.fromMember),c=e.summary??``,l=e.toMember&&e.toMember!==`all`?e.toMember:null,d=(0,U.jsxs)(`div`,{className:h(`group relative flex gap-2.5 px-3 py-2 transition-colors hover:bg-surface-elevated/50`,i&&`bg-primary/5`),style:{boxShadow:`inset 3px 0 0 0 ${o}`},children:[e.fullSessionRef&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e),title:`View full transcript (AI's raw thinking / debug)`,"aria-label":`View full transcript`,className:`absolute right-1.5 top-1.5 hidden items-center rounded p-1 text-text-subtle/60 hover:bg-surface-elevated hover:text-text-secondary can-hover:group-hover:inline-flex`,children:(0,U.jsx)(u,{className:`size-3.5`})}),(0,U.jsx)(`div`,{className:`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-full text-[11px] font-semibold text-white ring-2 ring-background`,style:{backgroundColor:o},"aria-hidden":!0,children:W(a)}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1 can-hover:pr-6`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-0.5`,children:[(0,U.jsx)(`span`,{className:`text-sm font-semibold`,style:{color:i?`var(--color-foreground)`:o},children:a}),s&&(0,U.jsx)(`span`,{className:`rounded bg-surface-elevated px-1.5 py-px text-[10px] font-medium text-text-secondary`,children:`leader`}),l&&(0,U.jsxs)(`span`,{className:`text-[11px] text-text-subtle`,children:[`→ `,l]}),(0,U.jsx)(`span`,{className:`text-[11px] text-text-subtle`,children:G(e.createdAt)})]}),(0,U.jsx)(`div`,{className:`mt-0.5 whitespace-pre-wrap break-words text-sm leading-relaxed text-text-secondary`,children:K(c,t)})]})]});return e.fullSessionRef?(0,U.jsxs)(T,{children:[(0,U.jsx)(ee,{asChild:!0,children:d}),(0,U.jsx)(M,{children:(0,U.jsxs)(F,{onClick:()=>r(e),children:[(0,U.jsx)(u,{className:`size-4`}),` View full transcript`]})})]}):d}),q={idle:`bg-text-subtle`,working:`bg-primary animate-pulse`,done:`bg-emerald-500`,error:`bg-destructive`},J={idle:`Idle`,working:`Working`,done:`Done`,error:`Error`},ie=(0,V.memo)(function({members:e,liveStatus:t,typing:n,busy:i,onAdd:o,onEdit:s,onRemove:c}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-0.5 p-2`,children:[e.map(e=>{let o=n[e.name],l=t.get(e.id)??e.status;return(0,U.jsxs)(`div`,{className:`group flex items-center gap-2 rounded-md px-2 py-1.5`,children:[(0,U.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-full text-[10px] font-semibold text-white ring-2 ring-background`,style:{backgroundColor:e.color??`var(--accent)`},"aria-hidden":!0,children:e.name.slice(0,1).toUpperCase()}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(`span`,{className:`truncate text-xs font-medium`,style:{color:e.color??`var(--color-foreground)`},children:e.name}),e.role===`leader`&&(0,U.jsx)(`span`,{className:`rounded-sm bg-accent-wash px-1 text-[9px] font-semibold uppercase text-primary`,children:`lead`})]}),(0,U.jsx)(`span`,{className:`block truncate text-[10px] text-text-subtle`,children:o?`typing…`:e.persona||J[l]})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 can-hover:opacity-0 can-hover:group-hover:opacity-100`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>s(e),disabled:i,"aria-label":`Edit ${e.name}`,className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-foreground active:bg-surface-elevated disabled:opacity-40`,children:(0,U.jsx)(a,{className:`size-3.5`})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>c(e),disabled:i,"aria-label":`Remove ${e.name}`,className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-destructive active:bg-surface-elevated disabled:opacity-40`,children:(0,U.jsx)(r,{className:`size-3.5`})})]}),(0,U.jsx)(`span`,{className:h(`size-2 shrink-0 rounded-full`,q[l]),title:J[l],"aria-hidden":!0})]},e.id)}),(0,U.jsxs)(`button`,{type:`button`,onClick:o,disabled:i,className:`mt-1 flex items-center gap-2 rounded-md px-2 py-2 text-xs font-medium text-primary hover:bg-surface-elevated active:bg-surface-elevated disabled:opacity-40`,children:[(0,U.jsx)(m,{className:`size-4`}),` Add member`]})]})}),Y=`w-full min-h-[40px] rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary`;function ae({open:e,member:t,projectName:n,providerId:r=`claude`,onSubmit:i,onClose:a}){let o=_(),[s,c]=(0,V.useState)(t?.name??``),[l,u]=(0,V.useState)(t?.persona??``),[d,p]=(0,V.useState)(t?.model??null),[m,h]=(0,V.useState)(t?.role===`leader`),[g,T]=(0,V.useState)(!1),[E,D]=(0,V.useState)(null),O=(0,V.useCallback)(async()=>{let e=s.trim();if(!e){D(`Name is required`);return}T(!0),D(null);try{await i({name:e,persona:l.trim()||null,model:d,role:m?`leader`:`member`}),a()}catch(e){D(e instanceof Error?e.message:`Failed to save member`),T(!1)}},[s,l,d,m,i,a]),k=t?.role===`leader`,A=(0,U.jsxs)(`div`,{className:`flex flex-col gap-3 px-1 py-1`,children:[(0,U.jsx)(`input`,{className:Y,value:s,onChange:e=>c(e.target.value),placeholder:`Member name`,autoFocus:!0}),(0,U.jsx)(`input`,{className:Y,value:l,onChange:e=>u(e.target.value),placeholder:`Persona (optional)`}),(0,U.jsx)(w,{value:d,onChange:p,projectName:n,providerId:r}),(0,U.jsxs)(`label`,{className:X(k),children:[(0,U.jsx)(`input`,{type:`checkbox`,className:`size-4 accent-[var(--color-primary)]`,checked:m,disabled:k,onChange:e=>h(e.target.checked)}),(0,U.jsx)(`span`,{children:k?`Leader (reassign from another member)`:`Set as leader`})]}),E&&(0,U.jsx)(`p`,{className:`text-xs text-destructive`,children:E}),(0,U.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[(0,U.jsx)(v,{variant:`outline`,onClick:a,disabled:g,children:`Cancel`}),(0,U.jsxs)(v,{onClick:O,disabled:g,children:[g&&(0,U.jsx)(f,{className:`mr-1.5 size-4 animate-spin`}),t?`Save`:`Add member`]})]})]});if(!e)return null;let j=t?`Edit member`:`Add member`;return o?(0,U.jsx)(C,{open:!0,onClose:a,className:`flex max-h-[90vh] flex-col`,children:(0,U.jsxs)(`div`,{className:`flex min-h-0 flex-col px-4 pb-2`,children:[(0,U.jsx)(`h2`,{className:`mb-2 text-base font-semibold text-foreground`,children:j}),A]})}):(0,U.jsx)(S,{open:!0,onOpenChange:e=>{e||a()},children:(0,U.jsxs)(b,{className:`flex flex-col sm:max-w-md`,children:[(0,U.jsx)(y,{children:(0,U.jsx)(x,{children:j})}),A]})})}function X(e){return`flex items-center gap-2 text-sm text-text-secondary ${e?`opacity-60`:``}`}function Z({messages:e,config:t,projectName:n}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[t&&(0,U.jsx)(ce,{config:t}),e.map(e=>(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,U.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-text-subtle`,children:e.role===`user`?`User`:e.role===`assistant`?`Assistant`:e.role}),(0,U.jsx)(oe,{message:e,projectName:n})]},e.id)),e.length===0&&(0,U.jsx)(`p`,{className:`py-6 text-center text-sm text-text-subtle`,children:`Transcript is empty.`})]})}function oe({message:e,projectName:t}){let n=e.events??[];if(n.length===0)return e.content.trim()?(0,U.jsx)(B,{content:e.content}):null;let r=new Map;for(let e of n)e.type===`tool_result`&&e.toolUseId&&r.set(e.toolUseId,e);return(0,U.jsx)(`div`,{className:`flex flex-col gap-2`,children:n.map((e,n)=>{if(e.type===`text`)return e.content.trim()?(0,U.jsx)(B,{content:e.content},n):null;if(e.type===`thinking`)return(0,U.jsx)(se,{content:e.content},n);if(e.type===`tool_use`){let i=e.toolUseId?r.get(e.toolUseId):void 0;return(0,U.jsx)(z,{tool:e,result:i,completed:!!i,projectName:t},n)}return null})})}function se({content:e}){let[t,n]=(0,V.useState)(!1);return(0,U.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-elevated/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-xs text-text-subtle hover:text-text-secondary`,children:[(0,U.jsx)(l,{className:h(`size-3.5 transition-transform`,t&&`rotate-90`)}),(0,U.jsx)(s,{className:`size-3.5`}),(0,U.jsx)(`span`,{children:`Thinking`})]}),t&&(0,U.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-xs leading-relaxed text-text-secondary`,children:(0,U.jsx)(B,{content:e})})]})}function ce({config:e}){let[t,n]=(0,V.useState)(!1),r=[[`Model`,e.model],[`Permission`,e.permissionMode],[`CWD`,e.cwd],[`Git branch`,e.gitBranch],[`CLI version`,e.version]].filter(([,e])=>e);return r.length===0?null:(0,U.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-elevated/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-text-secondary hover:text-foreground`,children:[(0,U.jsx)(l,{className:h(`size-3.5 transition-transform`,t&&`rotate-90`)}),(0,U.jsx)(d,{className:`size-3.5`}),(0,U.jsx)(`span`,{children:`Input config`})]}),t&&(0,U.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 border-t border-border px-3 py-2 text-xs`,children:r.map(([e,t])=>(0,U.jsxs)(`div`,{className:`contents`,children:[(0,U.jsx)(`dt`,{className:`text-text-subtle`,children:e}),(0,U.jsx)(`dd`,{className:`break-all font-mono text-text-secondary`,children:t})]},e))})]})}function le({groupId:e,message:t,onClose:n}){let r=_(),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1),[c,l]=(0,V.useState)(null),u=t?.fullSessionRef??null;if((0,V.useEffect)(()=>{if(!t||!u)return;let n=!1;return a(null),l(null),s(!0),P(e,u).then(e=>{n||a(e)}).catch(e=>{n||l(e instanceof Error?e.message:`Failed to load transcript`)}).finally(()=>{n||s(!1)}),()=>{n=!0}},[e,u,t]),!t)return null;let d=(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[o&&(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(f,{className:`size-5 animate-spin text-primary`})}),c&&(0,U.jsxs)(`div`,{className:`px-1 py-4 text-sm text-text-secondary`,children:[(0,U.jsx)(`p`,{className:`mb-2 font-medium text-foreground`,children:`Full transcript unavailable`}),(0,U.jsx)(`p`,{className:`text-xs text-text-subtle`,children:c}),t.summary&&(0,U.jsx)(`pre`,{className:`mt-4 whitespace-pre-wrap break-words rounded-md bg-surface-elevated p-3 text-xs leading-relaxed text-text-secondary`,children:t.summary})]}),!o&&!c&&i!=null&&(0,U.jsx)(`div`,{className:`px-1 py-1`,children:(0,U.jsx)(Z,{messages:i.messages,config:i.config})})]}),p=`${t.fromMember} — full transcript`;return r?(0,U.jsx)(C,{open:!0,onClose:n,className:`max-h-[85vh] flex flex-col`,children:(0,U.jsxs)(`div`,{className:`flex flex-col min-h-0 px-4 pb-2`,children:[(0,U.jsx)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:p}),d]})}):(0,U.jsx)(S,{open:!0,onOpenChange:e=>{e||n()},children:(0,U.jsxs)(b,{className:`flex max-h-[80vh] flex-col sm:max-w-2xl`,children:[(0,U.jsx)(y,{children:(0,U.jsx)(x,{className:`text-sm`,children:p})}),d]})})}function Q({metadata:e}){let t=e?.groupId??null,{activeProject:n}=g(k(e=>({activeProject:e.activeProject}))),r=e?.projectName??n?.name??``,a=_(),{messages:s,members:l,status:u,typing:d,loading:m,isRunning:y,error:b,sendMessage:x,stop:S,resume:w}=ne(t,r),[T,E]=(0,V.useState)(``),[ee,M]=(0,V.useState)(null),[N,P]=(0,V.useState)(!1),F=(0,V.useRef)(null),[I,L]=(0,V.useState)([]),[R,z]=(0,V.useState)(null),[B,H]=(0,V.useState)(!1),[W,G]=(0,V.useState)(null),[K,q]=(0,V.useState)(null),J=(0,V.useCallback)(async()=>{if(t)try{let e=await te(t);L(e.members),z(e.maxTurns)}catch{}},[t]),Y=(0,V.useCallback)(async e=>{if(!t)return;let n=Math.max(1,Math.min(50,Math.floor(e)||1));z(n);try{await j(t,{maxTurns:n})}catch{J()}},[t,J]);(0,V.useEffect)(()=>{L([]),J()},[t,J]),(0,V.useEffect)(()=>{F.current?.scrollIntoView({block:`end`})},[s.length,d]);let X=(0,V.useMemo)(()=>new Map(l.map(e=>[e.id,e.status])),[l]),Z=I.length?I:l,oe=(0,V.useMemo)(()=>{let e=new Map(Z.map(e=>[e.name,e.color]));return t=>e.get(t)??null},[Z]),se=(0,V.useMemo)(()=>{let e=new Set(Z.filter(e=>e.role===`leader`).map(e=>e.name));return t=>e.has(t)},[Z]),ce=(0,V.useCallback)(async e=>{t&&(K?.member?await D(t,K.member.id,e):await O(t,e),await J())},[t,K,J]),Q=(0,V.useCallback)(async e=>{if(t){H(!0),G(null);try{await A(t,e.id),await J()}catch(e){G(e instanceof Error?e.message:`Failed to remove member`)}finally{H(!1)}}},[t,J]),ue=(0,V.useCallback)(()=>{let e=T.trim();e&&(x(e),E(``))},[T,x]),$=Object.keys(d).filter(e=>d[e]);return t?(0,U.jsxs)(`div`,{className:`flex h-full min-h-0`,children:[(0,U.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,U.jsxs)(`div`,{className:`flex h-11 shrink-0 items-center justify-between border-b border-border px-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-foreground`,children:[(0,U.jsx)(`span`,{className:h(`size-2 rounded-full`,u===`active`?`bg-primary animate-pulse`:u===`paused`?`bg-amber-500`:`bg-text-subtle`)}),(0,U.jsx)(`span`,{className:`capitalize`,children:u})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[y?(0,U.jsxs)(v,{size:`sm`,variant:`outline`,onClick:S,className:`h-8`,children:[(0,U.jsx)(p,{className:`mr-1 size-3.5`}),` Stop`]}):u===`paused`?(0,U.jsxs)(v,{size:`sm`,variant:`outline`,onClick:w,className:`h-8`,children:[(0,U.jsx)(o,{className:`mr-1 size-3.5`}),` Resume`]}):null,(0,U.jsx)(`button`,{type:`button`,onClick:()=>P(e=>!e),className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-foreground`,"aria-label":`Toggle roster`,children:(0,U.jsx)(i,{className:`size-4`})})]})]}),(0,U.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:m?(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(f,{className:`size-5 animate-spin text-primary`})}):s.length===0?(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center p-4 text-center text-sm text-text-subtle`,children:`Send a message to start the group.`}):(0,U.jsxs)(`div`,{className:`flex flex-col py-2`,children:[s.map(e=>(0,U.jsx)(re,{message:e,colorFor:oe,isLeader:se,onViewFull:M},e.id)),$.length>0&&(0,U.jsxs)(`div`,{className:`px-3 py-1.5 text-xs italic text-text-subtle`,children:[$.join(`, `),` `,$.length===1?`is`:`are`,` typing…`]}),(0,U.jsx)(`div`,{ref:F})]})}),b&&(0,U.jsx)(`div`,{className:`shrink-0 border-t border-border bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:b}),(0,U.jsx)(`div`,{className:`shrink-0 border-t border-border p-2`,children:(0,U.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,U.jsx)(`textarea`,{value:T,onChange:e=>E(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!a&&(e.preventDefault(),ue())},rows:1,placeholder:`Message the group…`,className:`max-h-32 min-h-[44px] flex-1 resize-none rounded-md border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary`}),(0,U.jsx)(v,{onClick:ue,disabled:!T.trim(),className:`size-11 shrink-0 p-0`,"aria-label":`Send`,children:(0,U.jsx)(c,{className:`size-4`})})]})})]}),a?(0,U.jsxs)(C,{open:N,onClose:()=>P(!1),className:`flex max-h-[72vh] flex-col`,children:[(0,U.jsx)(`div`,{className:`flex h-11 shrink-0 items-center px-4 text-sm font-medium text-foreground`,children:`Members`}),(0,U.jsxs)(`div`,{className:`min-h-0 overflow-y-auto`,children:[R!==null&&(0,U.jsxs)(`label`,{className:`flex items-center gap-2 px-4 py-2 text-xs text-text-secondary`,children:[(0,U.jsx)(`span`,{children:`Reply cap`}),(0,U.jsx)(`input`,{type:`number`,min:1,max:50,value:R,onChange:e=>Y(Number(e.target.value)),className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-xs text-foreground`}),(0,U.jsx)(`span`,{className:`text-text-subtle`,children:`turns/msg`})]}),W&&(0,U.jsx)(`p`,{className:`px-3 py-1 text-xs text-destructive`,children:W}),(0,U.jsx)(ie,{members:I,liveStatus:X,typing:d,busy:B,onAdd:()=>q({member:null}),onEdit:e=>q({member:e}),onRemove:Q})]})]}):N&&(0,U.jsxs)(`div`,{className:`flex w-60 shrink-0 flex-col border-l border-border bg-panel`,children:[(0,U.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border px-3 text-sm font-medium text-foreground`,children:`Members`}),(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[R!==null&&(0,U.jsxs)(`label`,{className:`flex items-center gap-2 px-3 py-2 text-xs text-text-secondary`,children:[(0,U.jsx)(`span`,{children:`Reply cap`}),(0,U.jsx)(`input`,{type:`number`,min:1,max:50,value:R,onChange:e=>Y(Number(e.target.value)),className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-xs text-foreground`}),(0,U.jsx)(`span`,{className:`text-text-subtle`,children:`turns/msg`})]}),W&&(0,U.jsx)(`p`,{className:`px-3 py-1 text-xs text-destructive`,children:W}),(0,U.jsx)(ie,{members:I,liveStatus:X,typing:d,busy:B,onAdd:()=>q({member:null}),onEdit:e=>q({member:e}),onRemove:Q})]})]}),K&&(0,U.jsx)(ae,{open:!0,member:K.member,projectName:r,onSubmit:ce,onClose:()=>q(null)},K.member?.id??`add`),(0,U.jsx)(le,{groupId:t,message:ee,onClose:()=>M(null)})]}):(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center p-4 text-sm text-text-subtle`,children:`No group selected.`})}export{Q as GroupChatTab};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{Mr as r,Vr as i,Wn as a,Yn as o,b as s,dr as c,j as l,lr as u,pr as d,un as f,xr as p,zr as m}from"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import"./settings-store-3jIBB8gx.js";import{n as h}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import"./panel-store-DrSH3Nhp.js";import"./window-store-B4cbZ5rr.js";import{i as g}from"./project-store-CCimwgGF.js";import"./tab-store-CUPgQIQz.js";import"./context-menu-CH1mvCwA.js";import"./file-store-DCU7_YyB.js";import{n as _}from"./use-is-mobile-CkO33jqU.js";import"./git-repo-store-CdoOpvmf.js";import{t as v}from"./button-CsmGH5xa.js";import{a as y,n as b,o as x,t as S}from"./dialog-z8PLkL8n.js";import{t as C}from"./mobile-bottom-sheet-CLic9ovp.js";import"./use-visual-viewport-C307OVeV.js";import"./fs-api-vF_bQoeL.js";import"./ws-auth-J3hw0Mhc.js";import{$ as w,an as T,at as E,ct as D,et as O,gn as k,it as A,lt as j,mn as ee,nt as te,on as M,ot as N,rt as P,sn as F,st as I,tt as L}from"./index-D41mthBS.js";import{t as R}from"./use-websocket-C1dxvoVt.js";import{n as z}from"./tool-cards-BoW8_vQb.js";import"./use-blob-url-B3R1DMZ0.js";import{t as B}from"./markdown-renderer-C9inQ_Z3.js";import"./run-in-terminal-Cdn9PaAl.js";var V=e(t(),1),H=8e3;function ne(e,t){let[n,r]=(0,V.useState)([]),[i,a]=(0,V.useState)([]),[o,s]=(0,V.useState)(`idle`),[c,l]=(0,V.useState)({}),[u,d]=(0,V.useState)(!1),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(!1),[g,_]=(0,V.useState)(null),v=(0,V.useRef)(new Map),y=(0,V.useCallback)(e=>{l(t=>{if(!t[e])return t;let n={...t};return delete n[e],n})},[]),b=(0,V.useCallback)(e=>{let t;try{t=JSON.parse(e.data)}catch{return}switch(t.type){case`ping`:return;case`group_state`:p(!0),s(t.status),a(t.members),h(t.status===`active`);return;case`group_message`:y(t.message.fromMember),r(e=>e.some(e=>e.id===t.message.id)?e:[...e,t.message]);return;case`member_status`:a(e=>e.map(e=>e.id===t.memberId?{...e,status:t.status}:e));return;case`typing`:{l(e=>({...e,[t.member]:!0}));let e=v.current,n=e.get(t.member);n&&clearTimeout(n),e.set(t.member,setTimeout(()=>y(t.member),H));return}case`turn_done`:return;case`group_done`:h(!1),s(`idle`),l({});return;case`error`:_(t.message),h(!1);return}},[y]),{send:x}=R({url:e&&t?`/ws/project/${encodeURIComponent(t)}/group/${encodeURIComponent(e)}`:``,onMessage:b,autoConnect:!!e&&!!t});return(0,V.useEffect)(()=>{let t=!1;r([]),a([]),l({}),s(`idle`),h(!1),_(null),p(!1);for(let e of v.current.values())clearTimeout(e);if(v.current.clear(),e)return d(!0),L(e,{limit:200}).then(e=>{t||r(t=>{let n=new Set(e.messages.map(e=>e.id)),r=t.filter(e=>!n.has(e.id));return[...e.messages,...r]})}).catch(e=>{t||_(e instanceof Error?e.message:`Failed to load feed`)}).finally(()=>{t||d(!1)}),()=>{t=!0}},[e]),{messages:n,members:i,status:o,typing:c,loading:u,isConnected:f,isRunning:m,error:g,sendMessage:(0,V.useCallback)(t=>{let n=t.trim();!n||!e||(_(null),h(!0),f?x(JSON.stringify({type:`message`,content:n})):N(e,n).catch(e=>{_(e instanceof Error?e.message:`Failed to send message`),h(!1)}))},[e,f,x]),stop:(0,V.useCallback)(()=>{e&&(f?x(JSON.stringify({type:`stop`})):I(e).catch(()=>{}),s(`paused`),h(!1))},[e,f,x]),resume:(0,V.useCallback)(()=>{e&&E(e).then(()=>{s(`active`),h(!0)}).catch(e=>_(e instanceof Error?e.message:`Failed to resume`))},[e])}}var U=n();function W(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:t.length===1?t[0].slice(0,2).toUpperCase():(t[0][0]+t[t.length-1][0]).toUpperCase()}function G(e){try{let t=e<0xe8d4a51000?e*1e3:e;return new Date(t).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`})}catch{return``}}function K(e,t){return e.split(/(@[\p{L}\p{N}_]+)/gu).map((e,n)=>{if(e.startsWith(`@`)&&e.length>1){let r=t(e.slice(1));return(0,U.jsx)(`span`,{className:h(`font-semibold`,!r&&`text-primary`),style:r?{color:r}:void 0,children:e},n)}return e})}var re=(0,V.memo)(function({message:e,colorFor:t,isLeader:n,onViewFull:r}){let i=e.fromMember===`user`,a=i?`You`:e.fromMember,o=i?`var(--color-primary)`:t(e.fromMember)??`var(--accent)`,s=!i&&n(e.fromMember),c=e.summary??``,l=e.toMember&&e.toMember!==`all`?e.toMember:null,d=(0,U.jsxs)(`div`,{className:h(`group relative flex gap-2.5 px-3 py-2 transition-colors hover:bg-surface-elevated/50`,i&&`bg-primary/5`),style:{boxShadow:`inset 3px 0 0 0 ${o}`},children:[e.fullSessionRef&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e),title:`View full transcript (AI's raw thinking / debug)`,"aria-label":`View full transcript`,className:`absolute right-1.5 top-1.5 hidden items-center rounded p-1 text-text-subtle/60 hover:bg-surface-elevated hover:text-text-secondary can-hover:group-hover:inline-flex`,children:(0,U.jsx)(u,{className:`size-3.5`})}),(0,U.jsx)(`div`,{className:`mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-full text-[11px] font-semibold text-white ring-2 ring-background`,style:{backgroundColor:o},"aria-hidden":!0,children:W(a)}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1 can-hover:pr-6`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-0.5`,children:[(0,U.jsx)(`span`,{className:`text-sm font-semibold`,style:{color:i?`var(--color-foreground)`:o},children:a}),s&&(0,U.jsx)(`span`,{className:`rounded bg-surface-elevated px-1.5 py-px text-[10px] font-medium text-text-secondary`,children:`leader`}),l&&(0,U.jsxs)(`span`,{className:`text-[11px] text-text-subtle`,children:[`→ `,l]}),(0,U.jsx)(`span`,{className:`text-[11px] text-text-subtle`,children:G(e.createdAt)})]}),(0,U.jsx)(`div`,{className:`mt-0.5 whitespace-pre-wrap break-words text-sm leading-relaxed text-text-secondary`,children:K(c,t)})]})]});return e.fullSessionRef?(0,U.jsxs)(T,{children:[(0,U.jsx)(ee,{asChild:!0,children:d}),(0,U.jsx)(M,{children:(0,U.jsxs)(F,{onClick:()=>r(e),children:[(0,U.jsx)(u,{className:`size-4`}),` View full transcript`]})})]}):d}),q={idle:`bg-text-subtle`,working:`bg-primary animate-pulse`,done:`bg-emerald-500`,error:`bg-destructive`},J={idle:`Idle`,working:`Working`,done:`Done`,error:`Error`},ie=(0,V.memo)(function({members:e,liveStatus:t,typing:n,busy:i,onAdd:o,onEdit:s,onRemove:c}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-0.5 p-2`,children:[e.map(e=>{let o=n[e.name],l=t.get(e.id)??e.status;return(0,U.jsxs)(`div`,{className:`group flex items-center gap-2 rounded-md px-2 py-1.5`,children:[(0,U.jsx)(`span`,{className:`flex size-6 shrink-0 items-center justify-center rounded-full text-[10px] font-semibold text-white ring-2 ring-background`,style:{backgroundColor:e.color??`var(--accent)`},"aria-hidden":!0,children:e.name.slice(0,1).toUpperCase()}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(`span`,{className:`truncate text-xs font-medium`,style:{color:e.color??`var(--color-foreground)`},children:e.name}),e.role===`leader`&&(0,U.jsx)(`span`,{className:`rounded-sm bg-accent-wash px-1 text-[9px] font-semibold uppercase text-primary`,children:`lead`})]}),(0,U.jsx)(`span`,{className:`block truncate text-[10px] text-text-subtle`,children:o?`typing…`:e.persona||J[l]})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-0.5 can-hover:opacity-0 can-hover:group-hover:opacity-100`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>s(e),disabled:i,"aria-label":`Edit ${e.name}`,className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-foreground active:bg-surface-elevated disabled:opacity-40`,children:(0,U.jsx)(a,{className:`size-3.5`})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>c(e),disabled:i,"aria-label":`Remove ${e.name}`,className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-destructive active:bg-surface-elevated disabled:opacity-40`,children:(0,U.jsx)(r,{className:`size-3.5`})})]}),(0,U.jsx)(`span`,{className:h(`size-2 shrink-0 rounded-full`,q[l]),title:J[l],"aria-hidden":!0})]},e.id)}),(0,U.jsxs)(`button`,{type:`button`,onClick:o,disabled:i,className:`mt-1 flex items-center gap-2 rounded-md px-2 py-2 text-xs font-medium text-primary hover:bg-surface-elevated active:bg-surface-elevated disabled:opacity-40`,children:[(0,U.jsx)(m,{className:`size-4`}),` Add member`]})]})}),Y=`w-full min-h-[40px] rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary`;function ae({open:e,member:t,projectName:n,providerId:r=`claude`,onSubmit:i,onClose:a}){let o=_(),[s,c]=(0,V.useState)(t?.name??``),[l,u]=(0,V.useState)(t?.persona??``),[d,p]=(0,V.useState)(t?.model??null),[m,h]=(0,V.useState)(t?.role===`leader`),[g,T]=(0,V.useState)(!1),[E,D]=(0,V.useState)(null),O=(0,V.useCallback)(async()=>{let e=s.trim();if(!e){D(`Name is required`);return}T(!0),D(null);try{await i({name:e,persona:l.trim()||null,model:d,role:m?`leader`:`member`}),a()}catch(e){D(e instanceof Error?e.message:`Failed to save member`),T(!1)}},[s,l,d,m,i,a]),k=t?.role===`leader`,A=(0,U.jsxs)(`div`,{className:`flex flex-col gap-3 px-1 py-1`,children:[(0,U.jsx)(`input`,{className:Y,value:s,onChange:e=>c(e.target.value),placeholder:`Member name`,autoFocus:!0}),(0,U.jsx)(`input`,{className:Y,value:l,onChange:e=>u(e.target.value),placeholder:`Persona (optional)`}),(0,U.jsx)(w,{value:d,onChange:p,projectName:n,providerId:r}),(0,U.jsxs)(`label`,{className:X(k),children:[(0,U.jsx)(`input`,{type:`checkbox`,className:`size-4 accent-[var(--color-primary)]`,checked:m,disabled:k,onChange:e=>h(e.target.checked)}),(0,U.jsx)(`span`,{children:k?`Leader (reassign from another member)`:`Set as leader`})]}),E&&(0,U.jsx)(`p`,{className:`text-xs text-destructive`,children:E}),(0,U.jsxs)(`div`,{className:`flex justify-end gap-2 pt-1`,children:[(0,U.jsx)(v,{variant:`outline`,onClick:a,disabled:g,children:`Cancel`}),(0,U.jsxs)(v,{onClick:O,disabled:g,children:[g&&(0,U.jsx)(f,{className:`mr-1.5 size-4 animate-spin`}),t?`Save`:`Add member`]})]})]});if(!e)return null;let j=t?`Edit member`:`Add member`;return o?(0,U.jsx)(C,{open:!0,onClose:a,className:`flex max-h-[90vh] flex-col`,children:(0,U.jsxs)(`div`,{className:`flex min-h-0 flex-col px-4 pb-2`,children:[(0,U.jsx)(`h2`,{className:`mb-2 text-base font-semibold text-foreground`,children:j}),A]})}):(0,U.jsx)(S,{open:!0,onOpenChange:e=>{e||a()},children:(0,U.jsxs)(b,{className:`flex flex-col sm:max-w-md`,children:[(0,U.jsx)(y,{children:(0,U.jsx)(x,{children:j})}),A]})})}function X(e){return`flex items-center gap-2 text-sm text-text-secondary ${e?`opacity-60`:``}`}function Z({messages:e,config:t,projectName:n}){return(0,U.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[t&&(0,U.jsx)(ce,{config:t}),e.map(e=>(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,U.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-text-subtle`,children:e.role===`user`?`User`:e.role===`assistant`?`Assistant`:e.role}),(0,U.jsx)(oe,{message:e,projectName:n})]},e.id)),e.length===0&&(0,U.jsx)(`p`,{className:`py-6 text-center text-sm text-text-subtle`,children:`Transcript is empty.`})]})}function oe({message:e,projectName:t}){let n=e.events??[];if(n.length===0)return e.content.trim()?(0,U.jsx)(B,{content:e.content}):null;let r=new Map;for(let e of n)e.type===`tool_result`&&e.toolUseId&&r.set(e.toolUseId,e);return(0,U.jsx)(`div`,{className:`flex flex-col gap-2`,children:n.map((e,n)=>{if(e.type===`text`)return e.content.trim()?(0,U.jsx)(B,{content:e.content},n):null;if(e.type===`thinking`)return(0,U.jsx)(se,{content:e.content},n);if(e.type===`tool_use`){let i=e.toolUseId?r.get(e.toolUseId):void 0;return(0,U.jsx)(z,{tool:e,result:i,completed:!!i,projectName:t},n)}return null})})}function se({content:e}){let[t,n]=(0,V.useState)(!1);return(0,U.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-elevated/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-xs text-text-subtle hover:text-text-secondary`,children:[(0,U.jsx)(l,{className:h(`size-3.5 transition-transform`,t&&`rotate-90`)}),(0,U.jsx)(s,{className:`size-3.5`}),(0,U.jsx)(`span`,{children:`Thinking`})]}),t&&(0,U.jsx)(`div`,{className:`border-t border-border px-3 py-2 text-xs leading-relaxed text-text-secondary`,children:(0,U.jsx)(B,{content:e})})]})}function ce({config:e}){let[t,n]=(0,V.useState)(!1),r=[[`Model`,e.model],[`Permission`,e.permissionMode],[`CWD`,e.cwd],[`Git branch`,e.gitBranch],[`CLI version`,e.version]].filter(([,e])=>e);return r.length===0?null:(0,U.jsxs)(`div`,{className:`rounded-md border border-border bg-surface-elevated/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-text-secondary hover:text-foreground`,children:[(0,U.jsx)(l,{className:h(`size-3.5 transition-transform`,t&&`rotate-90`)}),(0,U.jsx)(d,{className:`size-3.5`}),(0,U.jsx)(`span`,{children:`Input config`})]}),t&&(0,U.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 border-t border-border px-3 py-2 text-xs`,children:r.map(([e,t])=>(0,U.jsxs)(`div`,{className:`contents`,children:[(0,U.jsx)(`dt`,{className:`text-text-subtle`,children:e}),(0,U.jsx)(`dd`,{className:`break-all font-mono text-text-secondary`,children:t})]},e))})]})}function le({groupId:e,message:t,onClose:n}){let r=_(),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(!1),[c,l]=(0,V.useState)(null),u=t?.fullSessionRef??null;if((0,V.useEffect)(()=>{if(!t||!u)return;let n=!1;return a(null),l(null),s(!0),P(e,u).then(e=>{n||a(e)}).catch(e=>{n||l(e instanceof Error?e.message:`Failed to load transcript`)}).finally(()=>{n||s(!1)}),()=>{n=!0}},[e,u,t]),!t)return null;let d=(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[o&&(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(f,{className:`size-5 animate-spin text-primary`})}),c&&(0,U.jsxs)(`div`,{className:`px-1 py-4 text-sm text-text-secondary`,children:[(0,U.jsx)(`p`,{className:`mb-2 font-medium text-foreground`,children:`Full transcript unavailable`}),(0,U.jsx)(`p`,{className:`text-xs text-text-subtle`,children:c}),t.summary&&(0,U.jsx)(`pre`,{className:`mt-4 whitespace-pre-wrap break-words rounded-md bg-surface-elevated p-3 text-xs leading-relaxed text-text-secondary`,children:t.summary})]}),!o&&!c&&i!=null&&(0,U.jsx)(`div`,{className:`px-1 py-1`,children:(0,U.jsx)(Z,{messages:i.messages,config:i.config})})]}),p=`${t.fromMember} — full transcript`;return r?(0,U.jsx)(C,{open:!0,onClose:n,className:`max-h-[85vh] flex flex-col`,children:(0,U.jsxs)(`div`,{className:`flex flex-col min-h-0 px-4 pb-2`,children:[(0,U.jsx)(`h2`,{className:`mb-2 text-sm font-semibold text-foreground`,children:p}),d]})}):(0,U.jsx)(S,{open:!0,onOpenChange:e=>{e||n()},children:(0,U.jsxs)(b,{className:`flex max-h-[80vh] flex-col sm:max-w-2xl`,children:[(0,U.jsx)(y,{children:(0,U.jsx)(x,{className:`text-sm`,children:p})}),d]})})}function Q({metadata:e}){let t=e?.groupId??null,{activeProject:n}=g(k(e=>({activeProject:e.activeProject}))),r=e?.projectName??n?.name??``,a=_(),{messages:s,members:l,status:u,typing:d,loading:m,isRunning:y,error:b,sendMessage:x,stop:S,resume:w}=ne(t,r),[T,E]=(0,V.useState)(``),[ee,M]=(0,V.useState)(null),[N,P]=(0,V.useState)(!1),F=(0,V.useRef)(null),[I,L]=(0,V.useState)([]),[R,z]=(0,V.useState)(null),[B,H]=(0,V.useState)(!1),[W,G]=(0,V.useState)(null),[K,q]=(0,V.useState)(null),J=(0,V.useCallback)(async()=>{if(t)try{let e=await te(t);L(e.members),z(e.maxTurns)}catch{}},[t]),Y=(0,V.useCallback)(async e=>{if(!t)return;let n=Math.max(1,Math.min(50,Math.floor(e)||1));z(n);try{await j(t,{maxTurns:n})}catch{J()}},[t,J]);(0,V.useEffect)(()=>{L([]),J()},[t,J]),(0,V.useEffect)(()=>{F.current?.scrollIntoView({block:`end`})},[s.length,d]);let X=(0,V.useMemo)(()=>new Map(l.map(e=>[e.id,e.status])),[l]),Z=I.length?I:l,oe=(0,V.useMemo)(()=>{let e=new Map(Z.map(e=>[e.name,e.color]));return t=>e.get(t)??null},[Z]),se=(0,V.useMemo)(()=>{let e=new Set(Z.filter(e=>e.role===`leader`).map(e=>e.name));return t=>e.has(t)},[Z]),ce=(0,V.useCallback)(async e=>{t&&(K?.member?await D(t,K.member.id,e):await O(t,e),await J())},[t,K,J]),Q=(0,V.useCallback)(async e=>{if(t){H(!0),G(null);try{await A(t,e.id),await J()}catch(e){G(e instanceof Error?e.message:`Failed to remove member`)}finally{H(!1)}}},[t,J]),ue=(0,V.useCallback)(()=>{let e=T.trim();e&&(x(e),E(``))},[T,x]),$=Object.keys(d).filter(e=>d[e]);return t?(0,U.jsxs)(`div`,{className:`flex h-full min-h-0`,children:[(0,U.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,U.jsxs)(`div`,{className:`flex h-11 shrink-0 items-center justify-between border-b border-border px-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-foreground`,children:[(0,U.jsx)(`span`,{className:h(`size-2 rounded-full`,u===`active`?`bg-primary animate-pulse`:u===`paused`?`bg-amber-500`:`bg-text-subtle`)}),(0,U.jsx)(`span`,{className:`capitalize`,children:u})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[y?(0,U.jsxs)(v,{size:`sm`,variant:`outline`,onClick:S,className:`h-8`,children:[(0,U.jsx)(p,{className:`mr-1 size-3.5`}),` Stop`]}):u===`paused`?(0,U.jsxs)(v,{size:`sm`,variant:`outline`,onClick:w,className:`h-8`,children:[(0,U.jsx)(o,{className:`mr-1 size-3.5`}),` Resume`]}):null,(0,U.jsx)(`button`,{type:`button`,onClick:()=>P(e=>!e),className:`flex size-8 items-center justify-center rounded-md text-text-subtle hover:bg-surface-elevated hover:text-foreground`,"aria-label":`Toggle roster`,children:(0,U.jsx)(i,{className:`size-4`})})]})]}),(0,U.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:m?(0,U.jsx)(`div`,{className:`flex items-center justify-center py-10`,children:(0,U.jsx)(f,{className:`size-5 animate-spin text-primary`})}):s.length===0?(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center p-4 text-center text-sm text-text-subtle`,children:`Send a message to start the group.`}):(0,U.jsxs)(`div`,{className:`flex flex-col py-2`,children:[s.map(e=>(0,U.jsx)(re,{message:e,colorFor:oe,isLeader:se,onViewFull:M},e.id)),$.length>0&&(0,U.jsxs)(`div`,{className:`px-3 py-1.5 text-xs italic text-text-subtle`,children:[$.join(`, `),` `,$.length===1?`is`:`are`,` typing…`]}),(0,U.jsx)(`div`,{ref:F})]})}),b&&(0,U.jsx)(`div`,{className:`shrink-0 border-t border-border bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:b}),(0,U.jsx)(`div`,{className:`shrink-0 border-t border-border p-2`,children:(0,U.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,U.jsx)(`textarea`,{value:T,onChange:e=>E(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!a&&(e.preventDefault(),ue())},rows:1,placeholder:`Message the group…`,className:`max-h-32 min-h-[44px] flex-1 resize-none rounded-md border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-text-subtle focus:outline-none focus:ring-1 focus:ring-primary`}),(0,U.jsx)(v,{onClick:ue,disabled:!T.trim(),className:`size-11 shrink-0 p-0`,"aria-label":`Send`,children:(0,U.jsx)(c,{className:`size-4`})})]})})]}),a?(0,U.jsxs)(C,{open:N,onClose:()=>P(!1),className:`flex max-h-[72vh] flex-col`,children:[(0,U.jsx)(`div`,{className:`flex h-11 shrink-0 items-center px-4 text-sm font-medium text-foreground`,children:`Members`}),(0,U.jsxs)(`div`,{className:`min-h-0 overflow-y-auto`,children:[R!==null&&(0,U.jsxs)(`label`,{className:`flex items-center gap-2 px-4 py-2 text-xs text-text-secondary`,children:[(0,U.jsx)(`span`,{children:`Reply cap`}),(0,U.jsx)(`input`,{type:`number`,min:1,max:50,value:R,onChange:e=>Y(Number(e.target.value)),className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-xs text-foreground`}),(0,U.jsx)(`span`,{className:`text-text-subtle`,children:`turns/msg`})]}),W&&(0,U.jsx)(`p`,{className:`px-3 py-1 text-xs text-destructive`,children:W}),(0,U.jsx)(ie,{members:I,liveStatus:X,typing:d,busy:B,onAdd:()=>q({member:null}),onEdit:e=>q({member:e}),onRemove:Q})]})]}):N&&(0,U.jsxs)(`div`,{className:`flex w-60 shrink-0 flex-col border-l border-border bg-panel`,children:[(0,U.jsx)(`div`,{className:`flex h-11 shrink-0 items-center border-b border-border px-3 text-sm font-medium text-foreground`,children:`Members`}),(0,U.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[R!==null&&(0,U.jsxs)(`label`,{className:`flex items-center gap-2 px-3 py-2 text-xs text-text-secondary`,children:[(0,U.jsx)(`span`,{children:`Reply cap`}),(0,U.jsx)(`input`,{type:`number`,min:1,max:50,value:R,onChange:e=>Y(Number(e.target.value)),className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-xs text-foreground`}),(0,U.jsx)(`span`,{className:`text-text-subtle`,children:`turns/msg`})]}),W&&(0,U.jsx)(`p`,{className:`px-3 py-1 text-xs text-destructive`,children:W}),(0,U.jsx)(ie,{members:I,liveStatus:X,typing:d,busy:B,onAdd:()=>q({member:null}),onEdit:e=>q({member:e}),onRemove:Q})]})]}),K&&(0,U.jsx)(ae,{open:!0,member:K.member,projectName:r,onSubmit:ce,onClose:()=>q(null)},K.member?.id??`add`),(0,U.jsx)(le,{groupId:t,message:ee,onClose:()=>M(null)})]}):(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center p-4 text-sm text-text-subtle`,children:`No group selected.`})}export{Q as GroupChatTab};