@hienlh/ppm 0.23.16 → 0.23.17

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 (444) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/assets/skills/ppm/SKILL.md +1 -1
  3. package/assets/skills/ppm/references/cli-reference.md +4 -4
  4. package/assets/skills/ppm/references/http-api.md +1 -1
  5. package/dist/web/assets/{accounts-settings-section-DhzuFkDO.js → accounts-settings-section-BqsI4Ixj.js} +1 -1
  6. package/dist/web/assets/accounts-settings-section-BqsI4Ixj.js.br +0 -0
  7. package/dist/web/assets/accounts-settings-section-BqsI4Ixj.js.gz +0 -0
  8. package/dist/web/assets/{agent-session-sheet-CZAmOwSU.js → agent-session-sheet-BmoNB8BG.js} +2 -2
  9. package/dist/web/assets/agent-session-sheet-BmoNB8BG.js.br +0 -0
  10. package/dist/web/assets/agent-session-sheet-BmoNB8BG.js.gz +0 -0
  11. package/dist/web/assets/{agent-session-window-content-CwokWtJq.js → agent-session-window-content-rlCrYBYv.js} +1 -1
  12. package/dist/web/assets/agent-session-window-content-rlCrYBYv.js.br +0 -0
  13. package/dist/web/assets/agent-session-window-content-rlCrYBYv.js.gz +0 -0
  14. package/dist/web/assets/{ai-resource-editor-CT1JCaRQ.js → ai-resource-editor-CUOR9Xtf.js} +1 -1
  15. package/dist/web/assets/ai-resource-editor-CUOR9Xtf.js.br +0 -0
  16. package/dist/web/assets/ai-resource-editor-CUOR9Xtf.js.gz +0 -0
  17. package/dist/web/assets/{ai-settings-section-Ct9-lNqA.js → ai-settings-section-CNdbcCaI.js} +1 -1
  18. package/dist/web/assets/ai-settings-section-CNdbcCaI.js.br +0 -0
  19. package/dist/web/assets/ai-settings-section-CNdbcCaI.js.gz +0 -0
  20. package/dist/web/assets/{ai-settings-section-CBlS1FZK.js → ai-settings-section-aXXTb0dN.js} +1 -1
  21. package/dist/web/assets/{android-tab-CUPQN2M4.js → android-tab-BsuTMKJw.js} +1 -1
  22. package/dist/web/assets/android-tab-BsuTMKJw.js.br +0 -0
  23. package/dist/web/assets/android-tab-BsuTMKJw.js.gz +0 -0
  24. package/dist/web/assets/{appearance-settings-section-DpYcNqXH.js → appearance-settings-section-Dk6d_fTo.js} +1 -1
  25. package/dist/web/assets/appearance-settings-section-Dk6d_fTo.js.br +0 -0
  26. package/dist/web/assets/appearance-settings-section-Dk6d_fTo.js.gz +0 -0
  27. package/dist/web/assets/{apps-panel-BqF_CkKy.js → apps-panel-C20ys4Cy.js} +1 -1
  28. package/dist/web/assets/apps-panel-C20ys4Cy.js.br +0 -0
  29. package/dist/web/assets/apps-panel-C20ys4Cy.js.gz +0 -0
  30. package/dist/web/assets/{branch-review-tab-BEZqFSlw.js → branch-review-tab-CcvkQMRA.js} +1 -1
  31. package/dist/web/assets/branch-review-tab-CcvkQMRA.js.br +0 -0
  32. package/dist/web/assets/branch-review-tab-CcvkQMRA.js.gz +0 -0
  33. package/dist/web/assets/{chat-tab-N1B-Yv0P.js → chat-tab-BAh37UwG.js} +1 -1
  34. package/dist/web/assets/chat-tab-BAh37UwG.js.br +0 -0
  35. package/dist/web/assets/chat-tab-BAh37UwG.js.gz +0 -0
  36. package/dist/web/assets/chat-tab-D-cl4yMo.js +19 -0
  37. package/dist/web/assets/chat-tab-D-cl4yMo.js.br +0 -0
  38. package/dist/web/assets/chat-tab-D-cl4yMo.js.gz +0 -0
  39. package/dist/web/assets/{code-editor-d1CXl2WL.js → code-editor-DIGsPNPS.js} +4 -4
  40. package/dist/web/assets/code-editor-DIGsPNPS.js.br +0 -0
  41. package/dist/web/assets/code-editor-DIGsPNPS.js.gz +0 -0
  42. package/dist/web/assets/{codex-reset-credit-button-CwSSBK6P.js → codex-reset-credit-button-C0a2svAw.js} +1 -1
  43. package/dist/web/assets/codex-reset-credit-button-C0a2svAw.js.br +0 -0
  44. package/dist/web/assets/codex-reset-credit-button-C0a2svAw.js.gz +0 -0
  45. package/dist/web/assets/{conflict-editor-BucKz-uE.js → conflict-editor-zORSNMk6.js} +1 -1
  46. package/dist/web/assets/conflict-editor-zORSNMk6.js.br +0 -0
  47. package/dist/web/assets/conflict-editor-zORSNMk6.js.gz +0 -0
  48. package/dist/web/assets/{connection-form-tab-DIc25Bko.js → connection-form-tab-BkE7wACA.js} +1 -1
  49. package/dist/web/assets/connection-form-tab-BkE7wACA.js.br +0 -0
  50. package/dist/web/assets/connection-form-tab-BkE7wACA.js.gz +0 -0
  51. package/dist/web/assets/{csv-preview-CqDaGV5N.js → csv-preview-CDUY0I94.js} +1 -1
  52. package/dist/web/assets/csv-preview-CDUY0I94.js.br +0 -0
  53. package/dist/web/assets/csv-preview-CDUY0I94.js.gz +0 -0
  54. package/dist/web/assets/{db-tab-parts-lp8ROGQB.js → db-tab-parts-tgVIgcs5.js} +1 -1
  55. package/dist/web/assets/db-tab-parts-tgVIgcs5.js.br +0 -0
  56. package/dist/web/assets/db-tab-parts-tgVIgcs5.js.gz +0 -0
  57. package/dist/web/assets/{design-settings-section-DxWEBH1L.js → design-settings-section-CqFPwhis.js} +1 -1
  58. package/dist/web/assets/design-settings-section-CqFPwhis.js.br +0 -0
  59. package/dist/web/assets/design-settings-section-CqFPwhis.js.gz +0 -0
  60. package/dist/web/assets/{design-tab-Cl0CMAUx.js → design-tab-CVTzge3p.js} +1 -1
  61. package/dist/web/assets/design-tab-CVTzge3p.js.br +0 -0
  62. package/dist/web/assets/design-tab-CVTzge3p.js.gz +0 -0
  63. package/dist/web/assets/{designs-sidebar-panel-aCr-EGfj.js → designs-sidebar-panel-DKTSE1LS.js} +1 -1
  64. package/dist/web/assets/designs-sidebar-panel-DKTSE1LS.js.br +0 -0
  65. package/dist/web/assets/designs-sidebar-panel-DKTSE1LS.js.gz +0 -0
  66. package/dist/web/assets/{diff-viewer-XyJgWKwe.js → diff-viewer-3VDHcDag.js} +1 -1
  67. package/dist/web/assets/diff-viewer-3VDHcDag.js.br +0 -0
  68. package/dist/web/assets/diff-viewer-3VDHcDag.js.gz +0 -0
  69. package/dist/web/assets/{docx-preview-KJaj2YGN.js → docx-preview-FgE_WU6t.js} +1 -1
  70. package/dist/web/assets/docx-preview-FgE_WU6t.js.br +0 -0
  71. package/dist/web/assets/docx-preview-FgE_WU6t.js.gz +0 -0
  72. package/dist/web/assets/{editor-dialog-9tW6c9mu.js → editor-dialog-BhK77FSu.js} +1 -1
  73. package/dist/web/assets/editor-dialog-BhK77FSu.js.br +0 -0
  74. package/dist/web/assets/editor-dialog-BhK77FSu.js.gz +0 -0
  75. package/dist/web/assets/{editor-language-service-CkdO9ih8.js → editor-language-service-BIN7M57r.js} +1 -1
  76. package/dist/web/assets/editor-language-service-BIN7M57r.js.br +4 -0
  77. package/dist/web/assets/editor-language-service-BIN7M57r.js.gz +0 -0
  78. package/dist/web/assets/{explorer-body-B8AkNO5o.js → explorer-body-DNsWiVO3.js} +1 -1
  79. package/dist/web/assets/explorer-body-DNsWiVO3.js.br +0 -0
  80. package/dist/web/assets/explorer-body-DNsWiVO3.js.gz +0 -0
  81. package/dist/web/assets/{explorer-window-content-D174CXKz.js → explorer-window-content-DnOJYhRX.js} +1 -1
  82. package/dist/web/assets/explorer-window-content-DnOJYhRX.js.br +0 -0
  83. package/dist/web/assets/explorer-window-content-DnOJYhRX.js.gz +0 -0
  84. package/dist/web/assets/{extension-manager-section-CQsqXsPF.js → extension-manager-section-CJtRpUUs.js} +1 -1
  85. package/dist/web/assets/extension-manager-section-CJtRpUUs.js.br +0 -0
  86. package/dist/web/assets/extension-manager-section-CJtRpUUs.js.gz +0 -0
  87. package/dist/web/assets/{extension-webview-AfaxC7PL.js → extension-webview-Bza7cPL1.js} +1 -1
  88. package/dist/web/assets/extension-webview-Bza7cPL1.js.br +0 -0
  89. package/dist/web/assets/extension-webview-Bza7cPL1.js.gz +0 -0
  90. package/dist/web/assets/{files-settings-section-CC0aJryq.js → files-settings-section-8rWMj1Oi.js} +1 -1
  91. package/dist/web/assets/files-settings-section-8rWMj1Oi.js.br +0 -0
  92. package/dist/web/assets/files-settings-section-8rWMj1Oi.js.gz +0 -0
  93. package/dist/web/assets/{general-settings-section-DQTr20G_.js → general-settings-section-joWQEgIn.js} +1 -1
  94. package/dist/web/assets/general-settings-section-joWQEgIn.js.br +0 -0
  95. package/dist/web/assets/general-settings-section-joWQEgIn.js.gz +0 -0
  96. package/dist/web/assets/{git-log-panel-CisEJPJz.js → git-log-panel-BxYYWEiU.js} +1 -1
  97. package/dist/web/assets/git-log-panel-BxYYWEiU.js.br +0 -0
  98. package/dist/web/assets/git-log-panel-BxYYWEiU.js.gz +0 -0
  99. package/dist/web/assets/{git-review-tab-DpWEy03w.js → git-review-tab-Btnvgk1e.js} +1 -1
  100. package/dist/web/assets/git-review-tab-Btnvgk1e.js.br +0 -0
  101. package/dist/web/assets/git-review-tab-Btnvgk1e.js.gz +0 -0
  102. package/dist/web/assets/{glide-data-grid-hOML-uXP.js → glide-data-grid-lCwaM1Gy.js} +1 -1
  103. package/dist/web/assets/glide-data-grid-lCwaM1Gy.js.br +0 -0
  104. package/dist/web/assets/glide-data-grid-lCwaM1Gy.js.gz +0 -0
  105. package/dist/web/assets/{grid-save-dialog-Bx61akzH.js → grid-save-dialog-DoEEQ1vM.js} +1 -1
  106. package/dist/web/assets/grid-save-dialog-DoEEQ1vM.js.br +0 -0
  107. package/dist/web/assets/grid-save-dialog-DoEEQ1vM.js.gz +0 -0
  108. package/dist/web/assets/{group-chat-tab-eQdJHa8d.js → group-chat-tab-B7Dwx9uL.js} +1 -1
  109. package/dist/web/assets/group-chat-tab-B7Dwx9uL.js.br +0 -0
  110. package/dist/web/assets/group-chat-tab-B7Dwx9uL.js.gz +0 -0
  111. package/dist/web/assets/{impexp-tab-BjIDxYTj.js → impexp-tab-BtEDbQSn.js} +1 -1
  112. package/dist/web/assets/impexp-tab-BtEDbQSn.js.br +0 -0
  113. package/dist/web/assets/impexp-tab-BtEDbQSn.js.gz +0 -0
  114. package/dist/web/assets/{index-COwBji1t.js → index-CPBujJc_.js} +5 -5
  115. package/dist/web/assets/index-CPBujJc_.js.br +0 -0
  116. package/dist/web/assets/index-CPBujJc_.js.gz +0 -0
  117. package/dist/web/assets/{jira-watcher-section-dzpmNZA2.js → jira-watcher-section-mnly-maX.js} +1 -1
  118. package/dist/web/assets/{keybindings-store-DRjk8512.js → keybindings-store-BSPTMRiv.js} +1 -1
  119. package/dist/web/assets/{keyboard-shortcuts-section-BhyalK8A.js → keyboard-shortcuts-section-DULhEWPg.js} +1 -1
  120. package/dist/web/assets/keyboard-shortcuts-section-DULhEWPg.js.br +0 -0
  121. package/dist/web/assets/keyboard-shortcuts-section-DULhEWPg.js.gz +0 -0
  122. package/dist/web/assets/{language-servers-section-BXLaicUY.js → language-servers-section-CwBJsJ31.js} +2 -2
  123. package/dist/web/assets/language-servers-section-CwBJsJ31.js.br +0 -0
  124. package/dist/web/assets/language-servers-section-CwBJsJ31.js.gz +0 -0
  125. package/dist/web/assets/{logs-app-BnjU6CRy.js → logs-app-DatfI2Up.js} +1 -1
  126. package/dist/web/assets/logs-app-DatfI2Up.js.br +0 -0
  127. package/dist/web/assets/logs-app-DatfI2Up.js.gz +0 -0
  128. package/dist/web/assets/{logs-tab-7uyD7gKW.js → logs-tab-an_9ujcz.js} +1 -1
  129. package/dist/web/assets/{logs-window-content-B78a6oM2.js → logs-window-content-Usr3JTmE.js} +1 -1
  130. package/dist/web/assets/{lsp-client-DOHnxEUE.js → lsp-client-tCCcXWsR.js} +1 -1
  131. package/dist/web/assets/lsp-client-tCCcXWsR.js.br +0 -0
  132. package/dist/web/assets/lsp-client-tCCcXWsR.js.gz +0 -0
  133. package/dist/web/assets/{markdown-renderer-Dz0ZcxNo.js → markdown-renderer-D0YUMQLE.js} +1 -1
  134. package/dist/web/assets/markdown-renderer-D0YUMQLE.js.br +0 -0
  135. package/dist/web/assets/markdown-renderer-D0YUMQLE.js.gz +0 -0
  136. package/dist/web/assets/{markdown-renderer-B_hL6lRL.js → markdown-renderer-DdzxNveP.js} +1 -1
  137. package/dist/web/assets/{mobile-explorer-sheet-C_3dq99D.js → mobile-explorer-sheet-Bo27IRye.js} +1 -1
  138. package/dist/web/assets/mobile-explorer-sheet-Bo27IRye.js.br +0 -0
  139. package/dist/web/assets/mobile-explorer-sheet-Bo27IRye.js.gz +0 -0
  140. package/dist/web/assets/{new-design-dialog-CaubNbMT.js → new-design-dialog-DIOCWZW1.js} +1 -1
  141. package/dist/web/assets/new-design-dialog-DIOCWZW1.js.br +0 -0
  142. package/dist/web/assets/new-design-dialog-DIOCWZW1.js.gz +0 -0
  143. package/dist/web/assets/{notification-store-BTk3PZAj.js → notification-store-CRPOp-6B.js} +1 -1
  144. package/dist/web/assets/{notifications-settings-section-CJJ1l5cL.js → notifications-settings-section-DSSCTkfX.js} +1 -1
  145. package/dist/web/assets/notifications-settings-section-DSSCTkfX.js.br +0 -0
  146. package/dist/web/assets/notifications-settings-section-DSSCTkfX.js.gz +0 -0
  147. package/dist/web/assets/{ppmbot-settings-section-BFniAm3D.js → ppmbot-settings-section-BIYSlZu5.js} +1 -1
  148. package/dist/web/assets/ppmbot-settings-section-BIYSlZu5.js.br +0 -0
  149. package/dist/web/assets/ppmbot-settings-section-BIYSlZu5.js.gz +0 -0
  150. package/dist/web/assets/{problems-panel-CIxaCYJw.js → problems-panel-CH-00nA7.js} +1 -1
  151. package/dist/web/assets/problems-panel-CH-00nA7.js.br +0 -0
  152. package/dist/web/assets/problems-panel-CH-00nA7.js.gz +0 -0
  153. package/dist/web/assets/{process-table-l1fVcESX.js → process-table-DQO0g5do.js} +1 -1
  154. package/dist/web/assets/process-table-DQO0g5do.js.br +0 -0
  155. package/dist/web/assets/process-table-DQO0g5do.js.gz +0 -0
  156. package/dist/web/assets/{proxy-settings-section-Di5nBuy6.js → proxy-settings-section-Buo3hvQ4.js} +1 -1
  157. package/dist/web/assets/proxy-settings-section-Buo3hvQ4.js.br +0 -0
  158. package/dist/web/assets/proxy-settings-section-Buo3hvQ4.js.gz +0 -0
  159. package/dist/web/assets/{query-tab-hyKnRZr3.js → query-tab-CU0QVZpj.js} +1 -1
  160. package/dist/web/assets/query-tab-CU0QVZpj.js.br +0 -0
  161. package/dist/web/assets/query-tab-CU0QVZpj.js.gz +0 -0
  162. package/dist/web/assets/{remote-access-settings-section-HpZAP0Al.js → remote-access-settings-section-vlHMJPdY.js} +1 -1
  163. package/dist/web/assets/remote-access-settings-section-vlHMJPdY.js.br +0 -0
  164. package/dist/web/assets/remote-access-settings-section-vlHMJPdY.js.gz +0 -0
  165. package/dist/web/assets/{remote-desktop-clipboard-notice-DY7tWgjf.js → remote-desktop-clipboard-notice-DNqX7d1L.js} +1 -1
  166. package/dist/web/assets/remote-desktop-clipboard-notice-DNqX7d1L.js.br +0 -0
  167. package/dist/web/assets/remote-desktop-clipboard-notice-DNqX7d1L.js.gz +0 -0
  168. package/dist/web/assets/{remote-desktop-mobile-sheet-CX9mDRle.js → remote-desktop-mobile-sheet-Dz7tctpc.js} +2 -2
  169. package/dist/web/assets/remote-desktop-mobile-sheet-Dz7tctpc.js.br +0 -0
  170. package/dist/web/assets/remote-desktop-mobile-sheet-Dz7tctpc.js.gz +0 -0
  171. package/dist/web/assets/{remote-desktop-mobile-view-DNg0EpbV.js → remote-desktop-mobile-view-BqhQdShH.js} +1 -1
  172. package/dist/web/assets/remote-desktop-mobile-view-BqhQdShH.js.br +0 -0
  173. package/dist/web/assets/remote-desktop-mobile-view-BqhQdShH.js.gz +0 -0
  174. package/dist/web/assets/{remote-desktop-readiness-gate-BTTLlVDc.js → remote-desktop-readiness-gate-rnTq4ZQS.js} +1 -1
  175. package/dist/web/assets/remote-desktop-readiness-gate-rnTq4ZQS.js.br +0 -0
  176. package/dist/web/assets/remote-desktop-readiness-gate-rnTq4ZQS.js.gz +0 -0
  177. package/dist/web/assets/{remote-desktop-window-content-CqxnhSu0.js → remote-desktop-window-content-TqjHt0_5.js} +1 -1
  178. package/dist/web/assets/remote-desktop-window-content-TqjHt0_5.js.br +0 -0
  179. package/dist/web/assets/remote-desktop-window-content-TqjHt0_5.js.gz +0 -0
  180. package/dist/web/assets/{rename-object-dialog-CnhMsNbT.js → rename-object-dialog-D0YpY40E.js} +1 -1
  181. package/dist/web/assets/rename-object-dialog-D0YpY40E.js.br +0 -0
  182. package/dist/web/assets/rename-object-dialog-D0YpY40E.js.gz +0 -0
  183. package/dist/web/assets/{review-code-CunYhmcC.js → review-code-DsF9921h.js} +1 -1
  184. package/dist/web/assets/review-code-DsF9921h.js.br +0 -0
  185. package/dist/web/assets/review-code-DsF9921h.js.gz +0 -0
  186. package/dist/web/assets/{save-as-dialog-BtGSwTKZ.js → save-as-dialog-niU7kVMJ.js} +1 -1
  187. package/dist/web/assets/save-as-dialog-niU7kVMJ.js.br +0 -0
  188. package/dist/web/assets/save-as-dialog-niU7kVMJ.js.gz +0 -0
  189. package/dist/web/assets/{schedules-settings-section-CvlcMyEz.js → schedules-settings-section-Heuv2Kj4.js} +1 -1
  190. package/dist/web/assets/schedules-settings-section-Heuv2Kj4.js.br +0 -0
  191. package/dist/web/assets/schedules-settings-section-Heuv2Kj4.js.gz +0 -0
  192. package/dist/web/assets/{session-review-tab-C3HuIPD2.js → session-review-tab-Dob0FLvA.js} +1 -1
  193. package/dist/web/assets/session-review-tab-Dob0FLvA.js.br +0 -0
  194. package/dist/web/assets/session-review-tab-Dob0FLvA.js.gz +0 -0
  195. package/dist/web/assets/{settings-body-DCHEAh2_.js → settings-body-5t6SQbLx.js} +1 -1
  196. package/dist/web/assets/settings-body-5t6SQbLx.js.br +0 -0
  197. package/dist/web/assets/settings-body-5t6SQbLx.js.gz +0 -0
  198. package/dist/web/assets/{settings-rows-D8Y9o1ZD.js → settings-rows-B0w15zot.js} +1 -1
  199. package/dist/web/assets/settings-rows-B0w15zot.js.br +0 -0
  200. package/dist/web/assets/settings-rows-B0w15zot.js.gz +0 -0
  201. package/dist/web/assets/{settings-section-content-Dluhkh-u.js → settings-section-content-D41IJ62x.js} +2 -2
  202. package/dist/web/assets/settings-section-content-D41IJ62x.js.br +0 -0
  203. package/dist/web/assets/settings-section-content-D41IJ62x.js.gz +0 -0
  204. package/dist/web/assets/settings-section-content-DuVO6erO.js +1 -0
  205. package/dist/web/assets/{settings-tab-Cj1GkYi3.js → settings-tab-DGU5FVbO.js} +1 -1
  206. package/dist/web/assets/{settings-window-content-1fweMynB.js → settings-window-content-Da5PY5MZ.js} +1 -1
  207. package/dist/web/assets/{slash-command-picker-BdKd_AiS.js → slash-command-picker-DpZsPuNf.js} +1 -1
  208. package/dist/web/assets/slash-command-picker-DpZsPuNf.js.br +0 -0
  209. package/dist/web/assets/slash-command-picker-DpZsPuNf.js.gz +0 -0
  210. package/dist/web/assets/{sql-object-tab-DkdF_7Jz.js → sql-object-tab-BTS8aHGO.js} +1 -1
  211. package/dist/web/assets/sql-object-tab-BTS8aHGO.js.br +0 -0
  212. package/dist/web/assets/sql-object-tab-BTS8aHGO.js.gz +0 -0
  213. package/dist/web/assets/{sqlite-viewer-BoQMjJHj.js → sqlite-viewer-CVo5eqWj.js} +1 -1
  214. package/dist/web/assets/sqlite-viewer-CVo5eqWj.js.br +0 -0
  215. package/dist/web/assets/sqlite-viewer-CVo5eqWj.js.gz +0 -0
  216. package/dist/web/assets/{structure-save-dialog-DGHxHJ4T.js → structure-save-dialog-B9Q-Rhgj.js} +1 -1
  217. package/dist/web/assets/structure-save-dialog-B9Q-Rhgj.js.br +0 -0
  218. package/dist/web/assets/structure-save-dialog-B9Q-Rhgj.js.gz +0 -0
  219. package/dist/web/assets/{structure-tab-DuuX1e9c.js → structure-tab-_cQn0KG7.js} +1 -1
  220. package/dist/web/assets/structure-tab-_cQn0KG7.js.br +0 -0
  221. package/dist/web/assets/structure-tab-_cQn0KG7.js.gz +0 -0
  222. package/dist/web/assets/{system-monitor-body-CZVoh652.js → system-monitor-body-YS3i1PUs.js} +2 -2
  223. package/dist/web/assets/system-monitor-body-YS3i1PUs.js.br +0 -0
  224. package/dist/web/assets/system-monitor-body-YS3i1PUs.js.gz +0 -0
  225. package/dist/web/assets/{system-monitor-tab-eGta1jpw.js → system-monitor-tab-D63xmd8U.js} +1 -1
  226. package/dist/web/assets/{system-monitor-window-content-BUG72ffC.js → system-monitor-window-content-DkCsK8Ed.js} +1 -1
  227. package/dist/web/assets/{tab-host-window-content-BTYuY43x.js → tab-host-window-content-CrASOMX8.js} +1 -1
  228. package/dist/web/assets/tab-host-window-content-CrASOMX8.js.br +0 -0
  229. package/dist/web/assets/tab-host-window-content-CrASOMX8.js.gz +0 -0
  230. package/dist/web/assets/{table-tab-BsfgtqFE.js → table-tab-JlfqyPZR.js} +1 -1
  231. package/dist/web/assets/table-tab-JlfqyPZR.js.br +0 -0
  232. package/dist/web/assets/table-tab-JlfqyPZR.js.gz +0 -0
  233. package/dist/web/assets/{telegram-bot-token-field-CA8DEKRL.js → telegram-bot-token-field-ctRa2529.js} +1 -1
  234. package/dist/web/assets/telegram-bot-token-field-ctRa2529.js.br +0 -0
  235. package/dist/web/assets/telegram-bot-token-field-ctRa2529.js.gz +0 -0
  236. package/dist/web/assets/{terminal-tab-CoT5KIfe.js → terminal-tab-BsXBBru0.js} +1 -1
  237. package/dist/web/assets/terminal-tab-BsXBBru0.js.br +0 -0
  238. package/dist/web/assets/terminal-tab-BsXBBru0.js.gz +0 -0
  239. package/dist/web/assets/{tool-cards-oZ6cptRr.js → tool-cards-BDzK03U4.js} +3 -3
  240. package/dist/web/assets/tool-cards-BDzK03U4.js.br +0 -0
  241. package/dist/web/assets/tool-cards-BDzK03U4.js.gz +0 -0
  242. package/dist/web/assets/{tools-settings-section-CtcD-iTk.js → tools-settings-section-DCG74pbd.js} +1 -1
  243. package/dist/web/assets/tools-settings-section-DCG74pbd.js.br +0 -0
  244. package/dist/web/assets/tools-settings-section-DCG74pbd.js.gz +0 -0
  245. package/dist/web/assets/{use-inline-blame-BUuJj1Ru.js → use-inline-blame-BOn_m8f-.js} +1 -1
  246. package/dist/web/assets/use-inline-blame-BOn_m8f-.js.br +0 -0
  247. package/dist/web/assets/use-inline-blame-BOn_m8f-.js.gz +0 -0
  248. package/dist/web/assets/{use-lsp-Bo4z4gLx.js → use-lsp-D144ftsf.js} +1 -1
  249. package/dist/web/assets/use-lsp-D144ftsf.js.br +0 -0
  250. package/dist/web/assets/use-lsp-D144ftsf.js.gz +0 -0
  251. package/dist/web/assets/{use-monaco-theme-1ANtPWqA.js → use-monaco-theme-ArU1f9T6.js} +1 -1
  252. package/dist/web/assets/{use-process-kill-CvlXPal4.js → use-process-kill-BdmXHMFE.js} +1 -1
  253. package/dist/web/assets/use-process-kill-BdmXHMFE.js.br +0 -0
  254. package/dist/web/assets/use-process-kill-BdmXHMFE.js.gz +0 -0
  255. package/dist/web/assets/{use-sql-schema-info-DQzUqb7q.js → use-sql-schema-info-BQXSMw6p.js} +1 -1
  256. package/dist/web/assets/use-sql-schema-info-BQXSMw6p.js.br +0 -0
  257. package/dist/web/assets/use-sql-schema-info-BQXSMw6p.js.gz +0 -0
  258. package/dist/web/assets/{use-websocket-QCAD3F5b.js → use-websocket-rWdrMWa8.js} +1 -1
  259. package/dist/web/assets/{web-preview-tab-Cp0LuL0T.js → web-preview-tab-B2OSrnl9.js} +1 -1
  260. package/dist/web/assets/web-preview-tab-B2OSrnl9.js.br +0 -0
  261. package/dist/web/assets/web-preview-tab-B2OSrnl9.js.gz +0 -0
  262. package/dist/web/index.html +1 -1
  263. package/dist/web/index.html.br +0 -0
  264. package/dist/web/index.html.gz +0 -0
  265. package/dist/web/sw.js +1 -1
  266. package/dist/web/sw.js.br +0 -0
  267. package/dist/web/sw.js.gz +0 -0
  268. package/docs/architecture/ai-chat-and-providers.md +22 -0
  269. package/package.json +1 -1
  270. package/src/providers/codex-app-server/codex-event-mapper.ts +3 -0
  271. package/src/providers/codex-app-server/codex-provider.ts +3 -21
  272. package/src/providers/codex-app-server/codex-rollout-items.ts +3 -0
  273. package/src/providers/codex-app-server/codex-thread-params.ts +1 -0
  274. package/src/providers/codex-app-server/codex-user-input.ts +41 -0
  275. package/src/shared/chat-questions.ts +19 -0
  276. package/src/web/components/chat/async-question-card.tsx +24 -0
  277. package/src/web/components/chat/chat-tab.tsx +3 -2
  278. package/src/web/components/chat/message-events.tsx +6 -0
  279. package/src/web/components/chat/question-card.tsx +8 -10
  280. package/src/web/components/chat/tool-cards.tsx +4 -4
  281. package/dist/web/assets/accounts-settings-section-DhzuFkDO.js.br +0 -0
  282. package/dist/web/assets/accounts-settings-section-DhzuFkDO.js.gz +0 -0
  283. package/dist/web/assets/agent-session-sheet-CZAmOwSU.js.br +0 -0
  284. package/dist/web/assets/agent-session-sheet-CZAmOwSU.js.gz +0 -0
  285. package/dist/web/assets/agent-session-window-content-CwokWtJq.js.br +0 -0
  286. package/dist/web/assets/agent-session-window-content-CwokWtJq.js.gz +0 -0
  287. package/dist/web/assets/ai-resource-editor-CT1JCaRQ.js.br +0 -0
  288. package/dist/web/assets/ai-resource-editor-CT1JCaRQ.js.gz +0 -0
  289. package/dist/web/assets/ai-settings-section-Ct9-lNqA.js.br +0 -0
  290. package/dist/web/assets/ai-settings-section-Ct9-lNqA.js.gz +0 -0
  291. package/dist/web/assets/android-tab-CUPQN2M4.js.br +0 -0
  292. package/dist/web/assets/android-tab-CUPQN2M4.js.gz +0 -0
  293. package/dist/web/assets/appearance-settings-section-DpYcNqXH.js.br +0 -0
  294. package/dist/web/assets/appearance-settings-section-DpYcNqXH.js.gz +0 -0
  295. package/dist/web/assets/apps-panel-BqF_CkKy.js.br +0 -0
  296. package/dist/web/assets/apps-panel-BqF_CkKy.js.gz +0 -0
  297. package/dist/web/assets/branch-review-tab-BEZqFSlw.js.br +0 -0
  298. package/dist/web/assets/branch-review-tab-BEZqFSlw.js.gz +0 -0
  299. package/dist/web/assets/chat-tab-N1B-Yv0P.js.br +0 -0
  300. package/dist/web/assets/chat-tab-N1B-Yv0P.js.gz +0 -0
  301. package/dist/web/assets/chat-tab-kk-mAF05.js +0 -16
  302. package/dist/web/assets/chat-tab-kk-mAF05.js.br +0 -0
  303. package/dist/web/assets/chat-tab-kk-mAF05.js.gz +0 -0
  304. package/dist/web/assets/code-editor-d1CXl2WL.js.br +0 -0
  305. package/dist/web/assets/code-editor-d1CXl2WL.js.gz +0 -0
  306. package/dist/web/assets/codex-reset-credit-button-CwSSBK6P.js.br +0 -0
  307. package/dist/web/assets/codex-reset-credit-button-CwSSBK6P.js.gz +0 -0
  308. package/dist/web/assets/conflict-editor-BucKz-uE.js.br +0 -0
  309. package/dist/web/assets/conflict-editor-BucKz-uE.js.gz +0 -0
  310. package/dist/web/assets/connection-form-tab-DIc25Bko.js.br +0 -0
  311. package/dist/web/assets/connection-form-tab-DIc25Bko.js.gz +0 -0
  312. package/dist/web/assets/csv-preview-CqDaGV5N.js.br +0 -0
  313. package/dist/web/assets/csv-preview-CqDaGV5N.js.gz +0 -0
  314. package/dist/web/assets/db-tab-parts-lp8ROGQB.js.br +0 -0
  315. package/dist/web/assets/db-tab-parts-lp8ROGQB.js.gz +0 -0
  316. package/dist/web/assets/design-settings-section-DxWEBH1L.js.br +0 -0
  317. package/dist/web/assets/design-settings-section-DxWEBH1L.js.gz +0 -0
  318. package/dist/web/assets/design-tab-Cl0CMAUx.js.br +0 -0
  319. package/dist/web/assets/design-tab-Cl0CMAUx.js.gz +0 -0
  320. package/dist/web/assets/designs-sidebar-panel-aCr-EGfj.js.br +0 -0
  321. package/dist/web/assets/designs-sidebar-panel-aCr-EGfj.js.gz +0 -0
  322. package/dist/web/assets/diff-viewer-XyJgWKwe.js.br +0 -0
  323. package/dist/web/assets/diff-viewer-XyJgWKwe.js.gz +0 -0
  324. package/dist/web/assets/docx-preview-KJaj2YGN.js.br +0 -0
  325. package/dist/web/assets/docx-preview-KJaj2YGN.js.gz +0 -0
  326. package/dist/web/assets/editor-dialog-9tW6c9mu.js.br +0 -0
  327. package/dist/web/assets/editor-dialog-9tW6c9mu.js.gz +0 -0
  328. package/dist/web/assets/editor-language-service-CkdO9ih8.js.br +0 -0
  329. package/dist/web/assets/editor-language-service-CkdO9ih8.js.gz +0 -0
  330. package/dist/web/assets/explorer-body-B8AkNO5o.js.br +0 -0
  331. package/dist/web/assets/explorer-body-B8AkNO5o.js.gz +0 -0
  332. package/dist/web/assets/explorer-window-content-D174CXKz.js.br +0 -0
  333. package/dist/web/assets/explorer-window-content-D174CXKz.js.gz +0 -0
  334. package/dist/web/assets/extension-manager-section-CQsqXsPF.js.br +0 -0
  335. package/dist/web/assets/extension-manager-section-CQsqXsPF.js.gz +0 -0
  336. package/dist/web/assets/extension-webview-AfaxC7PL.js.br +0 -0
  337. package/dist/web/assets/extension-webview-AfaxC7PL.js.gz +0 -0
  338. package/dist/web/assets/files-settings-section-CC0aJryq.js.br +0 -0
  339. package/dist/web/assets/files-settings-section-CC0aJryq.js.gz +0 -0
  340. package/dist/web/assets/general-settings-section-DQTr20G_.js.br +0 -0
  341. package/dist/web/assets/general-settings-section-DQTr20G_.js.gz +0 -0
  342. package/dist/web/assets/git-log-panel-CisEJPJz.js.br +0 -0
  343. package/dist/web/assets/git-log-panel-CisEJPJz.js.gz +0 -0
  344. package/dist/web/assets/git-review-tab-DpWEy03w.js.br +0 -0
  345. package/dist/web/assets/git-review-tab-DpWEy03w.js.gz +0 -0
  346. package/dist/web/assets/glide-data-grid-hOML-uXP.js.br +0 -0
  347. package/dist/web/assets/glide-data-grid-hOML-uXP.js.gz +0 -0
  348. package/dist/web/assets/grid-save-dialog-Bx61akzH.js.br +0 -0
  349. package/dist/web/assets/grid-save-dialog-Bx61akzH.js.gz +0 -0
  350. package/dist/web/assets/group-chat-tab-eQdJHa8d.js.br +0 -0
  351. package/dist/web/assets/group-chat-tab-eQdJHa8d.js.gz +0 -0
  352. package/dist/web/assets/impexp-tab-BjIDxYTj.js.br +0 -0
  353. package/dist/web/assets/impexp-tab-BjIDxYTj.js.gz +0 -0
  354. package/dist/web/assets/index-COwBji1t.js.br +0 -0
  355. package/dist/web/assets/index-COwBji1t.js.gz +0 -0
  356. package/dist/web/assets/keyboard-shortcuts-section-BhyalK8A.js.br +0 -0
  357. package/dist/web/assets/keyboard-shortcuts-section-BhyalK8A.js.gz +0 -0
  358. package/dist/web/assets/language-servers-section-BXLaicUY.js.br +0 -0
  359. package/dist/web/assets/language-servers-section-BXLaicUY.js.gz +0 -0
  360. package/dist/web/assets/logs-app-BnjU6CRy.js.br +0 -0
  361. package/dist/web/assets/logs-app-BnjU6CRy.js.gz +0 -0
  362. package/dist/web/assets/lsp-client-DOHnxEUE.js.br +0 -0
  363. package/dist/web/assets/lsp-client-DOHnxEUE.js.gz +0 -0
  364. package/dist/web/assets/markdown-renderer-Dz0ZcxNo.js.br +0 -0
  365. package/dist/web/assets/markdown-renderer-Dz0ZcxNo.js.gz +0 -0
  366. package/dist/web/assets/mobile-explorer-sheet-C_3dq99D.js.br +0 -0
  367. package/dist/web/assets/mobile-explorer-sheet-C_3dq99D.js.gz +0 -0
  368. package/dist/web/assets/new-design-dialog-CaubNbMT.js.br +0 -0
  369. package/dist/web/assets/new-design-dialog-CaubNbMT.js.gz +0 -0
  370. package/dist/web/assets/notifications-settings-section-CJJ1l5cL.js.br +0 -0
  371. package/dist/web/assets/notifications-settings-section-CJJ1l5cL.js.gz +0 -0
  372. package/dist/web/assets/ppmbot-settings-section-BFniAm3D.js.br +0 -0
  373. package/dist/web/assets/ppmbot-settings-section-BFniAm3D.js.gz +0 -0
  374. package/dist/web/assets/problems-panel-CIxaCYJw.js.br +0 -0
  375. package/dist/web/assets/problems-panel-CIxaCYJw.js.gz +0 -0
  376. package/dist/web/assets/process-table-l1fVcESX.js.br +0 -0
  377. package/dist/web/assets/process-table-l1fVcESX.js.gz +0 -0
  378. package/dist/web/assets/proxy-settings-section-Di5nBuy6.js.br +0 -0
  379. package/dist/web/assets/proxy-settings-section-Di5nBuy6.js.gz +0 -0
  380. package/dist/web/assets/query-tab-hyKnRZr3.js.br +0 -0
  381. package/dist/web/assets/query-tab-hyKnRZr3.js.gz +0 -0
  382. package/dist/web/assets/remote-access-settings-section-HpZAP0Al.js.br +0 -0
  383. package/dist/web/assets/remote-access-settings-section-HpZAP0Al.js.gz +0 -0
  384. package/dist/web/assets/remote-desktop-clipboard-notice-DY7tWgjf.js.br +0 -0
  385. package/dist/web/assets/remote-desktop-clipboard-notice-DY7tWgjf.js.gz +0 -0
  386. package/dist/web/assets/remote-desktop-mobile-sheet-CX9mDRle.js.br +0 -0
  387. package/dist/web/assets/remote-desktop-mobile-sheet-CX9mDRle.js.gz +0 -0
  388. package/dist/web/assets/remote-desktop-mobile-view-DNg0EpbV.js.br +0 -0
  389. package/dist/web/assets/remote-desktop-mobile-view-DNg0EpbV.js.gz +0 -0
  390. package/dist/web/assets/remote-desktop-readiness-gate-BTTLlVDc.js.br +0 -0
  391. package/dist/web/assets/remote-desktop-readiness-gate-BTTLlVDc.js.gz +0 -0
  392. package/dist/web/assets/remote-desktop-window-content-CqxnhSu0.js.br +0 -0
  393. package/dist/web/assets/remote-desktop-window-content-CqxnhSu0.js.gz +0 -0
  394. package/dist/web/assets/rename-object-dialog-CnhMsNbT.js.br +0 -0
  395. package/dist/web/assets/rename-object-dialog-CnhMsNbT.js.gz +0 -0
  396. package/dist/web/assets/review-code-CunYhmcC.js.br +0 -0
  397. package/dist/web/assets/review-code-CunYhmcC.js.gz +0 -0
  398. package/dist/web/assets/save-as-dialog-BtGSwTKZ.js.br +0 -0
  399. package/dist/web/assets/save-as-dialog-BtGSwTKZ.js.gz +0 -0
  400. package/dist/web/assets/schedules-settings-section-CvlcMyEz.js.br +0 -0
  401. package/dist/web/assets/schedules-settings-section-CvlcMyEz.js.gz +0 -0
  402. package/dist/web/assets/session-review-tab-C3HuIPD2.js.br +0 -0
  403. package/dist/web/assets/session-review-tab-C3HuIPD2.js.gz +0 -0
  404. package/dist/web/assets/settings-body-DCHEAh2_.js.br +0 -0
  405. package/dist/web/assets/settings-body-DCHEAh2_.js.gz +0 -0
  406. package/dist/web/assets/settings-rows-D8Y9o1ZD.js.br +0 -0
  407. package/dist/web/assets/settings-rows-D8Y9o1ZD.js.gz +0 -0
  408. package/dist/web/assets/settings-section-content-BXPg2H0N.js +0 -1
  409. package/dist/web/assets/settings-section-content-Dluhkh-u.js.br +0 -0
  410. package/dist/web/assets/settings-section-content-Dluhkh-u.js.gz +0 -0
  411. package/dist/web/assets/slash-command-picker-BdKd_AiS.js.br +0 -0
  412. package/dist/web/assets/slash-command-picker-BdKd_AiS.js.gz +0 -0
  413. package/dist/web/assets/sql-object-tab-DkdF_7Jz.js.br +0 -0
  414. package/dist/web/assets/sql-object-tab-DkdF_7Jz.js.gz +0 -0
  415. package/dist/web/assets/sqlite-viewer-BoQMjJHj.js.br +0 -0
  416. package/dist/web/assets/sqlite-viewer-BoQMjJHj.js.gz +0 -0
  417. package/dist/web/assets/structure-save-dialog-DGHxHJ4T.js.br +0 -0
  418. package/dist/web/assets/structure-save-dialog-DGHxHJ4T.js.gz +0 -0
  419. package/dist/web/assets/structure-tab-DuuX1e9c.js.br +0 -0
  420. package/dist/web/assets/structure-tab-DuuX1e9c.js.gz +0 -0
  421. package/dist/web/assets/system-monitor-body-CZVoh652.js.br +0 -0
  422. package/dist/web/assets/system-monitor-body-CZVoh652.js.gz +0 -0
  423. package/dist/web/assets/tab-host-window-content-BTYuY43x.js.br +0 -0
  424. package/dist/web/assets/tab-host-window-content-BTYuY43x.js.gz +0 -0
  425. package/dist/web/assets/table-tab-BsfgtqFE.js.br +0 -0
  426. package/dist/web/assets/table-tab-BsfgtqFE.js.gz +0 -0
  427. package/dist/web/assets/telegram-bot-token-field-CA8DEKRL.js.br +0 -0
  428. package/dist/web/assets/telegram-bot-token-field-CA8DEKRL.js.gz +0 -0
  429. package/dist/web/assets/terminal-tab-CoT5KIfe.js.br +0 -0
  430. package/dist/web/assets/terminal-tab-CoT5KIfe.js.gz +0 -0
  431. package/dist/web/assets/tool-cards-oZ6cptRr.js.br +0 -0
  432. package/dist/web/assets/tool-cards-oZ6cptRr.js.gz +0 -0
  433. package/dist/web/assets/tools-settings-section-CtcD-iTk.js.br +0 -0
  434. package/dist/web/assets/tools-settings-section-CtcD-iTk.js.gz +0 -0
  435. package/dist/web/assets/use-inline-blame-BUuJj1Ru.js.br +0 -0
  436. package/dist/web/assets/use-inline-blame-BUuJj1Ru.js.gz +0 -0
  437. package/dist/web/assets/use-lsp-Bo4z4gLx.js.br +0 -0
  438. package/dist/web/assets/use-lsp-Bo4z4gLx.js.gz +0 -0
  439. package/dist/web/assets/use-process-kill-CvlXPal4.js.br +0 -0
  440. package/dist/web/assets/use-process-kill-CvlXPal4.js.gz +0 -0
  441. package/dist/web/assets/use-sql-schema-info-DQzUqb7q.js.br +0 -0
  442. package/dist/web/assets/use-sql-schema-info-DQzUqb7q.js.gz +0 -0
  443. package/dist/web/assets/web-preview-tab-Cp0LuL0T.js.br +0 -0
  444. package/dist/web/assets/web-preview-tab-Cp0LuL0T.js.gz +0 -0
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{Kr as r,L as i,O as a,P as o,cr as s,lr as c,or as l,tr as u}from"./icons-BwyIKaTT.js";import{k as d,r as f}from"./api-client-xQDlhUTu.js";import{n as p}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./context-menu-BCuZYfWC.js";import{n as m}from"./use-is-mobile-VRV9eZy1.js";import{t as h}from"./button-C9ZXWb3b.js";import{a as ee,n as g,o as _,t as v}from"./dialog-Dn_2tuYa.js";import{t as y}from"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import{n as b,o as x,r as S,t as C,u as w}from"./adaptive-context-menu-C4jNSORA.js";import{t as T}from"./input-C3oVNCMq.js";import{t as te}from"./scroll-area-DOlQJGZp.js";import{Gn as E,Hn as D,Kn as O,Un as k,Vn as A,Wn as j}from"./index-COwBji1t.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 f.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 f.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[a,s]=(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)(C,{children:[(0,I.jsx)(w,{asChild:!0,children:(0,I.jsxs)(`button`,{type:`button`,onClick:()=>s(!a),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:[a?(0,I.jsx)(o,{className:`size-3.5 shrink-0 text-muted-foreground`}):(0,I.jsx)(i,{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)(b,{children:[(0,I.jsxs)(S,{onClick:async()=>{try{let t=await f.post(`/api/schedules/${e.id}/run-now`);d.success(`Run #${t.runId} started${t.wasRunning?` (previous run still active)`:``}`),s(!0),h(e=>e+1)}catch(e){d.error(e instanceof Error?e.message:`Run failed`)}},children:[(0,I.jsx)(l,{className:`size-3.5`}),` Run now`]}),(0,I.jsxs)(S,{onClick:async()=>{try{await f.patch(`/api/schedules/${e.id}`,{enabled:!e.enabled}),n()}catch(e){d.error(e instanceof Error?e.message:`Update failed`)}},children:[(0,I.jsx)(c,{className:`size-3.5`}),` `,e.enabled?`Disable`:`Enable`]}),(0,I.jsxs)(S,{onClick:t,children:[(0,I.jsx)(u,{className:`size-3.5`}),` Edit`]}),(0,I.jsx)(x,{}),(0,I.jsxs)(S,{variant:`destructive`,onClick:async()=>{try{await f.del(`/api/schedules/${e.id}`),d.success(`Schedule deleted`),n()}catch(e){d.error(e instanceof Error?e.message:`Delete failed`)}},children:[(0,I.jsx)(r,{className:`size-3.5`}),` Delete`]})]})]}),a&&(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),[d,p]=(0,M.useState)(null);(0,M.useEffect)(()=>{e&&(o($(t)),p(null),f.get(`/api/projects`).then(c).catch(()=>c([])))},[e,t]);let b=(0,M.useMemo)(()=>{try{return new Z(a.cron_expr).nextRuns(3).map(e=>e.toLocaleString())}catch{return null}},[a.cron_expr]),x=(e,t)=>o(n=>({...n,[e]:t})),S=(0,I.jsxs)(`div`,{className:`space-y-3 px-1`,children:[(0,I.jsx)(Q,{label:`Name`,children:(0,I.jsx)(T,{value:a.name,onChange:e=>x(`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)(T,{value:a.cron_expr,onChange:e=>x(`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:b?`Next: ${b.join(` · `)}`:`—`})]}),(0,I.jsx)(Q,{label:`Project`,children:(0,I.jsxs)(A,{value:a.project_path,onValueChange:e=>x(`project_path`,e),children:[(0,I.jsx)(j,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(E,{placeholder:`Select project`})}),(0,I.jsx)(D,{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=>x(`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)(A,{value:a.permission_mode,onValueChange:e=>x(`permission_mode`,e),children:[(0,I.jsx)(j,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(E,{})}),(0,I.jsx)(D,{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)(T,{type:`number`,min:1,value:a.max_turns,onChange:e=>x(`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)(T,{type:`number`,min:1e4,value:a.timeout_ms,onChange:e=>x(`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)(O,{checked:a.enabled,onCheckedChange:e=>x(`enabled`,e)})]}),d&&(0,I.jsx)(`p`,{className:`text-[11px] text-error`,children:d}),(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(!b){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 f.patch(`/api/schedules/${t.id}`,e):await f.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`})]}),C=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:C}),(0,I.jsx)(te,{className:`flex-1 min-h-0 px-3 pb-3`,children:S})]}):(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:C})}),S]})})}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),[o,c]=(0,M.useState)(null),l=()=>{c(null),i(!0)},u=e=>{c(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:l,className:`min-h-11 md:min-h-8 text-xs gap-1 cursor-pointer shrink-0`,children:[(0,I.jsx)(s,{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)(a,{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:l,className:`min-h-11 text-xs gap-1 cursor-pointer`,children:[(0,I.jsx)(s,{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:o,onClose:()=>i(!1),onSaved:n})]})}export{de as SchedulesSettingsSection};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{Kr as r,L as i,O as a,P as o,cr as s,lr as c,or as l,tr as u}from"./icons-BwyIKaTT.js";import{k as d,r as f}from"./api-client-xQDlhUTu.js";import{n as p}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./context-menu-BCuZYfWC.js";import{n as m}from"./use-is-mobile-VRV9eZy1.js";import{t as h}from"./button-C9ZXWb3b.js";import{a as ee,n as g,o as _,t as v}from"./dialog-Dn_2tuYa.js";import{t as y}from"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import{n as b,o as x,r as S,t as C,u as w}from"./adaptive-context-menu-C4jNSORA.js";import{t as T}from"./input-C3oVNCMq.js";import{t as te}from"./scroll-area-DOlQJGZp.js";import{Gn as E,Hn as D,Kn as O,Un as k,Vn as A,Wn as j}from"./index-CPBujJc_.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 f.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 f.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[a,s]=(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)(C,{children:[(0,I.jsx)(w,{asChild:!0,children:(0,I.jsxs)(`button`,{type:`button`,onClick:()=>s(!a),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:[a?(0,I.jsx)(o,{className:`size-3.5 shrink-0 text-muted-foreground`}):(0,I.jsx)(i,{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)(b,{children:[(0,I.jsxs)(S,{onClick:async()=>{try{let t=await f.post(`/api/schedules/${e.id}/run-now`);d.success(`Run #${t.runId} started${t.wasRunning?` (previous run still active)`:``}`),s(!0),h(e=>e+1)}catch(e){d.error(e instanceof Error?e.message:`Run failed`)}},children:[(0,I.jsx)(l,{className:`size-3.5`}),` Run now`]}),(0,I.jsxs)(S,{onClick:async()=>{try{await f.patch(`/api/schedules/${e.id}`,{enabled:!e.enabled}),n()}catch(e){d.error(e instanceof Error?e.message:`Update failed`)}},children:[(0,I.jsx)(c,{className:`size-3.5`}),` `,e.enabled?`Disable`:`Enable`]}),(0,I.jsxs)(S,{onClick:t,children:[(0,I.jsx)(u,{className:`size-3.5`}),` Edit`]}),(0,I.jsx)(x,{}),(0,I.jsxs)(S,{variant:`destructive`,onClick:async()=>{try{await f.del(`/api/schedules/${e.id}`),d.success(`Schedule deleted`),n()}catch(e){d.error(e instanceof Error?e.message:`Delete failed`)}},children:[(0,I.jsx)(r,{className:`size-3.5`}),` Delete`]})]})]}),a&&(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),[d,p]=(0,M.useState)(null);(0,M.useEffect)(()=>{e&&(o($(t)),p(null),f.get(`/api/projects`).then(c).catch(()=>c([])))},[e,t]);let b=(0,M.useMemo)(()=>{try{return new Z(a.cron_expr).nextRuns(3).map(e=>e.toLocaleString())}catch{return null}},[a.cron_expr]),x=(e,t)=>o(n=>({...n,[e]:t})),S=(0,I.jsxs)(`div`,{className:`space-y-3 px-1`,children:[(0,I.jsx)(Q,{label:`Name`,children:(0,I.jsx)(T,{value:a.name,onChange:e=>x(`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)(T,{value:a.cron_expr,onChange:e=>x(`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:b?`Next: ${b.join(` · `)}`:`—`})]}),(0,I.jsx)(Q,{label:`Project`,children:(0,I.jsxs)(A,{value:a.project_path,onValueChange:e=>x(`project_path`,e),children:[(0,I.jsx)(j,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(E,{placeholder:`Select project`})}),(0,I.jsx)(D,{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=>x(`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)(A,{value:a.permission_mode,onValueChange:e=>x(`permission_mode`,e),children:[(0,I.jsx)(j,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,I.jsx)(E,{})}),(0,I.jsx)(D,{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)(T,{type:`number`,min:1,value:a.max_turns,onChange:e=>x(`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)(T,{type:`number`,min:1e4,value:a.timeout_ms,onChange:e=>x(`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)(O,{checked:a.enabled,onCheckedChange:e=>x(`enabled`,e)})]}),d&&(0,I.jsx)(`p`,{className:`text-[11px] text-error`,children:d}),(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(!b){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 f.patch(`/api/schedules/${t.id}`,e):await f.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`})]}),C=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:C}),(0,I.jsx)(te,{className:`flex-1 min-h-0 px-3 pb-3`,children:S})]}):(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:C})}),S]})})}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),[o,c]=(0,M.useState)(null),l=()=>{c(null),i(!0)},u=e=>{c(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:l,className:`min-h-11 md:min-h-8 text-xs gap-1 cursor-pointer shrink-0`,children:[(0,I.jsx)(s,{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)(a,{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:l,className:`min-h-11 text-xs gap-1 cursor-pointer`,children:[(0,I.jsx)(s,{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:o,onClose:()=>i(!1),onSaved:n})]})}export{de as SchedulesSettingsSection};
@@ -1,4 +1,4 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{A as r,Bt as i,Hn as a,Hr as o,I as s,L as c,M as l,Yr as u,_n as d,gr as f,gt as p,hr as m,kn as h,li as g,m as _,xn as v}from"./icons-BwyIKaTT.js";import{o as ee,r as te}from"./api-client-xQDlhUTu.js";import{n as y}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import{i as b}from"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import{t as ne}from"./tab-store-D5I52eLN.js";import{n as x}from"./use-is-mobile-VRV9eZy1.js";import{t as S}from"./button-C9ZXWb3b.js";import{n as C}from"./file-icons-JInFtBVl.js";import"./patch-tab-metadata-C92YkrRX.js";import{t as w}from"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import"./start-ellipsis-CU8GkxaV.js";import"./libesm-B6LsX5wH.js";import{i as T,t as re}from"./session-turns-D3QpTtCq.js";import{C as E,S as D,_ as ie,a as O,f as ae,g as oe,i as se,m as ce,n as k,o as A,r as le,u as ue,x as de}from"./session-changes-bar-VfS2sHuH.js";import{a as j,c as M,d as fe,f as pe,l as me,m as he,n as N,o as ge,r as P,s as F,t as I,u as L}from"./review-code-CunYhmcC.js";var R=e(t(),1),_e=5e3,z=e=>e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1);function ve(e,t){return{key:e.key,rows:e.rows,oldFrom:e.oldFrom,oldTo:e.oldTo,added:e.added,removed:e.removed,base:t.base,drawnVersion:t.version,...e.calls?{calls:e.calls}:{}}}function B(e){let{projectName:t,sessionId:n}=e,[r,i]=(0,R.useState)(null),[a,o]=(0,R.useState)([]),[s,c]=(0,R.useState)(new Map),[l,u]=(0,R.useState)(new Map),[d,f]=(0,R.useState)(new Map),[p,m]=(0,R.useState)(null),[h,g]=(0,R.useState)(null),[_,v]=(0,R.useState)(null),[ee,te]=(0,R.useState)(!1),[y,b]=(0,R.useState)(null),[ne,x]=(0,R.useState)(null),S=(0,R.useRef)(0),C=(0,R.useRef)(-1),w=(0,R.useRef)(Promise.resolve()),T=(0,R.useRef)(new Map),re=(0,R.useRef)([]),E=(0,R.useRef)([]);E.current=[...new Set([...e.paths,...re.current])];let D=(0,R.useCallback)((e,t)=>{S.current>0||t<C.current||(i(e),o(t=>{let n=new Set(t),r=e.map(e=>e.path).filter(e=>!n.has(e));return r.length?[...t,...r]:t}))},[]),O=(0,R.useRef)(null),k=(0,R.useCallback)(async()=>{if(!t||!n)return;O.current?.abort();let e=new AbortController;O.current=e;let r=performance.now();te(!0),b(null);try{let i=await oe(t,n,E.current,e.signal);e.signal.aborted||D(i,r)}catch(t){e.signal.aborted||b(t instanceof Error?t.message:`Could not list this chat's changes`)}finally{e.signal.aborted||te(!1)}},[t,n,D]);(0,R.useEffect)(()=>(k(),()=>O.current?.abort()),[k]),(0,R.useEffect)(()=>{let e=e=>{let r=e.detail;r.projectName!==t||r.sessionId!==n||(re.current=r.paths,D(r.files,r.askedAt))};return window.addEventListener(ue,e),()=>window.removeEventListener(ue,e)},[t,n,D]);let A=(0,R.useMemo)(()=>ge({order:a,files:r??[],reverted:s,gone:l,pending:d}),[a,r,s,l,d]),le=(0,R.useMemo)(()=>fe(A),[A]),j=p?A.find(e=>e.path===p.path)??null:null,he=(0,R.useRef)(void 0);(0,R.useEffect)(()=>{if(!r)return;let t=e.select?.path&&e.select.at!==he.current?e.select:null;if(t){he.current=t.at;let e=A.find(e=>e.path===t.path);if(e){m(F(e));return}}m(e=>{if(!e)return S.current>0?null:M(A,null);let t=A.find(t=>t.path===e.path);return t?t.blocks.some(t=>t.key===e.key)?e:F(t):M(A,null)})},[r,A,e.select?.path,e.select?.at]);let N=j&&!j.gone&&j.file.blocks?j.file:null,I=N?se(N):``;(0,R.useEffect)(()=>{if(!t||!n||!N)return;let e=new AbortController,r=I;return ie(t,n,N.path,e.signal).then(t=>{e.signal.aborted||g(t)}).catch(t=>{e.signal.aborted||v({key:r,message:t instanceof Error?t.message:`Could not load this file's diff`})}),()=>e.abort()},[t,n,I]);let L=(0,R.useMemo)(()=>{if(!j)return{kind:`none`};let e=s.get(j.path)??[],t=new Map;for(let e of j.blocks){let n=d.get(P(j.path,e.key));n&&t.set(e.key,n)}let n=null;if(j.gone){let e=l.get(j.path);e&&e.text!==null&&(n={original:e.text,modified:e.text,version:``,base:e.file.base??``,kept:new Set})}else if(j.file.blocks){if(h?.path!==j.path)return _?.key===I?{kind:`error`,message:_.message}:{kind:`loading`};let e=new Set((j.file.blocks??[]).filter(e=>e.kept).map(e=>e.key)),t=new Map((j.file.blocks??[]).flatMap(e=>e.calls?.length?[[e.key,e.calls]]:[]));n={original:h.original,modified:h.modified,version:h.version,base:h.base??``,kept:e,calls:t}}let r=n&&me({...n,reverted:e,pending:t});return!n||!r?{kind:`whole`,review:j,undoId:j.gone?l.get(j.path)?.undoId:void 0}:{kind:`blocks`,review:j,model:r,version:n.version,original:n.original,base:n.base}},[j,s,l,d,h,_,I]),B=L.kind===`blocks`?L.model.stale.join(`
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{A as r,Bt as i,Hn as a,Hr as o,I as s,L as c,M as l,Yr as u,_n as d,gr as f,gt as p,hr as m,kn as h,li as g,m as _,xn as v}from"./icons-BwyIKaTT.js";import{o as ee,r as te}from"./api-client-xQDlhUTu.js";import{n as y}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import{i as b}from"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import{t as ne}from"./tab-store-D5I52eLN.js";import{n as x}from"./use-is-mobile-VRV9eZy1.js";import{t as S}from"./button-C9ZXWb3b.js";import{n as C}from"./file-icons-JInFtBVl.js";import"./patch-tab-metadata-C92YkrRX.js";import{t as w}from"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import"./start-ellipsis-CU8GkxaV.js";import"./libesm-B6LsX5wH.js";import{i as T,t as re}from"./session-turns-D3QpTtCq.js";import{C as E,S as D,_ as ie,a as O,f as ae,g as oe,i as se,m as ce,n as k,o as A,r as le,u as ue,x as de}from"./session-changes-bar-VfS2sHuH.js";import{a as j,c as M,d as fe,f as pe,l as me,m as he,n as N,o as ge,r as P,s as F,t as I,u as L}from"./review-code-DsF9921h.js";var R=e(t(),1),_e=5e3,z=e=>e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1);function ve(e,t){return{key:e.key,rows:e.rows,oldFrom:e.oldFrom,oldTo:e.oldTo,added:e.added,removed:e.removed,base:t.base,drawnVersion:t.version,...e.calls?{calls:e.calls}:{}}}function B(e){let{projectName:t,sessionId:n}=e,[r,i]=(0,R.useState)(null),[a,o]=(0,R.useState)([]),[s,c]=(0,R.useState)(new Map),[l,u]=(0,R.useState)(new Map),[d,f]=(0,R.useState)(new Map),[p,m]=(0,R.useState)(null),[h,g]=(0,R.useState)(null),[_,v]=(0,R.useState)(null),[ee,te]=(0,R.useState)(!1),[y,b]=(0,R.useState)(null),[ne,x]=(0,R.useState)(null),S=(0,R.useRef)(0),C=(0,R.useRef)(-1),w=(0,R.useRef)(Promise.resolve()),T=(0,R.useRef)(new Map),re=(0,R.useRef)([]),E=(0,R.useRef)([]);E.current=[...new Set([...e.paths,...re.current])];let D=(0,R.useCallback)((e,t)=>{S.current>0||t<C.current||(i(e),o(t=>{let n=new Set(t),r=e.map(e=>e.path).filter(e=>!n.has(e));return r.length?[...t,...r]:t}))},[]),O=(0,R.useRef)(null),k=(0,R.useCallback)(async()=>{if(!t||!n)return;O.current?.abort();let e=new AbortController;O.current=e;let r=performance.now();te(!0),b(null);try{let i=await oe(t,n,E.current,e.signal);e.signal.aborted||D(i,r)}catch(t){e.signal.aborted||b(t instanceof Error?t.message:`Could not list this chat's changes`)}finally{e.signal.aborted||te(!1)}},[t,n,D]);(0,R.useEffect)(()=>(k(),()=>O.current?.abort()),[k]),(0,R.useEffect)(()=>{let e=e=>{let r=e.detail;r.projectName!==t||r.sessionId!==n||(re.current=r.paths,D(r.files,r.askedAt))};return window.addEventListener(ue,e),()=>window.removeEventListener(ue,e)},[t,n,D]);let A=(0,R.useMemo)(()=>ge({order:a,files:r??[],reverted:s,gone:l,pending:d}),[a,r,s,l,d]),le=(0,R.useMemo)(()=>fe(A),[A]),j=p?A.find(e=>e.path===p.path)??null:null,he=(0,R.useRef)(void 0);(0,R.useEffect)(()=>{if(!r)return;let t=e.select?.path&&e.select.at!==he.current?e.select:null;if(t){he.current=t.at;let e=A.find(e=>e.path===t.path);if(e){m(F(e));return}}m(e=>{if(!e)return S.current>0?null:M(A,null);let t=A.find(t=>t.path===e.path);return t?t.blocks.some(t=>t.key===e.key)?e:F(t):M(A,null)})},[r,A,e.select?.path,e.select?.at]);let N=j&&!j.gone&&j.file.blocks?j.file:null,I=N?se(N):``;(0,R.useEffect)(()=>{if(!t||!n||!N)return;let e=new AbortController,r=I;return ie(t,n,N.path,e.signal).then(t=>{e.signal.aborted||g(t)}).catch(t=>{e.signal.aborted||v({key:r,message:t instanceof Error?t.message:`Could not load this file's diff`})}),()=>e.abort()},[t,n,I]);let L=(0,R.useMemo)(()=>{if(!j)return{kind:`none`};let e=s.get(j.path)??[],t=new Map;for(let e of j.blocks){let n=d.get(P(j.path,e.key));n&&t.set(e.key,n)}let n=null;if(j.gone){let e=l.get(j.path);e&&e.text!==null&&(n={original:e.text,modified:e.text,version:``,base:e.file.base??``,kept:new Set})}else if(j.file.blocks){if(h?.path!==j.path)return _?.key===I?{kind:`error`,message:_.message}:{kind:`loading`};let e=new Set((j.file.blocks??[]).filter(e=>e.kept).map(e=>e.key)),t=new Map((j.file.blocks??[]).flatMap(e=>e.calls?.length?[[e.key,e.calls]]:[]));n={original:h.original,modified:h.modified,version:h.version,base:h.base??``,kept:e,calls:t}}let r=n&&me({...n,reverted:e,pending:t});return!n||!r?{kind:`whole`,review:j,undoId:j.gone?l.get(j.path)?.undoId:void 0}:{kind:`blocks`,review:j,model:r,version:n.version,original:n.original,base:n.base}},[j,s,l,d,h,_,I]),B=L.kind===`blocks`?L.model.stale.join(`
2
2
  `):``;(0,R.useEffect)(()=>{if(!B||L.kind!==`blocks`)return;let e=L.review.path,t=new Set(B.split(`
3
3
  `));c(n=>new Map(n).set(e,(n.get(e)??[]).filter(e=>!t.has(e.key))))},[B]);let V=(0,R.useRef)(null),ye=(0,R.useRef)(0),H=(0,R.useCallback)(e=>{V.current&&clearTimeout(V.current);let t=++ye.current;x({...e,id:t}),V.current=setTimeout(()=>x(e=>e?.id===t?null:e),_e)},[]),be=(0,R.useCallback)(()=>{V.current&&clearTimeout(V.current),x(null)},[]);(0,R.useEffect)(()=>()=>{V.current&&clearTimeout(V.current)},[]);let U=(e,t)=>{let n=T.current.get(e),r=t;for(let e=0;n?.has(r)&&e<64;e++)r=n.get(r);return r},W=(e,t,n)=>{if(t===n)return;let r=T.current.get(e)??new Map;T.current.set(e,r.set(t,n))},G=e=>{let t=new Map(e.map(e=>[e.path,e.file]));i(n=>{if(!n)return n;let r=n.flatMap(e=>t.has(e.path)?t.get(e.path)?[t.get(e.path)]:[]:[e]);for(let t of e)t.file&&!n.some(e=>e.path===t.path)&&r.push(t.file);return r}),o(t=>{let n=e.filter(e=>e.file&&!t.includes(e.path)).map(e=>e.path);return n.length?[...t,...n]:t}),u(t=>{if(!e.some(e=>e.file&&t.has(e.path)))return t;let n=new Map(t);for(let t of e)t.file&&n.delete(t.path);return n})},K=e=>{let t=e.find(e=>e.stale||e.error);return t?(H(t.error?{lead:t.error}:{lead:``,name:z(t.path),tail:` changed before the answer reached it, so it is shown again as it is now.`}),!0):!1},xe=e=>{S.current++;let r=async()=>{try{return await e()}finally{S.current--,C.current=performance.now(),t&&n&&ae({projectName:t,sessionId:n})}},i=w.current.then(r,r);return w.current=i,i},q=(e,r,i)=>{if(!t||!n||r.length===0)return Promise.resolve(null);let a=i.states??new Map,o=i.ghosts??new Map;a.size&&f(e=>new Map([...e,...a])),o.size&&c(e=>{let t=new Map(e);for(let[n,r]of o)t.set(n,[...(e.get(n)??[]).filter(e=>!r.some(t=>t.key===e.key)),...r]);return t});let s=e=>{c(t=>{let n=new Map(t);for(let[r,i]of o)n.set(r,(t.get(r)??[]).flatMap(t=>i.includes(t)?[e(t,r)].filter(e=>!!e):[t]));return n})};return xe(async()=>{let i=r.map(e=>({path:e.review.path,version:U(e.review.path,e.drawn),...e.keys?{keys:e.keys}:{}}));try{let a=await ce(t,n,e,i),o=new Set(a.files.filter(e=>e.stale||e.error).map(e=>e.path));if(s((e,t)=>o.has(t)?null:{...e,undoId:a.undoId}),a.files.forEach((e,t)=>{o.has(e.path)||W(e.path,i[t]?.version??``,e.file?.version??``)}),e===`revert`){let e=r.filter(e=>a.files.some(t=>t.path===e.review.path&&!o.has(t.path)&&!t.file));e.length&&u(t=>{let n=new Map(t);for(let t of e)n.set(t.review.path,{file:t.review.file,text:t.text??null,undoId:a.undoId});return n})}return G(a.files),a}catch(e){return s(()=>null),H({lead:e instanceof Error?e.message:`Could not save the answer`}),null}finally{a.size&&f(e=>{let t=new Map(e);for(let e of a.keys())t.delete(e);return t})}})},J=e=>L.kind===`blocks`&&L.review.path===e.path?L.version:e.file.version,Se=e=>L.kind===`blocks`?L.model.items.find(t=>t.kind===`block`&&t.key===e):void 0,Y=e=>ge({order:a,files:r??[],reverted:s,gone:l,pending:new Map([...d,...e])}),X=async(e,t)=>{if(!j||j.gone)return;let n=j,r=Se(e),i=new Map([[P(n.path,e),t===`keep`?`kept`:`reverted`]]),a=Y(i);m(M(a,{path:n.path,key:e}));let o=t===`revert`&&r&&L.kind===`blocks`?new Map([[n.path,[ve(r,L)]]]):void 0,s=L.kind===`blocks`?L.original:null,c=await q(t,[{review:n,drawn:J(n),keys:e===`*`?void 0:[e],text:s}],{states:i,ghosts:o});if(!c||K(c.files))return;let l=a.find(e=>e.path===n.path)?.open===0;H({lead:`${t===`keep`?`Kept`:`Reverted`} ${r?`block ${r.index+1} of `:``}`,name:z(n.path),tail:l?` — file done`:``,undoId:c.undoId,focus:{path:n.path,key:e}})};return{files:r,reviews:A,progress:le,focus:p,setFocus:m,focused:j,pane:L,loading:ee,error:y,toast:ne,dismissToast:be,reload:k,step:(0,R.useCallback)(e=>m(t=>pe(A,t,e)),[A]),focusFile:(0,R.useCallback)(e=>{let t=A.find(t=>t.path===e);t&&m(F(t))},[A]),keepBlock:e=>X(e,`keep`),revertBlock:e=>X(e,`revert`),reopenBlock:async e=>{if(!j||j.gone)return;let t=j,n=Se(e);m({path:t.path,key:e});let r=await q(`open`,[{review:t,drawn:J(t),keys:e===`*`?void 0:[e]}],{states:new Map([[P(t.path,e),`open`]])});!r||K(r.files)||H({lead:n?`Block ${n.index+1} of `:``,name:z(t.path),tail:` is open again`,undoId:r.undoId,focus:{path:t.path,key:e}})},undo:(e,i)=>!t||!n?Promise.resolve():(be(),xe(async()=>{try{let a=await de(t,n,e);if(a.stale){H({lead:`Could not undo: the file changed since.`});return}for(let e of a.files){let t=r?.find(t=>t.path===e.path)?.version;t!==void 0&&e.file&&W(e.path,t,e.file.version)}c(t=>{let n=new Map;for(let[r,i]of t)n.set(r,i.filter(t=>t.undoId!==e));return n}),G(a.files),i&&m(i)}catch(e){H({lead:e instanceof Error?e.message:`Could not undo`})}})),keepFile:async()=>{if(!j||j.gone||j.open===0)return;let e=j,t=e.blocks.filter(e=>e.state===`open`).map(e=>e.key),n=new Map(t.map(t=>[P(e.path,t),`kept`]));m(M(Y(n),{path:e.path,key:e.blocks[e.blocks.length-1].key}));let r=await q(`keep`,[{review:e,drawn:J(e),keys:t.includes(`*`)?void 0:t}],{states:n});!r||K(r.files)||H({lead:`Kept `,name:z(e.path),undoId:r.undoId,focus:F(e)})},revertFile:async()=>{if(!j||j.gone)return;let e=j,t=new Map(e.blocks.filter(e=>e.state!==`reverted`).map(t=>[P(e.path,t.key),`reverted`]));m(M(Y(t),{path:e.path,key:e.blocks[e.blocks.length-1].key}));let n=L.kind===`blocks`&&L.review.path===e.path?new Map([[e.path,L.model.items.filter(e=>e.kind===`block`&&e.state!==`reverted`).map(e=>ve(e,L))]]):void 0,r=L.kind===`blocks`?L.original:null,i=await q(`revert`,[{review:e,drawn:J(e),text:r}],{states:t,ghosts:n});!i||K(i.files)||H({lead:`Reverted `,name:z(e.path),undoId:i.undoId,focus:F(e)})},keepAll:async()=>{let e=A.filter(e=>e.open>0&&!e.gone);if(e.length===0)return;let t=new Map(e.flatMap(e=>e.blocks.filter(e=>e.state===`open`).map(t=>[P(e.path,t.key),`kept`]))),n=p;m(null);let r=await q(`keep`,e.map(e=>{let t=e.blocks.filter(e=>e.state===`open`).map(e=>e.key);return{review:e,drawn:J(e),keys:t.includes(`*`)?void 0:t}}),{states:t});!r||K(r.files)||H({lead:`Kept ${t.size} block${t.size===1?``:`s`}`,undoId:r.undoId,focus:n})}}}var V=8e3,ye=new Map,H=new Map;function be(e){let{projectName:t,sessionId:n,providerId:r}=e,i=E(e=>n?e.bySession[n]:void 0),a=i?.byCall??ye,o=e.calls.filter(e=>!a.has(e)).sort().join(`
4
4
  `),s=i?.live??!1;return(0,R.useEffect)(()=>{if(!t||!n||!r||s||i&&!o)return;let e=H.get(n);if(i&&e?.unplaced===o)return;let a=new AbortController,c=setTimeout(()=>{H.set(n,{at:Date.now(),unplaced:e?.unplaced??null}),te.get(`${ee(t)}/chat/sessions/${n}/messages?providerId=${r}`,{signal:a.signal}).then(e=>{let t=Array.isArray(e)?e:e?.messages;if(a.signal.aborted||!Array.isArray(t))return;let r=re(t),i=T(r);H.set(n,{at:Date.now(),unplaced:o.split(`
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{L as r,u as i}from"./icons-BwyIKaTT.js";import{n as a}from"./utils-Bslrbb-G.js";import{a as o,i as s,n as c,o as l,r as u}from"./settings-categories-Ajj4ui27.js";import{t as d}from"./button-C9ZXWb3b.js";import{t as f}from"./scroll-area-DOlQJGZp.js";import{t as p}from"./separator-DmU9aJwq.js";import{n as m}from"./settings-section-content-Dluhkh-u.js";var h=n();function g({active:e,onSelect:t}){return(0,h.jsx)(f,{className:`h-full`,children:(0,h.jsx)(`nav`,{className:`p-2 space-y-4`,"aria-label":`Settings categories`,children:c.map(n=>{let r=o(n.id);return r.length===0?null:(0,h.jsxs)(`div`,{className:`space-y-1`,children:[n.label&&(0,h.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,h.jsxs)(`button`,{onClick:()=>t(n.id),"data-testid":`settings-rail-${n.id}`,"aria-current":i?`page`:void 0,className:a(`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,h.jsx)(r,{className:a(`size-4 shrink-0`,i?`text-foreground`:`text-muted-foreground`)}),(0,h.jsx)(`span`,{className:`text-sm truncate`,children:n.label})]},n.id)})]},n.id)})})})}function _({onSelect:e}){return(0,h.jsx)(f,{className:`h-full`,children:(0,h.jsx)(`nav`,{className:`p-3 space-y-5`,"aria-label":`Settings categories`,children:c.map(t=>{let n=o(t.id);return n.length===0?null:(0,h.jsxs)(`div`,{className:`space-y-1`,children:[t.label&&(0,h.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,h.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,h.jsx)(`div`,{className:`size-10 rounded-md bg-muted flex items-center justify-center shrink-0 group-hover:bg-accent`,children:(0,h.jsx)(n,{className:`size-4 text-muted-foreground`})}),(0,h.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,h.jsx)(`p`,{className:`text-sm font-medium truncate`,children:t.label}),(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:t.subtitle})]}),(0,h.jsx)(r,{className:`size-4 text-muted-foreground shrink-0`})]},t.id)})]},t.id)})})})}var v=e(t(),1);function y({initialCategory:e,onCategoryChange:t}){let[n,r]=(0,v.useState)(e??`general`),[a,o]=(0,v.useState)(e===void 0),c=l(n),y=c.icon;function b(e){r(e),o(!1),t?.(e)}let x=(0,v.useRef)(b);return x.current=b,(0,v.useEffect)(()=>{let e=e=>{let t=e.detail;s(t)&&x.current(t)};return window.addEventListener(u,e),()=>window.removeEventListener(u,e)},[]),(0,h.jsx)(`div`,{className:`@container h-full w-full`,"data-testid":`settings-window`,"data-category":n,children:(0,h.jsxs)(`div`,{className:`h-full w-full flex`,children:[(0,h.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,h.jsx)(g,{active:n,onSelect:b})}),(0,h.jsxs)(`div`,{className:`relative flex-1 min-w-0`,children:[(0,h.jsxs)(`div`,{className:`h-full flex flex-col min-h-0`,children:[(0,h.jsxs)(`div`,{className:`shrink-0 flex items-center gap-2 px-2 py-2.5 @[640px]:px-4`,children:[(0,h.jsx)(d,{variant:`ghost`,size:`icon`,"aria-label":`Back to settings list`,className:`size-9 shrink-0 cursor-pointer @[640px]:hidden`,onClick:()=>o(!0),children:(0,h.jsx)(i,{className:`size-4`})}),(0,h.jsx)(y,{className:`size-4 text-muted-foreground shrink-0`}),(0,h.jsx)(`h2`,{className:`text-sm font-semibold truncate`,"data-testid":`settings-pane-title`,children:c.label})]}),(0,h.jsx)(p,{}),(0,h.jsx)(f,{className:`flex-1 min-h-0`,children:(0,h.jsx)(`div`,{className:`p-4 pb-8`,children:(0,h.jsx)(m,{category:n})})})]}),a&&(0,h.jsxs)(`div`,{className:`absolute inset-0 z-10 bg-background flex flex-col min-h-0 @[640px]:hidden`,"data-testid":`settings-index`,children:[(0,h.jsx)(`div`,{className:`shrink-0 px-4 py-3`,children:(0,h.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`})}),(0,h.jsx)(p,{}),(0,h.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,h.jsx)(_,{onSelect:b})})]})]})]})})}export{y as t};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{L as r,u as i}from"./icons-BwyIKaTT.js";import{n as a}from"./utils-Bslrbb-G.js";import{a as o,i as s,n as c,o as l,r as u}from"./settings-categories-Ajj4ui27.js";import{t as d}from"./button-C9ZXWb3b.js";import{t as f}from"./scroll-area-DOlQJGZp.js";import{t as p}from"./separator-DmU9aJwq.js";import{n as m}from"./settings-section-content-D41IJ62x.js";var h=n();function g({active:e,onSelect:t}){return(0,h.jsx)(f,{className:`h-full`,children:(0,h.jsx)(`nav`,{className:`p-2 space-y-4`,"aria-label":`Settings categories`,children:c.map(n=>{let r=o(n.id);return r.length===0?null:(0,h.jsxs)(`div`,{className:`space-y-1`,children:[n.label&&(0,h.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,h.jsxs)(`button`,{onClick:()=>t(n.id),"data-testid":`settings-rail-${n.id}`,"aria-current":i?`page`:void 0,className:a(`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,h.jsx)(r,{className:a(`size-4 shrink-0`,i?`text-foreground`:`text-muted-foreground`)}),(0,h.jsx)(`span`,{className:`text-sm truncate`,children:n.label})]},n.id)})]},n.id)})})})}function _({onSelect:e}){return(0,h.jsx)(f,{className:`h-full`,children:(0,h.jsx)(`nav`,{className:`p-3 space-y-5`,"aria-label":`Settings categories`,children:c.map(t=>{let n=o(t.id);return n.length===0?null:(0,h.jsxs)(`div`,{className:`space-y-1`,children:[t.label&&(0,h.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,h.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,h.jsx)(`div`,{className:`size-10 rounded-md bg-muted flex items-center justify-center shrink-0 group-hover:bg-accent`,children:(0,h.jsx)(n,{className:`size-4 text-muted-foreground`})}),(0,h.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,h.jsx)(`p`,{className:`text-sm font-medium truncate`,children:t.label}),(0,h.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:t.subtitle})]}),(0,h.jsx)(r,{className:`size-4 text-muted-foreground shrink-0`})]},t.id)})]},t.id)})})})}var v=e(t(),1);function y({initialCategory:e,onCategoryChange:t}){let[n,r]=(0,v.useState)(e??`general`),[a,o]=(0,v.useState)(e===void 0),c=l(n),y=c.icon;function b(e){r(e),o(!1),t?.(e)}let x=(0,v.useRef)(b);return x.current=b,(0,v.useEffect)(()=>{let e=e=>{let t=e.detail;s(t)&&x.current(t)};return window.addEventListener(u,e),()=>window.removeEventListener(u,e)},[]),(0,h.jsx)(`div`,{className:`@container h-full w-full`,"data-testid":`settings-window`,"data-category":n,children:(0,h.jsxs)(`div`,{className:`h-full w-full flex`,children:[(0,h.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,h.jsx)(g,{active:n,onSelect:b})}),(0,h.jsxs)(`div`,{className:`relative flex-1 min-w-0`,children:[(0,h.jsxs)(`div`,{className:`h-full flex flex-col min-h-0`,children:[(0,h.jsxs)(`div`,{className:`shrink-0 flex items-center gap-2 px-2 py-2.5 @[640px]:px-4`,children:[(0,h.jsx)(d,{variant:`ghost`,size:`icon`,"aria-label":`Back to settings list`,className:`size-9 shrink-0 cursor-pointer @[640px]:hidden`,onClick:()=>o(!0),children:(0,h.jsx)(i,{className:`size-4`})}),(0,h.jsx)(y,{className:`size-4 text-muted-foreground shrink-0`}),(0,h.jsx)(`h2`,{className:`text-sm font-semibold truncate`,"data-testid":`settings-pane-title`,children:c.label})]}),(0,h.jsx)(p,{}),(0,h.jsx)(f,{className:`flex-1 min-h-0`,children:(0,h.jsx)(`div`,{className:`p-4 pb-8`,children:(0,h.jsx)(m,{category:n})})})]}),a&&(0,h.jsxs)(`div`,{className:`absolute inset-0 z-10 bg-background flex flex-col min-h-0 @[640px]:hidden`,"data-testid":`settings-index`,children:[(0,h.jsx)(`div`,{className:`shrink-0 px-4 py-3`,children:(0,h.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`})}),(0,h.jsx)(p,{}),(0,h.jsx)(`div`,{className:`flex-1 min-h-0`,children:(0,h.jsx)(_,{onSelect:b})})]})]})]})})}export{y as t};
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{n as r}from"./utils-Bslrbb-G.js";import{t as i}from"./button-C9ZXWb3b.js";import{Kn as a}from"./index-COwBji1t.js";var o=e(t(),1),s=n();function c({title:e,children:t}){return(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`h3`,{className:`text-sm font-medium`,children:e}),(0,s.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:t})]})}function l({label:e,note:t,checked:n,disabled:i,onChange:c}){let l=(0,o.useId)();return(0,s.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-3 px-4`,children:[(0,s.jsxs)(`label`,{htmlFor:l,className:r(`min-w-0 flex-1 py-3`,i?`cursor-default`:`cursor-pointer`),children:[(0,s.jsx)(`span`,{className:`block text-sm`,children:e}),t&&(0,s.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t})]}),(0,s.jsx)(a,{id:l,checked:n,disabled:i,onCheckedChange:c})]})}function u({label:e,onClick:t,disabled:n,danger:a,children:o}){return(0,s.jsx)(i,{variant:`ghost`,size:`icon`,"aria-label":e,title:e,disabled:n,onClick:t,className:r(`size-11 shrink-0 cursor-pointer md:size-9`,a&&`text-error hover:text-error`),children:o})}export{c as n,l as r,u as t};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{n as r}from"./utils-Bslrbb-G.js";import{t as i}from"./button-C9ZXWb3b.js";import{Kn as a}from"./index-CPBujJc_.js";var o=e(t(),1),s=n();function c({title:e,children:t}){return(0,s.jsxs)(`div`,{children:[(0,s.jsx)(`h3`,{className:`text-sm font-medium`,children:e}),(0,s.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:t})]})}function l({label:e,note:t,checked:n,disabled:i,onChange:c}){let l=(0,o.useId)();return(0,s.jsxs)(`div`,{className:`flex min-h-11 items-center justify-between gap-3 px-4`,children:[(0,s.jsxs)(`label`,{htmlFor:l,className:r(`min-w-0 flex-1 py-3`,i?`cursor-default`:`cursor-pointer`),children:[(0,s.jsx)(`span`,{className:`block text-sm`,children:e}),t&&(0,s.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:t})]}),(0,s.jsx)(a,{id:l,checked:n,disabled:i,onCheckedChange:c})]})}function u({label:e,onClick:t,disabled:n,danger:a,children:o}){return(0,s.jsx)(i,{variant:`ghost`,size:`icon`,"aria-label":e,title:e,disabled:n,onClick:t,className:r(`size-11 shrink-0 cursor-pointer md:size-9`,a&&`text-error hover:text-error`),children:o})}export{c as n,l as r,u as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/general-settings-section-DQTr20G_.js","assets/rolldown-runtime-C5c2KzVm.js","assets/index-COwBji1t.js","assets/preload-helper-CM8YhcCa.js","assets/vendor-ui-BTSIXzhZ.js","assets/vendor-markdown-C-P1aR4p.js","assets/button-C9ZXWb3b.js","assets/utils-Bslrbb-G.js","assets/createLucideIcon-D9_fdOKS.js","assets/file-diff-CcDhJkXB.js","assets/git-commit-horizontal-BPdj2L1i.js","assets/api-client-xQDlhUTu.js","assets/react-BZ0kba1-.js","assets/open-db-tabs-CtWIWHOa.js","assets/window-store-DqX_qmkQ.js","assets/panel-store-BJhazigC.js","assets/session-list-sync-triggers-DtJI5KF0.js","assets/project-store-BLGl9IAO.js","assets/project-framework-store-DwLxaRan.js","assets/explorer-model-BtJN4MZ9.js","assets/db-sidebar-reveal-_qw0CliT.js","assets/settings-store-B4mLp19V.js","assets/use-is-mobile-VRV9eZy1.js","assets/db-types-CNhENouW.js","assets/tab-store-D5I52eLN.js","assets/use-db-driver-installed-anzWkGi5.js","assets/impexp-state-BWKOuRGj.js","assets/file-store-BQ41vIs5.js","assets/sql-identifiers-DDISwQor.js","assets/db-explorer-store-BmpvDHz6.js","assets/onboarding-quick-orientation-CTHtIRib.js","assets/dialog-Dn_2tuYa.js","assets/portal-container-context-NBi-KGK0.js","assets/icons-BwyIKaTT.js","assets/format-file-meta-DdYtk07C.js","assets/fs-api-CFtQzsIJ.js","assets/open-settings-EXR4zoZG.js","assets/settings-categories-Ajj4ui27.js","assets/adaptive-context-menu-C4jNSORA.js","assets/context-menu-BCuZYfWC.js","assets/mobile-bottom-sheet-DArbIyrD.js","assets/use-visual-viewport-MmugpRg-.js","assets/dropdown-menu-BQidk_OJ.js","assets/input-C3oVNCMq.js","assets/scroll-area-DOlQJGZp.js","assets/start-ellipsis-CU8GkxaV.js","assets/chat-preparation-cache-190LLyy7.js","assets/clipboard-D-VCry-F.js","assets/file-icons-JInFtBVl.js","assets/format-date-CSHaU2wN.js","assets/git-repo-store-CKB5fdNP.js","assets/patch-tab-metadata-C92YkrRX.js","assets/ws-auth-CbF6GqxP.js","assets/apply-theme-ORrEdHKT.js","assets/resolve-theme-BqoL27BW.js","assets/index-BACBJm4i.css","assets/onboarding-entry-eehqBvyM.js","assets/separator-DmU9aJwq.js","assets/appearance-settings-section-DpYcNqXH.js","assets/language-servers-section-BXLaicUY.js","assets/remote-desktop-settings-section-ZAsBRwjq.js","assets/database-drivers-section-DJvU6bf5.js","assets/ai-settings-section-CBlS1FZK.js","assets/ai-settings-section-Ct9-lNqA.js","assets/api-settings-vmIRFNwZ.js","assets/tools-settings-section-CtcD-iTk.js","assets/db-ai-tools-CVbbW_MZ.js","assets/split-sql-statements-DcAeXbk_.js","assets/design-canvas-check-BIHc2d_k.js","assets/settings-rows-D8Y9o1ZD.js","assets/accounts-settings-section-DhzuFkDO.js","assets/codex-reset-credit-button-CwSSBK6P.js","assets/design-settings-section-DxWEBH1L.js","assets/design-skill-suggestion-Dmmg_ap5.js","assets/slash-command-picker-BdKd_AiS.js","assets/design-responsive-dialog-MAFgVOmv.js","assets/design-system-status-label-KA4ESjWe.js","assets/voice-settings-section-C6Wb6q5o.js","assets/run-in-terminal-button-m3i-Hcou.js","assets/run-in-terminal-ujoc25vj.js","assets/ppmbot-settings-section-BFniAm3D.js","assets/telegram-bot-token-field-CA8DEKRL.js","assets/notifications-settings-section-CJJ1l5cL.js","assets/jira-watcher-section-dzpmNZA2.js","assets/extension-manager-section-CQsqXsPF.js","assets/proxy-settings-section-Di5nBuy6.js","assets/remote-access-settings-section-HpZAP0Al.js","assets/schedules-settings-section-CvlcMyEz.js","assets/keyboard-shortcuts-section-BhyalK8A.js","assets/files-settings-section-CC0aJryq.js","assets/query-audit-section-D_WDp1m-.js"])))=>i.map(i=>d[i]);
2
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{xn as r}from"./icons-BwyIKaTT.js";import{t as i}from"./preload-helper-CM8YhcCa.js";import{ui as a}from"./index-COwBji1t.js";var o=e(t(),1),s=n(),c={general:a(()=>i(()=>import(`./general-settings-section-DQTr20G_.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,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57]))),appearance:a(()=>i(()=>import(`./appearance-settings-section-DpYcNqXH.js`).then(e=>({default:e.AppearanceSettingsSection})),__vite__mapDeps([58,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]))),"language-servers":a(()=>i(()=>import(`./language-servers-section-BXLaicUY.js`).then(e=>({default:e.LanguageServersSection})),__vite__mapDeps([59,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]))),"remote-desktop":a(()=>i(()=>import(`./remote-desktop-settings-section-ZAsBRwjq.js`).then(e=>({default:e.RemoteDesktopSettingsSection})),__vite__mapDeps([60,1,4,5,6,7,11,57,33]))),"database-drivers":a(()=>i(()=>import(`./database-drivers-section-DJvU6bf5.js`).then(e=>({default:e.DatabaseDriversSection})),__vite__mapDeps([61,1,4,5,6,7,11,25,31,32,33,40,41,22]))),"ai-provider":a(()=>i(()=>import(`./ai-settings-section-CBlS1FZK.js`).then(e=>({default:e.AISettingsSection})),__vite__mapDeps([62,4,1,5,6,7,11,21,3,12,14,15,16,17,18,63,2,8,9,10,13,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64]))),tools:a(()=>i(()=>import(`./tools-settings-section-CtcD-iTk.js`).then(e=>({default:e.ToolsSettingsSection})),__vite__mapDeps([65,1,4,5,6,7,11,66,23,67,68,69,2,3,8,9,10,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64]))),accounts:a(()=>i(()=>import(`./accounts-settings-section-DhzuFkDO.js`).then(e=>({default:e.AccountsSettingsSection})),__vite__mapDeps([70,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,71,64]))),design:a(()=>i(()=>import(`./design-settings-section-DxWEBH1L.js`).then(e=>({default:e.DesignSettingsSection})),__vite__mapDeps([72,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,73,74,75,76]))),voice:a(()=>i(()=>import(`./voice-settings-section-C6Wb6q5o.js`).then(e=>({default:e.VoiceSettingsSection})),__vite__mapDeps([77,1,4,5,6,7,11,21,3,12,14,15,16,17,18,78,33,79,57]))),ppmbot:a(()=>i(()=>import(`./ppmbot-settings-section-BFniAm3D.js`).then(e=>({default:e.PPMBotSettingsSection})),__vite__mapDeps([80,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,69,81,57]))),notifications:a(()=>i(()=>import(`./notifications-settings-section-CJJ1l5cL.js`).then(e=>({default:e.NotificationsSettingsSection})),__vite__mapDeps([82,1,4,5,6,7,11,69,2,3,8,9,10,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,81,57]))),jira:a(()=>i(()=>import(`./jira-watcher-section-dzpmNZA2.js`).then(e=>({default:e.JiraWatcherSection})),__vite__mapDeps([83,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,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),extensions:a(()=>i(()=>import(`./extension-manager-section-CQsqXsPF.js`).then(e=>({default:e.ExtensionManagerSection})),__vite__mapDeps([84,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),proxy:a(()=>i(()=>import(`./proxy-settings-section-Di5nBuy6.js`).then(e=>({default:e.ProxySettingsSection})),__vite__mapDeps([85,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64]))),"remote-access":a(()=>i(()=>import(`./remote-access-settings-section-HpZAP0Al.js`).then(e=>({default:e.RemoteAccessSettingsSection})),__vite__mapDeps([86,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,78,79]))),schedules:a(()=>i(()=>import(`./schedules-settings-section-CvlcMyEz.js`).then(e=>({default:e.SchedulesSettingsSection})),__vite__mapDeps([87,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),shortcuts:a(()=>i(()=>import(`./keyboard-shortcuts-section-BhyalK8A.js`).then(e=>({default:e.KeyboardShortcutsSection})),__vite__mapDeps([88,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),files:a(()=>i(()=>import(`./files-settings-section-CC0aJryq.js`).then(e=>({default:e.FilesSettingsSection})),__vite__mapDeps([89,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]))),"query-audit":a(()=>i(()=>import(`./query-audit-section-D_WDp1m-.js`).then(e=>({default:e.QueryAuditSection})),__vite__mapDeps([90,1,4,5,6,7,11,43,64,46,33])))};function l(){return Promise.all(Object.values(c).map(e=>e.preload()))}function u({category:e}){let t=c[e];return(0,s.jsx)(o.Suspense,{fallback:(0,s.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,s.jsx)(r,{className:`size-5 animate-spin text-muted-foreground`})}),children:(0,s.jsx)(t,{})})}export{u as n,l as r,c as t};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/general-settings-section-joWQEgIn.js","assets/rolldown-runtime-C5c2KzVm.js","assets/index-CPBujJc_.js","assets/preload-helper-CM8YhcCa.js","assets/vendor-ui-BTSIXzhZ.js","assets/vendor-markdown-C-P1aR4p.js","assets/button-C9ZXWb3b.js","assets/utils-Bslrbb-G.js","assets/createLucideIcon-D9_fdOKS.js","assets/file-diff-CcDhJkXB.js","assets/git-commit-horizontal-BPdj2L1i.js","assets/api-client-xQDlhUTu.js","assets/react-BZ0kba1-.js","assets/open-db-tabs-CtWIWHOa.js","assets/window-store-DqX_qmkQ.js","assets/panel-store-BJhazigC.js","assets/session-list-sync-triggers-DtJI5KF0.js","assets/project-store-BLGl9IAO.js","assets/project-framework-store-DwLxaRan.js","assets/explorer-model-BtJN4MZ9.js","assets/db-sidebar-reveal-_qw0CliT.js","assets/settings-store-B4mLp19V.js","assets/use-is-mobile-VRV9eZy1.js","assets/db-types-CNhENouW.js","assets/tab-store-D5I52eLN.js","assets/use-db-driver-installed-anzWkGi5.js","assets/impexp-state-BWKOuRGj.js","assets/file-store-BQ41vIs5.js","assets/sql-identifiers-DDISwQor.js","assets/db-explorer-store-BmpvDHz6.js","assets/onboarding-quick-orientation-CTHtIRib.js","assets/dialog-Dn_2tuYa.js","assets/portal-container-context-NBi-KGK0.js","assets/icons-BwyIKaTT.js","assets/format-file-meta-DdYtk07C.js","assets/fs-api-CFtQzsIJ.js","assets/open-settings-EXR4zoZG.js","assets/settings-categories-Ajj4ui27.js","assets/adaptive-context-menu-C4jNSORA.js","assets/context-menu-BCuZYfWC.js","assets/mobile-bottom-sheet-DArbIyrD.js","assets/use-visual-viewport-MmugpRg-.js","assets/dropdown-menu-BQidk_OJ.js","assets/input-C3oVNCMq.js","assets/scroll-area-DOlQJGZp.js","assets/start-ellipsis-CU8GkxaV.js","assets/chat-preparation-cache-190LLyy7.js","assets/clipboard-D-VCry-F.js","assets/file-icons-JInFtBVl.js","assets/format-date-CSHaU2wN.js","assets/git-repo-store-CKB5fdNP.js","assets/patch-tab-metadata-C92YkrRX.js","assets/ws-auth-CbF6GqxP.js","assets/apply-theme-ORrEdHKT.js","assets/resolve-theme-BqoL27BW.js","assets/index-BACBJm4i.css","assets/onboarding-entry-eehqBvyM.js","assets/separator-DmU9aJwq.js","assets/appearance-settings-section-Dk6d_fTo.js","assets/language-servers-section-CwBJsJ31.js","assets/remote-desktop-settings-section-ZAsBRwjq.js","assets/database-drivers-section-DJvU6bf5.js","assets/ai-settings-section-aXXTb0dN.js","assets/ai-settings-section-CNdbcCaI.js","assets/api-settings-vmIRFNwZ.js","assets/tools-settings-section-DCG74pbd.js","assets/db-ai-tools-CVbbW_MZ.js","assets/split-sql-statements-DcAeXbk_.js","assets/design-canvas-check-BIHc2d_k.js","assets/settings-rows-B0w15zot.js","assets/accounts-settings-section-BqsI4Ixj.js","assets/codex-reset-credit-button-C0a2svAw.js","assets/design-settings-section-CqFPwhis.js","assets/design-skill-suggestion-Dmmg_ap5.js","assets/slash-command-picker-DpZsPuNf.js","assets/design-responsive-dialog-MAFgVOmv.js","assets/design-system-status-label-KA4ESjWe.js","assets/voice-settings-section-C6Wb6q5o.js","assets/run-in-terminal-button-m3i-Hcou.js","assets/run-in-terminal-ujoc25vj.js","assets/ppmbot-settings-section-BIYSlZu5.js","assets/telegram-bot-token-field-ctRa2529.js","assets/notifications-settings-section-DSSCTkfX.js","assets/jira-watcher-section-mnly-maX.js","assets/extension-manager-section-CJtRpUUs.js","assets/proxy-settings-section-Buo3hvQ4.js","assets/remote-access-settings-section-vlHMJPdY.js","assets/schedules-settings-section-Heuv2Kj4.js","assets/keyboard-shortcuts-section-DULhEWPg.js","assets/files-settings-section-8rWMj1Oi.js","assets/query-audit-section-D_WDp1m-.js"])))=>i.map(i=>d[i]);
2
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{xn as r}from"./icons-BwyIKaTT.js";import{t as i}from"./preload-helper-CM8YhcCa.js";import{ui as a}from"./index-CPBujJc_.js";var o=e(t(),1),s=n(),c={general:a(()=>i(()=>import(`./general-settings-section-joWQEgIn.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,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57]))),appearance:a(()=>i(()=>import(`./appearance-settings-section-Dk6d_fTo.js`).then(e=>({default:e.AppearanceSettingsSection})),__vite__mapDeps([58,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]))),"language-servers":a(()=>i(()=>import(`./language-servers-section-CwBJsJ31.js`).then(e=>({default:e.LanguageServersSection})),__vite__mapDeps([59,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]))),"remote-desktop":a(()=>i(()=>import(`./remote-desktop-settings-section-ZAsBRwjq.js`).then(e=>({default:e.RemoteDesktopSettingsSection})),__vite__mapDeps([60,1,4,5,6,7,11,57,33]))),"database-drivers":a(()=>i(()=>import(`./database-drivers-section-DJvU6bf5.js`).then(e=>({default:e.DatabaseDriversSection})),__vite__mapDeps([61,1,4,5,6,7,11,25,31,32,33,40,41,22]))),"ai-provider":a(()=>i(()=>import(`./ai-settings-section-aXXTb0dN.js`).then(e=>({default:e.AISettingsSection})),__vite__mapDeps([62,4,1,5,6,7,11,21,3,12,14,15,16,17,18,63,2,8,9,10,13,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64]))),tools:a(()=>i(()=>import(`./tools-settings-section-DCG74pbd.js`).then(e=>({default:e.ToolsSettingsSection})),__vite__mapDeps([65,1,4,5,6,7,11,66,23,67,68,69,2,3,8,9,10,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64]))),accounts:a(()=>i(()=>import(`./accounts-settings-section-BqsI4Ixj.js`).then(e=>({default:e.AccountsSettingsSection})),__vite__mapDeps([70,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,71,64]))),design:a(()=>i(()=>import(`./design-settings-section-CqFPwhis.js`).then(e=>({default:e.DesignSettingsSection})),__vite__mapDeps([72,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,73,74,75,76]))),voice:a(()=>i(()=>import(`./voice-settings-section-C6Wb6q5o.js`).then(e=>({default:e.VoiceSettingsSection})),__vite__mapDeps([77,1,4,5,6,7,11,21,3,12,14,15,16,17,18,78,33,79,57]))),ppmbot:a(()=>i(()=>import(`./ppmbot-settings-section-BIYSlZu5.js`).then(e=>({default:e.PPMBotSettingsSection})),__vite__mapDeps([80,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,69,81,57]))),notifications:a(()=>i(()=>import(`./notifications-settings-section-DSSCTkfX.js`).then(e=>({default:e.NotificationsSettingsSection})),__vite__mapDeps([82,1,4,5,6,7,11,69,2,3,8,9,10,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,81,57]))),jira:a(()=>i(()=>import(`./jira-watcher-section-mnly-maX.js`).then(e=>({default:e.JiraWatcherSection})),__vite__mapDeps([83,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,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),extensions:a(()=>i(()=>import(`./extension-manager-section-CJtRpUUs.js`).then(e=>({default:e.ExtensionManagerSection})),__vite__mapDeps([84,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),proxy:a(()=>i(()=>import(`./proxy-settings-section-Buo3hvQ4.js`).then(e=>({default:e.ProxySettingsSection})),__vite__mapDeps([85,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64]))),"remote-access":a(()=>i(()=>import(`./remote-access-settings-section-vlHMJPdY.js`).then(e=>({default:e.RemoteAccessSettingsSection})),__vite__mapDeps([86,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,78,79]))),schedules:a(()=>i(()=>import(`./schedules-settings-section-Heuv2Kj4.js`).then(e=>({default:e.SchedulesSettingsSection})),__vite__mapDeps([87,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),shortcuts:a(()=>i(()=>import(`./keyboard-shortcuts-section-DULhEWPg.js`).then(e=>({default:e.KeyboardShortcutsSection})),__vite__mapDeps([88,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))),files:a(()=>i(()=>import(`./files-settings-section-8rWMj1Oi.js`).then(e=>({default:e.FilesSettingsSection})),__vite__mapDeps([89,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,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]))),"query-audit":a(()=>i(()=>import(`./query-audit-section-D_WDp1m-.js`).then(e=>({default:e.QueryAuditSection})),__vite__mapDeps([90,1,4,5,6,7,11,43,64,46,33])))};function l(){return Promise.all(Object.values(c).map(e=>e.preload()))}function u({category:e}){let t=c[e];return(0,s.jsx)(o.Suspense,{fallback:(0,s.jsx)(`div`,{className:`flex items-center justify-center py-12`,children:(0,s.jsx)(r,{className:`size-5 animate-spin text-muted-foreground`})}),children:(0,s.jsx)(t,{})})}export{u as n,l as r,c as t};
@@ -0,0 +1 @@
1
+ import"./vendor-markdown-C-P1aR4p.js";import"./icons-BwyIKaTT.js";import{r as e}from"./settings-section-content-D41IJ62x.js";export{e as preloadSettingsSections};
@@ -1 +1 @@
1
- import{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-BwyIKaTT.js";import{i as t}from"./settings-categories-Ajj4ui27.js";import"./button-C9ZXWb3b.js";import"./scroll-area-DOlQJGZp.js";import"./separator-DmU9aJwq.js";import"./settings-section-content-Dluhkh-u.js";import{t as n}from"./settings-body-DCHEAh2_.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{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-BwyIKaTT.js";import{i as t}from"./settings-categories-Ajj4ui27.js";import"./button-C9ZXWb3b.js";import"./scroll-area-DOlQJGZp.js";import"./separator-DmU9aJwq.js";import"./settings-section-content-D41IJ62x.js";import{t as n}from"./settings-body-5t6SQbLx.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{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-BwyIKaTT.js";import{n as t}from"./window-store-DqX_qmkQ.js";import{i as n}from"./settings-categories-Ajj4ui27.js";import"./button-C9ZXWb3b.js";import"./scroll-area-DOlQJGZp.js";import"./separator-DmU9aJwq.js";import"./settings-section-content-Dluhkh-u.js";import{t as r}from"./settings-body-DCHEAh2_.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{E as e}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import"./icons-BwyIKaTT.js";import{n as t}from"./window-store-DqX_qmkQ.js";import{i as n}from"./settings-categories-Ajj4ui27.js";import"./button-C9ZXWb3b.js";import"./scroll-area-DOlQJGZp.js";import"./separator-DmU9aJwq.js";import"./settings-section-content-D41IJ62x.js";import{t as r}from"./settings-body-5t6SQbLx.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{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{Hr as r,hr as i,jr as a,pi as o,tt as s,w as c}from"./icons-BwyIKaTT.js";import{C as l,o as u,r as d,v as f,x as p}from"./api-client-xQDlhUTu.js";import{t as m}from"./session-list-sync-triggers-DtJI5KF0.js";import{V as h}from"./index-COwBji1t.js";var g=/(?:^|\s)\/(\S*)$/;function _(e){let t=e.match(g);return t?t[1]??``:null}function v(e,t){return e.replace(/(?:^|\s)\/\S*$/,e=>`${e.startsWith(`/`)?``:e[0]}${t} `)}function y(e){return e.replace(/(?:^|\s)\/\S*$/,e=>e.startsWith(`/`)?``:e[0])}function b(e,t){if(e===t)return 0;if(e.length===0)return t.length;if(t.length===0)return e.length;let n=Array.from({length:t.length+1},(e,t)=>t),r=Array(t.length+1);for(let i=1;i<=e.length;i++){r[0]=i;for(let a=1;a<=t.length;a++){let o=e[i-1]===t[a-1]?0:1;r[a]=Math.min(r[a-1]+1,n[a]+1,n[a-1]+o)}[n,r]=[r,n]}return n[t.length]}function x(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(r.startsWith(n))return{rank:0,distance:0};if(r.includes(n))return{rank:1,distance:r.indexOf(n)};let i=Math.max(Math.floor(n.length*.4),2),a=b(n,r.slice(0,n.length+i));return a<=i?{rank:2,distance:a}:null}var S=1;function C(e,t,n=20,r=[]){if(!t)return e;t=t.slice(0,50);let i=new Map(r.map((e,t)=>[e,t])),a=[];for(let n of e){let e=x(t,n.name),o=[e,x(t,n.description)].filter(e=>e!==null).sort((e,t)=>e.rank-t.rank||e.distance-t.distance)[0];if(o){let t=i.get(n.name),s=t!==void 0&&e?.rank===o.rank;a.push({item:n,rank:o.rank-(s?S:0),distance:o.distance,recency:t??r.length})}}return a.sort((e,t)=>e.rank-t.rank||e.recency-t.recency||e.distance-t.distance||e.item.name.localeCompare(t.item.name)),a.slice(0,n).map(e=>e.item)}var w=e(t(),1),T=n();function E({items:e,filter:t,onSelect:n,onClose:g,visible:_,recentNames:v=[],projectName:y}){let[b,x]=(0,w.useState)(0),[S,E]=(0,w.useState)(!1),D=(0,w.useRef)(null),O=(0,w.useMemo)(()=>new Set(v),[v]),k=(0,w.useMemo)(()=>{if(t)return{items:C(e,t,20,v),recentCount:0};if(v.length>0){let t=[],n=[];for(let r of e)O.has(r.name)?t.push(r):n.push(r);return t.sort((e,t)=>v.indexOf(e.name)-v.indexOf(t.name)),{items:[...t,...n],recentCount:t.length}}return{items:e,recentCount:0}},[e,t,v,O]),A=k.items,j=k.recentCount;(0,w.useEffect)(()=>{x(0)},[t]),(0,w.useEffect)(()=>{let e=D.current;e&&e.children[b]?.scrollIntoView({block:`nearest`})},[b]);let M=(0,w.useCallback)(e=>{if(!_||A.length===0)return!1;switch(e.key){case`ArrowUp`:return e.preventDefault(),x(e=>e>0?e-1:A.length-1),!0;case`ArrowDown`:return e.preventDefault(),x(e=>e<A.length-1?e+1:0),!0;case`Enter`:case`Tab`:return e.preventDefault(),A[b]&&n(A[b]),!0;case`Escape`:return e.preventDefault(),g(),!0}return!1},[_,A,b,n,g]);(0,w.useEffect)(()=>{if(!_)return;let e=e=>{M(e)&&e.stopPropagation()},t=D.current?.ownerDocument??document;return t.addEventListener(`keydown`,e,!0),()=>t.removeEventListener(`keydown`,e,!0)},[_,M]);let N=(0,w.useCallback)(()=>{!y||S||(E(!0),d.del(`${u(y)}/chat/slash-items/cache`).then(()=>{h(y),l(p(f(m(y)),`claude`)),window.dispatchEvent(new CustomEvent(`ppm:slash-items-refresh`))}).finally(()=>E(!1)))},[y,S]);return!_||A.length===0?null:(0,T.jsx)(`div`,{className:`max-h-52 overflow-y-auto overflow-x-hidden border-b border-border bg-surface`,children:(0,T.jsx)(`div`,{ref:D,className:`py-1`,children:A.map((e,t)=>{let l=j>0&&t===0,u=j>0&&t===j;return(0,T.jsxs)(`div`,{children:[l&&(0,T.jsxs)(`div`,{className:`flex items-center justify-between px-3 pt-1 pb-0.5`,children:[(0,T.jsxs)(`span`,{className:`text-[10px] font-medium text-text-subtle uppercase tracking-wider flex items-center gap-1`,children:[(0,T.jsx)(s,{className:`size-3`}),`Recent`]}),y&&(0,T.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),N()},className:`text-text-subtle hover:text-text-primary transition-colors p-0.5 rounded`,title:`Refresh skill list`,"aria-label":`Refresh skill list`,children:(0,T.jsx)(i,{className:`size-3 ${S?`animate-spin`:``}`})})]}),u&&(0,T.jsx)(`div`,{className:`px-3 pt-1.5 pb-0.5`,children:(0,T.jsx)(`span`,{className:`text-[10px] font-medium text-text-subtle uppercase tracking-wider`,children:`All`})}),(0,T.jsxs)(`button`,{className:`flex items-start gap-3 w-full px-3 py-2 text-left transition-colors ${t===b?`bg-primary/10 text-primary`:`hover:bg-surface-hover text-text-primary`}`,onMouseEnter:()=>x(t),onClick:()=>n(e),children:[(0,T.jsx)(`span`,{className:`shrink-0 mt-0.5`,children:e.iconDataUri?(0,T.jsx)(`img`,{src:e.iconDataUri,alt:``,className:`size-4 object-contain`}):e.type===`builtin`?(0,T.jsx)(o,{className:`size-4 text-emerald-500`}):e.type===`skill`?(0,T.jsx)(a,{className:`size-4 text-warning`}):e.type===`agent`?(0,T.jsx)(c,{className:`size-4 text-sky-500`}):(0,T.jsx)(r,{className:`size-4 text-primary`})}),(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`div`,{className:`flex items-baseline gap-2 min-w-0`,children:[(0,T.jsxs)(`span`,{className:`font-medium text-sm truncate`,children:[e.invokeSigil??`/`,e.name]}),e.displayName&&e.displayName!==e.name&&(0,T.jsx)(`span`,{className:`text-xs text-text-2 truncate`,children:e.displayName}),e.argumentHint&&(0,T.jsx)(`span`,{className:`text-xs text-text-subtle truncate`,children:e.argumentHint}),(0,T.jsx)(`span`,{className:`text-xs text-text-subtle capitalize ml-auto shrink-0 whitespace-nowrap`,children:e.invokeSigil===`$`?`Codex`:e.scope===`bundled`?`PPM`:e.scope===`user`?`global`:e.type})]}),e.description&&(0,T.jsx)(`p`,{className:`text-xs text-text-subtle mt-0.5 line-clamp-2 break-words`,children:e.description})]})]})]},`${e.type}-${e.name}`)})})})}export{y as i,v as n,_ as r,E as t};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import{Hr as r,hr as i,jr as a,pi as o,tt as s,w as c}from"./icons-BwyIKaTT.js";import{C as l,o as u,r as d,v as f,x as p}from"./api-client-xQDlhUTu.js";import{t as m}from"./session-list-sync-triggers-DtJI5KF0.js";import{V as h}from"./index-CPBujJc_.js";var g=/(?:^|\s)\/(\S*)$/;function _(e){let t=e.match(g);return t?t[1]??``:null}function v(e,t){return e.replace(/(?:^|\s)\/\S*$/,e=>`${e.startsWith(`/`)?``:e[0]}${t} `)}function y(e){return e.replace(/(?:^|\s)\/\S*$/,e=>e.startsWith(`/`)?``:e[0])}function b(e,t){if(e===t)return 0;if(e.length===0)return t.length;if(t.length===0)return e.length;let n=Array.from({length:t.length+1},(e,t)=>t),r=Array(t.length+1);for(let i=1;i<=e.length;i++){r[0]=i;for(let a=1;a<=t.length;a++){let o=e[i-1]===t[a-1]?0:1;r[a]=Math.min(r[a-1]+1,n[a]+1,n[a-1]+o)}[n,r]=[r,n]}return n[t.length]}function x(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(r.startsWith(n))return{rank:0,distance:0};if(r.includes(n))return{rank:1,distance:r.indexOf(n)};let i=Math.max(Math.floor(n.length*.4),2),a=b(n,r.slice(0,n.length+i));return a<=i?{rank:2,distance:a}:null}var S=1;function C(e,t,n=20,r=[]){if(!t)return e;t=t.slice(0,50);let i=new Map(r.map((e,t)=>[e,t])),a=[];for(let n of e){let e=x(t,n.name),o=[e,x(t,n.description)].filter(e=>e!==null).sort((e,t)=>e.rank-t.rank||e.distance-t.distance)[0];if(o){let t=i.get(n.name),s=t!==void 0&&e?.rank===o.rank;a.push({item:n,rank:o.rank-(s?S:0),distance:o.distance,recency:t??r.length})}}return a.sort((e,t)=>e.rank-t.rank||e.recency-t.recency||e.distance-t.distance||e.item.name.localeCompare(t.item.name)),a.slice(0,n).map(e=>e.item)}var w=e(t(),1),T=n();function E({items:e,filter:t,onSelect:n,onClose:g,visible:_,recentNames:v=[],projectName:y}){let[b,x]=(0,w.useState)(0),[S,E]=(0,w.useState)(!1),D=(0,w.useRef)(null),O=(0,w.useMemo)(()=>new Set(v),[v]),k=(0,w.useMemo)(()=>{if(t)return{items:C(e,t,20,v),recentCount:0};if(v.length>0){let t=[],n=[];for(let r of e)O.has(r.name)?t.push(r):n.push(r);return t.sort((e,t)=>v.indexOf(e.name)-v.indexOf(t.name)),{items:[...t,...n],recentCount:t.length}}return{items:e,recentCount:0}},[e,t,v,O]),A=k.items,j=k.recentCount;(0,w.useEffect)(()=>{x(0)},[t]),(0,w.useEffect)(()=>{let e=D.current;e&&e.children[b]?.scrollIntoView({block:`nearest`})},[b]);let M=(0,w.useCallback)(e=>{if(!_||A.length===0)return!1;switch(e.key){case`ArrowUp`:return e.preventDefault(),x(e=>e>0?e-1:A.length-1),!0;case`ArrowDown`:return e.preventDefault(),x(e=>e<A.length-1?e+1:0),!0;case`Enter`:case`Tab`:return e.preventDefault(),A[b]&&n(A[b]),!0;case`Escape`:return e.preventDefault(),g(),!0}return!1},[_,A,b,n,g]);(0,w.useEffect)(()=>{if(!_)return;let e=e=>{M(e)&&e.stopPropagation()},t=D.current?.ownerDocument??document;return t.addEventListener(`keydown`,e,!0),()=>t.removeEventListener(`keydown`,e,!0)},[_,M]);let N=(0,w.useCallback)(()=>{!y||S||(E(!0),d.del(`${u(y)}/chat/slash-items/cache`).then(()=>{h(y),l(p(f(m(y)),`claude`)),window.dispatchEvent(new CustomEvent(`ppm:slash-items-refresh`))}).finally(()=>E(!1)))},[y,S]);return!_||A.length===0?null:(0,T.jsx)(`div`,{className:`max-h-52 overflow-y-auto overflow-x-hidden border-b border-border bg-surface`,children:(0,T.jsx)(`div`,{ref:D,className:`py-1`,children:A.map((e,t)=>{let l=j>0&&t===0,u=j>0&&t===j;return(0,T.jsxs)(`div`,{children:[l&&(0,T.jsxs)(`div`,{className:`flex items-center justify-between px-3 pt-1 pb-0.5`,children:[(0,T.jsxs)(`span`,{className:`text-[10px] font-medium text-text-subtle uppercase tracking-wider flex items-center gap-1`,children:[(0,T.jsx)(s,{className:`size-3`}),`Recent`]}),y&&(0,T.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),N()},className:`text-text-subtle hover:text-text-primary transition-colors p-0.5 rounded`,title:`Refresh skill list`,"aria-label":`Refresh skill list`,children:(0,T.jsx)(i,{className:`size-3 ${S?`animate-spin`:``}`})})]}),u&&(0,T.jsx)(`div`,{className:`px-3 pt-1.5 pb-0.5`,children:(0,T.jsx)(`span`,{className:`text-[10px] font-medium text-text-subtle uppercase tracking-wider`,children:`All`})}),(0,T.jsxs)(`button`,{className:`flex items-start gap-3 w-full px-3 py-2 text-left transition-colors ${t===b?`bg-primary/10 text-primary`:`hover:bg-surface-hover text-text-primary`}`,onMouseEnter:()=>x(t),onClick:()=>n(e),children:[(0,T.jsx)(`span`,{className:`shrink-0 mt-0.5`,children:e.iconDataUri?(0,T.jsx)(`img`,{src:e.iconDataUri,alt:``,className:`size-4 object-contain`}):e.type===`builtin`?(0,T.jsx)(o,{className:`size-4 text-emerald-500`}):e.type===`skill`?(0,T.jsx)(a,{className:`size-4 text-warning`}):e.type===`agent`?(0,T.jsx)(c,{className:`size-4 text-sky-500`}):(0,T.jsx)(r,{className:`size-4 text-primary`})}),(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`div`,{className:`flex items-baseline gap-2 min-w-0`,children:[(0,T.jsxs)(`span`,{className:`font-medium text-sm truncate`,children:[e.invokeSigil??`/`,e.name]}),e.displayName&&e.displayName!==e.name&&(0,T.jsx)(`span`,{className:`text-xs text-text-2 truncate`,children:e.displayName}),e.argumentHint&&(0,T.jsx)(`span`,{className:`text-xs text-text-subtle truncate`,children:e.argumentHint}),(0,T.jsx)(`span`,{className:`text-xs text-text-subtle capitalize ml-auto shrink-0 whitespace-nowrap`,children:e.invokeSigil===`$`?`Codex`:e.scope===`bundled`?`PPM`:e.scope===`user`?`global`:e.type})]}),e.description&&(0,T.jsx)(`p`,{className:`text-xs text-text-subtle mt-0.5 line-clamp-2 break-words`,children:e.description})]})]})]},`${e.type}-${e.name}`)})})})}export{y as i,v as n,_ as r,E as t};
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{Bt as r,Fr as i,Lr as a,P as o,at as s}from"./icons-BwyIKaTT.js";import"./api-client-xQDlhUTu.js";import"./settings-store-B4mLp19V.js";import{n as c}from"./utils-Bslrbb-G.js";import{Q as l}from"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import{t as u}from"./tab-store-D5I52eLN.js";import{n as d}from"./use-is-mobile-VRV9eZy1.js";import"./settings-categories-Ajj4ui27.js";import"./open-settings-EXR4zoZG.js";import"./button-C9ZXWb3b.js";import"./use-db-driver-installed-anzWkGi5.js";import"./db-sidebar-reveal-_qw0CliT.js";import"./db-explorer-store-BmpvDHz6.js";import{a as f,n as p,s as m}from"./open-db-tabs-CtWIWHOa.js";import{J as h,Y as g}from"./index-COwBji1t.js";import{t as _}from"./use-monaco-theme-1ANtPWqA.js";import{t as v}from"./editor-font-CdxKRKX-.js";import{t as y}from"./use-db-tab-B8LjdDb7.js";import{t as b}from"./use-db-read-BCYhIrJM.js";import{i as x,n as S,r as C,t as w}from"./db-tab-parts-lp8ROGQB.js";var T=e(t(),1),E={table:`CREATE TABLE`,view:`CREATE VIEW`,matview:`CREATE MATERIALIZED VIEW`,function:`CREATE FUNCTION`,procedure:`CREATE PROCEDURE`,trigger:`CREATE TRIGGER`,sequence:`CREATE SEQUENCE`};function D(e,t){if(!t)return[];let n=[{kind:`create`,label:E[e],sql:t.create}];return t.select!==void 0&&n.push({kind:`select`,label:`SELECT`,sql:t.select}),t.insert!==void 0&&n.push({kind:`insert`,label:`INSERT`,sql:t.insert}),n}function O(e){let t=encodeURIComponent;return`/object-sql?kind=${t(e.kind)}&name=${t(e.name)}`+(e.schema?`&schema=${t(e.schema)}`:``)+(e.args===void 0?``:`&args=${t(e.args)}`)+(e.table?`&table=${t(e.table)}`:``)}var k=n();function A({metadata:e,tabId:t}){let n=y(e,t),s=e?.objectKind,d=typeof e?.objectName==`string`?e.objectName:``,h=typeof e?.schemaName==`string`?e.schemaName:``,g=typeof e?.objectArgs==`string`?e.objectArgs:void 0,_=typeof e?.objectTable==`string`?e.objectTable:void 0,v=s&&d?O({kind:s,name:d,schema:h||null,args:g,table:_}):null,E=b(n.missing?null:n.target,v,t),A=E.data,M=A?.kind??s??`table`,N=D(M,A),[P,F]=(0,T.useState)(`create`),I=N.find(e=>e.kind===P)??N[0],L=M===`table`||M===`view`||M===`matview`,R={schema:h||null,name:d,kind:M},z=()=>{n.place&&f(n.place,R)},B=()=>{n.place&&m(n.place,R)},V=e=>{n.place&&p(n.place,e)},H=t?()=>u.getState().closeTab(t):void 0;return n.missing?(0,k.jsx)(S,{empty:`This connection no longer exists.`}):(0,k.jsxs)(`div`,{className:`flex h-full w-full flex-col overflow-hidden`,children:[(0,k.jsx)(w,{title:d,subtitle:[l(n.target,n.name),h,`SQL`].filter(Boolean).join(` · `),color:n.conn?.color??e?.connectionColor,onClose:H}),(0,k.jsxs)(x,{label:`${d} SQL`,className:c(!L&&N.length<=1&&`max-md:hidden`),children:[L&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(C,{icon:r,label:`Structure`,title:`Open the structure of ${d} in its own tab`,onClick:z,opensTab:!0,disabled:!n.place}),(0,k.jsx)(C,{icon:a,label:`Data`,title:`Open the data of ${d}`,onClick:B,opensTab:!0,disabled:!n.place})]}),N.length>1&&(0,k.jsxs)(`span`,{className:`relative mx-1 flex min-w-[150px] shrink-0 max-md:min-w-0 max-md:flex-1`,children:[(0,k.jsx)(`select`,{"aria-label":`Script shown`,value:I?.kind,onChange:e=>F(e.target.value),className:`h-[26px] w-full min-w-0 appearance-none rounded-[5px] border border-border bg-input pr-[26px] pl-2 text-xs text-foreground outline-none focus:border-primary max-md:h-11 max-md:text-sm`,children:N.map(e=>(0,k.jsx)(`option`,{value:e.kind,children:e.label},e.kind))}),(0,k.jsx)(o,{className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-text-subtle`})]}),N.map(e=>(0,k.jsx)(C,{icon:i,label:e.label,title:`Open this script in a new Query tab`,onClick:()=>V(e.sql),disabled:!n.place,className:`max-md:hidden`},e.kind))]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden bg-input`,children:I?(0,k.jsx)(j,{sql:I.sql}):(0,k.jsx)(S,{loading:E.loading||!E.error&&!E.driver,error:E.error,driver:E.driver})}),I&&(0,k.jsx)(`div`,{className:`flex shrink-0 gap-2 border-t border-border bg-panel-2 p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] md:hidden`,children:(0,k.jsxs)(`button`,{type:`button`,onClick:()=>V(I.sql),disabled:!n.place,className:`flex h-11 flex-1 items-center justify-center gap-2 rounded-md bg-primary text-sm font-medium text-primary-foreground disabled:opacity-50`,children:[(0,k.jsx)(i,{className:`size-4`}),`Open in a new Query tab`]})})]})}function j({sql:e}){let t=_(),n=d();return(0,k.jsx)(g,{beforeMount:h,height:`100%`,language:`sql`,theme:t,value:e,loading:(0,k.jsx)(s,{className:`size-5 text-text-subtle`}),options:{readOnly:!0,domReadOnly:!0,fontFamily:v,fontSize:13,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:n?`on`:`off`,renderLineHighlight:`none`,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,folding:!1,padding:{top:8,bottom:8},scrollbar:{verticalScrollbarSize:8,horizontalScrollbarSize:8},fixedOverflowWidgets:!0}})}export{j as ReadOnlySql,A as SqlObjectTab};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{Bt as r,Fr as i,Lr as a,P as o,at as s}from"./icons-BwyIKaTT.js";import"./api-client-xQDlhUTu.js";import"./settings-store-B4mLp19V.js";import{n as c}from"./utils-Bslrbb-G.js";import{Q as l}from"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import{t as u}from"./tab-store-D5I52eLN.js";import{n as d}from"./use-is-mobile-VRV9eZy1.js";import"./settings-categories-Ajj4ui27.js";import"./open-settings-EXR4zoZG.js";import"./button-C9ZXWb3b.js";import"./use-db-driver-installed-anzWkGi5.js";import"./db-sidebar-reveal-_qw0CliT.js";import"./db-explorer-store-BmpvDHz6.js";import{a as f,n as p,s as m}from"./open-db-tabs-CtWIWHOa.js";import{J as h,Y as g}from"./index-CPBujJc_.js";import{t as _}from"./use-monaco-theme-ArU1f9T6.js";import{t as v}from"./editor-font-CdxKRKX-.js";import{t as y}from"./use-db-tab-B8LjdDb7.js";import{t as b}from"./use-db-read-BCYhIrJM.js";import{i as x,n as S,r as C,t as w}from"./db-tab-parts-tgVIgcs5.js";var T=e(t(),1),E={table:`CREATE TABLE`,view:`CREATE VIEW`,matview:`CREATE MATERIALIZED VIEW`,function:`CREATE FUNCTION`,procedure:`CREATE PROCEDURE`,trigger:`CREATE TRIGGER`,sequence:`CREATE SEQUENCE`};function D(e,t){if(!t)return[];let n=[{kind:`create`,label:E[e],sql:t.create}];return t.select!==void 0&&n.push({kind:`select`,label:`SELECT`,sql:t.select}),t.insert!==void 0&&n.push({kind:`insert`,label:`INSERT`,sql:t.insert}),n}function O(e){let t=encodeURIComponent;return`/object-sql?kind=${t(e.kind)}&name=${t(e.name)}`+(e.schema?`&schema=${t(e.schema)}`:``)+(e.args===void 0?``:`&args=${t(e.args)}`)+(e.table?`&table=${t(e.table)}`:``)}var k=n();function A({metadata:e,tabId:t}){let n=y(e,t),s=e?.objectKind,d=typeof e?.objectName==`string`?e.objectName:``,h=typeof e?.schemaName==`string`?e.schemaName:``,g=typeof e?.objectArgs==`string`?e.objectArgs:void 0,_=typeof e?.objectTable==`string`?e.objectTable:void 0,v=s&&d?O({kind:s,name:d,schema:h||null,args:g,table:_}):null,E=b(n.missing?null:n.target,v,t),A=E.data,M=A?.kind??s??`table`,N=D(M,A),[P,F]=(0,T.useState)(`create`),I=N.find(e=>e.kind===P)??N[0],L=M===`table`||M===`view`||M===`matview`,R={schema:h||null,name:d,kind:M},z=()=>{n.place&&f(n.place,R)},B=()=>{n.place&&m(n.place,R)},V=e=>{n.place&&p(n.place,e)},H=t?()=>u.getState().closeTab(t):void 0;return n.missing?(0,k.jsx)(S,{empty:`This connection no longer exists.`}):(0,k.jsxs)(`div`,{className:`flex h-full w-full flex-col overflow-hidden`,children:[(0,k.jsx)(w,{title:d,subtitle:[l(n.target,n.name),h,`SQL`].filter(Boolean).join(` · `),color:n.conn?.color??e?.connectionColor,onClose:H}),(0,k.jsxs)(x,{label:`${d} SQL`,className:c(!L&&N.length<=1&&`max-md:hidden`),children:[L&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(C,{icon:r,label:`Structure`,title:`Open the structure of ${d} in its own tab`,onClick:z,opensTab:!0,disabled:!n.place}),(0,k.jsx)(C,{icon:a,label:`Data`,title:`Open the data of ${d}`,onClick:B,opensTab:!0,disabled:!n.place})]}),N.length>1&&(0,k.jsxs)(`span`,{className:`relative mx-1 flex min-w-[150px] shrink-0 max-md:min-w-0 max-md:flex-1`,children:[(0,k.jsx)(`select`,{"aria-label":`Script shown`,value:I?.kind,onChange:e=>F(e.target.value),className:`h-[26px] w-full min-w-0 appearance-none rounded-[5px] border border-border bg-input pr-[26px] pl-2 text-xs text-foreground outline-none focus:border-primary max-md:h-11 max-md:text-sm`,children:N.map(e=>(0,k.jsx)(`option`,{value:e.kind,children:e.label},e.kind))}),(0,k.jsx)(o,{className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-text-subtle`})]}),N.map(e=>(0,k.jsx)(C,{icon:i,label:e.label,title:`Open this script in a new Query tab`,onClick:()=>V(e.sql),disabled:!n.place,className:`max-md:hidden`},e.kind))]}),(0,k.jsx)(`div`,{className:`min-h-0 flex-1 overflow-hidden bg-input`,children:I?(0,k.jsx)(j,{sql:I.sql}):(0,k.jsx)(S,{loading:E.loading||!E.error&&!E.driver,error:E.error,driver:E.driver})}),I&&(0,k.jsx)(`div`,{className:`flex shrink-0 gap-2 border-t border-border bg-panel-2 p-2 pb-[max(0.5rem,env(safe-area-inset-bottom))] md:hidden`,children:(0,k.jsxs)(`button`,{type:`button`,onClick:()=>V(I.sql),disabled:!n.place,className:`flex h-11 flex-1 items-center justify-center gap-2 rounded-md bg-primary text-sm font-medium text-primary-foreground disabled:opacity-50`,children:[(0,k.jsx)(i,{className:`size-4`}),`Open in a new Query tab`]})})]})}function j({sql:e}){let t=_(),n=d();return(0,k.jsx)(g,{beforeMount:h,height:`100%`,language:`sql`,theme:t,value:e,loading:(0,k.jsx)(s,{className:`size-5 text-text-subtle`}),options:{readOnly:!0,domReadOnly:!0,fontFamily:v,fontSize:13,minimap:{enabled:!1},scrollBeyondLastLine:!1,wordWrap:n?`on`:`off`,renderLineHighlight:`none`,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,folding:!1,padding:{top:8,bottom:8},scrollbar:{verticalScrollbarSize:8,horizontalScrollbarSize:8},fixedOverflowWidgets:!0}})}export{j as ReadOnlySql,A as SqlObjectTab};
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{Fr as r,Lr as i,P as a,_t as o,dn as s,hr as c,pt as l}from"./icons-BwyIKaTT.js";import"./api-client-xQDlhUTu.js";import"./settings-store-B4mLp19V.js";import{n as u}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import{t as d}from"./tab-store-D5I52eLN.js";import"./context-menu-BCuZYfWC.js";import"./use-is-mobile-VRV9eZy1.js";import"./settings-categories-Ajj4ui27.js";import"./open-settings-EXR4zoZG.js";import"./button-C9ZXWb3b.js";import"./dialog-Dn_2tuYa.js";import"./file-icons-JInFtBVl.js";import"./dropdown-menu-BQidk_OJ.js";import"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import"./adaptive-context-menu-C4jNSORA.js";import"./fs-api-CFtQzsIJ.js";import"./format-file-meta-DdYtk07C.js";import"./input-C3oVNCMq.js";import"./use-db-driver-installed-anzWkGi5.js";import"./db-sidebar-reveal-_qw0CliT.js";import{d as f,n as p}from"./explorer-model-BtJN4MZ9.js";import"./db-explorer-store-BmpvDHz6.js";import{n as m}from"./open-db-tabs-CtWIWHOa.js";import"./impexp-state-BWKOuRGj.js";import"./scroll-area-DOlQJGZp.js";import"./marked.esm-jqwIt-AK.js";import{t as h}from"./use-db-tab-B8LjdDb7.js";import{t as g}from"./use-db-read-BCYhIrJM.js";import{a as _,n as v}from"./db-tab-parts-lp8ROGQB.js";import"./use-opener-focus-CDRKhHwX.js";import"./filter-dialog-frame-BkEbqBA4.js";import"./use-at-most-wide-BHsrzvv3.js";import"./glide-data-grid-hOML-uXP.js";import{TableView as y}from"./table-tab-BsfgtqFE.js";var b=e(t(),1),x=n(),S={table:i,view:o,matview:s};function C({metadata:e,tabId:t}){let n=typeof e?.filePath==`string`?e.filePath:``,i=typeof e?.projectName==`string`&&e.projectName?e.projectName:void 0,o=h((0,b.useMemo)(()=>n?{dbFile:{path:n,...i?{projectName:i}:{}}}:void 0,[n,i]),void 0),s=g(o.target,`/objects`,t),f=(0,b.useMemo)(()=>s.data?.objects.filter(e=>p.has(e.kind))??[],[s.data]),S=typeof e?.tableName==`string`?e.tableName:null,C=f.find(e=>e.name===S)??null,T=n=>{t&&d.getState().updateTab(t,{metadata:{...e,tableName:n}})},E=()=>{o.place&&m(o.place,``)};return n?s.data?(0,x.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden max-md:flex-col`,children:[(0,x.jsxs)(`aside`,{"aria-label":`Tables and views`,className:`flex w-56 shrink-0 flex-col overflow-hidden border-r border-border bg-background max-md:hidden`,children:[(0,x.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-0.5 border-b border-border pr-1 pl-3`,children:[(0,x.jsx)(`span`,{className:`flex-1 truncate text-xs font-medium tracking-wider text-text-subtle uppercase`,children:`Tables`}),(0,x.jsx)(`button`,{type:`button`,onClick:E,disabled:!o.place,title:`New query on this file`,"aria-label":`New query`,className:u(_,`px-1.5`),children:(0,x.jsx)(r,{className:`size-4`})}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>s.reload(),title:`Refresh the list`,"aria-label":`Refresh the list`,className:u(_,`px-1.5`),children:(0,x.jsx)(c,{className:u(`size-4`,s.loading&&`animate-spin`)})})]}),(0,x.jsxs)(`div`,{role:`listbox`,"aria-label":`Tables and views`,className:`min-h-0 flex-1 overflow-y-auto py-1`,children:[f.map(e=>(0,x.jsx)(w,{o:e,selected:e.name===C?.name,onPick:T},e.name)),f.length===0&&(0,x.jsx)(`p`,{className:`px-3 py-4 text-center text-xs text-text-subtle`,children:`No tables found`})]})]}),(0,x.jsxs)(`div`,{className:`hidden shrink-0 items-center gap-1 border-b border-border bg-panel-2 px-2 py-1 max-md:flex`,children:[(0,x.jsxs)(`span`,{className:`relative flex min-w-0 flex-1`,children:[(0,x.jsxs)(`select`,{"aria-label":`Table`,value:C?.name??``,onChange:e=>T(e.target.value),className:`h-11 w-full min-w-0 appearance-none rounded-[5px] border border-border bg-input pr-[26px] pl-2 text-sm text-foreground outline-none focus:border-primary`,children:[!C&&(0,x.jsx)(`option`,{value:``,children:f.length?`Pick a table…`:`No tables found`}),f.map(e=>(0,x.jsx)(`option`,{value:e.name,children:e.name},e.name))]}),(0,x.jsx)(a,{className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-text-subtle`})]}),(0,x.jsx)(`button`,{type:`button`,onClick:E,disabled:!o.place,"aria-label":`New query`,className:_,children:(0,x.jsx)(r,{className:`size-5`})})]}),(0,x.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:C?(0,x.jsx)(y,{tab:o,table:C.name,schemaName:``,objectKind:C.kind,header:!1,shownIn:t},C.name):(0,x.jsx)(v,{empty:f.length?`Pick a table to see its rows.`:`This database has no tables yet.`})})]}):(0,x.jsx)(v,{loading:s.loading||!s.error&&!s.driver,error:s.error,driver:s.driver}):(0,x.jsxs)(`div`,{className:`flex h-full items-center justify-center gap-2 text-sm text-text-secondary`,children:[(0,x.jsx)(l,{className:`size-5`}),` No database file selected.`]})}function w({o:e,selected:t,onPick:n}){let r=S[e.kind]??i;return(0,x.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t,onClick:()=>n(e.name),className:u(`flex h-7 w-full items-center gap-2 px-3 text-left text-xs`,t?`bg-accent-wash text-foreground`:`text-text-2 can-hover:hover:bg-surface-hover can-hover:hover:text-text-primary`),children:[(0,x.jsx)(r,{className:u(`size-4 shrink-0`,t?`text-primary`:`text-text-subtle`)}),(0,x.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),e.rowEstimate!==void 0&&(0,x.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-text-subtle`,children:f(e.rowEstimate)})]})}export{C as SqliteViewer};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{Fr as r,Lr as i,P as a,_t as o,dn as s,hr as c,pt as l}from"./icons-BwyIKaTT.js";import"./api-client-xQDlhUTu.js";import"./settings-store-B4mLp19V.js";import{n as u}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import{t as d}from"./tab-store-D5I52eLN.js";import"./context-menu-BCuZYfWC.js";import"./use-is-mobile-VRV9eZy1.js";import"./settings-categories-Ajj4ui27.js";import"./open-settings-EXR4zoZG.js";import"./button-C9ZXWb3b.js";import"./dialog-Dn_2tuYa.js";import"./file-icons-JInFtBVl.js";import"./dropdown-menu-BQidk_OJ.js";import"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import"./adaptive-context-menu-C4jNSORA.js";import"./fs-api-CFtQzsIJ.js";import"./format-file-meta-DdYtk07C.js";import"./input-C3oVNCMq.js";import"./use-db-driver-installed-anzWkGi5.js";import"./db-sidebar-reveal-_qw0CliT.js";import{d as f,n as p}from"./explorer-model-BtJN4MZ9.js";import"./db-explorer-store-BmpvDHz6.js";import{n as m}from"./open-db-tabs-CtWIWHOa.js";import"./impexp-state-BWKOuRGj.js";import"./scroll-area-DOlQJGZp.js";import"./marked.esm-jqwIt-AK.js";import{t as h}from"./use-db-tab-B8LjdDb7.js";import{t as g}from"./use-db-read-BCYhIrJM.js";import{a as _,n as v}from"./db-tab-parts-tgVIgcs5.js";import"./use-opener-focus-CDRKhHwX.js";import"./filter-dialog-frame-BkEbqBA4.js";import"./use-at-most-wide-BHsrzvv3.js";import"./glide-data-grid-lCwaM1Gy.js";import{TableView as y}from"./table-tab-JlfqyPZR.js";var b=e(t(),1),x=n(),S={table:i,view:o,matview:s};function C({metadata:e,tabId:t}){let n=typeof e?.filePath==`string`?e.filePath:``,i=typeof e?.projectName==`string`&&e.projectName?e.projectName:void 0,o=h((0,b.useMemo)(()=>n?{dbFile:{path:n,...i?{projectName:i}:{}}}:void 0,[n,i]),void 0),s=g(o.target,`/objects`,t),f=(0,b.useMemo)(()=>s.data?.objects.filter(e=>p.has(e.kind))??[],[s.data]),S=typeof e?.tableName==`string`?e.tableName:null,C=f.find(e=>e.name===S)??null,T=n=>{t&&d.getState().updateTab(t,{metadata:{...e,tableName:n}})},E=()=>{o.place&&m(o.place,``)};return n?s.data?(0,x.jsxs)(`div`,{className:`flex h-full w-full overflow-hidden max-md:flex-col`,children:[(0,x.jsxs)(`aside`,{"aria-label":`Tables and views`,className:`flex w-56 shrink-0 flex-col overflow-hidden border-r border-border bg-background max-md:hidden`,children:[(0,x.jsxs)(`div`,{className:`flex h-9 shrink-0 items-center gap-0.5 border-b border-border pr-1 pl-3`,children:[(0,x.jsx)(`span`,{className:`flex-1 truncate text-xs font-medium tracking-wider text-text-subtle uppercase`,children:`Tables`}),(0,x.jsx)(`button`,{type:`button`,onClick:E,disabled:!o.place,title:`New query on this file`,"aria-label":`New query`,className:u(_,`px-1.5`),children:(0,x.jsx)(r,{className:`size-4`})}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>s.reload(),title:`Refresh the list`,"aria-label":`Refresh the list`,className:u(_,`px-1.5`),children:(0,x.jsx)(c,{className:u(`size-4`,s.loading&&`animate-spin`)})})]}),(0,x.jsxs)(`div`,{role:`listbox`,"aria-label":`Tables and views`,className:`min-h-0 flex-1 overflow-y-auto py-1`,children:[f.map(e=>(0,x.jsx)(w,{o:e,selected:e.name===C?.name,onPick:T},e.name)),f.length===0&&(0,x.jsx)(`p`,{className:`px-3 py-4 text-center text-xs text-text-subtle`,children:`No tables found`})]})]}),(0,x.jsxs)(`div`,{className:`hidden shrink-0 items-center gap-1 border-b border-border bg-panel-2 px-2 py-1 max-md:flex`,children:[(0,x.jsxs)(`span`,{className:`relative flex min-w-0 flex-1`,children:[(0,x.jsxs)(`select`,{"aria-label":`Table`,value:C?.name??``,onChange:e=>T(e.target.value),className:`h-11 w-full min-w-0 appearance-none rounded-[5px] border border-border bg-input pr-[26px] pl-2 text-sm text-foreground outline-none focus:border-primary`,children:[!C&&(0,x.jsx)(`option`,{value:``,children:f.length?`Pick a table…`:`No tables found`}),f.map(e=>(0,x.jsx)(`option`,{value:e.name,children:e.name},e.name))]}),(0,x.jsx)(a,{className:`pointer-events-none absolute top-1/2 right-1.5 size-3.5 -translate-y-1/2 text-text-subtle`})]}),(0,x.jsx)(`button`,{type:`button`,onClick:E,disabled:!o.place,"aria-label":`New query`,className:_,children:(0,x.jsx)(r,{className:`size-5`})})]}),(0,x.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:C?(0,x.jsx)(y,{tab:o,table:C.name,schemaName:``,objectKind:C.kind,header:!1,shownIn:t},C.name):(0,x.jsx)(v,{empty:f.length?`Pick a table to see its rows.`:`This database has no tables yet.`})})]}):(0,x.jsx)(v,{loading:s.loading||!s.error&&!s.driver,error:s.error,driver:s.driver}):(0,x.jsxs)(`div`,{className:`flex h-full items-center justify-center gap-2 text-sm text-text-secondary`,children:[(0,x.jsx)(l,{className:`size-5`}),` No database file selected.`]})}function w({o:e,selected:t,onPick:n}){let r=S[e.kind]??i;return(0,x.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":t,onClick:()=>n(e.name),className:u(`flex h-7 w-full items-center gap-2 px-3 text-left text-xs`,t?`bg-accent-wash text-foreground`:`text-text-2 can-hover:hover:bg-surface-hover can-hover:hover:text-text-primary`),children:[(0,x.jsx)(r,{className:u(`size-4 shrink-0`,t?`text-primary`:`text-text-subtle`)}),(0,x.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:e.name}),e.rowEstimate!==void 0&&(0,x.jsx)(`span`,{className:`shrink-0 font-mono text-[10px] text-text-subtle`,children:f(e.rowEstimate)})]})}export{C as SqliteViewer};
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{xn as r}from"./icons-BwyIKaTT.js";import{k as i,n as a,r as o}from"./api-client-xQDlhUTu.js";import"./settings-store-B4mLp19V.js";import{n as s}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import{et as c}from"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import"./tab-store-D5I52eLN.js";import"./use-is-mobile-VRV9eZy1.js";import"./settings-categories-Ajj4ui27.js";import"./open-settings-EXR4zoZG.js";import"./button-C9ZXWb3b.js";import"./dialog-Dn_2tuYa.js";import"./file-icons-JInFtBVl.js";import"./dropdown-menu-BQidk_OJ.js";import"./fs-api-CFtQzsIJ.js";import"./format-file-meta-DdYtk07C.js";import"./input-C3oVNCMq.js";import"./use-db-driver-installed-anzWkGi5.js";import"./db-sidebar-reveal-_qw0CliT.js";import{x as l}from"./db-explorer-store-BmpvDHz6.js";import{n as u}from"./open-db-tabs-CtWIWHOa.js";import"./scroll-area-DOlQJGZp.js";import{Jn as d,l as f}from"./index-COwBji1t.js";import"./use-monaco-theme-1ANtPWqA.js";import"./use-db-tab-B8LjdDb7.js";import"./use-db-read-BCYhIrJM.js";import"./db-tab-parts-lp8ROGQB.js";import{ReadOnlySql as p}from"./sql-object-tab-DkdF_7Jz.js";import{t as m}from"./editor-dialog-9tW6c9mu.js";var h=e(t(),1),g=e=>e.startsWith(`--`);function _(e,t){let n=t.index<0,r=(r,i)=>i===t.index?`failed`:g(r.sql)?null:r.phase===`after`?`ran`:!n&&i>t.index?`not-run`:r.phase===`before`||!e.transactional?`ran`:`rolled-back`,i=e.statements.map((e,t)=>({sql:e.sql,outcome:r(e,t)}));if(!n)return i;let a={sql:`COMMIT;`,outcome:`failed`},o=e.statements.findIndex(e=>e.phase===`after`);return o<0?[...i,a]:[...i.slice(0,o),a,...i.slice(o)]}var v={ran:`Ran`,"rolled-back":`Rolled back`,failed:`Failed`,"not-run":`Did not run`};function y(e){let t=e?.data;return typeof t==`object`&&t?t:null}function b(e){let t=e;return typeof t!=`object`||!t||typeof t.sql!=`string`?null:t.phase===`before`||t.phase===`after`?{sql:t.sql,phase:t.phase}:t.phase===void 0?{sql:t.sql}:null}function x(e){let t=y(e),n=Array.isArray(t?.statements)?t.statements.map(b):null;return!t||typeof t.sql!=`string`||!n||n.some(e=>e===null)||typeof t.recreate!=`boolean`||typeof t.transactional!=`boolean`?null:{sql:t.sql,statements:n,recreate:t.recreate,warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):[],transactional:t.transactional}}function S(e){let t=y(e);return!t||typeof t.index!=`number`||!Number.isInteger(t.index)||typeof t.statement!=`string`?null:{statement:t.statement,index:t.index,applied:typeof t.applied==`number`?t.applied:0,total:typeof t.total==`number`?t.total:0}}var C=n(),w=`This operation is not directly supported by SQL engine. PPM can emulate it, but please check the generated SQL script.`,T=`MySQL commits each statement of this script on its own: should one fail, those before it stay applied.`;function E({request:e,seq:t}){let[n,s]=(0,h.useState)({step:`reading`}),[g,_]=(0,h.useState)(!1),v=()=>d(t);(0,h.useEffect)(()=>{let n=!1;return o.post(c(e.target,`/structure/preview`),{change:e.change}).then(e=>{if(!n){if(e.statements.length>0){s({step:`confirm`,preview:e});return}i.info(`Nothing to save: the database already has the table this way`),d(t)}}).catch(e=>{n||s({step:`failed`,message:e.message})}),()=>{n=!0}},[e,t]);let y=async n=>{s({step:`applying`,preview:n});try{await o.post(c(e.target,`/structure/apply`),{change:e.change,allowRecreate:n.recreate&&g,sql:n.sql})}catch(e){let t=e instanceof a?e.body:null,r=e instanceof a&&e.status===409?x(t):null;if(r){_(!1),s({step:`confirm`,preview:r,notice:e.message});return}s({step:`failed`,message:e.message,preview:n,failure:S(t)});return}i.success(`Saved to database`),d(t),e.onSaved?.(),l(e.target)};if(n.step===`failed`)return(0,C.jsxs)(m,{title:`Error when saving`,description:`Why the change could not be saved`,onClose:v,onSubmit:v,problems:[],buttons:[{label:`Close`,onClick:v,variant:`default`}],wide:!0,children:[(0,C.jsx)(`p`,{role:`alert`,className:`whitespace-pre-wrap break-words text-[13px] text-text-primary`,children:n.message}),n.preview&&n.failure&&(0,C.jsx)(O,{preview:n.preview,failure:n.failure})]});let b=n.step===`reading`?null:n.preview,E=n.step===`applying`,D=!b||E||b.recreate&&!g;return(0,C.jsxs)(m,{title:`Save changes`,description:`The script that makes the change, to read before it runs`,onClose:()=>{E||v()},onSubmit:D?void 0:()=>void y(b),problems:[],buttons:[{label:E?`Saving…`:`OK`,onClick:()=>{b&&!D&&y(b)},variant:`default`,disabled:D},{label:`Close`,onClick:v,disabled:E},{label:`Open script`,onClick:()=>{b&&(v(),u(e.place,b.sql))},disabled:!b||E}],wide:!0,children:[n.step===`confirm`&&n.notice&&(0,C.jsx)(`p`,{role:`alert`,className:`rounded-md border border-warning/40 bg-warning/10 px-3 py-2 text-[12.5px] text-text-primary`,children:n.notice}),(0,C.jsx)(`div`,{className:`h-[min(22rem,45dvh)] overflow-hidden rounded-md border border-border bg-panel-2`,children:b?(0,C.jsx)(p,{sql:b.sql}):(0,C.jsx)(`div`,{className:`grid h-full place-items-center text-text-subtle`,role:`status`,"aria-label":`Reading the script`,children:(0,C.jsx)(r,{className:`size-5 animate-spin`})})}),b&&b.warnings.length>0&&(0,C.jsx)(`ul`,{className:`grid gap-1 text-[12.5px] text-warning`,children:b.warnings.map(e=>(0,C.jsx)(`li`,{children:e},e))}),b&&!b.transactional&&(0,C.jsx)(`p`,{className:`text-[12.5px] text-text-2`,children:T}),b?.recreate&&(0,C.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,C.jsx)(`p`,{className:`text-[12.5px] text-warning`,children:w}),(0,C.jsx)(f,{id:`structure-save-recreate`,title:`Allow recreate (don't use on production databases)`,checked:g,disabled:E,onChange:_})]})]})}var D={ran:`text-success`,"rolled-back":`text-text-subtle`,failed:`text-error font-semibold`,"not-run":`text-text-subtle`};function O({preview:e,failure:t}){let n=_(e,t);return(0,C.jsx)(`ol`,{"aria-label":`Statements`,className:`grid max-h-64 gap-px overflow-y-auto rounded-md border border-border bg-border-soft`,children:n.map((e,t)=>(0,C.jsxs)(`li`,{className:s(`grid grid-cols-[6.5rem_minmax(0,1fr)] gap-2 bg-panel-2 px-2.5 py-1.5`,e.outcome===`failed`&&`bg-error/10`),children:[(0,C.jsx)(`span`,{className:s(`text-xs`,e.outcome?D[e.outcome]:`text-text-dim`),children:e.outcome?v[e.outcome]:``}),(0,C.jsx)(`code`,{className:s(`whitespace-pre-wrap break-words font-mono text-[11.5px]`,e.outcome===null?`text-text-dim`:`text-text-primary`),children:e.sql})]},t))})}export{E as StructureSaveDialog};
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t,E as n}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{xn as r}from"./icons-BwyIKaTT.js";import{k as i,n as a,r as o}from"./api-client-xQDlhUTu.js";import"./settings-store-B4mLp19V.js";import{n as s}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import{et as c}from"./window-store-DqX_qmkQ.js";import"./panel-store-BJhazigC.js";import"./project-store-BLGl9IAO.js";import"./project-framework-store-DwLxaRan.js";import"./session-list-sync-triggers-DtJI5KF0.js";import"./tab-store-D5I52eLN.js";import"./use-is-mobile-VRV9eZy1.js";import"./settings-categories-Ajj4ui27.js";import"./open-settings-EXR4zoZG.js";import"./button-C9ZXWb3b.js";import"./dialog-Dn_2tuYa.js";import"./file-icons-JInFtBVl.js";import"./dropdown-menu-BQidk_OJ.js";import"./fs-api-CFtQzsIJ.js";import"./format-file-meta-DdYtk07C.js";import"./input-C3oVNCMq.js";import"./use-db-driver-installed-anzWkGi5.js";import"./db-sidebar-reveal-_qw0CliT.js";import{x as l}from"./db-explorer-store-BmpvDHz6.js";import{n as u}from"./open-db-tabs-CtWIWHOa.js";import"./scroll-area-DOlQJGZp.js";import{Jn as d,l as f}from"./index-CPBujJc_.js";import"./use-monaco-theme-ArU1f9T6.js";import"./use-db-tab-B8LjdDb7.js";import"./use-db-read-BCYhIrJM.js";import"./db-tab-parts-tgVIgcs5.js";import{ReadOnlySql as p}from"./sql-object-tab-BTS8aHGO.js";import{t as m}from"./editor-dialog-BhK77FSu.js";var h=e(t(),1),g=e=>e.startsWith(`--`);function _(e,t){let n=t.index<0,r=(r,i)=>i===t.index?`failed`:g(r.sql)?null:r.phase===`after`?`ran`:!n&&i>t.index?`not-run`:r.phase===`before`||!e.transactional?`ran`:`rolled-back`,i=e.statements.map((e,t)=>({sql:e.sql,outcome:r(e,t)}));if(!n)return i;let a={sql:`COMMIT;`,outcome:`failed`},o=e.statements.findIndex(e=>e.phase===`after`);return o<0?[...i,a]:[...i.slice(0,o),a,...i.slice(o)]}var v={ran:`Ran`,"rolled-back":`Rolled back`,failed:`Failed`,"not-run":`Did not run`};function y(e){let t=e?.data;return typeof t==`object`&&t?t:null}function b(e){let t=e;return typeof t!=`object`||!t||typeof t.sql!=`string`?null:t.phase===`before`||t.phase===`after`?{sql:t.sql,phase:t.phase}:t.phase===void 0?{sql:t.sql}:null}function x(e){let t=y(e),n=Array.isArray(t?.statements)?t.statements.map(b):null;return!t||typeof t.sql!=`string`||!n||n.some(e=>e===null)||typeof t.recreate!=`boolean`||typeof t.transactional!=`boolean`?null:{sql:t.sql,statements:n,recreate:t.recreate,warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):[],transactional:t.transactional}}function S(e){let t=y(e);return!t||typeof t.index!=`number`||!Number.isInteger(t.index)||typeof t.statement!=`string`?null:{statement:t.statement,index:t.index,applied:typeof t.applied==`number`?t.applied:0,total:typeof t.total==`number`?t.total:0}}var C=n(),w=`This operation is not directly supported by SQL engine. PPM can emulate it, but please check the generated SQL script.`,T=`MySQL commits each statement of this script on its own: should one fail, those before it stay applied.`;function E({request:e,seq:t}){let[n,s]=(0,h.useState)({step:`reading`}),[g,_]=(0,h.useState)(!1),v=()=>d(t);(0,h.useEffect)(()=>{let n=!1;return o.post(c(e.target,`/structure/preview`),{change:e.change}).then(e=>{if(!n){if(e.statements.length>0){s({step:`confirm`,preview:e});return}i.info(`Nothing to save: the database already has the table this way`),d(t)}}).catch(e=>{n||s({step:`failed`,message:e.message})}),()=>{n=!0}},[e,t]);let y=async n=>{s({step:`applying`,preview:n});try{await o.post(c(e.target,`/structure/apply`),{change:e.change,allowRecreate:n.recreate&&g,sql:n.sql})}catch(e){let t=e instanceof a?e.body:null,r=e instanceof a&&e.status===409?x(t):null;if(r){_(!1),s({step:`confirm`,preview:r,notice:e.message});return}s({step:`failed`,message:e.message,preview:n,failure:S(t)});return}i.success(`Saved to database`),d(t),e.onSaved?.(),l(e.target)};if(n.step===`failed`)return(0,C.jsxs)(m,{title:`Error when saving`,description:`Why the change could not be saved`,onClose:v,onSubmit:v,problems:[],buttons:[{label:`Close`,onClick:v,variant:`default`}],wide:!0,children:[(0,C.jsx)(`p`,{role:`alert`,className:`whitespace-pre-wrap break-words text-[13px] text-text-primary`,children:n.message}),n.preview&&n.failure&&(0,C.jsx)(O,{preview:n.preview,failure:n.failure})]});let b=n.step===`reading`?null:n.preview,E=n.step===`applying`,D=!b||E||b.recreate&&!g;return(0,C.jsxs)(m,{title:`Save changes`,description:`The script that makes the change, to read before it runs`,onClose:()=>{E||v()},onSubmit:D?void 0:()=>void y(b),problems:[],buttons:[{label:E?`Saving…`:`OK`,onClick:()=>{b&&!D&&y(b)},variant:`default`,disabled:D},{label:`Close`,onClick:v,disabled:E},{label:`Open script`,onClick:()=>{b&&(v(),u(e.place,b.sql))},disabled:!b||E}],wide:!0,children:[n.step===`confirm`&&n.notice&&(0,C.jsx)(`p`,{role:`alert`,className:`rounded-md border border-warning/40 bg-warning/10 px-3 py-2 text-[12.5px] text-text-primary`,children:n.notice}),(0,C.jsx)(`div`,{className:`h-[min(22rem,45dvh)] overflow-hidden rounded-md border border-border bg-panel-2`,children:b?(0,C.jsx)(p,{sql:b.sql}):(0,C.jsx)(`div`,{className:`grid h-full place-items-center text-text-subtle`,role:`status`,"aria-label":`Reading the script`,children:(0,C.jsx)(r,{className:`size-5 animate-spin`})})}),b&&b.warnings.length>0&&(0,C.jsx)(`ul`,{className:`grid gap-1 text-[12.5px] text-warning`,children:b.warnings.map(e=>(0,C.jsx)(`li`,{children:e},e))}),b&&!b.transactional&&(0,C.jsx)(`p`,{className:`text-[12.5px] text-text-2`,children:T}),b?.recreate&&(0,C.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,C.jsx)(`p`,{className:`text-[12.5px] text-warning`,children:w}),(0,C.jsx)(f,{id:`structure-save-recreate`,title:`Allow recreate (don't use on production databases)`,checked:g,disabled:E,onChange:_})]})]})}var D={ran:`text-success`,"rolled-back":`text-text-subtle`,failed:`text-error font-semibold`,"not-run":`text-text-subtle`};function O({preview:e,failure:t}){let n=_(e,t);return(0,C.jsx)(`ol`,{"aria-label":`Statements`,className:`grid max-h-64 gap-px overflow-y-auto rounded-md border border-border bg-border-soft`,children:n.map((e,t)=>(0,C.jsxs)(`li`,{className:s(`grid grid-cols-[6.5rem_minmax(0,1fr)] gap-2 bg-panel-2 px-2.5 py-1.5`,e.outcome===`failed`&&`bg-error/10`),children:[(0,C.jsx)(`span`,{className:s(`text-xs`,e.outcome?D[e.outcome]:`text-text-dim`),children:e.outcome?v[e.outcome]:``}),(0,C.jsx)(`code`,{className:s(`whitespace-pre-wrap break-words font-mono text-[11.5px]`,e.outcome===null?`text-text-dim`:`text-text-primary`),children:e.sql})]},t))})}export{E as StructureSaveDialog};