@hienlh/ppm 0.22.8 → 0.22.10

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 (315) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/CLAUDE.md +3 -0
  3. package/assets/skills/ppm/SKILL.md +1 -1
  4. package/assets/skills/ppm/references/http-api.md +11 -1
  5. package/bun.lock +10 -10
  6. package/dist/web/assets/accounts-settings-section-BYz8j7Fq.js +1 -0
  7. package/dist/web/assets/accounts-settings-section-BYz8j7Fq.js.br +0 -0
  8. package/dist/web/assets/accounts-settings-section-BYz8j7Fq.js.gz +0 -0
  9. package/dist/web/assets/{ai-resource-editor-CtvWAxMW.js → ai-resource-editor-K7Q5d1jo.js} +1 -1
  10. package/dist/web/assets/ai-resource-editor-K7Q5d1jo.js.br +0 -0
  11. package/dist/web/assets/ai-resource-editor-K7Q5d1jo.js.gz +0 -0
  12. package/dist/web/assets/ai-settings-section-ChEBg9Be.js +1 -0
  13. package/dist/web/assets/ai-settings-section-CyWSTidP.js +1 -0
  14. package/dist/web/assets/ai-settings-section-CyWSTidP.js.br +0 -0
  15. package/dist/web/assets/ai-settings-section-CyWSTidP.js.gz +0 -0
  16. package/dist/web/assets/{appearance-settings-section-DRWpbQqj.js → appearance-settings-section-DH0DxaKv.js} +1 -1
  17. package/dist/web/assets/appearance-settings-section-DH0DxaKv.js.br +0 -0
  18. package/dist/web/assets/appearance-settings-section-DH0DxaKv.js.gz +0 -0
  19. package/dist/web/assets/{branch-review-tab-B3BMVCdK.js → branch-review-tab-BjPYFJ7n.js} +1 -1
  20. package/dist/web/assets/branch-review-tab-BjPYFJ7n.js.br +0 -0
  21. package/dist/web/assets/branch-review-tab-BjPYFJ7n.js.gz +0 -0
  22. package/dist/web/assets/chat-tab-BFrvTu8k.js +15 -0
  23. package/dist/web/assets/chat-tab-BFrvTu8k.js.br +0 -0
  24. package/dist/web/assets/chat-tab-BFrvTu8k.js.gz +0 -0
  25. package/dist/web/assets/code-editor-CTTLNDyE.js +7 -0
  26. package/dist/web/assets/code-editor-CTTLNDyE.js.br +0 -0
  27. package/dist/web/assets/code-editor-CTTLNDyE.js.gz +0 -0
  28. package/dist/web/assets/{codex-daily-guard-DjLeZ_hE.js → codex-daily-guard-PsB0g8B0.js} +1 -1
  29. package/dist/web/assets/codex-daily-guard-PsB0g8B0.js.br +0 -0
  30. package/dist/web/assets/codex-daily-guard-PsB0g8B0.js.gz +0 -0
  31. package/dist/web/assets/{conflict-editor-Dx8MnO6j.js → conflict-editor-BoLsr5fL.js} +1 -1
  32. package/dist/web/assets/conflict-editor-BoLsr5fL.js.br +0 -0
  33. package/dist/web/assets/conflict-editor-BoLsr5fL.js.gz +0 -0
  34. package/dist/web/assets/{csv-preview-U-Fy9KPT.js → csv-preview-C-7PUd6W.js} +1 -1
  35. package/dist/web/assets/csv-preview-C-7PUd6W.js.br +0 -0
  36. package/dist/web/assets/csv-preview-C-7PUd6W.js.gz +0 -0
  37. package/dist/web/assets/database-viewer-BJgZ-0s2.js +1 -0
  38. package/dist/web/assets/database-viewer-BJgZ-0s2.js.br +0 -0
  39. package/dist/web/assets/database-viewer-BJgZ-0s2.js.gz +0 -0
  40. package/dist/web/assets/{diff-viewer-Bv2J64t8.js → diff-viewer-i0_wCJL2.js} +1 -1
  41. package/dist/web/assets/diff-viewer-i0_wCJL2.js.br +0 -0
  42. package/dist/web/assets/diff-viewer-i0_wCJL2.js.gz +0 -0
  43. package/dist/web/assets/{editor-language-service-C1J6iorq.js → editor-language-service-DDhZjZqB.js} +1 -1
  44. package/dist/web/assets/editor-language-service-DDhZjZqB.js.br +0 -0
  45. package/dist/web/assets/editor-language-service-DDhZjZqB.js.gz +0 -0
  46. package/dist/web/assets/explorer-body-DeIIj3uF.js +2 -0
  47. package/dist/web/assets/explorer-body-DeIIj3uF.js.br +0 -0
  48. package/dist/web/assets/explorer-body-DeIIj3uF.js.gz +0 -0
  49. package/dist/web/assets/{explorer-window-content-CZIwX6cE.js → explorer-window-content-D0i22zgM.js} +1 -1
  50. package/dist/web/assets/explorer-window-content-D0i22zgM.js.br +0 -0
  51. package/dist/web/assets/explorer-window-content-D0i22zgM.js.gz +0 -0
  52. package/dist/web/assets/{extension-manager-section-DGSKz5iJ.js → extension-manager-section-D8TSwRG8.js} +1 -1
  53. package/dist/web/assets/extension-manager-section-D8TSwRG8.js.br +0 -0
  54. package/dist/web/assets/extension-manager-section-D8TSwRG8.js.gz +0 -0
  55. package/dist/web/assets/{extension-webview-FuuXP0Aw.js → extension-webview-CfzJpLQR.js} +1 -1
  56. package/dist/web/assets/extension-webview-CfzJpLQR.js.br +0 -0
  57. package/dist/web/assets/extension-webview-CfzJpLQR.js.gz +0 -0
  58. package/dist/web/assets/{files-settings-section-CGd2yfzl.js → files-settings-section-Ne10pnQU.js} +1 -1
  59. package/dist/web/assets/files-settings-section-Ne10pnQU.js.br +0 -0
  60. package/dist/web/assets/files-settings-section-Ne10pnQU.js.gz +0 -0
  61. package/dist/web/assets/{general-settings-section-CcG10nJq.js → general-settings-section-fbSqpiKY.js} +1 -1
  62. package/dist/web/assets/general-settings-section-fbSqpiKY.js.br +0 -0
  63. package/dist/web/assets/general-settings-section-fbSqpiKY.js.gz +0 -0
  64. package/dist/web/assets/{git-log-panel-B-aSlSlu.js → git-log-panel-9mRsulRQ.js} +1 -1
  65. package/dist/web/assets/git-log-panel-9mRsulRQ.js.br +0 -0
  66. package/dist/web/assets/git-log-panel-9mRsulRQ.js.gz +0 -0
  67. package/dist/web/assets/{glide-data-grid-usB_4gTg.js → glide-data-grid-OhxZFlYg.js} +3 -3
  68. package/dist/web/assets/glide-data-grid-OhxZFlYg.js.br +0 -0
  69. package/dist/web/assets/glide-data-grid-OhxZFlYg.js.gz +0 -0
  70. package/dist/web/assets/group-chat-tab-4DdMvOkG.js +1 -0
  71. package/dist/web/assets/group-chat-tab-4DdMvOkG.js.br +0 -0
  72. package/dist/web/assets/group-chat-tab-4DdMvOkG.js.gz +0 -0
  73. package/dist/web/assets/index-C3v3QRVR.js +52 -0
  74. package/dist/web/assets/index-C3v3QRVR.js.br +0 -0
  75. package/dist/web/assets/index-C3v3QRVR.js.gz +0 -0
  76. package/dist/web/assets/index-aXJy_SvC.css +1 -0
  77. package/dist/web/assets/index-aXJy_SvC.css.br +0 -0
  78. package/dist/web/assets/index-aXJy_SvC.css.gz +0 -0
  79. package/dist/web/assets/{jira-watcher-section-cDMBzIR7.js → jira-watcher-section-PYPh3xGU.js} +1 -1
  80. package/dist/web/assets/jira-watcher-section-PYPh3xGU.js.br +0 -0
  81. package/dist/web/assets/jira-watcher-section-PYPh3xGU.js.gz +0 -0
  82. package/dist/web/assets/keybindings-store-DhAtn4Pd.js +1 -0
  83. package/dist/web/assets/{keyboard-shortcuts-section-CIcdYToP.js → keyboard-shortcuts-section-CM3pNiBR.js} +1 -1
  84. package/dist/web/assets/keyboard-shortcuts-section-CM3pNiBR.js.br +0 -0
  85. package/dist/web/assets/keyboard-shortcuts-section-CM3pNiBR.js.gz +0 -0
  86. package/dist/web/assets/{markdown-renderer-BzX5WysW.js → markdown-renderer-Df1vynCr.js} +1 -1
  87. package/dist/web/assets/{markdown-renderer-KTNg80_A.js → markdown-renderer-DqNZUt1S.js} +3 -3
  88. package/dist/web/assets/markdown-renderer-DqNZUt1S.js.br +0 -0
  89. package/dist/web/assets/{markdown-renderer-KTNg80_A.js.gz → markdown-renderer-DqNZUt1S.js.gz} +0 -0
  90. package/dist/web/assets/{mobile-explorer-sheet-cnwXe-Uz.js → mobile-explorer-sheet-BSuzC_08.js} +1 -1
  91. package/dist/web/assets/mobile-explorer-sheet-BSuzC_08.js.br +0 -0
  92. package/dist/web/assets/mobile-explorer-sheet-BSuzC_08.js.gz +0 -0
  93. package/dist/web/assets/notification-store-DbKwLWwl.js +1 -0
  94. package/dist/web/assets/{ppmbot-settings-section-CDp69sHV.js → ppmbot-settings-section-CY_yAGFM.js} +1 -1
  95. package/dist/web/assets/ppmbot-settings-section-CY_yAGFM.js.br +0 -0
  96. package/dist/web/assets/ppmbot-settings-section-CY_yAGFM.js.gz +0 -0
  97. package/dist/web/assets/{problems-panel-BiE3c-31.js → problems-panel-CJNasbnt.js} +1 -1
  98. package/dist/web/assets/problems-panel-CJNasbnt.js.br +0 -0
  99. package/dist/web/assets/problems-panel-CJNasbnt.js.gz +0 -0
  100. package/dist/web/assets/{process-table-DcEq9HCl.js → process-table-1CN3rBVp.js} +1 -1
  101. package/dist/web/assets/process-table-1CN3rBVp.js.br +0 -0
  102. package/dist/web/assets/process-table-1CN3rBVp.js.gz +0 -0
  103. package/dist/web/assets/{proxy-settings-section-P_ULFRpZ.js → proxy-settings-section-CqcvneFB.js} +1 -1
  104. package/dist/web/assets/proxy-settings-section-CqcvneFB.js.br +0 -0
  105. package/dist/web/assets/proxy-settings-section-CqcvneFB.js.gz +0 -0
  106. package/dist/web/assets/{remote-desktop-clipboard-notice-COjdmADR.js → remote-desktop-clipboard-notice-BysFGa_4.js} +1 -1
  107. package/dist/web/assets/remote-desktop-clipboard-notice-BysFGa_4.js.br +0 -0
  108. package/dist/web/assets/remote-desktop-clipboard-notice-BysFGa_4.js.gz +0 -0
  109. package/dist/web/assets/{remote-desktop-mobile-sheet-lCU5l2w4.js → remote-desktop-mobile-sheet-DLW_0HDz.js} +2 -2
  110. package/dist/web/assets/remote-desktop-mobile-sheet-DLW_0HDz.js.br +0 -0
  111. package/dist/web/assets/remote-desktop-mobile-sheet-DLW_0HDz.js.gz +0 -0
  112. package/dist/web/assets/{remote-desktop-mobile-view-Bo-wgZPC.js → remote-desktop-mobile-view-Df6SfRtI.js} +1 -1
  113. package/dist/web/assets/remote-desktop-mobile-view-Df6SfRtI.js.br +0 -0
  114. package/dist/web/assets/remote-desktop-mobile-view-Df6SfRtI.js.gz +0 -0
  115. package/dist/web/assets/{remote-desktop-readiness-gate-Cqz8kqWG.js → remote-desktop-readiness-gate-LugXhLJ3.js} +1 -1
  116. package/dist/web/assets/remote-desktop-readiness-gate-LugXhLJ3.js.br +0 -0
  117. package/dist/web/assets/remote-desktop-readiness-gate-LugXhLJ3.js.gz +0 -0
  118. package/dist/web/assets/remote-desktop-window-content-k-pIAIDq.js +1 -0
  119. package/dist/web/assets/remote-desktop-window-content-k-pIAIDq.js.br +0 -0
  120. package/dist/web/assets/remote-desktop-window-content-k-pIAIDq.js.gz +0 -0
  121. package/dist/web/assets/{schedules-settings-section-DHs84DvG.js → schedules-settings-section-ByCm7IOg.js} +1 -1
  122. package/dist/web/assets/schedules-settings-section-ByCm7IOg.js.br +0 -0
  123. package/dist/web/assets/schedules-settings-section-ByCm7IOg.js.gz +0 -0
  124. package/dist/web/assets/{settings-body-CLt6iutX.js → settings-body-Dwt_rUSa.js} +2 -2
  125. package/dist/web/assets/settings-body-Dwt_rUSa.js.br +0 -0
  126. package/dist/web/assets/settings-body-Dwt_rUSa.js.gz +0 -0
  127. package/dist/web/assets/settings-store-m6qOXoy4.js +2 -0
  128. package/dist/web/assets/settings-store-m6qOXoy4.js.br +0 -0
  129. package/dist/web/assets/settings-store-m6qOXoy4.js.gz +0 -0
  130. package/dist/web/assets/{settings-tab-DjOxh-vW.js → settings-tab-Dvj9UfzL.js} +1 -1
  131. package/dist/web/assets/{settings-window-content-BxzSerga.js → settings-window-content-Di-eONmj.js} +1 -1
  132. package/dist/web/assets/{sql-query-editor-4Okd-7ss.js → sql-query-editor-DgwwJxwJ.js} +1 -1
  133. package/dist/web/assets/sql-query-editor-DgwwJxwJ.js.br +0 -0
  134. package/dist/web/assets/sql-query-editor-DgwwJxwJ.js.gz +0 -0
  135. package/dist/web/assets/{sqlite-viewer-BqDUckIJ.js → sqlite-viewer-gxiJZ3kk.js} +1 -1
  136. package/dist/web/assets/sqlite-viewer-gxiJZ3kk.js.br +0 -0
  137. package/dist/web/assets/sqlite-viewer-gxiJZ3kk.js.gz +0 -0
  138. package/dist/web/assets/{system-monitor-body-Ssmt-r5H.js → system-monitor-body-BJrVntEe.js} +2 -2
  139. package/dist/web/assets/system-monitor-body-BJrVntEe.js.br +0 -0
  140. package/dist/web/assets/system-monitor-body-BJrVntEe.js.gz +0 -0
  141. package/dist/web/assets/{system-monitor-tab-DNe62hWL.js → system-monitor-tab-Uz9A5I07.js} +1 -1
  142. package/dist/web/assets/{system-monitor-window-content-C6vnW_pQ.js → system-monitor-window-content-9cKlCVN0.js} +1 -1
  143. package/dist/web/assets/{tab-host-window-content--BVyPR1f.js → tab-host-window-content-D3M-lRyv.js} +1 -1
  144. package/dist/web/assets/tab-host-window-content-D3M-lRyv.js.br +0 -0
  145. package/dist/web/assets/tab-host-window-content-D3M-lRyv.js.gz +0 -0
  146. package/dist/web/assets/{team-member-sheet-CE2eHuFX.js → team-member-sheet-D66xVR6G.js} +2 -2
  147. package/dist/web/assets/team-member-sheet-D66xVR6G.js.br +0 -0
  148. package/dist/web/assets/team-member-sheet-D66xVR6G.js.gz +0 -0
  149. package/dist/web/assets/{team-member-window-content-B1sg0R4H.js → team-member-window-content-D6SxpWVr.js} +1 -1
  150. package/dist/web/assets/team-member-window-content-D6SxpWVr.js.br +0 -0
  151. package/dist/web/assets/team-member-window-content-D6SxpWVr.js.gz +0 -0
  152. package/dist/web/assets/{terminal-tab-BrdS4bAy.js → terminal-tab-DUfOyHxp.js} +3 -3
  153. package/dist/web/assets/terminal-tab-DUfOyHxp.js.br +0 -0
  154. package/dist/web/assets/terminal-tab-DUfOyHxp.js.gz +0 -0
  155. package/dist/web/assets/{tool-cards-DzYJVhjl.js → tool-cards-O9N-oJuB.js} +3 -3
  156. package/dist/web/assets/tool-cards-O9N-oJuB.js.br +0 -0
  157. package/dist/web/assets/tool-cards-O9N-oJuB.js.gz +0 -0
  158. package/dist/web/assets/{use-inline-blame-CKu-Sd-l.js → use-inline-blame-B40AsaN2.js} +1 -1
  159. package/dist/web/assets/use-inline-blame-B40AsaN2.js.br +0 -0
  160. package/dist/web/assets/use-inline-blame-B40AsaN2.js.gz +0 -0
  161. package/dist/web/assets/{use-lsp-BaG0NUXY.js → use-lsp-B30TcKvt.js} +1 -1
  162. package/dist/web/assets/use-lsp-B30TcKvt.js.br +0 -0
  163. package/dist/web/assets/use-lsp-B30TcKvt.js.gz +0 -0
  164. package/dist/web/assets/{use-monaco-theme-DvWcXiCH.js → use-monaco-theme-DGi9_j5M.js} +1 -1
  165. package/dist/web/assets/{use-websocket-Dj0e6N6t.js → use-websocket-DdGdvJc5.js} +1 -1
  166. package/dist/web/assets/video-preview-RS5jKlrC.js +1 -0
  167. package/dist/web/assets/video-preview-RS5jKlrC.js.br +0 -0
  168. package/dist/web/assets/video-preview-RS5jKlrC.js.gz +0 -0
  169. package/dist/web/index.html +3 -3
  170. package/dist/web/index.html.br +0 -0
  171. package/dist/web/index.html.gz +0 -0
  172. package/dist/web/sw.js +1 -1
  173. package/dist/web/sw.js.br +0 -0
  174. package/dist/web/sw.js.gz +0 -0
  175. package/docs/codebase-summary.md +1 -1
  176. package/docs/project-roadmap.md +1 -1
  177. package/package.json +2 -2
  178. package/src/providers/claude-agent-sdk.ts +87 -8
  179. package/src/server/index.ts +9 -0
  180. package/src/server/routes/mcp-auth.ts +117 -0
  181. package/src/server/routes/settings.ts +2 -0
  182. package/src/server/ws/chat-mcp-sign-in-sync.ts +58 -0
  183. package/src/server/ws/chat.ts +35 -1
  184. package/src/services/mcp-oauth/mcp-control-query.ts +58 -0
  185. package/src/services/mcp-oauth/mcp-oauth-flows.ts +271 -0
  186. package/src/services/mcp-oauth/mcp-oauth-redirect.ts +68 -0
  187. package/src/services/mcp-oauth/mcp-status-probe.ts +76 -0
  188. package/src/web/components/ai-resources/ai-resources-panel.tsx +4 -0
  189. package/src/web/components/chat/chat-tab.tsx +5 -0
  190. package/src/web/components/mcp-auth/claude-ai-connector.ts +11 -0
  191. package/src/web/components/mcp-auth/mcp-server-name.ts +10 -0
  192. package/src/web/components/mcp-auth/mcp-sign-in-bar.tsx +74 -0
  193. package/src/web/components/mcp-auth/mcp-sign-in-dialog.tsx +196 -0
  194. package/src/web/components/mcp-auth/mcp-sign-in-list.tsx +110 -0
  195. package/src/web/components/mcp-auth/use-mcp-sign-in-flow.ts +120 -0
  196. package/src/web/components/settings/ai-settings-section.tsx +11 -0
  197. package/src/web/hooks/use-chat.ts +14 -0
  198. package/src/web/lib/api-mcp-auth.ts +54 -0
  199. package/src/web/stores/settings-store.ts +34 -0
  200. package/dist/web/assets/accounts-settings-section-Dk9qWWTy.js +0 -1
  201. package/dist/web/assets/accounts-settings-section-Dk9qWWTy.js.br +0 -0
  202. package/dist/web/assets/accounts-settings-section-Dk9qWWTy.js.gz +0 -0
  203. package/dist/web/assets/ai-resource-editor-CtvWAxMW.js.br +0 -0
  204. package/dist/web/assets/ai-resource-editor-CtvWAxMW.js.gz +0 -0
  205. package/dist/web/assets/ai-settings-section-BxN-zFfm.js +0 -1
  206. package/dist/web/assets/ai-settings-section-CfI9nNSa.js +0 -1
  207. package/dist/web/assets/ai-settings-section-CfI9nNSa.js.br +0 -0
  208. package/dist/web/assets/ai-settings-section-CfI9nNSa.js.gz +0 -0
  209. package/dist/web/assets/appearance-settings-section-DRWpbQqj.js.br +0 -0
  210. package/dist/web/assets/appearance-settings-section-DRWpbQqj.js.gz +0 -0
  211. package/dist/web/assets/branch-review-tab-B3BMVCdK.js.br +0 -0
  212. package/dist/web/assets/branch-review-tab-B3BMVCdK.js.gz +0 -0
  213. package/dist/web/assets/chat-tab-B0g-TzDa.js +0 -15
  214. package/dist/web/assets/chat-tab-B0g-TzDa.js.br +0 -0
  215. package/dist/web/assets/chat-tab-B0g-TzDa.js.gz +0 -0
  216. package/dist/web/assets/code-editor-DXra_Rnt.js +0 -7
  217. package/dist/web/assets/code-editor-DXra_Rnt.js.br +0 -0
  218. package/dist/web/assets/code-editor-DXra_Rnt.js.gz +0 -0
  219. package/dist/web/assets/codex-daily-guard-DjLeZ_hE.js.br +0 -0
  220. package/dist/web/assets/codex-daily-guard-DjLeZ_hE.js.gz +0 -0
  221. package/dist/web/assets/conflict-editor-Dx8MnO6j.js.br +0 -0
  222. package/dist/web/assets/conflict-editor-Dx8MnO6j.js.gz +0 -0
  223. package/dist/web/assets/csv-preview-U-Fy9KPT.js.br +0 -0
  224. package/dist/web/assets/csv-preview-U-Fy9KPT.js.gz +0 -0
  225. package/dist/web/assets/database-viewer-v5S-zzB6.js +0 -1
  226. package/dist/web/assets/database-viewer-v5S-zzB6.js.br +0 -0
  227. package/dist/web/assets/database-viewer-v5S-zzB6.js.gz +0 -0
  228. package/dist/web/assets/diff-viewer-Bv2J64t8.js.br +0 -0
  229. package/dist/web/assets/diff-viewer-Bv2J64t8.js.gz +0 -0
  230. package/dist/web/assets/editor-language-service-C1J6iorq.js.br +0 -0
  231. package/dist/web/assets/editor-language-service-C1J6iorq.js.gz +0 -0
  232. package/dist/web/assets/explorer-body-BpTOY2kH.js +0 -2
  233. package/dist/web/assets/explorer-body-BpTOY2kH.js.br +0 -0
  234. package/dist/web/assets/explorer-body-BpTOY2kH.js.gz +0 -0
  235. package/dist/web/assets/explorer-window-content-CZIwX6cE.js.br +0 -0
  236. package/dist/web/assets/explorer-window-content-CZIwX6cE.js.gz +0 -0
  237. package/dist/web/assets/extension-manager-section-DGSKz5iJ.js.br +0 -0
  238. package/dist/web/assets/extension-manager-section-DGSKz5iJ.js.gz +0 -0
  239. package/dist/web/assets/extension-webview-FuuXP0Aw.js.br +0 -0
  240. package/dist/web/assets/extension-webview-FuuXP0Aw.js.gz +0 -0
  241. package/dist/web/assets/files-settings-section-CGd2yfzl.js.br +0 -0
  242. package/dist/web/assets/files-settings-section-CGd2yfzl.js.gz +0 -0
  243. package/dist/web/assets/general-settings-section-CcG10nJq.js.br +0 -0
  244. package/dist/web/assets/general-settings-section-CcG10nJq.js.gz +0 -0
  245. package/dist/web/assets/git-log-panel-B-aSlSlu.js.br +0 -0
  246. package/dist/web/assets/git-log-panel-B-aSlSlu.js.gz +0 -0
  247. package/dist/web/assets/glide-data-grid-usB_4gTg.js.br +0 -0
  248. package/dist/web/assets/glide-data-grid-usB_4gTg.js.gz +0 -0
  249. package/dist/web/assets/group-chat-tab-BAMi_dhb.js +0 -1
  250. package/dist/web/assets/group-chat-tab-BAMi_dhb.js.br +0 -0
  251. package/dist/web/assets/group-chat-tab-BAMi_dhb.js.gz +0 -0
  252. package/dist/web/assets/index-CoTvom0K.js +0 -52
  253. package/dist/web/assets/index-CoTvom0K.js.br +0 -0
  254. package/dist/web/assets/index-CoTvom0K.js.gz +0 -0
  255. package/dist/web/assets/index-DLn9-Lrb.css +0 -1
  256. package/dist/web/assets/index-DLn9-Lrb.css.br +0 -0
  257. package/dist/web/assets/index-DLn9-Lrb.css.gz +0 -0
  258. package/dist/web/assets/jira-watcher-section-cDMBzIR7.js.br +0 -3
  259. package/dist/web/assets/jira-watcher-section-cDMBzIR7.js.gz +0 -0
  260. package/dist/web/assets/keybindings-store-D7nwnInl.js +0 -1
  261. package/dist/web/assets/keyboard-shortcuts-section-CIcdYToP.js.br +0 -0
  262. package/dist/web/assets/keyboard-shortcuts-section-CIcdYToP.js.gz +0 -0
  263. package/dist/web/assets/markdown-renderer-KTNg80_A.js.br +0 -0
  264. package/dist/web/assets/mobile-explorer-sheet-cnwXe-Uz.js.br +0 -0
  265. package/dist/web/assets/mobile-explorer-sheet-cnwXe-Uz.js.gz +0 -0
  266. package/dist/web/assets/notification-store-Bayjh6Js.js +0 -1
  267. package/dist/web/assets/ppmbot-settings-section-CDp69sHV.js.br +0 -0
  268. package/dist/web/assets/ppmbot-settings-section-CDp69sHV.js.gz +0 -0
  269. package/dist/web/assets/problems-panel-BiE3c-31.js.br +0 -0
  270. package/dist/web/assets/problems-panel-BiE3c-31.js.gz +0 -0
  271. package/dist/web/assets/process-table-DcEq9HCl.js.br +0 -0
  272. package/dist/web/assets/process-table-DcEq9HCl.js.gz +0 -0
  273. package/dist/web/assets/proxy-settings-section-P_ULFRpZ.js.br +0 -0
  274. package/dist/web/assets/proxy-settings-section-P_ULFRpZ.js.gz +0 -0
  275. package/dist/web/assets/remote-desktop-clipboard-notice-COjdmADR.js.br +0 -0
  276. package/dist/web/assets/remote-desktop-clipboard-notice-COjdmADR.js.gz +0 -0
  277. package/dist/web/assets/remote-desktop-mobile-sheet-lCU5l2w4.js.br +0 -0
  278. package/dist/web/assets/remote-desktop-mobile-sheet-lCU5l2w4.js.gz +0 -0
  279. package/dist/web/assets/remote-desktop-mobile-view-Bo-wgZPC.js.br +0 -0
  280. package/dist/web/assets/remote-desktop-mobile-view-Bo-wgZPC.js.gz +0 -0
  281. package/dist/web/assets/remote-desktop-readiness-gate-Cqz8kqWG.js.br +0 -0
  282. package/dist/web/assets/remote-desktop-readiness-gate-Cqz8kqWG.js.gz +0 -0
  283. package/dist/web/assets/remote-desktop-window-content-R-aRW07B.js +0 -1
  284. package/dist/web/assets/remote-desktop-window-content-R-aRW07B.js.br +0 -0
  285. package/dist/web/assets/remote-desktop-window-content-R-aRW07B.js.gz +0 -0
  286. package/dist/web/assets/schedules-settings-section-DHs84DvG.js.br +0 -0
  287. package/dist/web/assets/schedules-settings-section-DHs84DvG.js.gz +0 -0
  288. package/dist/web/assets/settings-body-CLt6iutX.js.br +0 -0
  289. package/dist/web/assets/settings-body-CLt6iutX.js.gz +0 -0
  290. package/dist/web/assets/settings-store-tWrnlyEW.js +0 -2
  291. package/dist/web/assets/settings-store-tWrnlyEW.js.br +0 -0
  292. package/dist/web/assets/settings-store-tWrnlyEW.js.gz +0 -0
  293. package/dist/web/assets/sql-query-editor-4Okd-7ss.js.br +0 -0
  294. package/dist/web/assets/sql-query-editor-4Okd-7ss.js.gz +0 -0
  295. package/dist/web/assets/sqlite-viewer-BqDUckIJ.js.br +0 -0
  296. package/dist/web/assets/sqlite-viewer-BqDUckIJ.js.gz +0 -0
  297. package/dist/web/assets/system-monitor-body-Ssmt-r5H.js.br +0 -0
  298. package/dist/web/assets/system-monitor-body-Ssmt-r5H.js.gz +0 -0
  299. package/dist/web/assets/tab-host-window-content--BVyPR1f.js.br +0 -0
  300. package/dist/web/assets/tab-host-window-content--BVyPR1f.js.gz +0 -0
  301. package/dist/web/assets/team-member-sheet-CE2eHuFX.js.br +0 -0
  302. package/dist/web/assets/team-member-sheet-CE2eHuFX.js.gz +0 -0
  303. package/dist/web/assets/team-member-window-content-B1sg0R4H.js.br +0 -0
  304. package/dist/web/assets/team-member-window-content-B1sg0R4H.js.gz +0 -0
  305. package/dist/web/assets/terminal-tab-BrdS4bAy.js.br +0 -0
  306. package/dist/web/assets/terminal-tab-BrdS4bAy.js.gz +0 -0
  307. package/dist/web/assets/tool-cards-DzYJVhjl.js.br +0 -0
  308. package/dist/web/assets/tool-cards-DzYJVhjl.js.gz +0 -0
  309. package/dist/web/assets/use-inline-blame-CKu-Sd-l.js.br +0 -0
  310. package/dist/web/assets/use-inline-blame-CKu-Sd-l.js.gz +0 -0
  311. package/dist/web/assets/use-lsp-BaG0NUXY.js.br +0 -0
  312. package/dist/web/assets/use-lsp-BaG0NUXY.js.gz +0 -0
  313. package/dist/web/assets/video-preview-ZyRR49Lr.js +0 -1
  314. package/dist/web/assets/video-preview-ZyRR49Lr.js.br +0 -0
  315. package/dist/web/assets/video-preview-ZyRR49Lr.js.gz +0 -0
@@ -0,0 +1 @@
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Cn as r,En as i,Mt as a,Wt as o,er as s,mr as c,qn as l,sr as u,ut as d,wn as f,z as p}from"./icons-DQjqk0lJ.js";import"./api-client-Jn3njtNw.js";import{_ as m,a as h,c as g,d as _,f as v,g as y,i as b,l as x,m as S,n as C,o as ee,p as w,r as te,s as T,t as E,u as D}from"./settings-store-m6qOXoy4.js";import"./vendor-mermaid-D6lgjvVE.js";import{n as ne}from"./utils-Bmf_8h7Y.js";import"./portal-container-context-BarKmT4S.js";import"./panel-store-D20Zuf3i.js";import{t as O}from"./window-store-UC1jJeLM.js";import{t as k}from"./button-B9CTrsEf.js";import{a as re,i as ie,n as A,o as j,r as M,t as N}from"./dialog-B84_DJQ8.js";import"./ws-auth-CaxV807E.js";import{$t as P,D as ae,Gt as F,Jt as I,Kt as L,Qt as R,Xt as z,Yt as B,Zt as V,en as H,nn as oe,qt as se,tn as U}from"./index-C3v3QRVR.js";import"./run-in-terminal-BFR70TLU.js";import{n as W,t as G}from"./remote-desktop-readiness-gate-LugXhLJ3.js";import{a as K,c as ce,h as q,i as le,l as ue,m as J,n as de,o as Y,p as fe,r as pe,s as me,t as he,u as X}from"./remote-desktop-clipboard-notice-BysFGa_4.js";var Z=e(t(),1);function ge(e,t,n,r){let i=(0,Z.useCallback)((n,r,i,a)=>{let o=e.current;if(!o)return;let{xFrac:s,yFrac:c}=X(n,r,o.getBoundingClientRect());t({type:`pointer`,xFrac:s,yFrac:c,button:i,down:a})},[e,t]);(0,Z.useEffect)(()=>{let a=e.current;if(!a||!n)return;let o=e=>e===0?`left`:e===2?`right`:null,s=()=>t({type:`releaseAll`}),c=null,l=0,u=()=>{l=0,c&&=(i(c.x,c.y,null,null),null)},d=()=>{l&&=(cancelAnimationFrame(l),0),c&&=(i(c.x,c.y,null,null),null)},f=e=>{e.preventDefault(),a.setPointerCapture(e.pointerId),a.focus(),d(),i(e.clientX,e.clientY,o(e.button),!0)},p=e=>{c={x:e.clientX,y:e.clientY},l||=requestAnimationFrame(u)},m=e=>{d(),i(e.clientX,e.clientY,o(e.button),!1)},h=e=>e.preventDefault(),g=!1,_=e=>{if(r&&q(e)){g=e.shiftKey;return}e.preventDefault(),t({type:`key`,code:e.code,down:!0}),r&&J(e)&&r.onCopyCombo()},v=e=>{r&&q(e)||(e.preventDefault(),t({type:`key`,code:e.code,down:!1}))},y=e=>{e.preventDefault();let t=e.clipboardData?.getData(`text/plain`);t&&r?.onPasteText(t,g),g=!1},b=()=>{document.hidden&&s()};return a.tabIndex=0,a.addEventListener(`pointerdown`,f),a.addEventListener(`pointermove`,p),a.addEventListener(`pointerup`,m),a.addEventListener(`contextmenu`,h),a.addEventListener(`keydown`,_),a.addEventListener(`keyup`,v),a.addEventListener(`paste`,y),a.addEventListener(`blur`,s),document.addEventListener(`visibilitychange`,b),()=>{l&&cancelAnimationFrame(l),a.removeEventListener(`pointerdown`,f),a.removeEventListener(`pointermove`,p),a.removeEventListener(`pointerup`,m),a.removeEventListener(`contextmenu`,h),a.removeEventListener(`keydown`,_),a.removeEventListener(`keyup`,v),a.removeEventListener(`blur`,s),document.removeEventListener(`visibilitychange`,b)}},[e,n,i,t,r])}var Q={h264_nvenc:`NVIDIA NVENC`,h264_qsv:`Intel QuickSync`,h264_vaapi:`VAAPI (GPU)`,h264_amf:`AMD AMF`,h264_videotoolbox:`Apple VideoToolbox`,libx264:`Software (x264)`};function _e(e){return Object.hasOwn(Q,e)?Q[e]:e}var $=n(),ve=`flex size-7 shrink-0 items-center justify-center rounded bg-black/40 text-white/70 outline-none hover:bg-black/60 hover:text-white data-[state=open]:bg-black/70 data-[state=open]:text-white`;function ye({displays:e,currentDisplayId:t,onSelectDisplay:n,quality:r,qualityChoice:i,onSetQuality:s,onOpenCustomQuality:l,codecs:h,codec:g,onSetCodec:_,hostModes:v,hostModeId:x,hostOriginalModeId:S,onSetHostMode:C,canResizeHost:ee,resolutionError:w,viewStyle:T,customScale:E,onSetViewStyle:D,onSetCustomScale:O,showCursor:k,onSetShowCursor:re,audioOn:ie,audioReason:A,onSetAudioOn:j,privacyOn:M,privacyReason:N,privacyCanBlank:ae,onSetPrivacyOn:W,recording:G,recordingElapsedSec:K,recordingSupported:q,onToggleRecording:le,onScreenshot:J,clipboardEnabled:de,onSetClipboardEnabled:fe,statsVisible:pe,onToggleStats:he}){let X=(0,Z.useMemo)(()=>ce(v),[v]),ge=(0,Z.useMemo)(()=>me(),[]),Q=(0,Z.useMemo)(()=>Y(v,ge,x),[v,ge,x]),ye=!!(S&&S!==x),Se=t??e.find(e=>e.primary)?.id??e[0]?.id??``;return(0,$.jsxs)(`div`,{className:`absolute right-1 top-1 z-40 flex items-center gap-1`,"data-testid":`remote-desktop-toolbar`,children:[e.length>1&&(0,$.jsxs)(F,{children:[(0,$.jsx)(oe,{className:ve,"aria-label":`Display`,title:`Display`,children:(0,$.jsx)(f,{className:`size-3.5`})}),(0,$.jsxs)(se,{align:`end`,className:`w-64`,children:[(0,$.jsx)(B,{children:`Display`}),(0,$.jsx)(z,{value:Se,onValueChange:n,children:e.map(e=>(0,$.jsxs)(V,{value:e.id,"data-testid":`remote-desktop-display-${e.id}`,children:[e.label,e.primary?` (main)`:``,` · `,e.width,`×`,e.height]},e.id))})]})]}),(0,$.jsxs)(F,{children:[(0,$.jsx)(oe,{className:ve,"aria-label":`Display settings`,title:`Display settings`,"data-testid":`remote-desktop-settings-trigger`,children:(0,$.jsx)(u,{className:`size-3.5`})}),(0,$.jsxs)(se,{align:`end`,className:`w-64`,children:[(0,$.jsx)(B,{children:`Scale`}),(0,$.jsx)(z,{value:T,onValueChange:e=>D(e),children:b.map(e=>(0,$.jsx)(V,{value:e,"data-testid":`remote-desktop-view-style-${e}`,children:te[e]},e))}),T===`custom`&&(0,$.jsx)(xe,{scale:E,onSet:O}),(0,$.jsx)(R,{}),(0,$.jsxs)(P,{children:[(0,$.jsxs)(U,{"data-testid":`remote-desktop-quality-submenu`,children:[`Image quality`,r.held<1&&(0,$.jsxs)(`span`,{className:`ml-1.5 text-[10px] opacity-60`,"data-testid":`remote-desktop-quality-held`,children:[Math.round(r.held*100),`% — link limited`]})]}),(0,$.jsx)(H,{className:`w-56`,children:(0,$.jsxs)(z,{value:i,onValueChange:e=>e===`custom`?l():s(e),children:[m.map(e=>(0,$.jsx)(V,{value:e,"data-testid":`remote-desktop-quality-${e}`,children:y[e].label},e)),(0,$.jsx)(V,{value:`custom`,"data-testid":`remote-desktop-quality-custom`,children:`Custom…`})]})})]}),h.length>1&&(0,$.jsxs)(P,{children:[(0,$.jsx)(U,{"data-testid":`remote-desktop-codec-submenu`,children:`Codec`}),(0,$.jsx)(H,{className:`w-56`,children:(0,$.jsxs)(z,{value:g??`auto`,onValueChange:e=>_(e===`auto`?null:e),children:[(0,$.jsxs)(V,{value:`auto`,children:[`Auto · `,_e(h[0])]}),h.map(e=>(0,$.jsx)(V,{value:e,"data-testid":`remote-desktop-codec-${e}`,children:_e(e)},e))]})})]}),ee&&X.length>1&&(0,$.jsxs)(P,{children:[(0,$.jsx)(U,{"data-testid":`remote-desktop-resolution-submenu`,children:`Resolution`}),(0,$.jsxs)(H,{className:`max-h-80 w-56 overflow-y-auto`,children:[ye&&S&&(0,$.jsx)(I,{onSelect:()=>C(S),"data-testid":`remote-desktop-resolution-original`,children:`Original`}),Q&&(0,$.jsxs)(I,{onSelect:()=>C(Q.id),"data-testid":`remote-desktop-resolution-fit-local`,children:[`Fit local `,Q.width,`×`,Q.height]}),(ye||Q)&&(0,$.jsx)(R,{}),(0,$.jsx)(z,{value:x??X.find(e=>e.current)?.id??``,onValueChange:C,children:X.map(e=>(0,$.jsxs)(V,{value:e.id,"data-testid":`remote-desktop-resolution-${e.width}x${e.height}`,children:[ue(e),e.preferred&&(0,$.jsx)(`span`,{className:`ml-1.5 text-[10px] opacity-60`,children:`native`})]},e.id))}),w&&(0,$.jsx)(`div`,{className:`px-2 py-1.5 text-[10px] leading-tight text-destructive`,children:w})]})]}),(0,$.jsx)(R,{}),(0,$.jsx)(L,{checked:k,onCheckedChange:re,"data-testid":`remote-desktop-show-cursor`,children:`Show remote cursor`}),(0,$.jsx)(L,{checked:de,onCheckedChange:fe,"data-testid":`remote-desktop-clipboard-toggle`,children:`Sync clipboard`}),(0,$.jsx)(L,{checked:ie,disabled:A!==null,onCheckedChange:j,"data-testid":`remote-desktop-audio-toggle`,children:(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{children:`Play host audio`}),A&&(0,$.jsx)(`span`,{className:`text-[10px] leading-tight text-muted-foreground`,children:A})]})}),(0,$.jsx)(R,{}),(0,$.jsx)(L,{checked:M,disabled:N!==null&&!M,onCheckedChange:W,"data-testid":`remote-desktop-privacy-toggle`,children:(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{children:`Privacy mode`}),(0,$.jsx)(`span`,{className:`text-[10px] leading-tight text-muted-foreground`,children:N??(ae?`Blocks the host's keyboard and mouse, and blanks its screen`:`Blocks the host's keyboard and mouse (its screen stays on)`)})]})}),(0,$.jsx)(R,{}),(0,$.jsxs)(I,{onSelect:J,"data-testid":`remote-desktop-screenshot`,children:[(0,$.jsx)(o,{className:`size-3.5`}),` Save screenshot`]}),q&&(0,$.jsx)(I,{onSelect:le,"data-testid":`remote-desktop-record`,children:G?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(c,{className:`size-3.5 text-red-500`}),` Stop recording · `,be(K)]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(p,{className:`size-3.5`}),` Start recording`]})})]})]}),M&&(0,$.jsxs)(`button`,{type:`button`,onClick:()=>W(!1),title:`Privacy mode is on — click to release the host`,"aria-label":`Turn privacy mode off`,className:`flex h-7 shrink-0 items-center gap-1 rounded bg-amber-500/85 px-1.5 text-[10px] font-medium text-black hover:bg-amber-400`,"data-testid":`remote-desktop-privacy-indicator`,children:[(0,$.jsx)(d,{className:`size-3`}),` Host locked`]}),G&&(0,$.jsxs)(`button`,{type:`button`,onClick:le,title:`Stop recording`,"aria-label":`Stop recording`,className:`flex h-7 shrink-0 items-center gap-1 rounded bg-red-600/80 px-1.5 text-[10px] font-medium tabular-nums text-white hover:bg-red-600`,"data-testid":`remote-desktop-recording-indicator`,children:[(0,$.jsx)(`span`,{className:`size-1.5 animate-pulse rounded-full bg-white`}),be(K)]}),(0,$.jsx)(`button`,{type:`button`,onClick:he,"aria-label":`Toggle stats overlay`,"aria-pressed":pe,title:`Quality monitor`,className:ne(ve,pe&&`bg-primary/70 text-primary-foreground hover:bg-primary/80`),children:(0,$.jsx)(a,{className:`size-3.5`})})]})}function be(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=String(e%60).padStart(2,`0`);return t>0?`${t}:${String(n).padStart(2,`0`)}:${r}`:`${n}:${r}`}function xe({scale:e,onSet:t}){let[n,i]=(0,Z.useState)(null),a=(0,Z.useRef)(null),o=T(Math.round(ee(e)*100)),s=n??o,c=g(s);(0,Z.useEffect)(()=>()=>{a.current&&clearTimeout(a.current)},[]);let u=e=>{i(e),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>{i(null),t(e/100)},300)},d=e=>t=>{t.preventDefault(),u(T(s+e*1))},f=`flex size-6 shrink-0 items-center justify-center rounded hover:bg-accent disabled:opacity-40`;return(0,$.jsx)(`div`,{className:`px-2 py-1.5`,"data-testid":`remote-desktop-zoom-row`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(`button`,{type:`button`,className:f,onClick:d(-1),disabled:s<=5,"aria-label":`Decrease`,children:(0,$.jsx)(r,{className:`size-3.5`})}),(0,$.jsxs)(`span`,{className:`relative flex-1 py-2.5`,children:[(0,$.jsx)(`input`,{type:`range`,min:0,max:1,step:1/(C-5),value:c,"aria-label":`Scale`,"aria-valuetext":`${s}%`,"data-testid":`remote-desktop-zoom-slider`,onKeyDown:e=>e.stopPropagation(),onChange:e=>u(x(D(Number(e.target.value)))),className:`h-1 w-full cursor-pointer appearance-none rounded bg-accent accent-primary`}),(0,$.jsxs)(`span`,{className:`pointer-events-none absolute top-0 -translate-x-1/2 rounded bg-primary px-1.5 text-[10px] leading-4 tabular-nums text-primary-foreground`,style:{left:`${c*100}%`},"data-testid":`remote-desktop-zoom-value`,children:[s,`%`]})]}),(0,$.jsx)(`button`,{type:`button`,className:f,onClick:d(1),disabled:s>=C,"aria-label":`Increase`,children:(0,$.jsx)(l,{className:`size-3.5`})})]})})}var Se=400;function Ce({open:e,onOpenChange:t,percent:n,fps:r,more:i,onSetMore:a,onCommit:o,frameSize:s}){let[c,l]=(0,Z.useState)(n),[u,d]=(0,Z.useState)(r),f=(0,Z.useRef)(null);(0,Z.useEffect)(()=>{e&&(l(n),d(r))},[e,n,r]),(0,Z.useEffect)(()=>()=>{f.current&&clearTimeout(f.current)},[]);let p=i?_:100,m=(e,t)=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>o(e,t),Se)},h=e=>{let t=w(e,i);l(t),m(t,u)},g=e=>{let t=v(e);d(t),m(c,t)},y=e=>{a(e);let t=w(c,e);t!==c&&(l(t),m(t,u))},b=S(c,s.width,s.height);return(0,$.jsx)(N,{open:e,onOpenChange:t,children:(0,$.jsxs)(A,{className:`sm:max-w-md`,"data-testid":`remote-desktop-custom-quality-dialog`,children:[(0,$.jsxs)(re,{children:[(0,$.jsx)(j,{children:`Custom image quality`}),(0,$.jsx)(M,{children:s.width>0?`${c}% of the base rate for ${s.width}×${s.height} — about ${(b/1e3).toFixed(1)} Mbit/s`:`Waiting for the first frame`})]}),(0,$.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`input`,{type:`range`,min:10,max:p,step:1,value:Math.min(c,p),onChange:e=>h(Number(e.target.value)),"aria-label":`Bitrate`,"data-testid":`remote-desktop-custom-bitrate`,className:`h-1 min-w-0 flex-1 cursor-pointer appearance-none rounded bg-accent accent-primary`}),(0,$.jsxs)(`span`,{className:`w-14 text-right text-xs tabular-nums`,children:[c,`%`]}),(0,$.jsx)(`span`,{className:`w-14 text-xs text-muted-foreground`,children:`Bitrate`}),(0,$.jsxs)(`label`,{className:`flex shrink-0 items-center gap-1.5 text-xs`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>y(e.target.checked),"data-testid":`remote-desktop-custom-more`,className:`size-3.5 accent-primary`}),`More`]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`input`,{type:`range`,min:5,max:120,step:1,value:u,onChange:e=>g(Number(e.target.value)),"aria-label":`FPS`,"data-testid":`remote-desktop-custom-fps`,className:`h-1 min-w-0 flex-1 cursor-pointer appearance-none rounded bg-accent accent-primary`}),(0,$.jsx)(`span`,{className:`w-14 text-right text-xs tabular-nums`,children:u}),(0,$.jsx)(`span`,{className:`w-14 text-xs text-muted-foreground`,children:`FPS`}),(0,$.jsx)(`span`,{className:`w-[4.25rem] shrink-0`,"aria-hidden":!0})]})]}),(0,$.jsx)(ie,{children:(0,$.jsx)(k,{onClick:()=>t(!1),children:`Close`})})]})})}function we({id:e}){let t=O(e=>e.close),n=(0,Z.useCallback)(()=>t(e),[t,e]);return(0,$.jsx)(W,{onCancel:n,children:(0,$.jsx)(G,{onCancel:n,children:(0,$.jsx)(Te,{})})})}function Te(){let e=(0,Z.useRef)(null),t=de(),{connState:n,errorMessage:r,decoderStatus:a,decoderErrorMessage:o,sendMessage:c,reconnect:l,getFrameCount:u,getTotalBytes:d,frameSize:f,quality:p,setQuality:m,setCustomQuality:g,showCursor:_,setShowCursor:v,codec:y,setCodec:b,audioOn:x,setAudioOn:S,getAudioTracks:C,privacyOn:ee,privacyError:w,setPrivacyOn:te,hostModeId:T,hostOriginalModeId:D,resolutionError:O,setHostMode:k,pendingHostClipboard:re,clearHostClipboard:ie,sendClipboard:A,requestHostClipboard:j}=fe(e,{displayId:t.displayId}),M=E(e=>e.remoteDesktopStatsVisible),N=E(e=>e.toggleRemoteDesktopStatsVisible),P=E(e=>e.remoteDesktopViewStyle),F=E(e=>e.remoteDesktopCustomScale),I=E(e=>e.setRemoteDesktopViewStyle),L=E(e=>e.setRemoteDesktopCustomScale),R=E(e=>e.remoteDesktopClipboardSync),z=E(e=>e.remoteDesktopQuality),B=E(e=>e.remoteDesktopCustomQualityPercent),V=E(e=>e.remoteDesktopCustomFps),H=E(e=>e.remoteDesktopCustomQualityMore),oe=E(e=>e.setRemoteDesktopCustomQualityMore),[se,U]=(0,Z.useState)(!1),W=E(e=>e.setRemoteDesktopClipboardSync),{caps:G}=ae(!1),[ce,q]=(0,Z.useState)(!1),ue=(0,Z.useMemo)(()=>R?{onPasteText:(e,t)=>{q(!0),A(e,!0,t)},onCopyCombo:j}:void 0,[R,A,j]);ge(e,c,n===`streaming`,ue);let J=le(e,C),Y=h(P,F,f),me=a===`unsupported`?o:n===`error`?r:n===`closed`?`Disconnected`:n===`connecting`?`Connecting…`:null;return(0,$.jsxs)(`div`,{className:`relative flex h-full w-full items-center justify-center bg-black`,"data-testid":`remote-desktop-window`,"data-conn-state":n,children:[(0,$.jsx)(`div`,{className:ne(`flex h-full w-full`,Y?`overflow-auto`:`overflow-hidden`),children:(0,$.jsx)(`canvas`,{ref:e,"data-testid":`remote-desktop-canvas`,"data-view-style":P,className:ne(`m-auto outline-none`,!Y&&`max-h-full max-w-full`),style:Y?{width:Y.width,height:Y.height}:void 0})}),(0,$.jsx)(pe,{canvasRef:e,getFrameCount:u,getTotalBytes:d}),(0,$.jsx)(ye,{displays:t.displays,currentDisplayId:t.current?.id,onSelectDisplay:t.select,quality:p,qualityChoice:z,onSetQuality:m,onOpenCustomQuality:()=>U(!0),codecs:G?.encoders??[],codec:y,onSetCodec:b,hostModes:G?.resolutions?.modes??[],hostModeId:T,hostOriginalModeId:D,onSetHostMode:k,canResizeHost:G?.inputReady??!1,resolutionError:O,viewStyle:P,customScale:F,onSetViewStyle:I,onSetCustomScale:L,showCursor:_,onSetShowCursor:v,audioOn:x,audioReason:G&&!G.audio.available?G.audio.reason:null,onSetAudioOn:S,privacyOn:ee,privacyReason:w??(G&&!G.privacy.available?G.privacy.reason:null),privacyCanBlank:G?.privacy?.canBlank??!1,onSetPrivacyOn:te,recording:J.recording,recordingElapsedSec:J.elapsedSec,recordingSupported:J.supported,onToggleRecording:J.toggle,onScreenshot:()=>void K(e.current),clipboardEnabled:R,onSetClipboardEnabled:W,statsVisible:M,onToggleStats:N}),(0,$.jsx)(he,{pendingText:re,onDismiss:ie,missingToolAction:ce&&G&&!G.clipboard.available?G.clipboard.action:null,onDismissMissingTool:()=>q(!1)}),(0,$.jsx)(Ce,{open:se,onOpenChange:U,percent:B,fps:V,more:H,onSetMore:oe,onCommit:g,frameSize:f}),me&&(0,$.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-3 bg-black/70 text-sm text-white`,children:[(0,$.jsx)(i,{className:`size-6 opacity-70`}),(0,$.jsx)(`span`,{className:`max-w-sm text-center px-4`,children:me}),(n===`error`||n===`closed`)&&a!==`unsupported`&&(0,$.jsxs)(`button`,{onClick:l,className:`flex items-center gap-1.5 rounded-md bg-white/10 px-3 py-1.5 hover:bg-white/20`,children:[(0,$.jsx)(s,{className:`size-3.5`}),` Reconnect`]})]})]})}export{we as default};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Bn as r,Gn as i,Jn as a,O as o,S as s,j as c,qn as l,wr as u}from"./icons-DQjqk0lJ.js";import{n as d,s as f}from"./api-client-Jn3njtNw.js";import{n as p}from"./utils-Bmf_8h7Y.js";import"./portal-container-context-BarKmT4S.js";import"./context-menu-C6pIsf83.js";import{n as m}from"./use-is-mobile-TkcwP1Gx.js";import{t as h}from"./button-B9CTrsEf.js";import{a as ee,n as g,o as _,t as v}from"./dialog-B84_DJQ8.js";import{t as y}from"./mobile-bottom-sheet-C3TniEP-.js";import"./use-visual-viewport-Lp878uzs.js";import{t as b}from"./input-QNG_gTHh.js";import{t as te}from"./scroll-area-C0fQWNnx.js";import{Bt as x,It as S,J as C,K as w,Mt as T,Nt as E,X as D,Y as O,Z as k,jt as A,q as j}from"./index-CoTvom0K.js";var M=e(t(),1),N=1e4;function P(){let[e,t]=(0,M.useState)([]),[n,r]=(0,M.useState)(!0),i=(0,M.useCallback)(async()=>{try{t(await d.get(`/api/schedules`))}catch{}finally{r(!1)}},[]);return(0,M.useEffect)(()=>{i();let e=setInterval(()=>{document.visibilityState===`visible`&&i()},N);return()=>clearInterval(e)},[i]),{schedules:e,loading:n,refetch:i}}function F(e){let[t,n]=(0,M.useState)([]),[r,i]=(0,M.useState)(!1),a=(0,M.useCallback)(async()=>{if(e!=null){i(!0);try{n(await d.get(`/api/schedules/${e}/runs?limit=20`))}catch{n([])}finally{i(!1)}}},[e]);return(0,M.useEffect)(()=>{a()},[a]),{runs:t,loading:r,refetch:a}}var I=n(),ne={done:`bg-success/10 text-success`,error:`bg-error/10 text-error`,running:`bg-warning/10 text-warning`,skipped:`bg-muted text-muted-foreground`};function re({scheduleId:e}){let{runs:t,loading:n}=F(e);return n&&t.length===0?(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`Loading runs…`}):t.length===0?(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`No runs yet.`}):(0,I.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>(0,I.jsx)(ie,{run:e},e.id))})}function L(e){return new Date(e.includes(`T`)?e:e.replace(` `,`T`)+`Z`)}function ie({run:e}){let[t,n]=(0,M.useState)(!1),r=!!(e.output_truncated||e.error),i=e.ended_at?`${Math.round((L(e.ended_at).getTime()-L(e.started_at).getTime())/1e3)}s`:`…`;return(0,I.jsxs)(`div`,{className:`rounded border border-border text-[11px]`,children:[(0,I.jsxs)(`button`,{type:`button`,onClick:()=>r&&n(!t),className:p(`w-full flex items-center gap-2 px-2 py-2 min-h-11 text-left`,r&&`cursor-pointer hover:bg-accent/30`),children:[(0,I.jsx)(`span`,{className:p(`rounded px-1.5 py-0.5 font-medium shrink-0`,ne[e.status]),children:e.status}),(0,I.jsxs)(`span`,{className:`text-muted-foreground truncate flex-1`,children:[L(e.started_at).toLocaleString(),` · `,i,e.cost_usd!=null&&` · $${e.cost_usd.toFixed(4)}`,e.context_window_pct!=null&&` · ctx ${e.context_window_pct}%`]})]}),t&&(0,I.jsxs)(`div`,{className:`px-2 pb-2 space-y-1`,children:[e.error&&(0,I.jsx)(`p`,{className:`text-error break-all`,children:e.error}),e.output_truncated&&(0,I.jsx)(`pre`,{className:`overflow-auto max-h-96 whitespace-pre-wrap break-all text-muted-foreground font-mono text-[10px]`,children:e.output_truncated})]})]})}function ae({schedule:e,onEdit:t,onChanged:n}){let[s,l]=(0,M.useState)(!1),[m,h]=(0,M.useState)(0);return(0,I.jsxs)(`div`,{className:`rounded-lg border border-border`,children:[(0,I.jsxs)(A,{children:[(0,I.jsx)(x,{asChild:!0,children:(0,I.jsxs)(`button`,{type:`button`,onClick:()=>l(!s),className:`w-full flex items-center gap-2 px-2.5 py-2.5 min-h-11 text-left cursor-pointer hover:bg-accent/30`,children:[s?(0,I.jsx)(o,{className:`size-3.5 shrink-0 text-muted-foreground`}):(0,I.jsx)(c,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,I.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,I.jsx)(`p`,{className:`text-xs font-medium truncate`,children:e.name}),(0,I.jsxs)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:[(0,I.jsx)(`span`,{className:`font-mono`,children:e.cron_expr}),` · `,e.next_fire_at&&e.enabled?`next ${new Date(e.next_fire_at).toLocaleString()}`:`—`]})]}),(0,I.jsx)(`span`,{className:p(`rounded px-1.5 py-0.5 text-[10px] font-medium shrink-0`,e.enabled?`bg-success/10 text-success`:`bg-muted text-muted-foreground`),children:e.enabled?`Enabled`:`Disabled`})]})}),(0,I.jsxs)(T,{children:[(0,I.jsxs)(E,{onClick:async()=>{try{let t=await d.post(`/api/schedules/${e.id}/run-now`);f.success(`Run #${t.runId} started${t.wasRunning?` (previous run still active)`:``}`),l(!0),h(e=>e+1)}catch(e){f.error(e instanceof Error?e.message:`Run failed`)}},children:[(0,I.jsx)(i,{className:`size-3.5`}),` Run now`]}),(0,I.jsxs)(E,{onClick:async()=>{try{await d.patch(`/api/schedules/${e.id}`,{enabled:!e.enabled}),n()}catch(e){f.error(e instanceof Error?e.message:`Update failed`)}},children:[(0,I.jsx)(a,{className:`size-3.5`}),` `,e.enabled?`Disable`:`Enable`]}),(0,I.jsxs)(E,{onClick:t,children:[(0,I.jsx)(r,{className:`size-3.5`}),` Edit`]}),(0,I.jsx)(S,{}),(0,I.jsxs)(E,{variant:`destructive`,onClick:async()=>{try{await d.del(`/api/schedules/${e.id}`),f.success(`Schedule deleted`),n()}catch(e){f.error(e instanceof Error?e.message:`Delete failed`)}},children:[(0,I.jsx)(u,{className:`size-3.5`}),` Delete`]})]})]}),s&&(0,I.jsxs)(`div`,{className:`px-2.5 pb-2.5 space-y-1.5`,children:[(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground break-all line-clamp-3`,children:e.prompt}),(0,I.jsx)(re,{scheduleId:e.id},m)]})]})}function R(e,t,n,r,i,a,o,s){return R.fromTZ(R.tp(e,t,n,r,i,a,o),s)}R.fromTZISO=(e,t,n)=>R.fromTZ(B(e,t),n),R.fromTZ=function(e,t){let n=new Date(Date.UTC(e.y,e.m-1,e.d,e.h,e.i,e.s)),r=z(e.tz,n),i=new Date(n.getTime()-r),a=z(e.tz,i);if(a-r===0)return i;{let r=new Date(n.getTime()-a),o=z(e.tz,r);if(o-a===0||!t&&o-a>0)return r;if(t)throw Error(`Invalid date passed to fromTZ()`);return i}},R.toTZ=function(e,t){let n=e.toLocaleString(`en-US`,{timeZone:t}).replace(/[\u202f]/,` `),r=new Date(n);return{y:r.getFullYear(),m:r.getMonth()+1,d:r.getDate(),h:r.getHours(),i:r.getMinutes(),s:r.getSeconds(),tz:t}},R.tp=(e,t,n,r,i,a,o)=>({y:e,m:t,d:n,h:r,i,s:a,tz:o});function z(e,t=new Date){let n=t.toLocaleString(`en-US`,{timeZone:e,timeZoneName:`shortOffset`}).split(` `).slice(-1)[0],r=t.toLocaleString(`en-US`).replace(/[\u202f]/,` `);return Date.parse(`${r} GMT`)-Date.parse(`${r} ${n}`)}function B(e,t){let n=new Date(Date.parse(e));if(isNaN(n))throw Error(`minitz: Invalid ISO8601 passed to parser.`);let r=e.substring(9);return e.includes(`Z`)||r.includes(`-`)||r.includes(`+`)?R.tp(n.getUTCFullYear(),n.getUTCMonth()+1,n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),`Etc/UTC`):R.tp(n.getFullYear(),n.getMonth()+1,n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),t)}R.minitz=R;var V=32,H=31|V,U=[1,2,4,8,16],W=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(e,t){this.pattern=e,this.timezone=t,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern==`string`||this.pattern instanceof String))throw TypeError(`CronPattern: Pattern has to be of type string.`);this.pattern.indexOf(`@`)>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let e=this.pattern.replace(/\s+/g,` `).split(` `);if(e.length<5||e.length>6)throw TypeError(`CronPattern: invalid configuration format ('`+this.pattern+`'), exactly five or six space separated parts are required.`);if(e.length===5&&e.unshift(`0`),e[3].indexOf(`L`)>=0&&(e[3]=e[3].replace(`L`,``),this.lastDayOfMonth=!0),e[3]==`*`&&(this.starDOM=!0),e[4].length>=3&&(e[4]=this.replaceAlphaMonths(e[4])),e[5].length>=3&&(e[5]=this.replaceAlphaDays(e[5])),e[5]==`*`&&(this.starDOW=!0),this.pattern.indexOf(`?`)>=0){let t=new q(new Date,this.timezone).getDate(!0);e[0]=e[0].replace(`?`,t.getSeconds().toString()),e[1]=e[1].replace(`?`,t.getMinutes().toString()),e[2]=e[2].replace(`?`,t.getHours().toString()),this.starDOM||(e[3]=e[3].replace(`?`,t.getDate().toString())),e[4]=e[4].replace(`?`,(t.getMonth()+1).toString()),this.starDOW||(e[5]=e[5].replace(`?`,t.getDay().toString()))}this.throwAtIllegalCharacters(e),this.partToArray(`second`,e[0],0,1),this.partToArray(`minute`,e[1],0,1),this.partToArray(`hour`,e[2],0,1),this.partToArray(`day`,e[3],-1,1),this.partToArray(`month`,e[4],-1,1),this.partToArray(`dayOfWeek`,e[5],0,H),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(e,t,n,r){let i=this[e],a=e===`day`&&this.lastDayOfMonth;if(t===``&&!a)throw TypeError(`CronPattern: configuration entry `+e+` (`+t+`) is empty, check for trailing spaces.`);if(t===`*`)return i.fill(r);let o=t.split(`,`);if(o.length>1)for(let t=0;t<o.length;t++)this.partToArray(e,o[t],n,r);else t.indexOf(`-`)!==-1&&t.indexOf(`/`)!==-1?this.handleRangeWithStepping(t,e,n,r):t.indexOf(`-`)===-1?t.indexOf(`/`)===-1?t!==``&&this.handleNumber(t,e,n,r):this.handleStepping(t,e,n,r):this.handleRange(t,e,n,r)}throwAtIllegalCharacters(e){for(let t=0;t<e.length;t++)if((t===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(e[t]))throw TypeError(`CronPattern: configuration entry `+t+` (`+e[t]+`) contains illegal characters.`)}handleNumber(e,t,n,r){let i=this.extractNth(e,t),a=parseInt(i[0],10)+n;if(isNaN(a))throw TypeError(`CronPattern: `+t+` is not a number: '`+e+`'`);this.setPart(t,a,i[1]||r)}setPart(e,t,n){if(!Object.prototype.hasOwnProperty.call(this,e))throw TypeError(`CronPattern: Invalid part specified: `+e);if(e===`dayOfWeek`){if(t===7&&(t=0),t<0||t>6)throw RangeError(`CronPattern: Invalid value for dayOfWeek: `+t);this.setNthWeekdayOfMonth(t,n);return}if(e===`second`||e===`minute`){if(t<0||t>=60)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`hour`){if(t<0||t>=24)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`day`){if(t<0||t>=31)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`month`&&(t<0||t>=12))throw RangeError(`CronPattern: Invalid value for `+e+`: `+t);this[e][t]=n}handleRangeWithStepping(e,t,n,r){let i=this.extractNth(e,t),a=i[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(a===null)throw TypeError(`CronPattern: Syntax error, illegal range with stepping: '`+e+`'`);let[,o,s,c]=a,l=parseInt(o,10)+n,u=parseInt(s,10)+n,d=parseInt(c,10);if(isNaN(l))throw TypeError(`CronPattern: Syntax error, illegal lower range (NaN)`);if(isNaN(u))throw TypeError(`CronPattern: Syntax error, illegal upper range (NaN)`);if(isNaN(d))throw TypeError(`CronPattern: Syntax error, illegal stepping: (NaN)`);if(d===0)throw TypeError(`CronPattern: Syntax error, illegal stepping: 0`);if(d>this[t].length)throw TypeError(`CronPattern: Syntax error, steps cannot be greater than maximum value of part (`+this[t].length+`)`);if(l>u)throw TypeError(`CronPattern: From value is larger than to value: '`+e+`'`);for(let e=l;e<=u;e+=d)this.setPart(t,e,i[1]||r)}extractNth(e,t){let n=e,r;if(n.includes(`#`)){if(t!==`dayOfWeek`)throw Error(`CronPattern: nth (#) only allowed in day-of-week field`);r=n.split(`#`)[1],n=n.split(`#`)[0]}return[n,r]}handleRange(e,t,n,r){let i=this.extractNth(e,t),a=i[0].split(`-`);if(a.length!==2)throw TypeError(`CronPattern: Syntax error, illegal range: '`+e+`'`);let o=parseInt(a[0],10)+n,s=parseInt(a[1],10)+n;if(isNaN(o))throw TypeError(`CronPattern: Syntax error, illegal lower range (NaN)`);if(isNaN(s))throw TypeError(`CronPattern: Syntax error, illegal upper range (NaN)`);if(o>s)throw TypeError(`CronPattern: From value is larger than to value: '`+e+`'`);for(let e=o;e<=s;e++)this.setPart(t,e,i[1]||r)}handleStepping(e,t,n,r){let i=this.extractNth(e,t),a=i[0].split(`/`);if(a.length!==2)throw TypeError(`CronPattern: Syntax error, illegal stepping: '`+e+`'`);a[0]===``&&(a[0]=`*`);let o=0;a[0]!==`*`&&(o=parseInt(a[0],10)+n);let s=parseInt(a[1],10);if(isNaN(s))throw TypeError(`CronPattern: Syntax error, illegal stepping: (NaN)`);if(s===0)throw TypeError(`CronPattern: Syntax error, illegal stepping: 0`);if(s>this[t].length)throw TypeError(`CronPattern: Syntax error, max steps for part is (`+this[t].length+`)`);for(let e=o;e<this[t].length;e+=s)this.setPart(t,e,i[1]||r)}replaceAlphaDays(e){return e.replace(/-sun/gi,`-7`).replace(/sun/gi,`0`).replace(/mon/gi,`1`).replace(/tue/gi,`2`).replace(/wed/gi,`3`).replace(/thu/gi,`4`).replace(/fri/gi,`5`).replace(/sat/gi,`6`)}replaceAlphaMonths(e){return e.replace(/jan/gi,`1`).replace(/feb/gi,`2`).replace(/mar/gi,`3`).replace(/apr/gi,`4`).replace(/may/gi,`5`).replace(/jun/gi,`6`).replace(/jul/gi,`7`).replace(/aug/gi,`8`).replace(/sep/gi,`9`).replace(/oct/gi,`10`).replace(/nov/gi,`11`).replace(/dec/gi,`12`)}handleNicknames(e){let t=e.trim().toLowerCase();return t===`@yearly`||t===`@annually`?`0 0 1 1 *`:t===`@monthly`?`0 0 1 * *`:t===`@weekly`?`0 0 * * 0`:t===`@daily`?`0 0 * * *`:t===`@hourly`?`0 * * * *`:e}setNthWeekdayOfMonth(e,t){if(typeof t!=`number`&&t===`L`)this.dayOfWeek[e]=this.dayOfWeek[e]|V;else if(t===H)this.dayOfWeek[e]=H;else if(t<6&&t>0)this.dayOfWeek[e]=this.dayOfWeek[e]|U[t-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${t}, Type: ${typeof t}`)}},G=[31,28,31,30,31,30,31,31,30,31,30,31],K=[[`month`,`year`,0],[`day`,`month`,-1],[`hour`,`day`,0],[`minute`,`hour`,0],[`second`,`minute`,0]],q=class e{tz;ms;second;minute;hour;day;month;year;constructor(t,n){if(this.tz=n,t&&t instanceof Date)if(!isNaN(t))this.fromDate(t);else throw TypeError(`CronDate: Invalid date passed to CronDate constructor`);else if(t===void 0)this.fromDate(new Date);else if(t&&typeof t==`string`)this.fromString(t);else if(t instanceof e)this.fromCronDate(t);else throw TypeError(`CronDate: Invalid type (`+typeof t+`) passed to CronDate constructor`)}isNthWeekdayOfMonth(e,t,n,r){let i=new Date(Date.UTC(e,t,n)).getUTCDay(),a=0;for(let r=1;r<=n;r++)new Date(Date.UTC(e,t,r)).getUTCDay()===i&&a++;if(r&H&&U[a-1]&r)return!0;if(r&V){let r=new Date(Date.UTC(e,t+1,0)).getUTCDate();for(let a=n+1;a<=r;a++)if(new Date(Date.UTC(e,t,a)).getUTCDay()===i)return!1;return!0}return!1}fromDate(e){if(this.tz!==void 0)if(typeof this.tz==`number`)this.ms=e.getUTCMilliseconds(),this.second=e.getUTCSeconds(),this.minute=e.getUTCMinutes()+this.tz,this.hour=e.getUTCHours(),this.day=e.getUTCDate(),this.month=e.getUTCMonth(),this.year=e.getUTCFullYear(),this.apply();else{let t=R.toTZ(e,this.tz);this.ms=e.getMilliseconds(),this.second=t.s,this.minute=t.i,this.hour=t.h,this.day=t.d,this.month=t.m-1,this.year=t.y}else this.ms=e.getMilliseconds(),this.second=e.getSeconds(),this.minute=e.getMinutes(),this.hour=e.getHours(),this.day=e.getDate(),this.month=e.getMonth(),this.year=e.getFullYear()}fromCronDate(e){this.tz=e.tz,this.year=e.year,this.month=e.month,this.day=e.day,this.hour=e.hour,this.minute=e.minute,this.second=e.second,this.ms=e.ms}apply(){if(this.month>11||this.day>G[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let e=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=e.getUTCMilliseconds(),this.second=e.getUTCSeconds(),this.minute=e.getUTCMinutes(),this.hour=e.getUTCHours(),this.day=e.getUTCDate(),this.month=e.getUTCMonth(),this.year=e.getUTCFullYear(),!0}else return!1}fromString(e){if(typeof this.tz==`number`){let t=R.fromTZISO(e);this.ms=t.getUTCMilliseconds(),this.second=t.getUTCSeconds(),this.minute=t.getUTCMinutes(),this.hour=t.getUTCHours(),this.day=t.getUTCDate(),this.month=t.getUTCMonth(),this.year=t.getUTCFullYear(),this.apply()}else return this.fromDate(R.fromTZISO(e,this.tz))}findNext(e,t,n,r){let i=this[t],a;n.lastDayOfMonth&&(a=this.month===1?new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate():G[this.month]);let o=!n.starDOW&&t==`day`?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let s=this[t]+r;s<n[t].length;s++){let c=n[t][s];if(t===`day`&&n.lastDayOfMonth&&s-r==a&&(c=1),t===`day`&&!n.starDOW){let t=n.dayOfWeek[(o+(s-r-1))%7];if(t&&t&H)t=this.isNthWeekdayOfMonth(this.year,this.month,s-r,t)?1:0;else if(t)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${t}`);e.legacyMode&&!n.starDOM?c||=t:c&&=t}if(c)return this[t]=s-r,i===this[t]?1:2}return 3}recurse(e,t,n){let r=this.findNext(t,K[n][0],e,K[n][2]);if(r>1){let i=n+1;for(;i<K.length;)this[K[i][0]]=-K[i][2],i++;if(r===3)return this[K[n][1]]++,this[K[n][0]]=-K[n][2],this.apply(),this.recurse(e,t,0);if(this.apply())return this.recurse(e,t,n-1)}return n+=1,n>=K.length?this:this.year>=3e3?null:this.recurse(e,t,n)}increment(e,t,n){return this.second+=t.interval!==void 0&&t.interval>1&&n?t.interval:1,this.ms=0,this.apply(),this.recurse(e,t,0)}getDate(e){return e||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz==`number`?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):R.fromTZ(R.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function oe(e){if(e===void 0&&(e={}),delete e.name,e.legacyMode=e.legacyMode===void 0?!0:e.legacyMode,e.paused=e.paused===void 0?!1:e.paused,e.maxRuns=e.maxRuns===void 0?1/0:e.maxRuns,e.catch=e.catch===void 0?!1:e.catch,e.interval=e.interval===void 0?0:parseInt(e.interval.toString(),10),e.utcOffset=e.utcOffset===void 0?void 0:parseInt(e.utcOffset.toString(),10),e.unref=e.unref===void 0?!1:e.unref,e.startAt&&=new q(e.startAt,e.timezone),e.stopAt&&=new q(e.stopAt,e.timezone),e.interval!==null){if(isNaN(e.interval))throw Error(`CronOptions: Supplied value for interval is not a number`);if(e.interval<0)throw Error(`CronOptions: Supplied value for interval can not be negative`)}if(e.utcOffset!==void 0){if(isNaN(e.utcOffset))throw Error(`CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.`);if(e.utcOffset<-870||e.utcOffset>870)throw Error(`CronOptions: utcOffset out of bounds.`);if(e.utcOffset!==void 0&&e.timezone)throw Error(`CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.`)}if(e.unref!==!0&&e.unref!==!1)throw Error(`CronOptions: Unref should be either true, false or undefined(false).`);return e}function J(e){return Object.prototype.toString.call(e)===`[object Function]`||typeof e==`function`||e instanceof Function}function se(e){return J(e)}function ce(e){typeof Deno<`u`&&typeof Deno.unrefTimer<`u`?Deno.unrefTimer(e):e&&typeof e.unref<`u`&&e.unref()}var Y=30*1e3,X=[],Z=class{name;options;_states;fn;constructor(e,t,n){let r,i;if(J(t))i=t;else if(typeof t==`object`)r=t;else if(t!==void 0)throw Error(`Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).`);if(J(n))i=n;else if(typeof n==`object`)r=n;else if(n!==void 0)throw Error(`Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).`);if(this.name=r?.name,this.options=oe(r),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:r?r.maxRuns:void 0,paused:r?r.paused:!1,pattern:new W(`* * * * *`)},e&&(e instanceof Date||typeof e==`string`&&e.indexOf(`:`)>0)?this._states.once=new q(e,this.options.timezone||this.options.utcOffset):this._states.pattern=new W(e,this.options.timezone),this.name){if(X.find(e=>e.name===this.name))throw Error(`Cron: Tried to initialize new named job '`+this.name+`', but name already taken.`);X.push(this)}return i!==void 0&&se(i)&&(this.fn=i,this.schedule()),this}nextRun(e){let t=this._next(e);return t?t.getDate(!1):null}nextRuns(e,t){this._states.maxRuns!==void 0&&e>this._states.maxRuns&&(e=this._states.maxRuns);let n=[],r=t||this._states.currentRun||void 0;for(;e--&&(r=this.nextRun(r));)n.push(r);return n}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let e=this.nextRun(this._states.currentRun),t=!this._states.paused,n=this.fn!==void 0,r=!this._states.kill;return t&&n&&r&&e!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(e){let t=this._next(e);return t?e instanceof q||e instanceof Date?t.getTime()-e.getTime():t.getTime()-new q(e).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let e=X.indexOf(this);e>=0&&X.splice(e,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(e){if(e&&this.fn)throw Error(`Cron: It is not allowed to schedule two functions using the same Croner instance.`);e&&(this.fn=e);let t=this.msToNext(),n=this.nextRun(this._states.currentRun);return t==null||isNaN(t)||n===null?this:(t>Y&&(t=Y),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(n),t),this._states.currentTimeout&&this.options.unref&&ce(this._states.currentTimeout),this)}async _trigger(e){if(this._states.blocking=!0,this._states.currentRun=new q(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(e){J(this.options.catch)&&this.options.catch(e,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new q(e,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(e){let t=new Date,n=!this._states.paused&&t.getTime()>=e.getTime(),r=this._states.blocking&&this.options.protect;n&&!r?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):n&&r&&J(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(e){let t=!!(e||this._states.currentRun),n=!1;!e&&this.options.startAt&&this.options.interval&&([e,t]=this._calculatePreviousRun(e,t),n=!e),e=new q(e,this.options.timezone||this.options.utcOffset),this.options.startAt&&e&&e.getTime()<this.options.startAt.getTime()&&(e=this.options.startAt);let r=this._states.once||new q(e,this.options.timezone||this.options.utcOffset);return!n&&r!==this._states.once&&(r=r.increment(this._states.pattern,this.options,t)),this._states.once&&this._states.once.getTime()<=e.getTime()||r===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&r.getTime()>=this.options.stopAt.getTime()?null:r}_calculatePreviousRun(e,t){let n=new q(void 0,this.options.timezone||this.options.utcOffset),r=e;if(this.options.startAt.getTime()<=n.getTime()){r=this.options.startAt;let e=r.getTime()+this.options.interval*1e3;for(;e<=n.getTime();)r=new q(r,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),e=r.getTime()+this.options.interval*1e3;t=!0}return r===null&&(r=void 0),[r,t]}},le=[`bypassPermissions`,`acceptEdits`,`default`,`plan`];function ue({open:e,schedule:t,onClose:n,onSaved:r}){let i=m(),[a,o]=(0,M.useState)(()=>$(t)),[s,c]=(0,M.useState)([]),[l,u]=(0,M.useState)(!1),[f,p]=(0,M.useState)(null);(0,M.useEffect)(()=>{e&&(o($(t)),p(null),d.get(`/api/projects`).then(c).catch(()=>c([])))},[e,t]);let x=(0,M.useMemo)(()=>{try{return new Z(a.cron_expr).nextRuns(3).map(e=>e.toLocaleString())}catch{return null}},[a.cron_expr]),S=(e,t)=>o(n=>({...n,[e]:t})),T=(0,I.jsxs)(`div`,{className:`space-y-3 px-1`,children:[(0,I.jsx)(Q,{label:`Name`,children:(0,I.jsx)(b,{value:a.name,onChange:e=>S(`name`,e.target.value),placeholder:`Morning PR review`,className:`h-11 md:h-9 text-xs`})}),(0,I.jsxs)(Q,{label:`Cron expression (local timezone)`,children:[(0,I.jsx)(b,{value:a.cron_expr,onChange:e=>S(`cron_expr`,e.target.value),placeholder:`0 7 * * *`,className:`h-11 md:h-9 text-xs font-mono`}),(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:x?`Next: ${x.join(` · `)}`:`—`})]}),(0,I.jsx)(Q,{label:`Project`,children:(0,I.jsxs)(w,{value:a.project_path,onValueChange:e=>S(`project_path`,e),children:[(0,I.jsx)(O,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(D,{placeholder:`Select project`})}),(0,I.jsx)(j,{children:s.map(e=>(0,I.jsx)(C,{value:e.path,children:e.name},e.path))})]})}),(0,I.jsx)(Q,{label:`Prompt (do not embed secrets)`,children:(0,I.jsx)(`textarea`,{value:a.prompt,onChange:e=>S(`prompt`,e.target.value),placeholder:`Check open PRs and summarize. If nothing to do, finish immediately.`,rows:4,className:`w-full rounded-md border border-input bg-transparent px-3 py-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring/50 resize-y`})}),(0,I.jsxs)(Q,{label:`Permission mode`,children:[(0,I.jsxs)(w,{value:a.permission_mode,onValueChange:e=>S(`permission_mode`,e),children:[(0,I.jsx)(O,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(D,{})}),(0,I.jsx)(j,{children:le.map(e=>(0,I.jsx)(C,{value:e,children:e},e))})]}),a.permission_mode===`bypassPermissions`&&(0,I.jsx)(`p`,{className:`text-[11px] text-warning`,children:`⚠ Unattended writes — agent can modify code and run commands`})]}),(0,I.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,I.jsx)(Q,{label:`Max turns (optional)`,children:(0,I.jsx)(b,{type:`number`,min:1,value:a.max_turns,onChange:e=>S(`max_turns`,e.target.value),placeholder:`∞`,className:`h-11 md:h-9 text-xs`})}),(0,I.jsx)(Q,{label:`Timeout (ms)`,children:(0,I.jsx)(b,{type:`number`,min:1e4,value:a.timeout_ms,onChange:e=>S(`timeout_ms`,e.target.value),className:`h-11 md:h-9 text-xs`})})]}),(0,I.jsxs)(`div`,{className:`flex items-center justify-between min-h-11`,children:[(0,I.jsx)(`span`,{className:`text-xs font-medium`,children:`Enabled`}),(0,I.jsx)(k,{checked:a.enabled,onCheckedChange:e=>S(`enabled`,e)})]}),f&&(0,I.jsx)(`p`,{className:`text-[11px] text-error`,children:f}),(0,I.jsx)(h,{onClick:async()=>{if(!a.name.trim()||!a.project_path||!a.prompt.trim()){p(`Name, project, and prompt are required`);return}if(!x){p(`Invalid cron expression`);return}u(!0),p(null);try{let e={name:a.name.trim(),cron_expr:a.cron_expr,project_path:a.project_path,prompt:a.prompt,permission_mode:a.permission_mode,max_turns:a.max_turns===``?null:Number(a.max_turns),timeout_ms:Number(a.timeout_ms)||18e5,enabled:a.enabled};t?await d.patch(`/api/schedules/${t.id}`,e):await d.post(`/api/schedules`,e),r(),n()}catch(e){p(e instanceof Error?e.message:String(e))}finally{u(!1)}},disabled:l,className:`w-full min-h-11 cursor-pointer`,children:l?`Saving…`:t?`Save changes`:`Create schedule`})]}),E=t?`Edit: ${t.name}`:`New schedule`;return i?(0,I.jsxs)(y,{open:e,onClose:n,className:`max-h-[85vh] flex flex-col`,children:[(0,I.jsx)(`p`,{className:`text-sm font-semibold text-center pb-2`,children:E}),(0,I.jsx)(te,{className:`flex-1 min-h-0 px-3 pb-3`,children:T})]}):(0,I.jsx)(v,{open:e,onOpenChange:e=>!e&&n(),children:(0,I.jsxs)(g,{className:`max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,I.jsx)(ee,{children:(0,I.jsx)(_,{className:`text-sm`,children:E})}),T]})})}function Q({label:e,children:t}){return(0,I.jsxs)(`div`,{className:`space-y-1`,children:[(0,I.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:e}),t]})}function $(e){return{name:e?.name??``,cron_expr:e?.cron_expr??`0 7 * * *`,project_path:e?.project_path??``,prompt:e?.prompt??``,permission_mode:e?.permission_mode??`bypassPermissions`,max_turns:e?.max_turns==null?``:String(e.max_turns),timeout_ms:String(e?.timeout_ms??18e5),enabled:e?!!e.enabled:!0}}function de(){let{schedules:e,loading:t,refetch:n}=P(),[r,i]=(0,M.useState)(!1),[a,o]=(0,M.useState)(null),c=()=>{o(null),i(!0)},u=e=>{o(e),i(!0)};return(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Periodically wake Claude to work on a project unattended.`}),(0,I.jsxs)(h,{size:`sm`,onClick:c,className:`min-h-11 md:min-h-8 text-xs gap-1 cursor-pointer shrink-0`,children:[(0,I.jsx)(l,{className:`size-3.5`}),` Add`]})]}),t&&e.length===0?(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground py-4 text-center`,children:`Loading…`}):e.length===0?(0,I.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-8 text-center`,children:[(0,I.jsx)(s,{className:`size-8 text-muted-foreground/50`}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No schedules yet. Add one to run Claude periodically.`}),(0,I.jsxs)(h,{size:`sm`,onClick:c,className:`min-h-11 text-xs gap-1 cursor-pointer`,children:[(0,I.jsx)(l,{className:`size-3.5`}),` Add schedule`]})]}):(0,I.jsx)(`div`,{className:`space-y-2`,children:e.map(e=>(0,I.jsx)(ae,{schedule:e,onEdit:()=>u(e),onChanged:n},e.id))}),(0,I.jsx)(ue,{open:r,schedule:a,onClose:()=>i(!1),onSaved:n})]})}export{de as SchedulesSettingsSection};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Bn as r,Gn as i,Jn as a,O as o,S as s,j as c,qn as l,wr as u}from"./icons-DQjqk0lJ.js";import{n as d,s as f}from"./api-client-Jn3njtNw.js";import{n as p}from"./utils-Bmf_8h7Y.js";import"./portal-container-context-BarKmT4S.js";import"./context-menu-C6pIsf83.js";import{n as m}from"./use-is-mobile-TkcwP1Gx.js";import{t as h}from"./button-B9CTrsEf.js";import{a as ee,n as g,o as _,t as v}from"./dialog-B84_DJQ8.js";import{t as te}from"./mobile-bottom-sheet-C3TniEP-.js";import"./use-visual-viewport-Lp878uzs.js";import{t as y}from"./input-QNG_gTHh.js";import{t as b}from"./scroll-area-C0fQWNnx.js";import{$ as x,Ft as S,Ht as C,J as w,Nt as T,Pt as E,Q as D,Rt as O,X as k,Y as A,Z as j}from"./index-C3v3QRVR.js";var M=e(t(),1),N=1e4;function P(){let[e,t]=(0,M.useState)([]),[n,r]=(0,M.useState)(!0),i=(0,M.useCallback)(async()=>{try{t(await d.get(`/api/schedules`))}catch{}finally{r(!1)}},[]);return(0,M.useEffect)(()=>{i();let e=setInterval(()=>{document.visibilityState===`visible`&&i()},N);return()=>clearInterval(e)},[i]),{schedules:e,loading:n,refetch:i}}function F(e){let[t,n]=(0,M.useState)([]),[r,i]=(0,M.useState)(!1),a=(0,M.useCallback)(async()=>{if(e!=null){i(!0);try{n(await d.get(`/api/schedules/${e}/runs?limit=20`))}catch{n([])}finally{i(!1)}}},[e]);return(0,M.useEffect)(()=>{a()},[a]),{runs:t,loading:r,refetch:a}}var I=n(),ne={done:`bg-success/10 text-success`,error:`bg-error/10 text-error`,running:`bg-warning/10 text-warning`,skipped:`bg-muted text-muted-foreground`};function re({scheduleId:e}){let{runs:t,loading:n}=F(e);return n&&t.length===0?(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`Loading runs…`}):t.length===0?(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`No runs yet.`}):(0,I.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>(0,I.jsx)(ie,{run:e},e.id))})}function L(e){return new Date(e.includes(`T`)?e:e.replace(` `,`T`)+`Z`)}function ie({run:e}){let[t,n]=(0,M.useState)(!1),r=!!(e.output_truncated||e.error),i=e.ended_at?`${Math.round((L(e.ended_at).getTime()-L(e.started_at).getTime())/1e3)}s`:`…`;return(0,I.jsxs)(`div`,{className:`rounded border border-border text-[11px]`,children:[(0,I.jsxs)(`button`,{type:`button`,onClick:()=>r&&n(!t),className:p(`w-full flex items-center gap-2 px-2 py-2 min-h-11 text-left`,r&&`cursor-pointer hover:bg-accent/30`),children:[(0,I.jsx)(`span`,{className:p(`rounded px-1.5 py-0.5 font-medium shrink-0`,ne[e.status]),children:e.status}),(0,I.jsxs)(`span`,{className:`text-muted-foreground truncate flex-1`,children:[L(e.started_at).toLocaleString(),` · `,i,e.cost_usd!=null&&` · $${e.cost_usd.toFixed(4)}`,e.context_window_pct!=null&&` · ctx ${e.context_window_pct}%`]})]}),t&&(0,I.jsxs)(`div`,{className:`px-2 pb-2 space-y-1`,children:[e.error&&(0,I.jsx)(`p`,{className:`text-error break-all`,children:e.error}),e.output_truncated&&(0,I.jsx)(`pre`,{className:`overflow-auto max-h-96 whitespace-pre-wrap break-all text-muted-foreground font-mono text-[10px]`,children:e.output_truncated})]})]})}function ae({schedule:e,onEdit:t,onChanged:n}){let[s,l]=(0,M.useState)(!1),[m,h]=(0,M.useState)(0);return(0,I.jsxs)(`div`,{className:`rounded-lg border border-border`,children:[(0,I.jsxs)(T,{children:[(0,I.jsx)(C,{asChild:!0,children:(0,I.jsxs)(`button`,{type:`button`,onClick:()=>l(!s),className:`w-full flex items-center gap-2 px-2.5 py-2.5 min-h-11 text-left cursor-pointer hover:bg-accent/30`,children:[s?(0,I.jsx)(o,{className:`size-3.5 shrink-0 text-muted-foreground`}):(0,I.jsx)(c,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,I.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,I.jsx)(`p`,{className:`text-xs font-medium truncate`,children:e.name}),(0,I.jsxs)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:[(0,I.jsx)(`span`,{className:`font-mono`,children:e.cron_expr}),` · `,e.next_fire_at&&e.enabled?`next ${new Date(e.next_fire_at).toLocaleString()}`:`—`]})]}),(0,I.jsx)(`span`,{className:p(`rounded px-1.5 py-0.5 text-[10px] font-medium shrink-0`,e.enabled?`bg-success/10 text-success`:`bg-muted text-muted-foreground`),children:e.enabled?`Enabled`:`Disabled`})]})}),(0,I.jsxs)(E,{children:[(0,I.jsxs)(S,{onClick:async()=>{try{let t=await d.post(`/api/schedules/${e.id}/run-now`);f.success(`Run #${t.runId} started${t.wasRunning?` (previous run still active)`:``}`),l(!0),h(e=>e+1)}catch(e){f.error(e instanceof Error?e.message:`Run failed`)}},children:[(0,I.jsx)(i,{className:`size-3.5`}),` Run now`]}),(0,I.jsxs)(S,{onClick:async()=>{try{await d.patch(`/api/schedules/${e.id}`,{enabled:!e.enabled}),n()}catch(e){f.error(e instanceof Error?e.message:`Update failed`)}},children:[(0,I.jsx)(a,{className:`size-3.5`}),` `,e.enabled?`Disable`:`Enable`]}),(0,I.jsxs)(S,{onClick:t,children:[(0,I.jsx)(r,{className:`size-3.5`}),` Edit`]}),(0,I.jsx)(O,{}),(0,I.jsxs)(S,{variant:`destructive`,onClick:async()=>{try{await d.del(`/api/schedules/${e.id}`),f.success(`Schedule deleted`),n()}catch(e){f.error(e instanceof Error?e.message:`Delete failed`)}},children:[(0,I.jsx)(u,{className:`size-3.5`}),` Delete`]})]})]}),s&&(0,I.jsxs)(`div`,{className:`px-2.5 pb-2.5 space-y-1.5`,children:[(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground break-all line-clamp-3`,children:e.prompt}),(0,I.jsx)(re,{scheduleId:e.id},m)]})]})}function R(e,t,n,r,i,a,o,s){return R.fromTZ(R.tp(e,t,n,r,i,a,o),s)}R.fromTZISO=(e,t,n)=>R.fromTZ(B(e,t),n),R.fromTZ=function(e,t){let n=new Date(Date.UTC(e.y,e.m-1,e.d,e.h,e.i,e.s)),r=z(e.tz,n),i=new Date(n.getTime()-r),a=z(e.tz,i);if(a-r===0)return i;{let r=new Date(n.getTime()-a),o=z(e.tz,r);if(o-a===0||!t&&o-a>0)return r;if(t)throw Error(`Invalid date passed to fromTZ()`);return i}},R.toTZ=function(e,t){let n=e.toLocaleString(`en-US`,{timeZone:t}).replace(/[\u202f]/,` `),r=new Date(n);return{y:r.getFullYear(),m:r.getMonth()+1,d:r.getDate(),h:r.getHours(),i:r.getMinutes(),s:r.getSeconds(),tz:t}},R.tp=(e,t,n,r,i,a,o)=>({y:e,m:t,d:n,h:r,i,s:a,tz:o});function z(e,t=new Date){let n=t.toLocaleString(`en-US`,{timeZone:e,timeZoneName:`shortOffset`}).split(` `).slice(-1)[0],r=t.toLocaleString(`en-US`).replace(/[\u202f]/,` `);return Date.parse(`${r} GMT`)-Date.parse(`${r} ${n}`)}function B(e,t){let n=new Date(Date.parse(e));if(isNaN(n))throw Error(`minitz: Invalid ISO8601 passed to parser.`);let r=e.substring(9);return e.includes(`Z`)||r.includes(`-`)||r.includes(`+`)?R.tp(n.getUTCFullYear(),n.getUTCMonth()+1,n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),`Etc/UTC`):R.tp(n.getFullYear(),n.getMonth()+1,n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),t)}R.minitz=R;var V=32,H=31|V,U=[1,2,4,8,16],W=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(e,t){this.pattern=e,this.timezone=t,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern==`string`||this.pattern instanceof String))throw TypeError(`CronPattern: Pattern has to be of type string.`);this.pattern.indexOf(`@`)>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let e=this.pattern.replace(/\s+/g,` `).split(` `);if(e.length<5||e.length>6)throw TypeError(`CronPattern: invalid configuration format ('`+this.pattern+`'), exactly five or six space separated parts are required.`);if(e.length===5&&e.unshift(`0`),e[3].indexOf(`L`)>=0&&(e[3]=e[3].replace(`L`,``),this.lastDayOfMonth=!0),e[3]==`*`&&(this.starDOM=!0),e[4].length>=3&&(e[4]=this.replaceAlphaMonths(e[4])),e[5].length>=3&&(e[5]=this.replaceAlphaDays(e[5])),e[5]==`*`&&(this.starDOW=!0),this.pattern.indexOf(`?`)>=0){let t=new q(new Date,this.timezone).getDate(!0);e[0]=e[0].replace(`?`,t.getSeconds().toString()),e[1]=e[1].replace(`?`,t.getMinutes().toString()),e[2]=e[2].replace(`?`,t.getHours().toString()),this.starDOM||(e[3]=e[3].replace(`?`,t.getDate().toString())),e[4]=e[4].replace(`?`,(t.getMonth()+1).toString()),this.starDOW||(e[5]=e[5].replace(`?`,t.getDay().toString()))}this.throwAtIllegalCharacters(e),this.partToArray(`second`,e[0],0,1),this.partToArray(`minute`,e[1],0,1),this.partToArray(`hour`,e[2],0,1),this.partToArray(`day`,e[3],-1,1),this.partToArray(`month`,e[4],-1,1),this.partToArray(`dayOfWeek`,e[5],0,H),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(e,t,n,r){let i=this[e],a=e===`day`&&this.lastDayOfMonth;if(t===``&&!a)throw TypeError(`CronPattern: configuration entry `+e+` (`+t+`) is empty, check for trailing spaces.`);if(t===`*`)return i.fill(r);let o=t.split(`,`);if(o.length>1)for(let t=0;t<o.length;t++)this.partToArray(e,o[t],n,r);else t.indexOf(`-`)!==-1&&t.indexOf(`/`)!==-1?this.handleRangeWithStepping(t,e,n,r):t.indexOf(`-`)===-1?t.indexOf(`/`)===-1?t!==``&&this.handleNumber(t,e,n,r):this.handleStepping(t,e,n,r):this.handleRange(t,e,n,r)}throwAtIllegalCharacters(e){for(let t=0;t<e.length;t++)if((t===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(e[t]))throw TypeError(`CronPattern: configuration entry `+t+` (`+e[t]+`) contains illegal characters.`)}handleNumber(e,t,n,r){let i=this.extractNth(e,t),a=parseInt(i[0],10)+n;if(isNaN(a))throw TypeError(`CronPattern: `+t+` is not a number: '`+e+`'`);this.setPart(t,a,i[1]||r)}setPart(e,t,n){if(!Object.prototype.hasOwnProperty.call(this,e))throw TypeError(`CronPattern: Invalid part specified: `+e);if(e===`dayOfWeek`){if(t===7&&(t=0),t<0||t>6)throw RangeError(`CronPattern: Invalid value for dayOfWeek: `+t);this.setNthWeekdayOfMonth(t,n);return}if(e===`second`||e===`minute`){if(t<0||t>=60)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`hour`){if(t<0||t>=24)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`day`){if(t<0||t>=31)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`month`&&(t<0||t>=12))throw RangeError(`CronPattern: Invalid value for `+e+`: `+t);this[e][t]=n}handleRangeWithStepping(e,t,n,r){let i=this.extractNth(e,t),a=i[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(a===null)throw TypeError(`CronPattern: Syntax error, illegal range with stepping: '`+e+`'`);let[,o,s,c]=a,l=parseInt(o,10)+n,u=parseInt(s,10)+n,d=parseInt(c,10);if(isNaN(l))throw TypeError(`CronPattern: Syntax error, illegal lower range (NaN)`);if(isNaN(u))throw TypeError(`CronPattern: Syntax error, illegal upper range (NaN)`);if(isNaN(d))throw TypeError(`CronPattern: Syntax error, illegal stepping: (NaN)`);if(d===0)throw TypeError(`CronPattern: Syntax error, illegal stepping: 0`);if(d>this[t].length)throw TypeError(`CronPattern: Syntax error, steps cannot be greater than maximum value of part (`+this[t].length+`)`);if(l>u)throw TypeError(`CronPattern: From value is larger than to value: '`+e+`'`);for(let e=l;e<=u;e+=d)this.setPart(t,e,i[1]||r)}extractNth(e,t){let n=e,r;if(n.includes(`#`)){if(t!==`dayOfWeek`)throw Error(`CronPattern: nth (#) only allowed in day-of-week field`);r=n.split(`#`)[1],n=n.split(`#`)[0]}return[n,r]}handleRange(e,t,n,r){let i=this.extractNth(e,t),a=i[0].split(`-`);if(a.length!==2)throw TypeError(`CronPattern: Syntax error, illegal range: '`+e+`'`);let o=parseInt(a[0],10)+n,s=parseInt(a[1],10)+n;if(isNaN(o))throw TypeError(`CronPattern: Syntax error, illegal lower range (NaN)`);if(isNaN(s))throw TypeError(`CronPattern: Syntax error, illegal upper range (NaN)`);if(o>s)throw TypeError(`CronPattern: From value is larger than to value: '`+e+`'`);for(let e=o;e<=s;e++)this.setPart(t,e,i[1]||r)}handleStepping(e,t,n,r){let i=this.extractNth(e,t),a=i[0].split(`/`);if(a.length!==2)throw TypeError(`CronPattern: Syntax error, illegal stepping: '`+e+`'`);a[0]===``&&(a[0]=`*`);let o=0;a[0]!==`*`&&(o=parseInt(a[0],10)+n);let s=parseInt(a[1],10);if(isNaN(s))throw TypeError(`CronPattern: Syntax error, illegal stepping: (NaN)`);if(s===0)throw TypeError(`CronPattern: Syntax error, illegal stepping: 0`);if(s>this[t].length)throw TypeError(`CronPattern: Syntax error, max steps for part is (`+this[t].length+`)`);for(let e=o;e<this[t].length;e+=s)this.setPart(t,e,i[1]||r)}replaceAlphaDays(e){return e.replace(/-sun/gi,`-7`).replace(/sun/gi,`0`).replace(/mon/gi,`1`).replace(/tue/gi,`2`).replace(/wed/gi,`3`).replace(/thu/gi,`4`).replace(/fri/gi,`5`).replace(/sat/gi,`6`)}replaceAlphaMonths(e){return e.replace(/jan/gi,`1`).replace(/feb/gi,`2`).replace(/mar/gi,`3`).replace(/apr/gi,`4`).replace(/may/gi,`5`).replace(/jun/gi,`6`).replace(/jul/gi,`7`).replace(/aug/gi,`8`).replace(/sep/gi,`9`).replace(/oct/gi,`10`).replace(/nov/gi,`11`).replace(/dec/gi,`12`)}handleNicknames(e){let t=e.trim().toLowerCase();return t===`@yearly`||t===`@annually`?`0 0 1 1 *`:t===`@monthly`?`0 0 1 * *`:t===`@weekly`?`0 0 * * 0`:t===`@daily`?`0 0 * * *`:t===`@hourly`?`0 * * * *`:e}setNthWeekdayOfMonth(e,t){if(typeof t!=`number`&&t===`L`)this.dayOfWeek[e]=this.dayOfWeek[e]|V;else if(t===H)this.dayOfWeek[e]=H;else if(t<6&&t>0)this.dayOfWeek[e]=this.dayOfWeek[e]|U[t-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${t}, Type: ${typeof t}`)}},G=[31,28,31,30,31,30,31,31,30,31,30,31],K=[[`month`,`year`,0],[`day`,`month`,-1],[`hour`,`day`,0],[`minute`,`hour`,0],[`second`,`minute`,0]],q=class e{tz;ms;second;minute;hour;day;month;year;constructor(t,n){if(this.tz=n,t&&t instanceof Date)if(!isNaN(t))this.fromDate(t);else throw TypeError(`CronDate: Invalid date passed to CronDate constructor`);else if(t===void 0)this.fromDate(new Date);else if(t&&typeof t==`string`)this.fromString(t);else if(t instanceof e)this.fromCronDate(t);else throw TypeError(`CronDate: Invalid type (`+typeof t+`) passed to CronDate constructor`)}isNthWeekdayOfMonth(e,t,n,r){let i=new Date(Date.UTC(e,t,n)).getUTCDay(),a=0;for(let r=1;r<=n;r++)new Date(Date.UTC(e,t,r)).getUTCDay()===i&&a++;if(r&H&&U[a-1]&r)return!0;if(r&V){let r=new Date(Date.UTC(e,t+1,0)).getUTCDate();for(let a=n+1;a<=r;a++)if(new Date(Date.UTC(e,t,a)).getUTCDay()===i)return!1;return!0}return!1}fromDate(e){if(this.tz!==void 0)if(typeof this.tz==`number`)this.ms=e.getUTCMilliseconds(),this.second=e.getUTCSeconds(),this.minute=e.getUTCMinutes()+this.tz,this.hour=e.getUTCHours(),this.day=e.getUTCDate(),this.month=e.getUTCMonth(),this.year=e.getUTCFullYear(),this.apply();else{let t=R.toTZ(e,this.tz);this.ms=e.getMilliseconds(),this.second=t.s,this.minute=t.i,this.hour=t.h,this.day=t.d,this.month=t.m-1,this.year=t.y}else this.ms=e.getMilliseconds(),this.second=e.getSeconds(),this.minute=e.getMinutes(),this.hour=e.getHours(),this.day=e.getDate(),this.month=e.getMonth(),this.year=e.getFullYear()}fromCronDate(e){this.tz=e.tz,this.year=e.year,this.month=e.month,this.day=e.day,this.hour=e.hour,this.minute=e.minute,this.second=e.second,this.ms=e.ms}apply(){if(this.month>11||this.day>G[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let e=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=e.getUTCMilliseconds(),this.second=e.getUTCSeconds(),this.minute=e.getUTCMinutes(),this.hour=e.getUTCHours(),this.day=e.getUTCDate(),this.month=e.getUTCMonth(),this.year=e.getUTCFullYear(),!0}else return!1}fromString(e){if(typeof this.tz==`number`){let t=R.fromTZISO(e);this.ms=t.getUTCMilliseconds(),this.second=t.getUTCSeconds(),this.minute=t.getUTCMinutes(),this.hour=t.getUTCHours(),this.day=t.getUTCDate(),this.month=t.getUTCMonth(),this.year=t.getUTCFullYear(),this.apply()}else return this.fromDate(R.fromTZISO(e,this.tz))}findNext(e,t,n,r){let i=this[t],a;n.lastDayOfMonth&&(a=this.month===1?new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate():G[this.month]);let o=!n.starDOW&&t==`day`?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let s=this[t]+r;s<n[t].length;s++){let c=n[t][s];if(t===`day`&&n.lastDayOfMonth&&s-r==a&&(c=1),t===`day`&&!n.starDOW){let t=n.dayOfWeek[(o+(s-r-1))%7];if(t&&t&H)t=this.isNthWeekdayOfMonth(this.year,this.month,s-r,t)?1:0;else if(t)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${t}`);e.legacyMode&&!n.starDOM?c||=t:c&&=t}if(c)return this[t]=s-r,i===this[t]?1:2}return 3}recurse(e,t,n){let r=this.findNext(t,K[n][0],e,K[n][2]);if(r>1){let i=n+1;for(;i<K.length;)this[K[i][0]]=-K[i][2],i++;if(r===3)return this[K[n][1]]++,this[K[n][0]]=-K[n][2],this.apply(),this.recurse(e,t,0);if(this.apply())return this.recurse(e,t,n-1)}return n+=1,n>=K.length?this:this.year>=3e3?null:this.recurse(e,t,n)}increment(e,t,n){return this.second+=t.interval!==void 0&&t.interval>1&&n?t.interval:1,this.ms=0,this.apply(),this.recurse(e,t,0)}getDate(e){return e||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz==`number`?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):R.fromTZ(R.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function oe(e){if(e===void 0&&(e={}),delete e.name,e.legacyMode=e.legacyMode===void 0?!0:e.legacyMode,e.paused=e.paused===void 0?!1:e.paused,e.maxRuns=e.maxRuns===void 0?1/0:e.maxRuns,e.catch=e.catch===void 0?!1:e.catch,e.interval=e.interval===void 0?0:parseInt(e.interval.toString(),10),e.utcOffset=e.utcOffset===void 0?void 0:parseInt(e.utcOffset.toString(),10),e.unref=e.unref===void 0?!1:e.unref,e.startAt&&=new q(e.startAt,e.timezone),e.stopAt&&=new q(e.stopAt,e.timezone),e.interval!==null){if(isNaN(e.interval))throw Error(`CronOptions: Supplied value for interval is not a number`);if(e.interval<0)throw Error(`CronOptions: Supplied value for interval can not be negative`)}if(e.utcOffset!==void 0){if(isNaN(e.utcOffset))throw Error(`CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.`);if(e.utcOffset<-870||e.utcOffset>870)throw Error(`CronOptions: utcOffset out of bounds.`);if(e.utcOffset!==void 0&&e.timezone)throw Error(`CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.`)}if(e.unref!==!0&&e.unref!==!1)throw Error(`CronOptions: Unref should be either true, false or undefined(false).`);return e}function J(e){return Object.prototype.toString.call(e)===`[object Function]`||typeof e==`function`||e instanceof Function}function se(e){return J(e)}function ce(e){typeof Deno<`u`&&typeof Deno.unrefTimer<`u`?Deno.unrefTimer(e):e&&typeof e.unref<`u`&&e.unref()}var Y=30*1e3,X=[],Z=class{name;options;_states;fn;constructor(e,t,n){let r,i;if(J(t))i=t;else if(typeof t==`object`)r=t;else if(t!==void 0)throw Error(`Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).`);if(J(n))i=n;else if(typeof n==`object`)r=n;else if(n!==void 0)throw Error(`Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).`);if(this.name=r?.name,this.options=oe(r),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:r?r.maxRuns:void 0,paused:r?r.paused:!1,pattern:new W(`* * * * *`)},e&&(e instanceof Date||typeof e==`string`&&e.indexOf(`:`)>0)?this._states.once=new q(e,this.options.timezone||this.options.utcOffset):this._states.pattern=new W(e,this.options.timezone),this.name){if(X.find(e=>e.name===this.name))throw Error(`Cron: Tried to initialize new named job '`+this.name+`', but name already taken.`);X.push(this)}return i!==void 0&&se(i)&&(this.fn=i,this.schedule()),this}nextRun(e){let t=this._next(e);return t?t.getDate(!1):null}nextRuns(e,t){this._states.maxRuns!==void 0&&e>this._states.maxRuns&&(e=this._states.maxRuns);let n=[],r=t||this._states.currentRun||void 0;for(;e--&&(r=this.nextRun(r));)n.push(r);return n}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let e=this.nextRun(this._states.currentRun),t=!this._states.paused,n=this.fn!==void 0,r=!this._states.kill;return t&&n&&r&&e!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(e){let t=this._next(e);return t?e instanceof q||e instanceof Date?t.getTime()-e.getTime():t.getTime()-new q(e).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let e=X.indexOf(this);e>=0&&X.splice(e,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(e){if(e&&this.fn)throw Error(`Cron: It is not allowed to schedule two functions using the same Croner instance.`);e&&(this.fn=e);let t=this.msToNext(),n=this.nextRun(this._states.currentRun);return t==null||isNaN(t)||n===null?this:(t>Y&&(t=Y),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(n),t),this._states.currentTimeout&&this.options.unref&&ce(this._states.currentTimeout),this)}async _trigger(e){if(this._states.blocking=!0,this._states.currentRun=new q(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(e){J(this.options.catch)&&this.options.catch(e,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new q(e,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(e){let t=new Date,n=!this._states.paused&&t.getTime()>=e.getTime(),r=this._states.blocking&&this.options.protect;n&&!r?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):n&&r&&J(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(e){let t=!!(e||this._states.currentRun),n=!1;!e&&this.options.startAt&&this.options.interval&&([e,t]=this._calculatePreviousRun(e,t),n=!e),e=new q(e,this.options.timezone||this.options.utcOffset),this.options.startAt&&e&&e.getTime()<this.options.startAt.getTime()&&(e=this.options.startAt);let r=this._states.once||new q(e,this.options.timezone||this.options.utcOffset);return!n&&r!==this._states.once&&(r=r.increment(this._states.pattern,this.options,t)),this._states.once&&this._states.once.getTime()<=e.getTime()||r===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&r.getTime()>=this.options.stopAt.getTime()?null:r}_calculatePreviousRun(e,t){let n=new q(void 0,this.options.timezone||this.options.utcOffset),r=e;if(this.options.startAt.getTime()<=n.getTime()){r=this.options.startAt;let e=r.getTime()+this.options.interval*1e3;for(;e<=n.getTime();)r=new q(r,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),e=r.getTime()+this.options.interval*1e3;t=!0}return r===null&&(r=void 0),[r,t]}},le=[`bypassPermissions`,`acceptEdits`,`default`,`plan`];function ue({open:e,schedule:t,onClose:n,onSaved:r}){let i=m(),[a,o]=(0,M.useState)(()=>$(t)),[s,c]=(0,M.useState)([]),[l,u]=(0,M.useState)(!1),[f,p]=(0,M.useState)(null);(0,M.useEffect)(()=>{e&&(o($(t)),p(null),d.get(`/api/projects`).then(c).catch(()=>c([])))},[e,t]);let S=(0,M.useMemo)(()=>{try{return new Z(a.cron_expr).nextRuns(3).map(e=>e.toLocaleString())}catch{return null}},[a.cron_expr]),C=(e,t)=>o(n=>({...n,[e]:t})),T=(0,I.jsxs)(`div`,{className:`space-y-3 px-1`,children:[(0,I.jsx)(Q,{label:`Name`,children:(0,I.jsx)(y,{value:a.name,onChange:e=>C(`name`,e.target.value),placeholder:`Morning PR review`,className:`h-11 md:h-9 text-xs`})}),(0,I.jsxs)(Q,{label:`Cron expression (local timezone)`,children:[(0,I.jsx)(y,{value:a.cron_expr,onChange:e=>C(`cron_expr`,e.target.value),placeholder:`0 7 * * *`,className:`h-11 md:h-9 text-xs font-mono`}),(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:S?`Next: ${S.join(` · `)}`:`—`})]}),(0,I.jsx)(Q,{label:`Project`,children:(0,I.jsxs)(w,{value:a.project_path,onValueChange:e=>C(`project_path`,e),children:[(0,I.jsx)(j,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(D,{placeholder:`Select project`})}),(0,I.jsx)(A,{children:s.map(e=>(0,I.jsx)(k,{value:e.path,children:e.name},e.path))})]})}),(0,I.jsx)(Q,{label:`Prompt (do not embed secrets)`,children:(0,I.jsx)(`textarea`,{value:a.prompt,onChange:e=>C(`prompt`,e.target.value),placeholder:`Check open PRs and summarize. If nothing to do, finish immediately.`,rows:4,className:`w-full rounded-md border border-input bg-transparent px-3 py-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring/50 resize-y`})}),(0,I.jsxs)(Q,{label:`Permission mode`,children:[(0,I.jsxs)(w,{value:a.permission_mode,onValueChange:e=>C(`permission_mode`,e),children:[(0,I.jsx)(j,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(D,{})}),(0,I.jsx)(A,{children:le.map(e=>(0,I.jsx)(k,{value:e,children:e},e))})]}),a.permission_mode===`bypassPermissions`&&(0,I.jsx)(`p`,{className:`text-[11px] text-warning`,children:`⚠ Unattended writes — agent can modify code and run commands`})]}),(0,I.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,I.jsx)(Q,{label:`Max turns (optional)`,children:(0,I.jsx)(y,{type:`number`,min:1,value:a.max_turns,onChange:e=>C(`max_turns`,e.target.value),placeholder:`∞`,className:`h-11 md:h-9 text-xs`})}),(0,I.jsx)(Q,{label:`Timeout (ms)`,children:(0,I.jsx)(y,{type:`number`,min:1e4,value:a.timeout_ms,onChange:e=>C(`timeout_ms`,e.target.value),className:`h-11 md:h-9 text-xs`})})]}),(0,I.jsxs)(`div`,{className:`flex items-center justify-between min-h-11`,children:[(0,I.jsx)(`span`,{className:`text-xs font-medium`,children:`Enabled`}),(0,I.jsx)(x,{checked:a.enabled,onCheckedChange:e=>C(`enabled`,e)})]}),f&&(0,I.jsx)(`p`,{className:`text-[11px] text-error`,children:f}),(0,I.jsx)(h,{onClick:async()=>{if(!a.name.trim()||!a.project_path||!a.prompt.trim()){p(`Name, project, and prompt are required`);return}if(!S){p(`Invalid cron expression`);return}u(!0),p(null);try{let e={name:a.name.trim(),cron_expr:a.cron_expr,project_path:a.project_path,prompt:a.prompt,permission_mode:a.permission_mode,max_turns:a.max_turns===``?null:Number(a.max_turns),timeout_ms:Number(a.timeout_ms)||18e5,enabled:a.enabled};t?await d.patch(`/api/schedules/${t.id}`,e):await d.post(`/api/schedules`,e),r(),n()}catch(e){p(e instanceof Error?e.message:String(e))}finally{u(!1)}},disabled:l,className:`w-full min-h-11 cursor-pointer`,children:l?`Saving…`:t?`Save changes`:`Create schedule`})]}),E=t?`Edit: ${t.name}`:`New schedule`;return i?(0,I.jsxs)(te,{open:e,onClose:n,className:`max-h-[85vh] flex flex-col`,children:[(0,I.jsx)(`p`,{className:`text-sm font-semibold text-center pb-2`,children:E}),(0,I.jsx)(b,{className:`flex-1 min-h-0 px-3 pb-3`,children:T})]}):(0,I.jsx)(v,{open:e,onOpenChange:e=>!e&&n(),children:(0,I.jsxs)(g,{className:`max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,I.jsx)(ee,{children:(0,I.jsx)(_,{className:`text-sm`,children:E})}),T]})})}function Q({label:e,children:t}){return(0,I.jsxs)(`div`,{className:`space-y-1`,children:[(0,I.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:e}),t]})}function $(e){return{name:e?.name??``,cron_expr:e?.cron_expr??`0 7 * * *`,project_path:e?.project_path??``,prompt:e?.prompt??``,permission_mode:e?.permission_mode??`bypassPermissions`,max_turns:e?.max_turns==null?``:String(e.max_turns),timeout_ms:String(e?.timeout_ms??18e5),enabled:e?!!e.enabled:!0}}function de(){let{schedules:e,loading:t,refetch:n}=P(),[r,i]=(0,M.useState)(!1),[a,o]=(0,M.useState)(null),c=()=>{o(null),i(!0)},u=e=>{o(e),i(!0)};return(0,I.jsxs)(`div`,{className:`space-y-3`,children:[(0,I.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,I.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Periodically wake Claude to work on a project unattended.`}),(0,I.jsxs)(h,{size:`sm`,onClick:c,className:`min-h-11 md:min-h-8 text-xs gap-1 cursor-pointer shrink-0`,children:[(0,I.jsx)(l,{className:`size-3.5`}),` Add`]})]}),t&&e.length===0?(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground py-4 text-center`,children:`Loading…`}):e.length===0?(0,I.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-8 text-center`,children:[(0,I.jsx)(s,{className:`size-8 text-muted-foreground/50`}),(0,I.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No schedules yet. Add one to run Claude periodically.`}),(0,I.jsxs)(h,{size:`sm`,onClick:c,className:`min-h-11 text-xs gap-1 cursor-pointer`,children:[(0,I.jsx)(l,{className:`size-3.5`}),` Add schedule`]})]}):(0,I.jsx)(`div`,{className:`space-y-2`,children:e.map(e=>(0,I.jsx)(ae,{schedule:e,onEdit:()=>u(e),onChanged:n},e.id))}),(0,I.jsx)(ue,{open:r,schedule:a,onClose:()=>i(!1),onSaved:n})]})}export{de as SchedulesSettingsSection};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/general-settings-section-CcG10nJq.js","assets/rolldown-runtime-FhOqtrmT.js","assets/index-CoTvom0K.js","assets/vendor-mermaid-D6lgjvVE.js","assets/vendor-ui-DmZ-Mb-H.js","assets/vendor-markdown-CuWCHIVb.js","assets/button-B9CTrsEf.js","assets/utils-Bmf_8h7Y.js","assets/createLucideIcon-DoiEKeJ_.js","assets/api-client-Jn3njtNw.js","assets/react-Bghu0NUO.js","assets/settings-store-tWrnlyEW.js","assets/file-store-Ds3qJ4hC.js","assets/window-store-UC1jJeLM.js","assets/window-pip-registry-D1oXq-Dq.js","assets/panel-store-D20Zuf3i.js","assets/onboarding-quick-orientation-Dqmis-E5.js","assets/dialog-B84_DJQ8.js","assets/portal-container-context-BarKmT4S.js","assets/icons-DQjqk0lJ.js","assets/use-is-mobile-TkcwP1Gx.js","assets/format-file-meta-eKLstbCL.js","assets/fs-api-orca76dV.js","assets/context-menu-C6pIsf83.js","assets/input-QNG_gTHh.js","assets/mobile-bottom-sheet-C3TniEP-.js","assets/use-visual-viewport-Lp878uzs.js","assets/scroll-area-C0fQWNnx.js","assets/file-icons-wS-OmEVu.js","assets/project-framework-store-ViZgce6y.js","assets/git-repo-store-BCEPfUGT.js","assets/project-store-hNvwfqX3.js","assets/ws-auth-CaxV807E.js","assets/tab-store-krAuHQ6_.js","assets/apply-theme-CbR31K6I.js","assets/resolve-theme-BNubecVz.js","assets/index-DLn9-Lrb.css","assets/onboarding-entry-C81awoR5.js","assets/separator-DwDoQpxS.js","assets/appearance-settings-section-DRWpbQqj.js","assets/ai-settings-section-BxN-zFfm.js","assets/ai-settings-section-CfI9nNSa.js","assets/api-settings-BZFSteM_.js","assets/accounts-settings-section-Dk9qWWTy.js","assets/codex-daily-guard-DjLeZ_hE.js","assets/ppmbot-settings-section-CDp69sHV.js","assets/notifications-settings-section-C5v8FoH9.js","assets/jira-watcher-section-cDMBzIR7.js","assets/extension-manager-section-DGSKz5iJ.js","assets/proxy-settings-section-P_ULFRpZ.js","assets/schedules-settings-section-DHs84DvG.js","assets/keyboard-shortcuts-section-CIcdYToP.js","assets/files-settings-section-CGd2yfzl.js","assets/query-audit-section-CpiXQVcS.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import{Nn as r,Pt as i,S as a,Xt as o,Yn as s,Zt as c,_ as l,j as u,kt as d,l as f,ln as p,ot as m,sr as h,v as g,x as _,y as v}from"./icons-DQjqk0lJ.js";import{q as y}from"./vendor-mermaid-D6lgjvVE.js";import{n as b}from"./utils-Bmf_8h7Y.js";import{t as x}from"./button-B9CTrsEf.js";import{t as S}from"./scroll-area-C0fQWNnx.js";import{t as C}from"./separator-DwDoQpxS.js";var w=[{id:`core`,label:null},{id:`ai`,label:`AI & Accounts`},{id:`integrations`,label:`Integrations`},{id:`advanced`,label:`Advanced`}],T=[{id:`general`,group:`core`,label:`General`,subtitle:`Device name, password, version`,icon:h},{id:`appearance`,group:`core`,label:`Appearance`,subtitle:`Theme, tabs, explorer skin`,icon:r},{id:`ai-provider`,group:`ai`,label:`AI Provider`,subtitle:`Model, execution mode, limits`,icon:g},{id:`accounts`,group:`ai`,label:`Accounts`,subtitle:`Claude and Codex sign-ins, rotation`,icon:o},{id:`ppmbot`,group:`integrations`,label:`PPMBot`,subtitle:`Telegram AI bot`,icon:v},{id:`notifications`,group:`integrations`,label:`Notifications`,subtitle:`Push & Telegram alerts`,icon:l},{id:`jira`,group:`integrations`,label:`Jira Watcher`,subtitle:`Auto-debug Jira tickets`,icon:_},{id:`extensions`,group:`integrations`,label:`Extensions`,subtitle:`Install and manage extensions`,icon:s},{id:`proxy`,group:`integrations`,label:`API Proxy`,subtitle:`Expose accounts as Anthropic API`,icon:i},{id:`schedules`,group:`advanced`,label:`Scheduled Agents`,subtitle:`Run Claude on a cron schedule`,icon:a},{id:`shortcuts`,group:`advanced`,label:`Keyboard Shortcuts`,subtitle:`Customize key bindings`,icon:c},{id:`files`,group:`advanced`,label:`File Filters`,subtitle:`Exclude patterns, ignore files`,icon:d},{id:`query-audit`,group:`advanced`,label:`Query Audit Log`,subtitle:`SQL history retention and size`,icon:m}];function E(e){return typeof e==`string`&&T.some(t=>t.id===e)}function D(e){return T.find(t=>t.id===e)}function O(e){return T.filter(t=>t.group===e)}var k=n();function A({active:e,onSelect:t}){return(0,k.jsx)(S,{className:`h-full`,children:(0,k.jsx)(`nav`,{className:`p-2 space-y-4`,"aria-label":`Settings categories`,children:w.map(n=>{let r=O(n.id);return r.length===0?null:(0,k.jsxs)(`div`,{className:`space-y-1`,children:[n.label&&(0,k.jsx)(`h3`,{className:`px-2 pt-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:n.label}),r.map(n=>{let r=n.icon,i=n.id===e;return(0,k.jsxs)(`button`,{onClick:()=>t(n.id),"data-testid":`settings-rail-${n.id}`,"aria-current":i?`page`:void 0,className:b(`w-full flex items-center gap-2.5 px-2.5 py-2 rounded-md text-left cursor-pointer transition-colors`,i?`bg-accent text-accent-foreground`:`hover:bg-accent/50 active:bg-accent`),children:[(0,k.jsx)(r,{className:b(`size-4 shrink-0`,i?`text-foreground`:`text-muted-foreground`)}),(0,k.jsx)(`span`,{className:`text-sm truncate`,children:n.label})]},n.id)})]},n.id)})})})}function j({onSelect:e}){return(0,k.jsx)(S,{className:`h-full`,children:(0,k.jsx)(`nav`,{className:`p-3 space-y-5`,"aria-label":`Settings categories`,children:w.map(t=>{let n=O(t.id);return n.length===0?null:(0,k.jsxs)(`div`,{className:`space-y-1`,children:[t.label&&(0,k.jsx)(`h3`,{className:`px-1 pb-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:t.label}),n.map(t=>{let n=t.icon;return(0,k.jsxs)(`button`,{onClick:()=>e(t.id),"data-testid":`settings-index-${t.id}`,className:`w-full flex items-center gap-3 px-2.5 py-3 rounded-lg text-left cursor-pointer group hover:bg-accent/50 active:bg-accent transition-colors`,children:[(0,k.jsx)(`div`,{className:`size-10 rounded-md bg-muted flex items-center justify-center shrink-0 group-hover:bg-accent`,children:(0,k.jsx)(n,{className:`size-4 text-muted-foreground`})}),(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsx)(`p`,{className:`text-sm font-medium truncate`,children:t.label}),(0,k.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:t.subtitle})]}),(0,k.jsx)(u,{className:`size-4 text-muted-foreground shrink-0`})]},t.id)})]},t.id)})})})}var M=e(t(),1),N={general:(0,M.lazy)(()=>y(()=>import(`./general-settings-section-CcG10nJq.js`).then(e=>({default:e.GeneralSettingsSection})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]))),appearance:(0,M.lazy)(()=>y(()=>import(`./appearance-settings-section-DRWpbQqj.js`).then(e=>({default:e.AppearanceSettingsSection})),__vite__mapDeps([39,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),"ai-provider":(0,M.lazy)(()=>y(()=>import(`./ai-settings-section-BxN-zFfm.js`).then(e=>({default:e.AISettingsSection})),__vite__mapDeps([40,4,1,5,9,13,10,41,2,3,6,7,8,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,42]))),accounts:(0,M.lazy)(()=>y(()=>import(`./accounts-settings-section-Dk9qWWTy.js`).then(e=>({default:e.AccountsSettingsSection})),__vite__mapDeps([43,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,44,42]))),ppmbot:(0,M.lazy)(()=>y(()=>import(`./ppmbot-settings-section-CDp69sHV.js`).then(e=>({default:e.PPMBotSettingsSection})),__vite__mapDeps([45,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),notifications:(0,M.lazy)(()=>y(()=>import(`./notifications-settings-section-C5v8FoH9.js`).then(e=>({default:e.NotificationsSettingsSection})),__vite__mapDeps([46,4,1,5,38,7,19]))),jira:(0,M.lazy)(()=>y(()=>import(`./jira-watcher-section-cDMBzIR7.js`).then(e=>({default:e.JiraWatcherSection})),__vite__mapDeps([47,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),extensions:(0,M.lazy)(()=>y(()=>import(`./extension-manager-section-DGSKz5iJ.js`).then(e=>({default:e.ExtensionManagerSection})),__vite__mapDeps([48,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),proxy:(0,M.lazy)(()=>y(()=>import(`./proxy-settings-section-P_ULFRpZ.js`).then(e=>({default:e.ProxySettingsSection})),__vite__mapDeps([49,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,42]))),schedules:(0,M.lazy)(()=>y(()=>import(`./schedules-settings-section-DHs84DvG.js`).then(e=>({default:e.SchedulesSettingsSection})),__vite__mapDeps([50,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),shortcuts:(0,M.lazy)(()=>y(()=>import(`./keyboard-shortcuts-section-CIcdYToP.js`).then(e=>({default:e.KeyboardShortcutsSection})),__vite__mapDeps([51,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),files:(0,M.lazy)(()=>y(()=>import(`./files-settings-section-CGd2yfzl.js`).then(e=>({default:e.FilesSettingsSection})),__vite__mapDeps([52,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),"query-audit":(0,M.lazy)(()=>y(()=>import(`./query-audit-section-CpiXQVcS.js`).then(e=>({default:e.QueryAuditSection})),__vite__mapDeps([53,1,4,5,6,7,9,24,42,19])))};function P({category:e}){let t=N[e];return(0,k.jsx)(M.Suspense,{fallback:(0,k.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,k.jsx)(p,{className:`size-5 animate-spin text-muted-foreground`})}),children:(0,k.jsx)(t,{})})}function F({initialCategory:e,onCategoryChange:t}){let[n,r]=(0,M.useState)(e??`general`),[i,a]=(0,M.useState)(e===void 0),o=D(n),s=o.icon;function c(e){r(e),a(!1),t?.(e)}return(0,k.jsx)(`div`,{className:`@container h-full w-full`,"data-testid":`settings-window`,"data-category":n,children:(0,k.jsxs)(`div`,{className:`h-full w-full flex`,children:[(0,k.jsx)(`aside`,{className:`hidden @[640px]:flex @[640px]:flex-col w-[210px] shrink-0 border-r border-border min-h-0`,"data-testid":`settings-rail`,children:(0,k.jsx)(A,{active:n,onSelect:c})}),(0,k.jsxs)(`div`,{className:`relative flex-1 min-w-0`,children:[(0,k.jsxs)(`div`,{className:`h-full flex flex-col min-h-0`,children:[(0,k.jsxs)(`div`,{className:`shrink-0 flex items-center gap-2 px-2 py-2.5 @[640px]:px-4`,children:[(0,k.jsx)(x,{variant:`ghost`,size:`icon`,"aria-label":`Back to settings list`,className:`size-9 shrink-0 cursor-pointer @[640px]:hidden`,onClick:()=>a(!0),children:(0,k.jsx)(f,{className:`size-4`})}),(0,k.jsx)(s,{className:`size-4 text-muted-foreground shrink-0`}),(0,k.jsx)(`h2`,{className:`text-sm font-semibold truncate`,"data-testid":`settings-pane-title`,children:o.label})]}),(0,k.jsx)(C,{}),(0,k.jsx)(S,{className:`flex-1 min-h-0`,children:(0,k.jsx)(`div`,{className:`p-4 pb-8`,children:(0,k.jsx)(P,{category:n})})})]}),i&&(0,k.jsxs)(`div`,{className:`absolute inset-0 z-10 bg-background flex flex-col min-h-0 @[640px]:hidden`,"data-testid":`settings-index`,children:[(0,k.jsx)(`div`,{className:`shrink-0 px-4 py-3`,children:(0,k.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`})}),(0,k.jsx)(C,{}),(0,k.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,k.jsx)(j,{onSelect:c})})]})]})]})})}export{E as n,F as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/general-settings-section-fbSqpiKY.js","assets/rolldown-runtime-FhOqtrmT.js","assets/index-C3v3QRVR.js","assets/vendor-mermaid-D6lgjvVE.js","assets/vendor-ui-DmZ-Mb-H.js","assets/vendor-markdown-CuWCHIVb.js","assets/button-B9CTrsEf.js","assets/utils-Bmf_8h7Y.js","assets/createLucideIcon-DoiEKeJ_.js","assets/api-client-Jn3njtNw.js","assets/react-Bghu0NUO.js","assets/settings-store-m6qOXoy4.js","assets/file-store-Ds3qJ4hC.js","assets/window-store-UC1jJeLM.js","assets/window-pip-registry-D1oXq-Dq.js","assets/panel-store-D20Zuf3i.js","assets/onboarding-quick-orientation-Dqmis-E5.js","assets/dialog-B84_DJQ8.js","assets/portal-container-context-BarKmT4S.js","assets/icons-DQjqk0lJ.js","assets/use-is-mobile-TkcwP1Gx.js","assets/format-file-meta-eKLstbCL.js","assets/fs-api-orca76dV.js","assets/context-menu-C6pIsf83.js","assets/input-QNG_gTHh.js","assets/mobile-bottom-sheet-C3TniEP-.js","assets/use-visual-viewport-Lp878uzs.js","assets/scroll-area-C0fQWNnx.js","assets/file-icons-wS-OmEVu.js","assets/project-framework-store-ViZgce6y.js","assets/git-repo-store-BCEPfUGT.js","assets/project-store-hNvwfqX3.js","assets/ws-auth-CaxV807E.js","assets/tab-store-krAuHQ6_.js","assets/apply-theme-CbR31K6I.js","assets/resolve-theme-BNubecVz.js","assets/index-aXJy_SvC.css","assets/onboarding-entry-C81awoR5.js","assets/separator-DwDoQpxS.js","assets/appearance-settings-section-DH0DxaKv.js","assets/ai-settings-section-ChEBg9Be.js","assets/ai-settings-section-CyWSTidP.js","assets/api-settings-BZFSteM_.js","assets/accounts-settings-section-BYz8j7Fq.js","assets/codex-daily-guard-PsB0g8B0.js","assets/ppmbot-settings-section-CY_yAGFM.js","assets/notifications-settings-section-C5v8FoH9.js","assets/jira-watcher-section-PYPh3xGU.js","assets/extension-manager-section-D8TSwRG8.js","assets/proxy-settings-section-CqcvneFB.js","assets/schedules-settings-section-ByCm7IOg.js","assets/keyboard-shortcuts-section-CM3pNiBR.js","assets/files-settings-section-Ne10pnQU.js","assets/query-audit-section-CpiXQVcS.js"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import{Nn as r,Pt as i,S as a,Xt as o,Yn as s,Zt as c,_ as l,j as u,kt as d,l as f,ln as p,ot as m,sr as h,v as g,x as _,y as v}from"./icons-DQjqk0lJ.js";import{q as y}from"./vendor-mermaid-D6lgjvVE.js";import{n as b}from"./utils-Bmf_8h7Y.js";import{t as x}from"./button-B9CTrsEf.js";import{t as S}from"./scroll-area-C0fQWNnx.js";import{t as C}from"./separator-DwDoQpxS.js";var w=[{id:`core`,label:null},{id:`ai`,label:`AI & Accounts`},{id:`integrations`,label:`Integrations`},{id:`advanced`,label:`Advanced`}],T=[{id:`general`,group:`core`,label:`General`,subtitle:`Device name, password, version`,icon:h},{id:`appearance`,group:`core`,label:`Appearance`,subtitle:`Theme, tabs, explorer skin`,icon:r},{id:`ai-provider`,group:`ai`,label:`AI Provider`,subtitle:`Model, execution mode, limits`,icon:g},{id:`accounts`,group:`ai`,label:`Accounts`,subtitle:`Claude and Codex sign-ins, rotation`,icon:o},{id:`ppmbot`,group:`integrations`,label:`PPMBot`,subtitle:`Telegram AI bot`,icon:v},{id:`notifications`,group:`integrations`,label:`Notifications`,subtitle:`Push & Telegram alerts`,icon:l},{id:`jira`,group:`integrations`,label:`Jira Watcher`,subtitle:`Auto-debug Jira tickets`,icon:_},{id:`extensions`,group:`integrations`,label:`Extensions`,subtitle:`Install and manage extensions`,icon:s},{id:`proxy`,group:`integrations`,label:`API Proxy`,subtitle:`Expose accounts as Anthropic API`,icon:i},{id:`schedules`,group:`advanced`,label:`Scheduled Agents`,subtitle:`Run Claude on a cron schedule`,icon:a},{id:`shortcuts`,group:`advanced`,label:`Keyboard Shortcuts`,subtitle:`Customize key bindings`,icon:c},{id:`files`,group:`advanced`,label:`File Filters`,subtitle:`Exclude patterns, ignore files`,icon:d},{id:`query-audit`,group:`advanced`,label:`Query Audit Log`,subtitle:`SQL history retention and size`,icon:m}];function E(e){return typeof e==`string`&&T.some(t=>t.id===e)}function D(e){return T.find(t=>t.id===e)}function O(e){return T.filter(t=>t.group===e)}var k=n();function A({active:e,onSelect:t}){return(0,k.jsx)(S,{className:`h-full`,children:(0,k.jsx)(`nav`,{className:`p-2 space-y-4`,"aria-label":`Settings categories`,children:w.map(n=>{let r=O(n.id);return r.length===0?null:(0,k.jsxs)(`div`,{className:`space-y-1`,children:[n.label&&(0,k.jsx)(`h3`,{className:`px-2 pt-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:n.label}),r.map(n=>{let r=n.icon,i=n.id===e;return(0,k.jsxs)(`button`,{onClick:()=>t(n.id),"data-testid":`settings-rail-${n.id}`,"aria-current":i?`page`:void 0,className:b(`w-full flex items-center gap-2.5 px-2.5 py-2 rounded-md text-left cursor-pointer transition-colors`,i?`bg-accent text-accent-foreground`:`hover:bg-accent/50 active:bg-accent`),children:[(0,k.jsx)(r,{className:b(`size-4 shrink-0`,i?`text-foreground`:`text-muted-foreground`)}),(0,k.jsx)(`span`,{className:`text-sm truncate`,children:n.label})]},n.id)})]},n.id)})})})}function j({onSelect:e}){return(0,k.jsx)(S,{className:`h-full`,children:(0,k.jsx)(`nav`,{className:`p-3 space-y-5`,"aria-label":`Settings categories`,children:w.map(t=>{let n=O(t.id);return n.length===0?null:(0,k.jsxs)(`div`,{className:`space-y-1`,children:[t.label&&(0,k.jsx)(`h3`,{className:`px-1 pb-1 text-[11px] font-medium uppercase tracking-wide text-muted-foreground`,children:t.label}),n.map(t=>{let n=t.icon;return(0,k.jsxs)(`button`,{onClick:()=>e(t.id),"data-testid":`settings-index-${t.id}`,className:`w-full flex items-center gap-3 px-2.5 py-3 rounded-lg text-left cursor-pointer group hover:bg-accent/50 active:bg-accent transition-colors`,children:[(0,k.jsx)(`div`,{className:`size-10 rounded-md bg-muted flex items-center justify-center shrink-0 group-hover:bg-accent`,children:(0,k.jsx)(n,{className:`size-4 text-muted-foreground`})}),(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsx)(`p`,{className:`text-sm font-medium truncate`,children:t.label}),(0,k.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:t.subtitle})]}),(0,k.jsx)(u,{className:`size-4 text-muted-foreground shrink-0`})]},t.id)})]},t.id)})})})}var M=e(t(),1),N={general:(0,M.lazy)(()=>y(()=>import(`./general-settings-section-fbSqpiKY.js`).then(e=>({default:e.GeneralSettingsSection})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]))),appearance:(0,M.lazy)(()=>y(()=>import(`./appearance-settings-section-DH0DxaKv.js`).then(e=>({default:e.AppearanceSettingsSection})),__vite__mapDeps([39,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),"ai-provider":(0,M.lazy)(()=>y(()=>import(`./ai-settings-section-ChEBg9Be.js`).then(e=>({default:e.AISettingsSection})),__vite__mapDeps([40,3,1,4,5,6,7,9,11,10,13,41,2,8,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,42]))),accounts:(0,M.lazy)(()=>y(()=>import(`./accounts-settings-section-BYz8j7Fq.js`).then(e=>({default:e.AccountsSettingsSection})),__vite__mapDeps([43,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,44,42]))),ppmbot:(0,M.lazy)(()=>y(()=>import(`./ppmbot-settings-section-CY_yAGFM.js`).then(e=>({default:e.PPMBotSettingsSection})),__vite__mapDeps([45,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),notifications:(0,M.lazy)(()=>y(()=>import(`./notifications-settings-section-C5v8FoH9.js`).then(e=>({default:e.NotificationsSettingsSection})),__vite__mapDeps([46,4,1,5,38,7,19]))),jira:(0,M.lazy)(()=>y(()=>import(`./jira-watcher-section-PYPh3xGU.js`).then(e=>({default:e.JiraWatcherSection})),__vite__mapDeps([47,2,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),extensions:(0,M.lazy)(()=>y(()=>import(`./extension-manager-section-D8TSwRG8.js`).then(e=>({default:e.ExtensionManagerSection})),__vite__mapDeps([48,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),proxy:(0,M.lazy)(()=>y(()=>import(`./proxy-settings-section-CqcvneFB.js`).then(e=>({default:e.ProxySettingsSection})),__vite__mapDeps([49,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,42]))),schedules:(0,M.lazy)(()=>y(()=>import(`./schedules-settings-section-ByCm7IOg.js`).then(e=>({default:e.SchedulesSettingsSection})),__vite__mapDeps([50,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),shortcuts:(0,M.lazy)(()=>y(()=>import(`./keyboard-shortcuts-section-CM3pNiBR.js`).then(e=>({default:e.KeyboardShortcutsSection})),__vite__mapDeps([51,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]))),files:(0,M.lazy)(()=>y(()=>import(`./files-settings-section-Ne10pnQU.js`).then(e=>({default:e.FilesSettingsSection})),__vite__mapDeps([52,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38]))),"query-audit":(0,M.lazy)(()=>y(()=>import(`./query-audit-section-CpiXQVcS.js`).then(e=>({default:e.QueryAuditSection})),__vite__mapDeps([53,1,4,5,6,7,9,24,42,19])))};function P({category:e}){let t=N[e];return(0,k.jsx)(M.Suspense,{fallback:(0,k.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,k.jsx)(p,{className:`size-5 animate-spin text-muted-foreground`})}),children:(0,k.jsx)(t,{})})}function F({initialCategory:e,onCategoryChange:t}){let[n,r]=(0,M.useState)(e??`general`),[i,a]=(0,M.useState)(e===void 0),o=D(n),s=o.icon;function c(e){r(e),a(!1),t?.(e)}return(0,k.jsx)(`div`,{className:`@container h-full w-full`,"data-testid":`settings-window`,"data-category":n,children:(0,k.jsxs)(`div`,{className:`h-full w-full flex`,children:[(0,k.jsx)(`aside`,{className:`hidden @[640px]:flex @[640px]:flex-col w-[210px] shrink-0 border-r border-border min-h-0`,"data-testid":`settings-rail`,children:(0,k.jsx)(A,{active:n,onSelect:c})}),(0,k.jsxs)(`div`,{className:`relative flex-1 min-w-0`,children:[(0,k.jsxs)(`div`,{className:`h-full flex flex-col min-h-0`,children:[(0,k.jsxs)(`div`,{className:`shrink-0 flex items-center gap-2 px-2 py-2.5 @[640px]:px-4`,children:[(0,k.jsx)(x,{variant:`ghost`,size:`icon`,"aria-label":`Back to settings list`,className:`size-9 shrink-0 cursor-pointer @[640px]:hidden`,onClick:()=>a(!0),children:(0,k.jsx)(f,{className:`size-4`})}),(0,k.jsx)(s,{className:`size-4 text-muted-foreground shrink-0`}),(0,k.jsx)(`h2`,{className:`text-sm font-semibold truncate`,"data-testid":`settings-pane-title`,children:o.label})]}),(0,k.jsx)(C,{}),(0,k.jsx)(S,{className:`flex-1 min-h-0`,children:(0,k.jsx)(`div`,{className:`p-4 pb-8`,children:(0,k.jsx)(P,{category:n})})})]}),i&&(0,k.jsxs)(`div`,{className:`absolute inset-0 z-10 bg-background flex flex-col min-h-0 @[640px]:hidden`,"data-testid":`settings-index`,children:[(0,k.jsx)(`div`,{className:`shrink-0 px-4 py-3`,children:(0,k.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`})}),(0,k.jsx)(C,{}),(0,k.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,k.jsx)(j,{onSelect:c})})]})]})]})})}export{E as n,F as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/api-themes-CvKtX6Hd.js","assets/vendor-ui-DmZ-Mb-H.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-markdown-CuWCHIVb.js","assets/api-client-Jn3njtNw.js","assets/api-settings-BZFSteM_.js"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./api-client-Jn3njtNw.js";import{t}from"./react-Bghu0NUO.js";import{q as n}from"./vendor-mermaid-D6lgjvVE.js";var r={best:{id:`best`,label:`Good image quality`,ratio:1.5},balanced:{id:`balanced`,label:`Balanced`,ratio:.67},low:{id:`low`,label:`Optimize reaction time`,ratio:.5}},i=[`best`,`balanced`,`low`],a=`balanced`;function o(e){return typeof e==`string`&&Object.hasOwn(r,e)?e:null}function s(e){return e===`custom`?e:o(e)??`balanced`}function c(e){return e===`custom`?i[0]:i[(i.indexOf(e)+1)%i.length]}var l={best:`Good`,balanced:`Balanced`,low:`Reaction`};function u(e){return e===`custom`?`Custom`:l[e]}var d=[[640,480,400],[800,600,500],[1024,768,800],[1280,720,1e3],[1366,768,1100],[1440,900,1300],[1600,900,1500],[1920,1080,2073],[2048,1080,2200],[2560,1440,3e3],[3440,1440,4e3],[3840,2160,5e3],[7680,4320,12e3]],f=2e3,p=.2,m=40;function h(e,t){let n=Math.max(1,Math.round(e)*Math.round(t)),r=d[7],i=1/0;for(let e of d){let t=Math.abs(e[0]*e[1]-n);t<i&&(i=t,r=e)}let a=r[0]*r[1];return Math.max(1,Math.round(r[2]*(n/a)))}function g(e){return Number.isFinite(e)?Math.min(Math.max(e*2/100,p),m):100/100}function _(e){return Number.isFinite(e)?Math.min(Math.max(e,p),m):p}function ee(e,t,n){return Math.max(1,Math.round(h(t,n)*_(e)))}function te(e,t,n){return ee(g(e),t,n)}function v(e,t=!1){let n=t?f:100;return typeof e!=`number`||!Number.isFinite(e)?50:Math.min(Math.max(Math.round(e),10),n)}function y(e){return typeof e!=`number`||!Number.isFinite(e)?30:Math.min(Math.max(Math.round(e),5),120)}var b=`adaptive`,x=[`original`,`adaptive`,`custom`],S={original:`Scale original`,adaptive:`Scale adaptive`,custom:`Scale custom`},C=1e3,w=1/3,T=5/100;C/100;function E(e){if(!Number.isFinite(e)||e<=0)return 5;if(e>=1)return C;if(e<=.3333333333333333){let t=e/w;return O(Math.round(5+t*95))}let t=(e-w)/(1-w);return O(Math.round(100+t*(C-100)))}function D(e){let t=O(e);return t<=100?(t-5)/95*w:w+(t-100)/(C-100)*(1-w)}function ne(e){return!Number.isFinite(e)||Math.abs(e-.3333333333333333)<=.006?w:Math.min(Math.max(e,0),1)}function O(e){return Number.isFinite(e)?Math.min(Math.max(Math.round(e),5),C):100}function k(e){return typeof e==`string`&&Object.hasOwn(S,e)?e:b}function A(e){return typeof e!=`number`||!Number.isFinite(e)?1:Math.min(Math.max(e,T),10)}function j(e,t,n){if(e===`adaptive`||n.width<=0||n.height<=0)return null;let r=e===`original`?1:A(t);return{width:Math.round(n.width*r),height:Math.round(n.height*r)}}var M=`ppm-settings`,N=[`aurora`,`slate`,`precision`,`custom`],P=[`dark`,`light`,`system`];function F(){try{let e=localStorage.getItem(M);if(e)return JSON.parse(e)}catch{}return{}}function I(e){return e.themeStyle&&N.includes(e.themeStyle)&&e.themeMode&&P.includes(e.themeMode)?{style:e.themeStyle,mode:e.themeMode,customThemeId:e.customThemeId}:e.theme&&P.includes(e.theme)?{style:`aurora`,mode:e.theme}:{style:`aurora`,mode:`system`}}function L(e){return typeof e==`string`?[`explorer`,`git`,`database`,`search`,`jira`,`ai-resources`,`history`,`tunnels`,`teams`].includes(e)||e.startsWith(`ext:`):!1}function R(e){if(!Array.isArray(e))return[];let t=new Set,n=[];for(let r of e)L(r)&&!t.has(r)&&(t.add(r),n.push(r));return n}var z={conns:[],groups:[`__ungrouped__`],tables:[]},B={conns:200,groups:200,tables:500},V=200;function H(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.length>0&&e.length<=200).slice(-V):null}function U(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e,n=(e,t)=>Array.isArray(e)?e.filter(e=>typeof e==`string`&&e.length>0&&e.length<=300).slice(0,t):[];return{conns:Array.isArray(t.conns)?t.conns.filter(e=>typeof e==`number`&&Number.isInteger(e)).slice(0,B.conns):[],groups:n(t.groups,B.groups),tables:n(t.tables,B.tables)}}function W(e){let t=F();localStorage.setItem(M,JSON.stringify({...t,...e}))}var G=null,K={};function q(t){let{theme:n,themeStyle:r,themeMode:i,customThemeId:a,...o}=t;Object.keys(o).length!==0&&(Object.assign(K,o),G&&clearTimeout(G),G=setTimeout(()=>{let t=K;K={},G=null;let n=e();fetch(`/api/settings/ui-prefs`,{method:`PUT`,headers:{"Content-Type":`application/json`,...n?{Authorization:`Bearer ${n}`}:{}},body:JSON.stringify(t)}).catch(()=>{})},400))}function J(e){W(e),q(e)}function Y(e){W(e)}function X(t,n,r){let i=e();return fetch(`/api/settings/theme`,{method:`PUT`,headers:{"Content-Type":`application/json`,...i?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({style:t,mode:n,...r?{customThemeId:r}:{}})}).then(()=>{}).catch(()=>{})}function re(e){let t={};typeof e.wordWrap==`boolean`&&(t.wordWrap=e.wordWrap),typeof e.inlineBlame==`boolean`&&(t.inlineBlame=e.inlineBlame),typeof e.tabWrap==`boolean`&&(t.tabWrap=e.tabWrap),typeof e.sidebarCollapsed==`boolean`&&(t.sidebarCollapsed=e.sidebarCollapsed),typeof e.sidebarWidth==`number`&&e.sidebarWidth>=200&&e.sidebarWidth<=600&&(t.sidebarWidth=e.sidebarWidth),(e.gitStatusViewMode===`flat`||e.gitStatusViewMode===`tree`)&&(t.gitStatusViewMode=e.gitStatusViewMode),(e.editorTabStyle===`default`||e.editorTabStyle===`boxed`||e.editorTabStyle===`pill`)&&(t.editorTabStyle=e.editorTabStyle),L(e.sidebarActiveTab)&&(t.sidebarActiveTab=e.sidebarActiveTab),Array.isArray(e.sidebarTabOrder)&&(t.sidebarTabOrder=R(e.sidebarTabOrder)),typeof e.jiraEnabled==`boolean`&&(t.jiraEnabled=e.jiraEnabled),(e.dockPosition===`left`||e.dockPosition===`bottom`||e.dockPosition===`right`)&&(t.dockPosition=e.dockPosition),(e.explorerSkin===`auto`||e.explorerSkin===`windows`||e.explorerSkin===`macos`)&&(t.explorerSkin=e.explorerSkin),typeof e.remoteDesktopStatsVisible==`boolean`&&(t.remoteDesktopStatsVisible=e.remoteDesktopStatsVisible),typeof e.remoteDesktopWarningDismissed==`boolean`&&(t.remoteDesktopWarningDismissed=e.remoteDesktopWarningDismissed);let n=H(e.mcpSignInDismissed);n&&(t.mcpSignInDismissed=n),typeof e.keepScreenAwake==`boolean`&&(t.keepScreenAwake=e.keepScreenAwake);let r=U(e.dbSidebarExpanded);r&&(t.dbSidebarExpanded=r),Object.keys(t).length!==0&&(W(t),$.setState(t))}var Z=F(),Q=I(Z),$=t((t,r)=>({themeStyle:Q.style,themeMode:Q.mode,customThemeId:Q.customThemeId,customThemes:[],sidebarCollapsed:Z.sidebarCollapsed??!1,sidebarWidth:Z.sidebarWidth??280,gitStatusViewMode:Z.gitStatusViewMode===`flat`?`flat`:`tree`,inlineBlame:Z.inlineBlame??!1,wordWrap:Z.wordWrap??!1,remoteDesktopQuality:s(Z.remoteDesktopQuality),remoteDesktopViewStyle:k(Z.remoteDesktopViewStyle),remoteDesktopCustomScale:A(Z.remoteDesktopCustomScale),remoteDesktopCustomQualityMore:Z.remoteDesktopCustomQualityMore??!1,remoteDesktopCustomQualityPercent:v(Z.remoteDesktopCustomQualityPercent,Z.remoteDesktopCustomQualityMore??!1),remoteDesktopCustomFps:y(Z.remoteDesktopCustomFps),remoteDesktopShowCursor:Z.remoteDesktopShowCursor??!0,remoteDesktopClipboardSync:Z.remoteDesktopClipboardSync??!0,remoteDesktopCodec:typeof Z.remoteDesktopCodec==`string`?Z.remoteDesktopCodec:null,mobileWordWrap:Z.mobileWordWrap??!0,lspEnabled:Z.lspEnabled??!1,tabWrap:Z.tabWrap??!1,editorTabStyle:Z.editorTabStyle===`boxed`||Z.editorTabStyle===`pill`?Z.editorTabStyle:`default`,sidebarActiveTab:L(Z.sidebarActiveTab)?Z.sidebarActiveTab:`history`,sidebarTabOrder:R(Z.sidebarTabOrder),jiraEnabled:Z.jiraEnabled??!1,dockPosition:Z.dockPosition===`left`||Z.dockPosition===`right`?Z.dockPosition:`bottom`,dbSidebarExpanded:U(Z.dbSidebarExpanded)??z,explorerSkin:Z.explorerSkin===`windows`||Z.explorerSkin===`macos`?Z.explorerSkin:`auto`,remoteDesktopStatsVisible:Z.remoteDesktopStatsVisible??!1,remoteDesktopWarningDismissed:Z.remoteDesktopWarningDismissed??!1,mcpSignInDismissed:H(Z.mcpSignInDismissed)??[],keepScreenAwake:Z.keepScreenAwake??!0,deviceName:null,version:null,tunnelActive:!1,setThemeStyle:e=>{let n=r().themeMode,i=e===`custom`?r().customThemeId:void 0;W({themeStyle:e,customThemeId:i}),t({themeStyle:e,customThemeId:i}),X(e,n,i)},setThemeMode:e=>{W({themeMode:e}),t({themeMode:e}),X(r().themeStyle,e,r().customThemeId)},setCustomTheme:e=>{W({themeStyle:`custom`,customThemeId:e}),t({themeStyle:`custom`,customThemeId:e}),X(`custom`,r().themeMode,e)},setThemeFromPayload:({style:e,mode:n,customThemeId:r})=>{let i=N.includes(e)?e:`aurora`,a=P.includes(n)?n:`system`;W({themeStyle:i,themeMode:a,customThemeId:r}),t({themeStyle:i,themeMode:a,customThemeId:r})},setCustomThemes:e=>t({customThemes:e}),fetchThemes:async()=>{try{let{fetchImportedThemes:e}=await n(async()=>{let{fetchImportedThemes:e}=await import(`./api-themes-CvKtX6Hd.js`);return{fetchImportedThemes:e}},__vite__mapDeps([0,1,2,3,4]));t({customThemes:await e()})}catch{}},importThemeFrom:async e=>{let{importTheme:t}=await n(async()=>{let{importTheme:e}=await import(`./api-themes-CvKtX6Hd.js`);return{importTheme:e}},__vite__mapDeps([0,1,2,3,4])),i=await t(e);return await r().fetchThemes(),i},deleteCustomTheme:async e=>{let{deleteImportedTheme:i}=await n(async()=>{let{deleteImportedTheme:e}=await import(`./api-themes-CvKtX6Hd.js`);return{deleteImportedTheme:e}},__vite__mapDeps([0,1,2,3,4]));await i(e),await r().fetchThemes(),r().themeStyle===`custom`&&r().customThemeId===e&&(W({themeStyle:`aurora`,themeMode:r().themeMode,customThemeId:void 0}),t({themeStyle:`aurora`,customThemeId:void 0}),X(`aurora`,r().themeMode))},setDeviceName:async e=>{let r=e.trim();t({deviceName:r||null}),r?document.title=`PPM — ${r}`:document.title=`PPM`;try{let{updateDeviceName:e}=await n(async()=>{let{updateDeviceName:e}=await import(`./api-settings-BZFSteM_.js`);return{updateDeviceName:e}},__vite__mapDeps([5,1,2,3,4]));await e(r)}catch{}},setJiraEnabled:e=>{if(J({jiraEnabled:e}),t({jiraEnabled:e}),!e&&r().sidebarActiveTab===`jira`){let e=`explorer`;J({sidebarActiveTab:e}),t({sidebarActiveTab:e})}},toggleSidebar:()=>{let e=!r().sidebarCollapsed;J({sidebarCollapsed:e}),t({sidebarCollapsed:e})},setSidebarWidth:e=>{let n=Math.max(200,Math.min(600,e));J({sidebarWidth:n}),t({sidebarWidth:n})},setGitStatusViewMode:e=>{J({gitStatusViewMode:e}),t({gitStatusViewMode:e})},toggleInlineBlame:()=>{let e=!r().inlineBlame;J({inlineBlame:e}),t({inlineBlame:e})},toggleWordWrap:()=>{let e=!r().wordWrap;J({wordWrap:e}),t({wordWrap:e})},toggleMobileWordWrap:()=>{let e=!r().mobileWordWrap;Y({mobileWordWrap:e}),t({mobileWordWrap:e})},setLspEnabled:e=>{Y({lspEnabled:e}),t({lspEnabled:e})},setRemoteDesktopQuality:e=>{Y({remoteDesktopQuality:e}),t({remoteDesktopQuality:e})},setRemoteDesktopViewStyle:e=>{Y({remoteDesktopViewStyle:e}),t({remoteDesktopViewStyle:e})},setRemoteDesktopCustomScale:e=>{let n=A(e);Y({remoteDesktopCustomScale:n}),t({remoteDesktopCustomScale:n})},setRemoteDesktopCustomQuality:(e,n)=>{let i={remoteDesktopCustomQualityPercent:v(e,r().remoteDesktopCustomQualityMore),remoteDesktopCustomFps:y(n)};Y(i),t(i)},setRemoteDesktopCustomQualityMore:e=>{let n={remoteDesktopCustomQualityMore:e,remoteDesktopCustomQualityPercent:v(r().remoteDesktopCustomQualityPercent,e)};Y(n),t(n)},setRemoteDesktopShowCursor:e=>{Y({remoteDesktopShowCursor:e}),t({remoteDesktopShowCursor:e})},setRemoteDesktopClipboardSync:e=>{Y({remoteDesktopClipboardSync:e}),t({remoteDesktopClipboardSync:e})},setRemoteDesktopCodec:e=>{Y({remoteDesktopCodec:e}),t({remoteDesktopCodec:e})},toggleTabWrap:()=>{let e=!r().tabWrap;J({tabWrap:e}),t({tabWrap:e})},toggleRemoteDesktopStatsVisible:()=>{let e=!r().remoteDesktopStatsVisible;J({remoteDesktopStatsVisible:e}),t({remoteDesktopStatsVisible:e})},setRemoteDesktopWarningDismissed:e=>{J({remoteDesktopWarningDismissed:e}),t({remoteDesktopWarningDismissed:e})},dismissMcpSignIn:e=>{let n=r().mcpSignInDismissed,i=[...n,...e.filter(e=>!n.includes(e))].slice(-V);J({mcpSignInDismissed:i}),t({mcpSignInDismissed:i})},undismissMcpSignIn:e=>{let n=r().mcpSignInDismissed;if(!n.includes(e))return;let i=n.filter(t=>t!==e);J({mcpSignInDismissed:i}),t({mcpSignInDismissed:i})},setKeepScreenAwake:e=>{J({keepScreenAwake:e}),t({keepScreenAwake:e})},setEditorTabStyle:e=>{J({editorTabStyle:e}),t({editorTabStyle:e})},setSidebarActiveTab:e=>{J({sidebarActiveTab:e}),t({sidebarActiveTab:e})},setSidebarTabOrder:e=>{let n=R(e);J({sidebarTabOrder:n}),t({sidebarTabOrder:n})},setDockPosition:e=>{J({dockPosition:e}),t({dockPosition:e})},setDbSidebarExpanded:e=>{let n=U(e)??z;J({dbSidebarExpanded:n}),t({dbSidebarExpanded:n})},setExplorerSkin:e=>{J({explorerSkin:e}),t({explorerSkin:e})},fetchServerInfo:async()=>{try{let n=e(),i=n?{headers:{Authorization:`Bearer ${n}`}}:{},[a,o,s]=await Promise.all([fetch(`/api/info`,i),fetch(`/api/settings/theme`,i),fetch(`/api/settings/ui-prefs`,i)]),c=await a.json();if(c.ok){let{device_name:e,version:n,tunnel_active:r}=c.data;t({deviceName:e||null,version:n||null,tunnelActive:!!r}),e&&(document.title=`PPM — ${e}`)}let l=await o.json(),u=l.ok?l.data?.theme:null;u&&typeof u==`object`&&typeof u.style==`string`&&r().setThemeFromPayload({style:u.style,mode:u.mode,customThemeId:u.customThemeId});let d=await s.json();d.ok&&d.data&&re(d.data),r().fetchThemes()}catch{}},syncThemeToServer:async()=>{await X(r().themeStyle,r().themeMode,r().customThemeId)}}));export{i as _,j as a,u as b,D as c,f as d,y as f,r as g,a as h,x as i,E as l,te as m,C as n,A as o,v as p,S as r,O as s,$ as t,ne as u,c as v,o as y};
@@ -1 +1 @@
1
- import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./vendor-mermaid-D6lgjvVE.js";import"./button-B9CTrsEf.js";import"./scroll-area-C0fQWNnx.js";import"./separator-DwDoQpxS.js";import{n as t,t as n}from"./settings-body-CLt6iutX.js";var r=e(),i=({metadata:e})=>(0,r.jsx)(n,{initialCategory:t(e?.category)?e.category:void 0});export{i as SettingsTab};
1
+ import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./vendor-mermaid-D6lgjvVE.js";import"./button-B9CTrsEf.js";import"./scroll-area-C0fQWNnx.js";import"./separator-DwDoQpxS.js";import{n as t,t as n}from"./settings-body-Dwt_rUSa.js";var r=e(),i=({metadata:e})=>(0,r.jsx)(n,{initialCategory:t(e?.category)?e.category:void 0});export{i as SettingsTab};
@@ -1 +1 @@
1
- import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./vendor-mermaid-D6lgjvVE.js";import{t}from"./window-store-UC1jJeLM.js";import"./button-B9CTrsEf.js";import"./scroll-area-C0fQWNnx.js";import"./separator-DwDoQpxS.js";import{n,t as r}from"./settings-body-CLt6iutX.js";var i=e();function a({id:e,payload:a}){let o=t(e=>e.setPayload);return(0,i.jsx)(r,{initialCategory:n(a?.category)?a.category:void 0,onCategoryChange:t=>o(e,{category:t})})}export{a as default};
1
+ import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./vendor-mermaid-D6lgjvVE.js";import{t}from"./window-store-UC1jJeLM.js";import"./button-B9CTrsEf.js";import"./scroll-area-C0fQWNnx.js";import"./separator-DwDoQpxS.js";import{n,t as r}from"./settings-body-Dwt_rUSa.js";var i=e();function a({id:e,payload:a}){let o=t(e=>e.setPayload);return(0,i.jsx)(r,{initialCategory:n(a?.category)?a.category:void 0,onCategoryChange:t=>o(e,{category:t})})}export{a as default};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import{u as r}from"./index-CoTvom0K.js";import{t as i}from"./use-monaco-theme-DvWcXiCH.js";import{a,i as o,r as s}from"./glide-data-grid-usB_4gTg.js";var c=e(t(),1),l=n();function u({onExecute:e,loading:t,defaultValue:n=`SELECT * FROM `,schemaInfo:u,onSqlChange:d,persistedSql:f}){let[p,m]=(0,c.useState)(()=>f??n),h=(0,c.useRef)(!!f),g=(0,c.useRef)(null),_=(0,c.useRef)(null),v=(0,c.useRef)(null),y=(0,c.useRef)(e);y.current=e;let b=i();(0,c.useEffect)(()=>{if(!(!_.current||!u))return v.current?.dispose(),s(),v.current=_.current.languages.registerCompletionItemProvider(`sql`,o(_.current,u)),()=>{v.current?.dispose()}},[u]);let x=(0,c.useCallback)((e,t)=>{g.current=e,_.current=t,e.addAction({id:`run-query-at-cursor`,label:`Run Statement at Cursor`,keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.Enter],run:e=>{let t=e.getPosition();if(!t)return;let n=a(e.getValue(),t.lineNumber);n&&y.current(n)}}),u&&(v.current?.dispose(),v.current=t.languages.registerCompletionItemProvider(`sql`,o(t,u)))},[u]);return(0,c.useEffect)(()=>{h.current||m(n)},[n]),(0,l.jsx)(`div`,{className:`h-full overflow-hidden`,children:(0,l.jsx)(r,{height:`100%`,language:`sql`,theme:b,value:p,onChange:e=>{let t=e??``;m(t),h.current=!0,d?.(t)},onMount:x,options:{minimap:{enabled:!1},lineNumbers:`off`,scrollBeyondLastLine:!1,wordWrap:`on`,fontSize:12,tabSize:2,renderLineHighlight:`none`,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,scrollbar:{vertical:`auto`,horizontal:`auto`,verticalScrollbarSize:6,horizontalScrollbarSize:6},padding:{top:4,bottom:4},lineDecorationsWidth:4,lineNumbersMinChars:0,glyphMargin:!1,folding:!1,fixedOverflowWidgets:!0}})})}export{u as t};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import{u as r}from"./index-C3v3QRVR.js";import{t as i}from"./use-monaco-theme-DGi9_j5M.js";import{a,i as o,r as s}from"./glide-data-grid-OhxZFlYg.js";var c=e(t(),1),l=n();function u({onExecute:e,loading:t,defaultValue:n=`SELECT * FROM `,schemaInfo:u,onSqlChange:d,persistedSql:f}){let[p,m]=(0,c.useState)(()=>f??n),h=(0,c.useRef)(!!f),g=(0,c.useRef)(null),_=(0,c.useRef)(null),v=(0,c.useRef)(null),y=(0,c.useRef)(e);y.current=e;let b=i();(0,c.useEffect)(()=>{if(!(!_.current||!u))return v.current?.dispose(),s(),v.current=_.current.languages.registerCompletionItemProvider(`sql`,o(_.current,u)),()=>{v.current?.dispose()}},[u]);let x=(0,c.useCallback)((e,t)=>{g.current=e,_.current=t,e.addAction({id:`run-query-at-cursor`,label:`Run Statement at Cursor`,keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.Enter],run:e=>{let t=e.getPosition();if(!t)return;let n=a(e.getValue(),t.lineNumber);n&&y.current(n)}}),u&&(v.current?.dispose(),v.current=t.languages.registerCompletionItemProvider(`sql`,o(t,u)))},[u]);return(0,c.useEffect)(()=>{h.current||m(n)},[n]),(0,l.jsx)(`div`,{className:`h-full overflow-hidden`,children:(0,l.jsx)(r,{height:`100%`,language:`sql`,theme:b,value:p,onChange:e=>{let t=e??``;m(t),h.current=!0,d?.(t)},onMount:x,options:{minimap:{enabled:!1},lineNumbers:`off`,scrollBeyondLastLine:!1,wordWrap:`on`,fontSize:12,tabSize:2,renderLineHighlight:`none`,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,scrollbar:{vertical:`auto`,horizontal:`auto`,verticalScrollbarSize:6,horizontalScrollbarSize:6},padding:{top:4,bottom:4},lineDecorationsWidth:4,lineNumbersMinChars:0,glyphMargin:!1,folding:!1,fixedOverflowWidgets:!0}})})}export{u as t};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Qn as r,at as i,ln as a,n as o,vr as s}from"./icons-DQjqk0lJ.js";import{i as c,n as l,s as u}from"./api-client-Jn3njtNw.js";import"./settings-store-tWrnlyEW.js";import"./vendor-mermaid-D6lgjvVE.js";import"./panel-store-D20Zuf3i.js";import"./window-store-UC1jJeLM.js";import"./tab-store-krAuHQ6_.js";import"./data-grid-types-C6UX8kgh.js";import"./use-monaco-theme-DvWcXiCH.js";import{t as d}from"./glide-data-grid-usB_4gTg.js";import{t as f}from"./sql-query-editor-4Okd-7ss.js";var p=e(t(),1);function m(e,t,n){let[r,i]=(0,p.useState)([]),[a,o]=(0,p.useState)(null),[s,d]=(0,p.useState)(null),[f,m]=(0,p.useState)([]),[h,g]=(0,p.useState)(!1),[_,v]=(0,p.useState)(null),[y,b]=(0,p.useState)(1),[x,S]=(0,p.useState)(null),[C,w]=(0,p.useState)(null),[T,E]=(0,p.useState)(!1),D=n?`/api/db/connections/${n}`:null,O=!n&&!e&&/^(\/|[A-Za-z]:[/\\])/.test(t),k=D??(O?`/api/fs/sqlite`:`${c(e)}/sqlite`),A=D?``:`path=${encodeURIComponent(t)}`,j=(0,p.useCallback)(async()=>{g(!0),v(null);try{let e=D?`?cached=1`:A?`?${A}`:``,t=await l.get(`${k}/tables${e}`);i(t),!D&&t.length>0&&!a&&o(t[0].name)}catch(e){v(e.message)}finally{g(!1)}},[k,A,D]);(0,p.useEffect)(()=>{j()},[j]);let M=(0,p.useCallback)(async()=>{if(a){g(!0);try{let e=A?`${A}&`:``,[t,n]=await Promise.all([l.get(`${k}/data?${e}table=${encodeURIComponent(a)}&page=${y}&limit=100`),l.get(`${k}/schema?${e}table=${encodeURIComponent(a)}`)]);d(t),m(n)}catch(e){v(e.message)}finally{g(!1)}}},[k,A,a,y]);(0,p.useEffect)(()=>{M()},[M]);let N=(0,p.useCallback)(e=>{o(e),b(1),S(null)},[]),P=(0,p.useCallback)(async e=>{E(!0),w(null);try{let n=D?{sql:e}:{path:t,sql:e},r=await l.post(`${k}/query`,n);S(r),r.changeType===`modify`&&M()}catch(e){w(e.message)}finally{E(!1)}},[k,D,t,M]),F=(0,p.useCallback)((e,t)=>{let n=t.message;v(n),u.error(`${e} failed`,{description:n})},[]);return{tables:r,selectedTable:a,selectTable:N,tableData:s,schema:f,loading:h,error:_,page:y,setPage:b,queryResult:x,queryError:C,queryLoading:T,executeQuery:P,updateCell:(0,p.useCallback)(async(e,n,r)=>{if(a)try{D?await l.put(`${k}/cell`,{table:a,pkColumn:`rowid`,pkValue:e,column:n,value:r}):await l.put(`${k}/cell`,{path:t,table:a,rowid:e,column:n,value:r}),M()}catch(e){F(`Update cell`,e)}},[k,D,t,a,M,F]),deleteRow:(0,p.useCallback)(async e=>{if(a)try{D?await l.del(`${k}/row`,{table:a,pkColumn:`rowid`,pkValue:e}):await l.del(`${k}/row`,{path:t,table:a,rowid:e}),M(),j()}catch(e){F(`Delete row`,e)}},[k,D,t,a,M,j,F]),refreshTables:j,refreshData:M}}var h=n();function g({tables:e,selectedTable:t,onSelect:n,onRefresh:i}){return(0,h.jsxs)(`div`,{className:`w-48 shrink-0 flex flex-col bg-background overflow-hidden`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,h.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Tables`}),(0,h.jsx)(`button`,{type:`button`,onClick:i,className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,h.jsx)(r,{className:`size-3`})})]}),(0,h.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.map(e=>(0,h.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors ${t===e.name?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:[(0,h.jsx)(s,{className:`size-3 shrink-0`}),(0,h.jsx)(`span`,{className:`truncate flex-1`,children:e.name}),(0,h.jsx)(`span`,{className:`text-[10px] opacity-60`,children:e.rowCount})]},e.name)),e.length===0&&(0,h.jsx)(`p`,{className:`px-3 py-4 text-xs text-muted-foreground text-center`,children:`No tables found`})]})]})}function _({onExecute:e,loading:t}){return(0,h.jsx)(f,{onExecute:e,loading:t})}function v({metadata:e}){let t=e?.filePath,n=e?.projectName,r=e?.connectionId,a=e?.tableName,[o,s]=(0,p.useState)(!1);if(r)return(0,h.jsx)(y,{projectName:``,dbPath:``,connectionId:r,connectionName:e?.connectionName,initialTable:a,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e),hideTableList:!0});let c=!!t&&!n&&/^(\/|[A-Za-z]:[/\\])/.test(t);return!t||!n&&!c?(0,h.jsxs)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:[(0,h.jsx)(i,{className:`size-5 mr-2`}),` No database file selected.`]}):(0,h.jsx)(y,{projectName:n??``,dbPath:t,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e)})}function y({projectName:e,dbPath:t,connectionId:n,connectionName:r,initialTable:s,queryPanelOpen:c,onToggleQueryPanel:l,hideTableList:u}){let f=m(e,t,n),v=(0,p.useRef)(!1);return(0,p.useEffect)(()=>{s&&!v.current&&f.tables.length>0&&(v.current=!0,f.selectTable(s))},[s,f.tables]),f.error&&f.tables.length===0?(0,h.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,h.jsx)(o,{className:`size-10 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm`,children:f.error})]}):f.loading&&f.tables.length===0?(0,h.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-text-secondary`,children:[(0,h.jsx)(a,{className:`size-5 animate-spin`}),(0,h.jsx)(`span`,{className:`text-sm`,children:`Loading database...`})]}):(0,h.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden`,children:[!u&&(0,h.jsx)(g,{tables:f.tables,selectedTable:f.selectedTable,onSelect:f.selectTable,onRefresh:f.refreshTables}),(0,h.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden ${u?``:`border-l border-border`}`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,h.jsx)(i,{className:`size-3.5 text-muted-foreground`}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:r??t}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:f.selectedTable&&`/ ${f.selectedTable}`}),(0,h.jsx)(`div`,{className:`ml-auto`,children:(0,h.jsx)(`button`,{type:`button`,onClick:l,className:`px-2 py-1 rounded text-xs transition-colors ${c?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:`SQL`})})]}),(0,h.jsx)(`div`,{className:`flex-1 overflow-hidden ${c?`max-h-[60%]`:``}`,children:f.tableData?(0,h.jsx)(d,{columns:f.tableData.columns,rows:f.tableData.rows,total:f.tableData.total,limit:f.tableData.limit,schema:f.schema.map(e=>({name:e.name,type:e.type,nullable:!e.notnull,pk:!!e.pk,defaultValue:e.dflt_value,fk:e.fk??null})),loading:f.loading,page:f.page,onPageChange:f.setPage,onCellUpdate:(e,t,n,r)=>f.updateCell(t,n,r),onRowDelete:(e,t)=>f.deleteRow(t)}):(0,h.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:f.loading?(0,h.jsx)(a,{className:`size-4 animate-spin`}):`Select a table`})}),c&&(0,h.jsx)(`div`,{className:`border-t border-border h-[40%] shrink-0`,children:(0,h.jsx)(_,{onExecute:f.executeQuery,loading:f.queryLoading})})]})]})}export{v as SqliteViewer};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Qn as r,at as i,ln as a,n as o,vr as s}from"./icons-DQjqk0lJ.js";import{i as c,n as l,s as u}from"./api-client-Jn3njtNw.js";import"./settings-store-m6qOXoy4.js";import"./vendor-mermaid-D6lgjvVE.js";import"./panel-store-D20Zuf3i.js";import"./window-store-UC1jJeLM.js";import"./tab-store-krAuHQ6_.js";import"./data-grid-types-C6UX8kgh.js";import"./use-monaco-theme-DGi9_j5M.js";import{t as d}from"./glide-data-grid-OhxZFlYg.js";import{t as f}from"./sql-query-editor-DgwwJxwJ.js";var p=e(t(),1);function m(e,t,n){let[r,i]=(0,p.useState)([]),[a,o]=(0,p.useState)(null),[s,d]=(0,p.useState)(null),[f,m]=(0,p.useState)([]),[h,g]=(0,p.useState)(!1),[_,v]=(0,p.useState)(null),[y,b]=(0,p.useState)(1),[x,S]=(0,p.useState)(null),[C,w]=(0,p.useState)(null),[T,E]=(0,p.useState)(!1),D=n?`/api/db/connections/${n}`:null,O=!n&&!e&&/^(\/|[A-Za-z]:[/\\])/.test(t),k=D??(O?`/api/fs/sqlite`:`${c(e)}/sqlite`),A=D?``:`path=${encodeURIComponent(t)}`,j=(0,p.useCallback)(async()=>{g(!0),v(null);try{let e=D?`?cached=1`:A?`?${A}`:``,t=await l.get(`${k}/tables${e}`);i(t),!D&&t.length>0&&!a&&o(t[0].name)}catch(e){v(e.message)}finally{g(!1)}},[k,A,D]);(0,p.useEffect)(()=>{j()},[j]);let M=(0,p.useCallback)(async()=>{if(a){g(!0);try{let e=A?`${A}&`:``,[t,n]=await Promise.all([l.get(`${k}/data?${e}table=${encodeURIComponent(a)}&page=${y}&limit=100`),l.get(`${k}/schema?${e}table=${encodeURIComponent(a)}`)]);d(t),m(n)}catch(e){v(e.message)}finally{g(!1)}}},[k,A,a,y]);(0,p.useEffect)(()=>{M()},[M]);let N=(0,p.useCallback)(e=>{o(e),b(1),S(null)},[]),P=(0,p.useCallback)(async e=>{E(!0),w(null);try{let n=D?{sql:e}:{path:t,sql:e},r=await l.post(`${k}/query`,n);S(r),r.changeType===`modify`&&M()}catch(e){w(e.message)}finally{E(!1)}},[k,D,t,M]),F=(0,p.useCallback)((e,t)=>{let n=t.message;v(n),u.error(`${e} failed`,{description:n})},[]);return{tables:r,selectedTable:a,selectTable:N,tableData:s,schema:f,loading:h,error:_,page:y,setPage:b,queryResult:x,queryError:C,queryLoading:T,executeQuery:P,updateCell:(0,p.useCallback)(async(e,n,r)=>{if(a)try{D?await l.put(`${k}/cell`,{table:a,pkColumn:`rowid`,pkValue:e,column:n,value:r}):await l.put(`${k}/cell`,{path:t,table:a,rowid:e,column:n,value:r}),M()}catch(e){F(`Update cell`,e)}},[k,D,t,a,M,F]),deleteRow:(0,p.useCallback)(async e=>{if(a)try{D?await l.del(`${k}/row`,{table:a,pkColumn:`rowid`,pkValue:e}):await l.del(`${k}/row`,{path:t,table:a,rowid:e}),M(),j()}catch(e){F(`Delete row`,e)}},[k,D,t,a,M,j,F]),refreshTables:j,refreshData:M}}var h=n();function g({tables:e,selectedTable:t,onSelect:n,onRefresh:i}){return(0,h.jsxs)(`div`,{className:`w-48 shrink-0 flex flex-col bg-background overflow-hidden`,children:[(0,h.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border`,children:[(0,h.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wider`,children:`Tables`}),(0,h.jsx)(`button`,{type:`button`,onClick:i,className:`text-muted-foreground hover:text-foreground transition-colors`,title:`Refresh tables`,children:(0,h.jsx)(r,{className:`size-3`})})]}),(0,h.jsxs)(`div`,{className:`flex-1 overflow-y-auto`,children:[e.map(e=>(0,h.jsxs)(`button`,{type:`button`,onClick:()=>n(e.name),className:`w-full flex items-center gap-2 px-3 py-1.5 text-left text-xs transition-colors ${t===e.name?`bg-muted text-foreground`:`text-muted-foreground hover:bg-muted/50 hover:text-foreground`}`,children:[(0,h.jsx)(s,{className:`size-3 shrink-0`}),(0,h.jsx)(`span`,{className:`truncate flex-1`,children:e.name}),(0,h.jsx)(`span`,{className:`text-[10px] opacity-60`,children:e.rowCount})]},e.name)),e.length===0&&(0,h.jsx)(`p`,{className:`px-3 py-4 text-xs text-muted-foreground text-center`,children:`No tables found`})]})]})}function _({onExecute:e,loading:t}){return(0,h.jsx)(f,{onExecute:e,loading:t})}function v({metadata:e}){let t=e?.filePath,n=e?.projectName,r=e?.connectionId,a=e?.tableName,[o,s]=(0,p.useState)(!1);if(r)return(0,h.jsx)(y,{projectName:``,dbPath:``,connectionId:r,connectionName:e?.connectionName,initialTable:a,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e),hideTableList:!0});let c=!!t&&!n&&/^(\/|[A-Za-z]:[/\\])/.test(t);return!t||!n&&!c?(0,h.jsxs)(`div`,{className:`flex items-center justify-center h-full text-text-secondary text-sm`,children:[(0,h.jsx)(i,{className:`size-5 mr-2`}),` No database file selected.`]}):(0,h.jsx)(y,{projectName:n??``,dbPath:t,queryPanelOpen:o,onToggleQueryPanel:()=>s(e=>!e)})}function y({projectName:e,dbPath:t,connectionId:n,connectionName:r,initialTable:s,queryPanelOpen:c,onToggleQueryPanel:l,hideTableList:u}){let f=m(e,t,n),v=(0,p.useRef)(!1);return(0,p.useEffect)(()=>{s&&!v.current&&f.tables.length>0&&(v.current=!0,f.selectTable(s))},[s,f.tables]),f.error&&f.tables.length===0?(0,h.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,h.jsx)(o,{className:`size-10 text-destructive`}),(0,h.jsx)(`p`,{className:`text-sm`,children:f.error})]}):f.loading&&f.tables.length===0?(0,h.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2 text-text-secondary`,children:[(0,h.jsx)(a,{className:`size-5 animate-spin`}),(0,h.jsx)(`span`,{className:`text-sm`,children:`Loading database...`})]}):(0,h.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden`,children:[!u&&(0,h.jsx)(g,{tables:f.tables,selectedTable:f.selectedTable,onSelect:f.selectTable,onRefresh:f.refreshTables}),(0,h.jsxs)(`div`,{className:`flex-1 flex flex-col overflow-hidden ${u?``:`border-l border-border`}`,children:[(0,h.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,h.jsx)(i,{className:`size-3.5 text-muted-foreground`}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground truncate`,children:r??t}),(0,h.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:f.selectedTable&&`/ ${f.selectedTable}`}),(0,h.jsx)(`div`,{className:`ml-auto`,children:(0,h.jsx)(`button`,{type:`button`,onClick:l,className:`px-2 py-1 rounded text-xs transition-colors ${c?`bg-muted text-foreground`:`text-muted-foreground hover:text-foreground`}`,children:`SQL`})})]}),(0,h.jsx)(`div`,{className:`flex-1 overflow-hidden ${c?`max-h-[60%]`:``}`,children:f.tableData?(0,h.jsx)(d,{columns:f.tableData.columns,rows:f.tableData.rows,total:f.tableData.total,limit:f.tableData.limit,schema:f.schema.map(e=>({name:e.name,type:e.type,nullable:!e.notnull,pk:!!e.pk,defaultValue:e.dflt_value,fk:e.fk??null})),loading:f.loading,page:f.page,onPageChange:f.setPage,onCellUpdate:(e,t,n,r)=>f.updateCell(t,n,r),onRowDelete:(e,t)=>f.deleteRow(t)}):(0,h.jsx)(`div`,{className:`flex items-center justify-center h-full text-xs text-muted-foreground`,children:f.loading?(0,h.jsx)(a,{className:`size-4 animate-spin`}):`Select a table`})}),c&&(0,h.jsx)(`div`,{className:`border-t border-border h-[40%] shrink-0`,children:(0,h.jsx)(_,{onExecute:f.executeQuery,loading:f.queryLoading})})]})]})}export{v as SqliteViewer};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/overview-panel-9OdBcYJC.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-markdown-CuWCHIVb.js","assets/utils-Bmf_8h7Y.js","assets/format-bytes-amUJ8Js8.js","assets/process-table-DcEq9HCl.js","assets/index-CoTvom0K.js","assets/vendor-mermaid-D6lgjvVE.js","assets/vendor-ui-DmZ-Mb-H.js","assets/button-B9CTrsEf.js","assets/createLucideIcon-DoiEKeJ_.js","assets/api-client-Jn3njtNw.js","assets/react-Bghu0NUO.js","assets/settings-store-tWrnlyEW.js","assets/file-store-Ds3qJ4hC.js","assets/window-store-UC1jJeLM.js","assets/window-pip-registry-D1oXq-Dq.js","assets/panel-store-D20Zuf3i.js","assets/onboarding-quick-orientation-Dqmis-E5.js","assets/dialog-B84_DJQ8.js","assets/portal-container-context-BarKmT4S.js","assets/icons-DQjqk0lJ.js","assets/use-is-mobile-TkcwP1Gx.js","assets/format-file-meta-eKLstbCL.js","assets/fs-api-orca76dV.js","assets/context-menu-C6pIsf83.js","assets/input-QNG_gTHh.js","assets/mobile-bottom-sheet-C3TniEP-.js","assets/use-visual-viewport-Lp878uzs.js","assets/scroll-area-C0fQWNnx.js","assets/file-icons-wS-OmEVu.js","assets/project-framework-store-ViZgce6y.js","assets/git-repo-store-BCEPfUGT.js","assets/project-store-hNvwfqX3.js","assets/ws-auth-CaxV807E.js","assets/tab-store-krAuHQ6_.js","assets/apply-theme-CbR31K6I.js","assets/resolve-theme-BNubecVz.js","assets/index-DLn9-Lrb.css"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import{Lr as r,Rr as i}from"./icons-DQjqk0lJ.js";import{q as a}from"./vendor-mermaid-D6lgjvVE.js";import{n as o}from"./utils-Bmf_8h7Y.js";import{T as s}from"./index-CoTvom0K.js";var c=e(t(),1),l=n(),u=(0,c.lazy)(()=>a(()=>import(`./overview-panel-9OdBcYJC.js`).then(e=>({default:e.OverviewPanel})),__vite__mapDeps([0,1,2,3,4]))),d=(0,c.lazy)(()=>a(()=>import(`./process-table-DcEq9HCl.js`).then(e=>({default:e.ProcessTable})),__vite__mapDeps([5,1,6,7,8,2,9,3,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,4])));function f({isConnected:e,elapsed:t,tickCount:n}){return(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-text-subtle`,"data-testid":`sysmon-connection`,"data-tick-count":n,children:[e?(0,l.jsx)(r,{className:`size-3 text-success`}):(0,l.jsx)(i,{className:`size-3 text-error`}),(0,l.jsx)(`span`,{children:e?`Updated ${t}s ago`:`Disconnected`})]})}var p=(0,c.memo)(function({initialTab:e=`overview`,onTabChange:t,variant:n=`tab`}){let{latest:r,history:i,isConnected:a,tickCount:p}=s({processes:!0}),[m,h]=(0,c.useState)(e),g=e=>{h(e),t?.(e)},_=r?Math.round((Date.now()-r.ts)/1e3):0,v=r?.warnings??[];return(0,l.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,"data-testid":`system-monitor-window`,children:[n===`tab`&&(0,l.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,l.jsx)(`h2`,{className:`text-sm font-medium`,children:`System Monitor`}),(0,l.jsx)(f,{isConnected:a,elapsed:_,tickCount:p})]}),v.length>0&&(0,l.jsx)(`div`,{className:`px-3 py-1.5 text-[11px] text-warning bg-warning/10 border-b border-border shrink-0 space-y-0.5`,"data-testid":`sysmon-warnings`,children:v.map((e,t)=>(0,l.jsx)(`div`,{children:e},t))}),(0,l.jsxs)(`div`,{className:`flex items-center border-b border-border shrink-0`,role:`tablist`,children:[(0,l.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`overview`,"data-testid":`sysmon-tab-overview`,onClick:()=>g(`overview`),className:o(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`overview`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Overview`}),(0,l.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`processes`,"data-testid":`sysmon-tab-processes`,onClick:()=>g(`processes`),className:o(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`processes`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Processes`}),n===`window`&&(0,l.jsx)(`div`,{className:`ml-auto pr-3`,children:(0,l.jsx)(f,{isConnected:a,elapsed:_,tickCount:p})})]}),(0,l.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto`,children:(0,l.jsx)(c.Suspense,{fallback:(0,l.jsx)(`div`,{className:`p-4 text-xs text-text-subtle`,children:`Loading…`}),children:r?m===`overview`?(0,l.jsx)(u,{system:r.system,history:i}):(0,l.jsx)(d,{snapshot:r}):(0,l.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-subtle text-sm p-4`,children:a?`Waiting for data…`:`Connecting to resource monitor…`})})})]})});export{p as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/overview-panel-9OdBcYJC.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-markdown-CuWCHIVb.js","assets/utils-Bmf_8h7Y.js","assets/format-bytes-amUJ8Js8.js","assets/process-table-1CN3rBVp.js","assets/index-C3v3QRVR.js","assets/vendor-mermaid-D6lgjvVE.js","assets/vendor-ui-DmZ-Mb-H.js","assets/button-B9CTrsEf.js","assets/createLucideIcon-DoiEKeJ_.js","assets/api-client-Jn3njtNw.js","assets/react-Bghu0NUO.js","assets/settings-store-m6qOXoy4.js","assets/file-store-Ds3qJ4hC.js","assets/window-store-UC1jJeLM.js","assets/window-pip-registry-D1oXq-Dq.js","assets/panel-store-D20Zuf3i.js","assets/onboarding-quick-orientation-Dqmis-E5.js","assets/dialog-B84_DJQ8.js","assets/portal-container-context-BarKmT4S.js","assets/icons-DQjqk0lJ.js","assets/use-is-mobile-TkcwP1Gx.js","assets/format-file-meta-eKLstbCL.js","assets/fs-api-orca76dV.js","assets/context-menu-C6pIsf83.js","assets/input-QNG_gTHh.js","assets/mobile-bottom-sheet-C3TniEP-.js","assets/use-visual-viewport-Lp878uzs.js","assets/scroll-area-C0fQWNnx.js","assets/file-icons-wS-OmEVu.js","assets/project-framework-store-ViZgce6y.js","assets/git-repo-store-BCEPfUGT.js","assets/project-store-hNvwfqX3.js","assets/ws-auth-CaxV807E.js","assets/tab-store-krAuHQ6_.js","assets/apply-theme-CbR31K6I.js","assets/resolve-theme-BNubecVz.js","assets/index-aXJy_SvC.css"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import{Lr as r,Rr as i}from"./icons-DQjqk0lJ.js";import{q as a}from"./vendor-mermaid-D6lgjvVE.js";import{n as o}from"./utils-Bmf_8h7Y.js";import{T as s}from"./index-C3v3QRVR.js";var c=e(t(),1),l=n(),u=(0,c.lazy)(()=>a(()=>import(`./overview-panel-9OdBcYJC.js`).then(e=>({default:e.OverviewPanel})),__vite__mapDeps([0,1,2,3,4]))),d=(0,c.lazy)(()=>a(()=>import(`./process-table-1CN3rBVp.js`).then(e=>({default:e.ProcessTable})),__vite__mapDeps([5,1,6,7,8,2,9,3,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,4])));function f({isConnected:e,elapsed:t,tickCount:n}){return(0,l.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-text-subtle`,"data-testid":`sysmon-connection`,"data-tick-count":n,children:[e?(0,l.jsx)(r,{className:`size-3 text-success`}):(0,l.jsx)(i,{className:`size-3 text-error`}),(0,l.jsx)(`span`,{children:e?`Updated ${t}s ago`:`Disconnected`})]})}var p=(0,c.memo)(function({initialTab:e=`overview`,onTabChange:t,variant:n=`tab`}){let{latest:r,history:i,isConnected:a,tickCount:p}=s({processes:!0}),[m,h]=(0,c.useState)(e),g=e=>{h(e),t?.(e)},_=r?Math.round((Date.now()-r.ts)/1e3):0,v=r?.warnings??[];return(0,l.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,"data-testid":`system-monitor-window`,children:[n===`tab`&&(0,l.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,l.jsx)(`h2`,{className:`text-sm font-medium`,children:`System Monitor`}),(0,l.jsx)(f,{isConnected:a,elapsed:_,tickCount:p})]}),v.length>0&&(0,l.jsx)(`div`,{className:`px-3 py-1.5 text-[11px] text-warning bg-warning/10 border-b border-border shrink-0 space-y-0.5`,"data-testid":`sysmon-warnings`,children:v.map((e,t)=>(0,l.jsx)(`div`,{children:e},t))}),(0,l.jsxs)(`div`,{className:`flex items-center border-b border-border shrink-0`,role:`tablist`,children:[(0,l.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`overview`,"data-testid":`sysmon-tab-overview`,onClick:()=>g(`overview`),className:o(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`overview`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Overview`}),(0,l.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`processes`,"data-testid":`sysmon-tab-processes`,onClick:()=>g(`processes`),className:o(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`processes`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Processes`}),n===`window`&&(0,l.jsx)(`div`,{className:`ml-auto pr-3`,children:(0,l.jsx)(f,{isConnected:a,elapsed:_,tickCount:p})})]}),(0,l.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto`,children:(0,l.jsx)(c.Suspense,{fallback:(0,l.jsx)(`div`,{className:`p-4 text-xs text-text-subtle`,children:`Loading…`}),children:r?m===`overview`?(0,l.jsx)(u,{system:r.system,history:i}):(0,l.jsx)(d,{snapshot:r}):(0,l.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-subtle text-sm p-4`,children:a?`Waiting for data…`:`Connecting to resource monitor…`})})})]})});export{p as t};
@@ -1 +1 @@
1
- import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./api-client-Jn3njtNw.js";import"./vendor-mermaid-D6lgjvVE.js";import{t}from"./system-monitor-body-Ssmt-r5H.js";var n=e(),r=()=>(0,n.jsx)(t,{});export{r as SystemMonitorTab};
1
+ import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./api-client-Jn3njtNw.js";import"./vendor-mermaid-D6lgjvVE.js";import{t}from"./system-monitor-body-BJrVntEe.js";var n=e(),r=()=>(0,n.jsx)(t,{});export{r as SystemMonitorTab};
@@ -1 +1 @@
1
- import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./api-client-Jn3njtNw.js";import"./vendor-mermaid-D6lgjvVE.js";import{t}from"./window-store-UC1jJeLM.js";import{t as n}from"./system-monitor-body-Ssmt-r5H.js";var r=e();function i({id:e,payload:i}){let a=t(e=>e.setPayload);return(0,r.jsx)(n,{initialTab:i?.tab===`processes`?`processes`:`overview`,onTabChange:t=>a(e,{tab:t}),variant:`window`})}export{i as default};
1
+ import{S as e}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./api-client-Jn3njtNw.js";import"./vendor-mermaid-D6lgjvVE.js";import{t}from"./window-store-UC1jJeLM.js";import{t as n}from"./system-monitor-body-BJrVntEe.js";var r=e();function i({id:e,payload:i}){let a=t(e=>e.setPayload);return(0,r.jsx)(n,{initialTab:i?.tab===`processes`?`processes`:`overview`,onTabChange:t=>a(e,{tab:t}),variant:`window`})}export{i as default};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./vendor-mermaid-D6lgjvVE.js";import"./portal-container-context-BarKmT4S.js";import{p as r,t as i}from"./panel-store-D20Zuf3i.js";import"./window-store-UC1jJeLM.js";import"./use-is-mobile-TkcwP1Gx.js";import"./window-pip-registry-D1oXq-Dq.js";import{tn as a}from"./index-CoTvom0K.js";var o=e(t(),1),s=n();function c({id:e,payload:t}){let n=r(e),c=(i(e=>e.panels[n])?.tabs.length??0)>0,l=(0,o.useRef)(!1);c&&(l.current=!0);let u=typeof t?.originPanelId==`string`?t.originPanelId:null,d=(0,o.useRef)(u);d.current=u;let f=(0,o.useCallback)(e=>a(n,e),[n]),p=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>(p.current=null,()=>{let t={};p.current=t,queueMicrotask(()=>{p.current===t&&(p.current=null,i.getState().redockFromWindow(e,d.current))})}),[e]),(0,s.jsxs)(`div`,{className:`relative h-full w-full`,children:[(0,s.jsx)(`div`,{ref:f,className:`absolute inset-0`}),!c&&!l.current&&(0,s.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-xs text-text-2 pointer-events-none`,children:`Loading…`})]})}export{c as default};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import"./icons-DQjqk0lJ.js";import"./vendor-mermaid-D6lgjvVE.js";import"./portal-container-context-BarKmT4S.js";import{p as r,t as i}from"./panel-store-D20Zuf3i.js";import"./window-store-UC1jJeLM.js";import"./use-is-mobile-TkcwP1Gx.js";import"./window-pip-registry-D1oXq-Dq.js";import{rn as a}from"./index-C3v3QRVR.js";var o=e(t(),1),s=n();function c({id:e,payload:t}){let n=r(e),c=(i(e=>e.panels[n])?.tabs.length??0)>0,l=(0,o.useRef)(!1);c&&(l.current=!0);let u=typeof t?.originPanelId==`string`?t.originPanelId:null,d=(0,o.useRef)(u);d.current=u;let f=(0,o.useCallback)(e=>a(n,e),[n]),p=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>(p.current=null,()=>{let t={};p.current=t,queueMicrotask(()=>{p.current===t&&(p.current=null,i.getState().redockFromWindow(e,d.current))})}),[e]),(0,s.jsxs)(`div`,{className:`relative h-full w-full`,children:[(0,s.jsx)(`div`,{ref:f,className:`absolute inset-0`}),!c&&!l.current&&(0,s.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-xs text-text-2 pointer-events-none`,children:`Loading…`})]})}export{c as default};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/team-member-window-content-B1sg0R4H.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-mermaid-D6lgjvVE.js","assets/vendor-ui-DmZ-Mb-H.js","assets/vendor-markdown-CuWCHIVb.js","assets/utils-Bmf_8h7Y.js","assets/api-client-Jn3njtNw.js","assets/tool-cards-DzYJVhjl.js","assets/index-CoTvom0K.js","assets/button-B9CTrsEf.js","assets/createLucideIcon-DoiEKeJ_.js","assets/react-Bghu0NUO.js","assets/settings-store-tWrnlyEW.js","assets/file-store-Ds3qJ4hC.js","assets/window-store-UC1jJeLM.js","assets/window-pip-registry-D1oXq-Dq.js","assets/panel-store-D20Zuf3i.js","assets/onboarding-quick-orientation-Dqmis-E5.js","assets/dialog-B84_DJQ8.js","assets/portal-container-context-BarKmT4S.js","assets/icons-DQjqk0lJ.js","assets/use-is-mobile-TkcwP1Gx.js","assets/format-file-meta-eKLstbCL.js","assets/fs-api-orca76dV.js","assets/context-menu-C6pIsf83.js","assets/input-QNG_gTHh.js","assets/mobile-bottom-sheet-C3TniEP-.js","assets/use-visual-viewport-Lp878uzs.js","assets/scroll-area-C0fQWNnx.js","assets/file-icons-wS-OmEVu.js","assets/project-framework-store-ViZgce6y.js","assets/git-repo-store-BCEPfUGT.js","assets/project-store-hNvwfqX3.js","assets/ws-auth-CaxV807E.js","assets/tab-store-krAuHQ6_.js","assets/apply-theme-CbR31K6I.js","assets/resolve-theme-BNubecVz.js","assets/index-DLn9-Lrb.css","assets/image-preview-geometry-BFKR37Pj.js","assets/use-blob-url-C0VR6Uhh.js","assets/image-gallery-DdQblMAe.js"])))=>i.map(i=>d[i]);
2
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Br as r}from"./icons-DQjqk0lJ.js";import{q as i}from"./vendor-mermaid-D6lgjvVE.js";import"./portal-container-context-BarKmT4S.js";import"./window-store-UC1jJeLM.js";import"./use-is-mobile-TkcwP1Gx.js";import{t as a}from"./mobile-bottom-sheet-C3TniEP-.js";import"./use-visual-viewport-Lp878uzs.js";import{n as o}from"./use-open-team-member-y9sVhaNr.js";var s=e(t(),1),c=n(),l=(0,s.lazy)(()=>i(()=>import(`./team-member-window-content-B1sg0R4H.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40])));function u(){let e=o(e=>e.payload),t=o(e=>e.close);return e?(0,c.jsxs)(a,{open:!0,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,c.jsxs)(`span`,{className:`truncate text-sm font-medium text-text-primary`,children:[`Session — `,e.memberName]}),(0,c.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto flex size-11 items-center justify-center rounded text-text-secondary hover:text-text-primary`,"aria-label":`Close`,children:(0,c.jsx)(r,{className:`size-5`})})]}),(0,c.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,c.jsx)(s.Suspense,{fallback:(0,c.jsx)(`div`,{className:`p-4 text-sm text-text-2`,children:`Loading…`}),children:(0,c.jsx)(l,{id:`sheet-${e.memberName}`,payload:e})})})]}):null}export{u as TeamMemberSheet};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/team-member-window-content-D6SxpWVr.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-mermaid-D6lgjvVE.js","assets/vendor-ui-DmZ-Mb-H.js","assets/vendor-markdown-CuWCHIVb.js","assets/utils-Bmf_8h7Y.js","assets/api-client-Jn3njtNw.js","assets/tool-cards-O9N-oJuB.js","assets/index-C3v3QRVR.js","assets/button-B9CTrsEf.js","assets/createLucideIcon-DoiEKeJ_.js","assets/react-Bghu0NUO.js","assets/settings-store-m6qOXoy4.js","assets/file-store-Ds3qJ4hC.js","assets/window-store-UC1jJeLM.js","assets/window-pip-registry-D1oXq-Dq.js","assets/panel-store-D20Zuf3i.js","assets/onboarding-quick-orientation-Dqmis-E5.js","assets/dialog-B84_DJQ8.js","assets/portal-container-context-BarKmT4S.js","assets/icons-DQjqk0lJ.js","assets/use-is-mobile-TkcwP1Gx.js","assets/format-file-meta-eKLstbCL.js","assets/fs-api-orca76dV.js","assets/context-menu-C6pIsf83.js","assets/input-QNG_gTHh.js","assets/mobile-bottom-sheet-C3TniEP-.js","assets/use-visual-viewport-Lp878uzs.js","assets/scroll-area-C0fQWNnx.js","assets/file-icons-wS-OmEVu.js","assets/project-framework-store-ViZgce6y.js","assets/git-repo-store-BCEPfUGT.js","assets/project-store-hNvwfqX3.js","assets/ws-auth-CaxV807E.js","assets/tab-store-krAuHQ6_.js","assets/apply-theme-CbR31K6I.js","assets/resolve-theme-BNubecVz.js","assets/index-aXJy_SvC.css","assets/image-preview-geometry-BFKR37Pj.js","assets/use-blob-url-C0VR6Uhh.js","assets/image-gallery-DdQblMAe.js"])))=>i.map(i=>d[i]);
2
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Br as r}from"./icons-DQjqk0lJ.js";import{q as i}from"./vendor-mermaid-D6lgjvVE.js";import"./portal-container-context-BarKmT4S.js";import"./window-store-UC1jJeLM.js";import"./use-is-mobile-TkcwP1Gx.js";import{t as a}from"./mobile-bottom-sheet-C3TniEP-.js";import"./use-visual-viewport-Lp878uzs.js";import{n as o}from"./use-open-team-member-y9sVhaNr.js";var s=e(t(),1),c=n(),l=(0,s.lazy)(()=>i(()=>import(`./team-member-window-content-D6SxpWVr.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40])));function u(){let e=o(e=>e.payload),t=o(e=>e.close);return e?(0,c.jsxs)(a,{open:!0,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,c.jsxs)(`span`,{className:`truncate text-sm font-medium text-text-primary`,children:[`Session — `,e.memberName]}),(0,c.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto flex size-11 items-center justify-center rounded text-text-secondary hover:text-text-primary`,"aria-label":`Close`,children:(0,c.jsx)(r,{className:`size-5`})})]}),(0,c.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,c.jsx)(s.Suspense,{fallback:(0,c.jsx)(`div`,{className:`p-4 text-sm text-text-2`,children:`Loading…`}),children:(0,c.jsx)(l,{id:`sheet-${e.memberName}`,payload:e})})})]}):null}export{u as TeamMemberSheet};
@@ -1 +1 @@
1
- import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Qn as r,ln as i}from"./icons-DQjqk0lJ.js";import{n as a}from"./api-client-Jn3njtNw.js";import"./vendor-mermaid-D6lgjvVE.js";import{n as o}from"./utils-Bmf_8h7Y.js";import"./panel-store-D20Zuf3i.js";import"./window-store-UC1jJeLM.js";import"./tab-store-krAuHQ6_.js";import{t as s}from"./tool-cards-DzYJVhjl.js";import"./use-blob-url-C0VR6Uhh.js";var c=e(t(),1),l=3e3,u=2e3;function d(e,t){let[n,r]=(0,c.useState)([]),[i,o]=(0,c.useState)(!0),[s,d]=(0,c.useState)(null),[f,p]=(0,c.useState)(0);return(0,c.useEffect)(()=>{if(!e||!t){d(`Missing team or member`),o(!1);return}let n=!1,i=0,s=!1;r([]),o(!0),d(null);let c=async()=>{if(s)return;s=!0;let c=i===0;try{let o=await a.get(`/api/teams/${encodeURIComponent(e)}/members/${encodeURIComponent(t)}/transcript?sinceBytes=${i}`);if(n)return;i=o?.nextBytes??i;let s=o?.events??[];c||o?.restarted?r(s.slice(-u)):s.length>0&&r(e=>[...e,...s].slice(-u)),d(null)}catch{!n&&c&&d(`Could not read this member's session`)}finally{s=!1,n||o(!1)}};c();let f=setInterval(()=>void c(),l);return()=>{n=!0,clearInterval(f)}},[e,t,f]),{events:n,loading:i,error:s,refresh:(0,c.useCallback)(()=>p(e=>e+1),[])}}var f=n();function p({payload:e}){let{teamName:t,memberName:n,projectName:a}=e??{},{events:c,loading:l,error:u,refresh:p}=d(t,n);return(0,f.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 bg-surface`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border/30 shrink-0`,children:[(0,f.jsx)(`span`,{className:`text-xs font-medium truncate`,children:n}),(0,f.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:c.length>0?`${c.length} steps`:``}),(0,f.jsx)(`button`,{type:`button`,onClick:p,className:`ml-auto text-text-subtle hover:text-foreground p-1 shrink-0`,"aria-label":`Reload session`,children:(0,f.jsx)(r,{className:o(`size-3`,l&&`animate-spin`)})})]}),l&&c.length===0?(0,f.jsxs)(`div`,{className:`flex-1 flex items-center justify-center gap-2 text-xs text-text-subtle`,children:[(0,f.jsx)(i,{className:`size-3 animate-spin`}),`Loading session…`]}):u?(0,f.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-error px-4 text-center`,children:u}):c.length===0?(0,f.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-text-subtle`,children:`This member has no recorded session`}):(0,f.jsx)(s,{events:c,projectName:a,className:`flex-1 min-h-0 overflow-y-auto px-3 py-2 space-y-1`})]})}export{p as default};
1
+ import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{C as t,S as n}from"./vendor-markdown-CuWCHIVb.js";import"./vendor-ui-DmZ-Mb-H.js";import{Qn as r,ln as i}from"./icons-DQjqk0lJ.js";import{n as a}from"./api-client-Jn3njtNw.js";import"./vendor-mermaid-D6lgjvVE.js";import{n as o}from"./utils-Bmf_8h7Y.js";import"./panel-store-D20Zuf3i.js";import"./window-store-UC1jJeLM.js";import"./tab-store-krAuHQ6_.js";import{t as s}from"./tool-cards-O9N-oJuB.js";import"./use-blob-url-C0VR6Uhh.js";var c=e(t(),1),l=3e3,u=2e3;function d(e,t){let[n,r]=(0,c.useState)([]),[i,o]=(0,c.useState)(!0),[s,d]=(0,c.useState)(null),[f,p]=(0,c.useState)(0);return(0,c.useEffect)(()=>{if(!e||!t){d(`Missing team or member`),o(!1);return}let n=!1,i=0,s=!1;r([]),o(!0),d(null);let c=async()=>{if(s)return;s=!0;let c=i===0;try{let o=await a.get(`/api/teams/${encodeURIComponent(e)}/members/${encodeURIComponent(t)}/transcript?sinceBytes=${i}`);if(n)return;i=o?.nextBytes??i;let s=o?.events??[];c||o?.restarted?r(s.slice(-u)):s.length>0&&r(e=>[...e,...s].slice(-u)),d(null)}catch{!n&&c&&d(`Could not read this member's session`)}finally{s=!1,n||o(!1)}};c();let f=setInterval(()=>void c(),l);return()=>{n=!0,clearInterval(f)}},[e,t,f]),{events:n,loading:i,error:s,refresh:(0,c.useCallback)(()=>p(e=>e+1),[])}}var f=n();function p({payload:e}){let{teamName:t,memberName:n,projectName:a}=e??{},{events:c,loading:l,error:u,refresh:p}=d(t,n);return(0,f.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 bg-surface`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border/30 shrink-0`,children:[(0,f.jsx)(`span`,{className:`text-xs font-medium truncate`,children:n}),(0,f.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:c.length>0?`${c.length} steps`:``}),(0,f.jsx)(`button`,{type:`button`,onClick:p,className:`ml-auto text-text-subtle hover:text-foreground p-1 shrink-0`,"aria-label":`Reload session`,children:(0,f.jsx)(r,{className:o(`size-3`,l&&`animate-spin`)})})]}),l&&c.length===0?(0,f.jsxs)(`div`,{className:`flex-1 flex items-center justify-center gap-2 text-xs text-text-subtle`,children:[(0,f.jsx)(i,{className:`size-3 animate-spin`}),`Loading session…`]}):u?(0,f.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-error px-4 text-center`,children:u}):c.length===0?(0,f.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-text-subtle`,children:`This member has no recorded session`}):(0,f.jsx)(s,{events:c,projectName:a,className:`flex-1 min-h-0 overflow-y-auto px-3 py-2 space-y-1`})]})}export{p as default};