@hienlh/ppm 0.23.13 → 0.23.15

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 (1218) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/CLAUDE.md +19 -4
  3. package/THIRD-PARTY-NOTICES.md +1 -1
  4. package/assets/skills/ppm/SKILL.md +3 -2
  5. package/assets/skills/ppm/references/cli-reference.md +4 -4
  6. package/assets/skills/ppm/references/common-tasks.md +6 -0
  7. package/assets/skills/ppm/references/http-api.md +13 -1
  8. package/bun.lock +15 -0
  9. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js +1 -0
  10. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.br +0 -0
  11. package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.gz +0 -0
  12. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js +1 -0
  13. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.br +0 -0
  14. package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.gz +0 -0
  15. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js +2 -0
  16. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.br +0 -0
  17. package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.gz +0 -0
  18. package/dist/web/assets/agent-session-sheet-store-BAfLnsLX.js +1 -0
  19. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js +1 -0
  20. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.br +0 -0
  21. package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.gz +0 -0
  22. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js +1 -0
  23. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.br +0 -0
  24. package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.gz +0 -0
  25. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js +1 -0
  26. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.br +0 -0
  27. package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.gz +0 -0
  28. package/dist/web/assets/ai-settings-section-CN5BR1ZZ.js +1 -0
  29. package/dist/web/assets/android-tab-CwqiuEZP.js +2 -0
  30. package/dist/web/assets/android-tab-CwqiuEZP.js.br +0 -0
  31. package/dist/web/assets/android-tab-CwqiuEZP.js.gz +0 -0
  32. package/dist/web/assets/api-client-xQDlhUTu.js +1 -0
  33. package/dist/web/assets/api-client-xQDlhUTu.js.br +0 -0
  34. package/dist/web/assets/api-client-xQDlhUTu.js.gz +0 -0
  35. package/dist/web/assets/api-client-xR05zj6r.js +1 -0
  36. package/dist/web/assets/api-settings-VAi0LpIJ.js +1 -0
  37. package/dist/web/assets/api-settings-vmIRFNwZ.js +1 -0
  38. package/dist/web/assets/api-settings-vmIRFNwZ.js.br +0 -0
  39. package/dist/web/assets/api-settings-vmIRFNwZ.js.gz +0 -0
  40. package/dist/web/assets/api-themes-CaXofG7d.js +1 -0
  41. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js +1 -0
  42. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.br +0 -0
  43. package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.gz +0 -0
  44. package/dist/web/assets/apps-panel-Cz_KJ37M.js +1 -0
  45. package/dist/web/assets/apps-panel-Cz_KJ37M.js.br +0 -0
  46. package/dist/web/assets/apps-panel-Cz_KJ37M.js.gz +0 -0
  47. package/dist/web/assets/audio-preview-Dq7qZ_6i.js +1 -0
  48. package/dist/web/assets/audio-preview-Dq7qZ_6i.js.br +0 -0
  49. package/dist/web/assets/audio-preview-Dq7qZ_6i.js.gz +0 -0
  50. package/dist/web/assets/branch-review-tab-C3QNpsm7.js +1 -0
  51. package/dist/web/assets/branch-review-tab-C3QNpsm7.js.br +0 -0
  52. package/dist/web/assets/branch-review-tab-C3QNpsm7.js.gz +0 -0
  53. package/dist/web/assets/button-C9ZXWb3b.js +1 -0
  54. package/dist/web/assets/button-C9ZXWb3b.js.br +0 -0
  55. package/dist/web/assets/button-C9ZXWb3b.js.gz +0 -0
  56. package/dist/web/assets/chat-preparation-cache-190LLyy7.js +1 -0
  57. package/dist/web/assets/chat-preparation-cache-190LLyy7.js.br +0 -0
  58. package/dist/web/assets/chat-preparation-cache-190LLyy7.js.gz +0 -0
  59. package/dist/web/assets/chat-tab-D14CUl0J.js +1 -0
  60. package/dist/web/assets/chat-tab-D14CUl0J.js.br +0 -0
  61. package/dist/web/assets/chat-tab-D14CUl0J.js.gz +0 -0
  62. package/dist/web/assets/chat-tab-D8iAVZKV.js +16 -0
  63. package/dist/web/assets/chat-tab-D8iAVZKV.js.br +0 -0
  64. package/dist/web/assets/chat-tab-D8iAVZKV.js.gz +0 -0
  65. package/dist/web/assets/code-editor-B7gbH4-x.js +10 -0
  66. package/dist/web/assets/code-editor-B7gbH4-x.js.br +0 -0
  67. package/dist/web/assets/code-editor-B7gbH4-x.js.gz +0 -0
  68. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js +1 -0
  69. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.br +0 -0
  70. package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.gz +0 -0
  71. package/dist/web/assets/conflict-editor-ktOkrODA.js +19 -0
  72. package/dist/web/assets/conflict-editor-ktOkrODA.js.br +0 -0
  73. package/dist/web/assets/conflict-editor-ktOkrODA.js.gz +0 -0
  74. package/dist/web/assets/connection-form-tab-CxvExR7T.js +4 -0
  75. package/dist/web/assets/connection-form-tab-CxvExR7T.js.br +0 -0
  76. package/dist/web/assets/connection-form-tab-CxvExR7T.js.gz +0 -0
  77. package/dist/web/assets/context-menu-BCuZYfWC.js +1 -0
  78. package/dist/web/assets/context-menu-BCuZYfWC.js.br +0 -0
  79. package/dist/web/assets/context-menu-BCuZYfWC.js.gz +0 -0
  80. package/dist/web/assets/createLucideIcon-D9_fdOKS.js +1 -0
  81. package/dist/web/assets/createLucideIcon-D9_fdOKS.js.br +0 -0
  82. package/dist/web/assets/createLucideIcon-D9_fdOKS.js.gz +0 -0
  83. package/dist/web/assets/csv-preview-CBDMTEsF.js +10 -0
  84. package/dist/web/assets/csv-preview-CBDMTEsF.js.br +0 -0
  85. package/dist/web/assets/csv-preview-CBDMTEsF.js.gz +0 -0
  86. package/dist/web/assets/database-drivers-section-DJvU6bf5.js +1 -0
  87. package/dist/web/assets/database-drivers-section-DJvU6bf5.js.br +0 -0
  88. package/dist/web/assets/database-drivers-section-DJvU6bf5.js.gz +0 -0
  89. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js +1 -0
  90. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.br +0 -0
  91. package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.gz +0 -0
  92. package/dist/web/assets/db-explorer-store-BmpvDHz6.js +1 -0
  93. package/dist/web/assets/db-explorer-store-BmpvDHz6.js.br +0 -0
  94. package/dist/web/assets/db-explorer-store-BmpvDHz6.js.gz +0 -0
  95. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js +1 -0
  96. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.br +0 -0
  97. package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.gz +0 -0
  98. package/dist/web/assets/db-tab-parts-BgVpKbi6.js +1 -0
  99. package/dist/web/assets/db-tab-parts-BgVpKbi6.js.br +0 -0
  100. package/dist/web/assets/db-tab-parts-BgVpKbi6.js.gz +0 -0
  101. package/dist/web/assets/db-types-CNhENouW.js +1 -0
  102. package/dist/web/assets/design-canvas-check-BIHc2d_k.js +1 -0
  103. package/dist/web/assets/design-canvas-check-BIHc2d_k.js.br +0 -0
  104. package/dist/web/assets/design-canvas-check-BIHc2d_k.js.gz +0 -0
  105. package/dist/web/assets/design-export-client-CJ3w7Zrk.js +1 -0
  106. package/dist/web/assets/design-export-client-CJ3w7Zrk.js.br +0 -0
  107. package/dist/web/assets/design-export-client-CJ3w7Zrk.js.gz +0 -0
  108. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js +1 -0
  109. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.br +0 -0
  110. package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.gz +0 -0
  111. package/dist/web/assets/design-settings-section-DPGw61pY.js +2 -0
  112. package/dist/web/assets/design-settings-section-DPGw61pY.js.br +0 -0
  113. package/dist/web/assets/design-settings-section-DPGw61pY.js.gz +0 -0
  114. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js +3 -0
  115. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.br +0 -0
  116. package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.gz +0 -0
  117. package/dist/web/assets/design-tab-BiCqHNl3.js +57 -0
  118. package/dist/web/assets/design-tab-BiCqHNl3.js.br +0 -0
  119. package/dist/web/assets/design-tab-BiCqHNl3.js.gz +0 -0
  120. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js +1 -0
  121. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.br +0 -0
  122. package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.gz +0 -0
  123. package/dist/web/assets/dialog-Dn_2tuYa.js +1 -0
  124. package/dist/web/assets/dialog-Dn_2tuYa.js.br +0 -0
  125. package/dist/web/assets/dialog-Dn_2tuYa.js.gz +0 -0
  126. package/dist/web/assets/diff-viewer-CLAvyqVG.js +4 -0
  127. package/dist/web/assets/diff-viewer-CLAvyqVG.js.br +0 -0
  128. package/dist/web/assets/diff-viewer-CLAvyqVG.js.gz +0 -0
  129. package/dist/web/assets/docx-preview-XSkD2IL6.js +12 -0
  130. package/dist/web/assets/docx-preview-XSkD2IL6.js.br +0 -0
  131. package/dist/web/assets/docx-preview-XSkD2IL6.js.gz +0 -0
  132. package/dist/web/assets/dropdown-menu-BQidk_OJ.js +1 -0
  133. package/dist/web/assets/dropdown-menu-BQidk_OJ.js.br +0 -0
  134. package/dist/web/assets/dropdown-menu-BQidk_OJ.js.gz +0 -0
  135. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js +7 -0
  136. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.br +0 -0
  137. package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.gz +0 -0
  138. package/dist/web/assets/editor-dialog-cQvqVZAR.js +1 -0
  139. package/dist/web/assets/editor-dialog-cQvqVZAR.js.br +0 -0
  140. package/dist/web/assets/editor-dialog-cQvqVZAR.js.gz +0 -0
  141. package/dist/web/assets/editor-language-service-6-7mS6_9.js +1 -0
  142. package/dist/web/assets/editor-language-service-6-7mS6_9.js.br +0 -0
  143. package/dist/web/assets/editor-language-service-6-7mS6_9.js.gz +0 -0
  144. package/dist/web/assets/explorer-body-BlGDPmNa.js +2 -0
  145. package/dist/web/assets/explorer-body-BlGDPmNa.js.br +0 -0
  146. package/dist/web/assets/explorer-body-BlGDPmNa.js.gz +0 -0
  147. package/dist/web/assets/explorer-model-BtJN4MZ9.js +1 -0
  148. package/dist/web/assets/explorer-model-BtJN4MZ9.js.br +0 -0
  149. package/dist/web/assets/explorer-model-BtJN4MZ9.js.gz +0 -0
  150. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js +1 -0
  151. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.br +0 -0
  152. package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.gz +0 -0
  153. package/dist/web/assets/extension-manager-section-NSEt5f4z.js +1 -0
  154. package/dist/web/assets/extension-manager-section-NSEt5f4z.js.br +0 -0
  155. package/dist/web/assets/extension-manager-section-NSEt5f4z.js.gz +0 -0
  156. package/dist/web/assets/extension-webview-BkAEBWin.js +12 -0
  157. package/dist/web/assets/extension-webview-BkAEBWin.js.br +0 -0
  158. package/dist/web/assets/extension-webview-BkAEBWin.js.gz +0 -0
  159. package/dist/web/assets/file-diff-CcDhJkXB.js +1 -0
  160. package/dist/web/assets/file-icons-JInFtBVl.js +1 -0
  161. package/dist/web/assets/file-icons-JInFtBVl.js.br +0 -0
  162. package/dist/web/assets/file-icons-JInFtBVl.js.gz +0 -0
  163. package/dist/web/assets/file-store-BQ41vIs5.js +1 -0
  164. package/dist/web/assets/file-store-BQ41vIs5.js.br +0 -0
  165. package/dist/web/assets/file-store-BQ41vIs5.js.gz +0 -0
  166. package/dist/web/assets/files-settings-section-Bq7liJ_r.js +1 -0
  167. package/dist/web/assets/files-settings-section-Bq7liJ_r.js.br +0 -0
  168. package/dist/web/assets/files-settings-section-Bq7liJ_r.js.gz +0 -0
  169. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js +1 -0
  170. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.br +0 -0
  171. package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.gz +0 -0
  172. package/dist/web/assets/format-file-meta-DdYtk07C.js +1 -0
  173. package/dist/web/assets/format-file-meta-DdYtk07C.js.br +0 -0
  174. package/dist/web/assets/format-file-meta-DdYtk07C.js.gz +0 -0
  175. package/dist/web/assets/fs-api-CFtQzsIJ.js +1 -0
  176. package/dist/web/assets/fs-api-CFtQzsIJ.js.br +0 -0
  177. package/dist/web/assets/fs-api-CFtQzsIJ.js.gz +0 -0
  178. package/dist/web/assets/general-settings-section-DvHROAMa.js +1 -0
  179. package/dist/web/assets/general-settings-section-DvHROAMa.js.br +0 -0
  180. package/dist/web/assets/general-settings-section-DvHROAMa.js.gz +0 -0
  181. package/dist/web/assets/git-commit-horizontal-BPdj2L1i.js +1 -0
  182. package/dist/web/assets/git-log-panel-Cu9kK48H.js +1 -0
  183. package/dist/web/assets/git-log-panel-Cu9kK48H.js.br +0 -0
  184. package/dist/web/assets/git-log-panel-Cu9kK48H.js.gz +0 -0
  185. package/dist/web/assets/git-repo-store-CKB5fdNP.js +1 -0
  186. package/dist/web/assets/git-repo-store-CKB5fdNP.js.br +0 -0
  187. package/dist/web/assets/git-repo-store-CKB5fdNP.js.gz +0 -0
  188. package/dist/web/assets/git-review-tab-B_JT649W.js +3 -0
  189. package/dist/web/assets/git-review-tab-B_JT649W.js.br +0 -0
  190. package/dist/web/assets/git-review-tab-B_JT649W.js.gz +0 -0
  191. package/dist/web/assets/glide-data-grid-BlposOph.js +177 -0
  192. package/dist/web/assets/glide-data-grid-BlposOph.js.br +0 -0
  193. package/dist/web/assets/glide-data-grid-BlposOph.js.gz +0 -0
  194. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js +2 -0
  195. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.br +0 -0
  196. package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.gz +0 -0
  197. package/dist/web/assets/group-chat-tab-jirUsGm-.js +1 -0
  198. package/dist/web/assets/group-chat-tab-jirUsGm-.js.br +0 -0
  199. package/dist/web/assets/group-chat-tab-jirUsGm-.js.gz +0 -0
  200. package/dist/web/assets/html-preview-loads-CMWBC-iv.js +1 -0
  201. package/dist/web/assets/icons-BwyIKaTT.js +1 -0
  202. package/dist/web/assets/icons-BwyIKaTT.js.br +0 -0
  203. package/dist/web/assets/icons-BwyIKaTT.js.gz +0 -0
  204. package/dist/web/assets/image-preview-gOBK9zED.js +1 -0
  205. package/dist/web/assets/impexp-tab-HJVcOTYJ.js +1 -0
  206. package/dist/web/assets/impexp-tab-HJVcOTYJ.js.br +0 -0
  207. package/dist/web/assets/impexp-tab-HJVcOTYJ.js.gz +0 -0
  208. package/dist/web/assets/index-DLB3j_P0.js +59 -0
  209. package/dist/web/assets/index-DLB3j_P0.js.br +0 -0
  210. package/dist/web/assets/index-DLB3j_P0.js.gz +0 -0
  211. package/dist/web/assets/index-M3DUzop8.css +1 -0
  212. package/dist/web/assets/index-M3DUzop8.css.br +0 -0
  213. package/dist/web/assets/index-M3DUzop8.css.gz +0 -0
  214. package/dist/web/assets/input-C3oVNCMq.js +1 -0
  215. package/dist/web/assets/jira-watcher-section-EQvdnETB.js +1 -0
  216. package/dist/web/assets/keybindings-store-CEy-Sdcc.js +1 -0
  217. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js +1 -0
  218. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.br +0 -0
  219. package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.gz +0 -0
  220. package/dist/web/assets/language-servers-section-DOcZ72FJ.js +2 -0
  221. package/dist/web/assets/language-servers-section-DOcZ72FJ.js.br +0 -0
  222. package/dist/web/assets/language-servers-section-DOcZ72FJ.js.gz +0 -0
  223. package/dist/web/assets/lib-5Chotbwm.js +2 -0
  224. package/dist/web/assets/lib-5Chotbwm.js.br +0 -0
  225. package/dist/web/assets/lib-5Chotbwm.js.gz +0 -0
  226. package/dist/web/assets/logs-app-C7n9GSCn.js +13 -0
  227. package/dist/web/assets/logs-app-C7n9GSCn.js.br +0 -0
  228. package/dist/web/assets/logs-app-C7n9GSCn.js.gz +0 -0
  229. package/dist/web/assets/logs-tab-CSOiexvx.js +1 -0
  230. package/dist/web/assets/logs-window-content-C4Qs6-0q.js +1 -0
  231. package/dist/web/assets/lsp-client-DpYmPhXX.js +1 -0
  232. package/dist/web/assets/lsp-client-DpYmPhXX.js.br +0 -0
  233. package/dist/web/assets/lsp-client-DpYmPhXX.js.gz +0 -0
  234. package/dist/web/assets/markdown-renderer-CtEl6qAt.js +4 -0
  235. package/dist/web/assets/markdown-renderer-CtEl6qAt.js.br +0 -0
  236. package/dist/web/assets/markdown-renderer-CtEl6qAt.js.gz +0 -0
  237. package/dist/web/assets/markdown-renderer-Df3r-CCb.js +1 -0
  238. package/dist/web/assets/media-url-Cn2yRAxP.js +1 -0
  239. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js +1 -0
  240. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.br +0 -0
  241. package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.gz +0 -0
  242. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js +1 -0
  243. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.br +0 -0
  244. package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.gz +0 -0
  245. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js +1 -0
  246. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.br +0 -0
  247. package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.gz +0 -0
  248. package/dist/web/assets/new-design-dialog-DgztQK5R.js +1 -0
  249. package/dist/web/assets/new-design-dialog-DgztQK5R.js.br +0 -0
  250. package/dist/web/assets/new-design-dialog-DgztQK5R.js.gz +0 -0
  251. package/dist/web/assets/notification-store-B92dvP_u.js +1 -0
  252. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js +1 -0
  253. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.br +0 -0
  254. package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.gz +0 -0
  255. package/dist/web/assets/onboarding-entry-eehqBvyM.js +1 -0
  256. package/dist/web/assets/onboarding-entry-eehqBvyM.js.br +0 -0
  257. package/dist/web/assets/onboarding-entry-eehqBvyM.js.gz +0 -0
  258. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js +1 -0
  259. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.br +0 -0
  260. package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.gz +0 -0
  261. package/dist/web/assets/open-db-tabs-CtWIWHOa.js +1 -0
  262. package/dist/web/assets/open-db-tabs-CtWIWHOa.js.br +0 -0
  263. package/dist/web/assets/open-db-tabs-CtWIWHOa.js.gz +0 -0
  264. package/dist/web/assets/open-settings-EXR4zoZG.js +1 -0
  265. package/dist/web/assets/overview-panel-DEGF2DmZ.js +1 -0
  266. package/dist/web/assets/overview-panel-DEGF2DmZ.js.br +0 -0
  267. package/dist/web/assets/overview-panel-DEGF2DmZ.js.gz +0 -0
  268. package/dist/web/assets/panel-store-BJhazigC.js +1 -0
  269. package/dist/web/assets/panel-store-BJhazigC.js.br +0 -0
  270. package/dist/web/assets/panel-store-BJhazigC.js.gz +0 -0
  271. package/dist/web/assets/patch-tab-metadata-C92YkrRX.js +1 -0
  272. package/dist/web/assets/pdf-preview-C9gMtv2a.js +1 -0
  273. package/dist/web/assets/pdf-preview-C9gMtv2a.js.br +0 -0
  274. package/dist/web/assets/pdf-preview-C9gMtv2a.js.gz +0 -0
  275. package/dist/web/assets/performance-panel-TkwfKIZa.js +3 -0
  276. package/dist/web/assets/performance-panel-TkwfKIZa.js.br +0 -0
  277. package/dist/web/assets/performance-panel-TkwfKIZa.js.gz +0 -0
  278. package/dist/web/assets/portal-container-context-NBi-KGK0.js +1 -0
  279. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js +1 -0
  280. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.br +0 -0
  281. package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.gz +0 -0
  282. package/dist/web/assets/pptx-export-B2wCBWlV.js +111 -0
  283. package/dist/web/assets/pptx-export-B2wCBWlV.js.br +0 -0
  284. package/dist/web/assets/pptx-export-B2wCBWlV.js.gz +0 -0
  285. package/dist/web/assets/problems-panel-CDzwSJn6.js +1 -0
  286. package/dist/web/assets/problems-panel-CDzwSJn6.js.br +0 -0
  287. package/dist/web/assets/problems-panel-CDzwSJn6.js.gz +0 -0
  288. package/dist/web/assets/process-row-format-CytRH7g2.js +1 -0
  289. package/dist/web/assets/process-table-C_B39GHm.js +1 -0
  290. package/dist/web/assets/process-table-C_B39GHm.js.br +0 -0
  291. package/dist/web/assets/process-table-C_B39GHm.js.gz +0 -0
  292. package/dist/web/assets/project-framework-store-DwLxaRan.js +1 -0
  293. package/dist/web/assets/project-store-BLGl9IAO.js +1 -0
  294. package/dist/web/assets/project-store-BLGl9IAO.js.br +0 -0
  295. package/dist/web/assets/project-store-BLGl9IAO.js.gz +0 -0
  296. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js +1 -0
  297. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.br +0 -0
  298. package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.gz +0 -0
  299. package/dist/web/assets/query-audit-section-D_WDp1m-.js +1 -0
  300. package/dist/web/assets/query-audit-section-D_WDp1m-.js.br +0 -0
  301. package/dist/web/assets/query-audit-section-D_WDp1m-.js.gz +0 -0
  302. package/dist/web/assets/query-tab-B8aMpAbI.js +22 -0
  303. package/dist/web/assets/query-tab-B8aMpAbI.js.br +0 -0
  304. package/dist/web/assets/query-tab-B8aMpAbI.js.gz +0 -0
  305. package/dist/web/assets/react-BZ0kba1-.js +1 -0
  306. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js +1 -0
  307. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.br +0 -0
  308. package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.gz +0 -0
  309. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js +1 -0
  310. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.br +0 -0
  311. package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.gz +0 -0
  312. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js +2 -0
  313. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.br +0 -0
  314. package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.gz +0 -0
  315. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js +1 -0
  316. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.br +0 -0
  317. package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.gz +0 -0
  318. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js +1 -0
  319. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.br +0 -0
  320. package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.gz +0 -0
  321. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js +1 -0
  322. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.br +0 -0
  323. package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.gz +0 -0
  324. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js +1 -0
  325. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.br +0 -0
  326. package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.gz +0 -0
  327. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js +1 -0
  328. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.br +0 -0
  329. package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.gz +0 -0
  330. package/dist/web/assets/review-code-B4osj0k1.js +5 -0
  331. package/dist/web/assets/review-code-B4osj0k1.js.br +0 -0
  332. package/dist/web/assets/review-code-B4osj0k1.js.gz +0 -0
  333. package/dist/web/assets/run-in-terminal-button-m3i-Hcou.js +1 -0
  334. package/dist/web/assets/run-in-terminal-ujoc25vj.js +1 -0
  335. package/dist/web/assets/save-as-dialog-DpXv_f1d.js +1 -0
  336. package/dist/web/assets/save-as-dialog-DpXv_f1d.js.br +5 -0
  337. package/dist/web/assets/save-as-dialog-DpXv_f1d.js.gz +0 -0
  338. package/dist/web/assets/schedules-settings-section-BbaPbc28.js +1 -0
  339. package/dist/web/assets/schedules-settings-section-BbaPbc28.js.br +0 -0
  340. package/dist/web/assets/schedules-settings-section-BbaPbc28.js.gz +0 -0
  341. package/dist/web/assets/scroll-area-DOlQJGZp.js +1 -0
  342. package/dist/web/assets/scroll-area-DOlQJGZp.js.br +0 -0
  343. package/dist/web/assets/scroll-area-DOlQJGZp.js.gz +0 -0
  344. package/dist/web/assets/send-to-chat-CWV1qd3c.js +1 -0
  345. package/dist/web/assets/send-to-chat-CWV1qd3c.js.br +0 -0
  346. package/dist/web/assets/send-to-chat-CWV1qd3c.js.gz +0 -0
  347. package/dist/web/assets/separator-DmU9aJwq.js +1 -0
  348. package/dist/web/assets/services-panel-CZQOrvth.js +1 -0
  349. package/dist/web/assets/services-panel-CZQOrvth.js.br +0 -0
  350. package/dist/web/assets/services-panel-CZQOrvth.js.gz +0 -0
  351. package/dist/web/assets/session-changes-bar-VfS2sHuH.js +1 -0
  352. package/dist/web/assets/session-changes-bar-VfS2sHuH.js.br +0 -0
  353. package/dist/web/assets/session-changes-bar-VfS2sHuH.js.gz +0 -0
  354. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js +1 -0
  355. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.br +0 -0
  356. package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.gz +0 -0
  357. package/dist/web/assets/session-review-tab-Aq3FEooH.js +6 -0
  358. package/dist/web/assets/session-review-tab-Aq3FEooH.js.br +0 -0
  359. package/dist/web/assets/session-review-tab-Aq3FEooH.js.gz +0 -0
  360. package/dist/web/assets/settings-body-vXbOWchN.js +1 -0
  361. package/dist/web/assets/settings-body-vXbOWchN.js.br +0 -0
  362. package/dist/web/assets/settings-body-vXbOWchN.js.gz +0 -0
  363. package/dist/web/assets/settings-categories-Ajj4ui27.js +1 -0
  364. package/dist/web/assets/settings-categories-Ajj4ui27.js.br +0 -0
  365. package/dist/web/assets/settings-categories-Ajj4ui27.js.gz +0 -0
  366. package/dist/web/assets/settings-rows-DD7Gxmst.js +1 -0
  367. package/dist/web/assets/settings-rows-DD7Gxmst.js.br +0 -0
  368. package/dist/web/assets/settings-rows-DD7Gxmst.js.gz +0 -0
  369. package/dist/web/assets/settings-section-content-CVtvJ6ze.js +1 -0
  370. package/dist/web/assets/settings-section-content-DkUJFop6.js +2 -0
  371. package/dist/web/assets/settings-section-content-DkUJFop6.js.br +0 -0
  372. package/dist/web/assets/settings-section-content-DkUJFop6.js.gz +0 -0
  373. package/dist/web/assets/settings-store-B4mLp19V.js +2 -0
  374. package/dist/web/assets/settings-store-B4mLp19V.js.br +0 -0
  375. package/dist/web/assets/settings-store-B4mLp19V.js.gz +0 -0
  376. package/dist/web/assets/settings-tab-Cdv9_OIe.js +1 -0
  377. package/dist/web/assets/settings-window-content-DLa6Ph4u.js +1 -0
  378. package/dist/web/assets/share-BV49OI6q.css +2 -0
  379. package/dist/web/assets/share-BV49OI6q.css.br +0 -0
  380. package/dist/web/assets/share-BV49OI6q.css.gz +0 -0
  381. package/dist/web/assets/share-D5ufGmNI.js +9 -0
  382. package/dist/web/assets/share-D5ufGmNI.js.br +0 -0
  383. package/dist/web/assets/share-D5ufGmNI.js.gz +0 -0
  384. package/dist/web/assets/slash-command-picker-lILYDfK3.js +1 -0
  385. package/dist/web/assets/slash-command-picker-lILYDfK3.js.br +0 -0
  386. package/dist/web/assets/slash-command-picker-lILYDfK3.js.gz +0 -0
  387. package/dist/web/assets/sortable-header-DwzTFLkG.js +1 -0
  388. package/dist/web/assets/sortable-header-DwzTFLkG.js.br +0 -0
  389. package/dist/web/assets/sortable-header-DwzTFLkG.js.gz +0 -0
  390. package/dist/web/assets/split-sql-statements-DcAeXbk_.js +5 -0
  391. package/dist/web/assets/split-sql-statements-DcAeXbk_.js.br +0 -0
  392. package/dist/web/assets/split-sql-statements-DcAeXbk_.js.gz +0 -0
  393. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js +1 -0
  394. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.br +0 -0
  395. package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.gz +0 -0
  396. package/dist/web/assets/sql-object-tab-Da42SMK5.js +1 -0
  397. package/dist/web/assets/sql-object-tab-Da42SMK5.js.br +0 -0
  398. package/dist/web/assets/sql-object-tab-Da42SMK5.js.gz +0 -0
  399. package/dist/web/assets/sqlite-viewer-V3SKNukY.js +1 -0
  400. package/dist/web/assets/sqlite-viewer-V3SKNukY.js.br +0 -0
  401. package/dist/web/assets/sqlite-viewer-V3SKNukY.js.gz +0 -0
  402. package/dist/web/assets/start-ellipsis-CU8GkxaV.js +1 -0
  403. package/dist/web/assets/structure-save-dialog-B635iyPI.js +1 -0
  404. package/dist/web/assets/structure-save-dialog-B635iyPI.js.br +0 -0
  405. package/dist/web/assets/structure-save-dialog-B635iyPI.js.gz +0 -0
  406. package/dist/web/assets/structure-tab-Co9d8ktU.js +3 -0
  407. package/dist/web/assets/structure-tab-Co9d8ktU.js.br +0 -0
  408. package/dist/web/assets/structure-tab-Co9d8ktU.js.gz +0 -0
  409. package/dist/web/assets/system-monitor-body-DC0j8RqP.js +2 -0
  410. package/dist/web/assets/system-monitor-body-DC0j8RqP.js.br +0 -0
  411. package/dist/web/assets/system-monitor-body-DC0j8RqP.js.gz +0 -0
  412. package/dist/web/assets/system-monitor-tab-DA8BcdXo.js +1 -0
  413. package/dist/web/assets/system-monitor-window-content-BiuLo8XW.js +1 -0
  414. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js +1 -0
  415. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.br +0 -0
  416. package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.gz +0 -0
  417. package/dist/web/assets/tab-store-D5I52eLN.js +1 -0
  418. package/dist/web/assets/table-tab-C2cYw7a0.js +2 -0
  419. package/dist/web/assets/table-tab-C2cYw7a0.js.br +0 -0
  420. package/dist/web/assets/table-tab-C2cYw7a0.js.gz +0 -0
  421. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js +1 -0
  422. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.br +0 -0
  423. package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.gz +0 -0
  424. package/dist/web/assets/terminal-tab-CrKxibGC.js +3 -0
  425. package/dist/web/assets/terminal-tab-CrKxibGC.js.br +0 -0
  426. package/dist/web/assets/terminal-tab-CrKxibGC.js.gz +0 -0
  427. package/dist/web/assets/tool-cards-BRto67jM.js +15 -0
  428. package/dist/web/assets/tool-cards-BRto67jM.js.br +0 -0
  429. package/dist/web/assets/tool-cards-BRto67jM.js.gz +0 -0
  430. package/dist/web/assets/tools-settings-section-DEvZsrxq.js +1 -0
  431. package/dist/web/assets/tools-settings-section-DEvZsrxq.js.br +0 -0
  432. package/dist/web/assets/tools-settings-section-DEvZsrxq.js.gz +0 -0
  433. package/dist/web/assets/use-at-most-wide-BHsrzvv3.js +1 -0
  434. package/dist/web/assets/use-blob-url-Clm7wbB_.js +1 -0
  435. package/dist/web/assets/use-db-driver-installed-anzWkGi5.js +1 -0
  436. package/dist/web/assets/use-db-read-BCYhIrJM.js +1 -0
  437. package/dist/web/assets/use-db-read-BCYhIrJM.js.br +0 -0
  438. package/dist/web/assets/use-db-read-BCYhIrJM.js.gz +0 -0
  439. package/dist/web/assets/use-db-tab-B8LjdDb7.js +1 -0
  440. package/dist/web/assets/use-db-tab-B8LjdDb7.js.br +0 -0
  441. package/dist/web/assets/use-db-tab-B8LjdDb7.js.gz +0 -0
  442. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js +1 -0
  443. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.br +0 -0
  444. package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.gz +0 -0
  445. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js +1 -0
  446. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.br +0 -0
  447. package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.gz +0 -0
  448. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js +16 -0
  449. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.br +0 -0
  450. package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.gz +0 -0
  451. package/dist/web/assets/use-is-mobile-VRV9eZy1.js +1 -0
  452. package/dist/web/assets/use-lsp-B-otjr-6.js +6 -0
  453. package/dist/web/assets/use-lsp-B-otjr-6.js.br +0 -0
  454. package/dist/web/assets/use-lsp-B-otjr-6.js.gz +0 -0
  455. package/dist/web/assets/use-monaco-theme-BiDXRJ4e.js +1 -0
  456. package/dist/web/assets/use-opener-focus-CDRKhHwX.js +1 -0
  457. package/dist/web/assets/use-process-kill-BW2UW0mZ.js +1 -0
  458. package/dist/web/assets/use-process-kill-BW2UW0mZ.js.br +0 -0
  459. package/dist/web/assets/use-process-kill-BW2UW0mZ.js.gz +0 -0
  460. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js +4 -0
  461. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.br +0 -0
  462. package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.gz +0 -0
  463. package/dist/web/assets/use-visual-viewport-MmugpRg-.js +1 -0
  464. package/dist/web/assets/use-websocket-n3Ud9vEA.js +1 -0
  465. package/dist/web/assets/vendor-markdown-C-P1aR4p.js +291 -0
  466. package/dist/web/assets/vendor-markdown-C-P1aR4p.js.br +0 -0
  467. package/dist/web/assets/vendor-markdown-C-P1aR4p.js.gz +0 -0
  468. package/dist/web/assets/vendor-ui-BTSIXzhZ.js +45 -0
  469. package/dist/web/assets/vendor-ui-BTSIXzhZ.js.br +0 -0
  470. package/dist/web/assets/vendor-ui-BTSIXzhZ.js.gz +0 -0
  471. package/dist/web/assets/video-preview-CjB6wesi.js +1 -0
  472. package/dist/web/assets/video-preview-CjB6wesi.js.br +0 -0
  473. package/dist/web/assets/video-preview-CjB6wesi.js.gz +0 -0
  474. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js +1 -0
  475. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.br +0 -0
  476. package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.gz +0 -0
  477. package/dist/web/assets/web-preview-tab-doNpegW3.js +1 -0
  478. package/dist/web/assets/web-preview-tab-doNpegW3.js.br +0 -0
  479. package/dist/web/assets/web-preview-tab-doNpegW3.js.gz +0 -0
  480. package/dist/web/assets/window-store-DqX_qmkQ.js +1 -0
  481. package/dist/web/assets/window-store-DqX_qmkQ.js.br +0 -0
  482. package/dist/web/assets/window-store-DqX_qmkQ.js.gz +0 -0
  483. package/dist/web/assets/ws-auth-CbF6GqxP.js +1 -0
  484. package/dist/web/design-share-page/index.html +18 -0
  485. package/dist/web/index.html +47 -47
  486. package/dist/web/index.html.br +0 -0
  487. package/dist/web/index.html.gz +0 -0
  488. package/dist/web/sw.js +1 -1
  489. package/dist/web/sw.js.br +0 -0
  490. package/dist/web/sw.js.gz +0 -0
  491. package/docs/architecture/ai-chat-and-providers.md +258 -26
  492. package/docs/architecture/data-and-storage.md +9 -3
  493. package/docs/architecture/workspace-and-ui.md +42 -5
  494. package/docs/project-roadmap.md +5 -0
  495. package/package.json +6 -2
  496. package/scripts/gen-product-icons.ts +1 -0
  497. package/src/cli/commands/db-cmd.ts +79 -1
  498. package/src/providers/claude-agent-sdk-query-options.ts +42 -10
  499. package/src/providers/claude-agent-sdk.ts +19 -6
  500. package/src/providers/codex-app-server/codex-provider.ts +9 -3
  501. package/src/providers/codex-app-server/codex-thread-params.ts +34 -4
  502. package/src/server/index.ts +17 -5
  503. package/src/server/middleware/access-log.ts +6 -3
  504. package/src/server/routes/accounts.ts +3 -2
  505. package/src/server/routes/chat-file-changes.ts +15 -1
  506. package/src/server/routes/chat.ts +92 -18
  507. package/src/server/routes/database-query.ts +14 -5
  508. package/src/server/routes/database.ts +14 -0
  509. package/src/server/routes/debug-crash.ts +30 -0
  510. package/src/server/routes/design-comments.ts +56 -7
  511. package/src/server/routes/design-share-address.ts +20 -0
  512. package/src/server/routes/design-share-guest-comments.ts +120 -0
  513. package/src/server/routes/design-share-guest-files.ts +99 -0
  514. package/src/server/routes/design-share-guest-shared.ts +95 -0
  515. package/src/server/routes/design-share-guest.ts +77 -0
  516. package/src/server/routes/design-shares.ts +90 -0
  517. package/src/server/routes/designs.ts +2 -0
  518. package/src/server/routes/settings.ts +12 -0
  519. package/src/server/routes/static.ts +10 -2
  520. package/src/server/ws/chat.ts +113 -39
  521. package/src/server/ws/global.ts +10 -8
  522. package/src/services/account.service.ts +57 -18
  523. package/src/services/chat.service.ts +16 -6
  524. package/src/services/db-ai-tools/db-ai-connections.ts +48 -0
  525. package/src/services/db-ai-tools/db-ai-format.ts +107 -0
  526. package/src/services/db-ai-tools/db-ai-run.ts +199 -0
  527. package/src/services/db-ai-tools/db-ai-target.ts +59 -0
  528. package/src/services/db-ai-tools/db-ai-tools-endpoint.ts +225 -0
  529. package/src/services/db-ai-tools/db-ai-tools-tokens.ts +33 -0
  530. package/src/services/db-ai-tools/db-ai-tools-tool.ts +131 -0
  531. package/src/services/db-ai-tools/db-approval-broker.ts +157 -0
  532. package/src/services/db.service.ts +25 -1
  533. package/src/services/design/bridge/bridge-picker.ts +15 -5
  534. package/src/services/design/bridge/guest-bridge.ts +19 -0
  535. package/src/services/design/comments/design-comment-element-context.ts +28 -6
  536. package/src/services/design/comments/design-comment-input.ts +47 -0
  537. package/src/services/design/comments/design-comment-views.ts +146 -0
  538. package/src/services/design/comments/design-comments-revision.ts +19 -0
  539. package/src/services/design/comments/design-comments-store.ts +82 -9
  540. package/src/services/design/design-comment-replies.service.ts +126 -0
  541. package/src/services/design/design-comments.service.ts +77 -34
  542. package/src/services/design/design-restore.service.ts +6 -2
  543. package/src/services/design/design-snapshots.service.ts +8 -2
  544. package/src/services/design/design-store.service.ts +7 -1
  545. package/src/services/design/design-write-rate-limit.ts +11 -17
  546. package/src/services/design/preview/design-guest-alias.ts +64 -0
  547. package/src/services/design/preview/design-preview-html.ts +16 -3
  548. package/src/services/design/preview/design-preview-scope.ts +29 -5
  549. package/src/services/design/share/design-share-address.ts +81 -0
  550. package/src/services/design/share/design-share-changed-files.ts +74 -0
  551. package/src/services/design/share/design-share-client-key.ts +72 -0
  552. package/src/services/design/share/design-share-code.ts +116 -0
  553. package/src/services/design/share/design-share-comments.service.ts +162 -0
  554. package/src/services/design/share/design-share-guest-link.ts +109 -0
  555. package/src/services/design/share/design-share-guest-page.ts +86 -0
  556. package/src/services/design/share/design-share-link-rules.ts +83 -0
  557. package/src/services/design/share/design-share-links-store.ts +157 -0
  558. package/src/services/design/share/design-share-links.service.ts +174 -0
  559. package/src/services/design/share/design-share-notifier.ts +192 -0
  560. package/src/services/design/share/design-share-rate-limit.ts +71 -0
  561. package/src/services/design/share/design-share-resolve.ts +31 -0
  562. package/src/services/mcp-http-endpoint.ts +23 -10
  563. package/src/services/mysql.service.ts +6 -2
  564. package/src/services/notification-format.ts +10 -2
  565. package/src/services/notification-link.ts +1 -1
  566. package/src/services/notification.service.ts +47 -15
  567. package/src/services/ppm-password.ts +26 -0
  568. package/src/services/project-name-for-path.ts +18 -0
  569. package/src/services/query-audit/query-audit.service.ts +7 -4
  570. package/src/services/remote-desktop/access-unit-assembler.ts +11 -7
  571. package/src/services/remote-desktop/nal-splitter.ts +14 -1
  572. package/src/services/remote-desktop/remote-desktop-capture-wayland.ts +47 -21
  573. package/src/services/remote-desktop/remote-desktop-encoder-args.ts +5 -3
  574. package/src/services/session-file-baselines/session-file-baselines.service.ts +48 -0
  575. package/src/services/session-file-baselines/session-file-blame.ts +57 -24
  576. package/src/services/session-file-baselines/session-file-changes.service.ts +220 -22
  577. package/src/services/session-file-baselines/session-file-history.ts +5 -1
  578. package/src/services/session-file-baselines/session-file-writes.ts +28 -0
  579. package/src/services/sliding-window-limiter.ts +106 -0
  580. package/src/services/tab-tools-mcp/open-url-tool.ts +149 -0
  581. package/src/services/tab-tools-mcp/tab-open-broker.ts +12 -4
  582. package/src/services/tab-tools-mcp/tab-tools-mcp-endpoint.ts +66 -22
  583. package/src/services/tab-tools-mcp/tab-tools-mcp-tokens.ts +3 -1
  584. package/src/services/tab-tools-mcp/tab-tools-mcp-tool.ts +78 -6
  585. package/src/services/tab-tools-mcp/terminal-text.ts +45 -0
  586. package/src/services/tab-tools-mcp/terminal-tools.ts +297 -0
  587. package/src/services/terminal.service.ts +39 -4
  588. package/src/shared/db-ai-tools.ts +118 -0
  589. package/src/shared/db-query-script.ts +16 -0
  590. package/src/shared/design-comment-thread-types.ts +80 -0
  591. package/src/shared/design-comment-types.ts +53 -4
  592. package/src/shared/design-share-guest-types.ts +59 -0
  593. package/src/shared/design-share-types.ts +100 -0
  594. package/src/shared/notification-settings.ts +4 -3
  595. package/src/shared/ppm-tools.ts +39 -0
  596. package/src/shared/session-file-changes.ts +16 -0
  597. package/src/shared/tab-open-protocol.ts +50 -6
  598. package/src/shared/untrusted-text.ts +15 -1
  599. package/src/types/chat.ts +7 -1
  600. package/src/types/config.ts +5 -2
  601. package/src/types/database.ts +6 -0
  602. package/src/web/components/chat/chat-history-bar.tsx +10 -6
  603. package/src/web/components/chat/chat-tab.tsx +7 -1
  604. package/src/web/components/chat/db-execute-approval-card.tsx +100 -0
  605. package/src/web/components/chat/db-tool-card.tsx +42 -0
  606. package/src/web/components/chat/device-tool-card.tsx +45 -0
  607. package/src/web/components/chat/message-input.tsx +9 -6
  608. package/src/web/components/chat/message-list.tsx +6 -1
  609. package/src/web/components/chat/message-markdown.tsx +6 -3
  610. package/src/web/components/chat/message-user-bubble.tsx +2 -1
  611. package/src/web/components/chat/model-thinking-selector.tsx +6 -4
  612. package/src/web/components/chat/prompt-cache-chip.tsx +1 -1
  613. package/src/web/components/chat/running-agents-bar.tsx +164 -76
  614. package/src/web/components/chat/session-changes-bar.tsx +46 -13
  615. package/src/web/components/chat/tool-cards.tsx +29 -1
  616. package/src/web/components/chat/turn-change-rollup.tsx +8 -1
  617. package/src/web/components/chat/usage-badge.tsx +3 -3
  618. package/src/web/components/database/query/query-run-state.ts +11 -1
  619. package/src/web/components/database/query/query-tab.tsx +33 -7
  620. package/src/web/components/database/query/use-query-runner.ts +3 -0
  621. package/src/web/components/database/query/write-once-dialog.tsx +70 -0
  622. package/src/web/components/design/canvas/design-canvas-pane.tsx +5 -2
  623. package/src/web/components/design/comments/comment-author-label.tsx +23 -0
  624. package/src/web/components/design/comments/comment-composer.tsx +6 -14
  625. package/src/web/components/design/comments/comment-pins-overlay.tsx +8 -3
  626. package/src/web/components/design/comments/comment-thread-replies.tsx +82 -0
  627. package/src/web/components/design/comments/comment-thread-text-box.tsx +69 -0
  628. package/src/web/components/design/comments/comment-thread-view.tsx +115 -0
  629. package/src/web/components/design/comments/comments-panel.tsx +33 -10
  630. package/src/web/components/design/comments/comments-send-preview.tsx +20 -8
  631. package/src/web/components/design/comments/design-comments-layer.tsx +3 -1
  632. package/src/web/components/design/comments/use-comment-pins.ts +3 -0
  633. package/src/web/components/design/comments/use-design-comments-feature.ts +40 -25
  634. package/src/web/components/design/comments/use-design-comments.ts +44 -12
  635. package/src/web/components/design/design-split-layout.tsx +106 -10
  636. package/src/web/components/design/design-tab-context.ts +2 -0
  637. package/src/web/components/design/design-tab.tsx +5 -1
  638. package/src/web/components/design/design-toolbar.tsx +24 -4
  639. package/src/web/components/design/share/design-share-dialog.tsx +81 -0
  640. package/src/web/components/design/share/new-share-link-form.tsx +85 -0
  641. package/src/web/components/design/share/share-address-block.tsx +101 -0
  642. package/src/web/components/design/share/share-changed-files.tsx +30 -0
  643. package/src/web/components/design/share/share-expiry-picker.tsx +44 -0
  644. package/src/web/components/design/share/share-repin-panel.tsx +64 -0
  645. package/src/web/components/design/share/share-row-panel.tsx +35 -0
  646. package/src/web/components/design/share/share-version-picker.tsx +67 -0
  647. package/src/web/components/design/share/shared-link-action-panels.tsx +120 -0
  648. package/src/web/components/design/share/shared-link-row.tsx +131 -0
  649. package/src/web/components/design/share/shared-links-list.tsx +33 -0
  650. package/src/web/components/design/share/use-share-address.ts +74 -0
  651. package/src/web/components/design/share/use-share-links.ts +93 -0
  652. package/src/web/components/design/use-design-layout.ts +7 -4
  653. package/src/web/components/editor/diff-viewer.tsx +16 -12
  654. package/src/web/components/editor/docx-preview.tsx +7 -2
  655. package/src/web/components/floating-window/close-window.ts +32 -0
  656. package/src/web/components/floating-window/floating-window.tsx +65 -24
  657. package/src/web/components/floating-window/open-tab-in-pip.ts +3 -0
  658. package/src/web/components/floating-window/use-window-drag.ts +33 -7
  659. package/src/web/components/floating-window/use-window-meta.ts +138 -0
  660. package/src/web/components/floating-window/window-chrome-contract.ts +19 -2
  661. package/src/web/components/floating-window/window-dock-layout.ts +72 -0
  662. package/src/web/components/floating-window/window-dock-list.tsx +156 -0
  663. package/src/web/components/floating-window/window-dock.tsx +192 -0
  664. package/src/web/components/floating-window/window-geometry.ts +39 -1
  665. package/src/web/components/floating-window/window-layer.tsx +59 -23
  666. package/src/web/components/floating-window/window-persistence.ts +16 -3
  667. package/src/web/components/floating-window/window-store-types.ts +13 -2
  668. package/src/web/components/floating-window/window-store.ts +75 -8
  669. package/src/web/components/floating-window/window-title-identity.tsx +86 -0
  670. package/src/web/components/layout/status-bar.tsx +3 -0
  671. package/src/web/components/layout/tab-pop-out-menu-item.tsx +2 -2
  672. package/src/web/components/logs/open-logs.ts +0 -1
  673. package/src/web/components/os-explorer/actions/explorer-actions-upload.ts +2 -1
  674. package/src/web/components/os-explorer/skins/macos-window-chrome.tsx +17 -11
  675. package/src/web/components/os-explorer/skins/windows-window-chrome.tsx +14 -5
  676. package/src/web/components/remote-desktop/use-remote-desktop-readiness.ts +8 -3
  677. package/src/web/components/settings/accounts/account-add-dialog.tsx +25 -13
  678. package/src/web/components/settings/accounts/claude-accounts-section.tsx +3 -3
  679. package/src/web/components/settings/ai-settings-section.tsx +0 -20
  680. package/src/web/components/settings/design-settings-section.tsx +3 -0
  681. package/src/web/components/settings/design-window-setting.tsx +28 -0
  682. package/src/web/components/settings/settings-categories.ts +3 -0
  683. package/src/web/components/settings/settings-section-content.tsx +1 -0
  684. package/src/web/components/settings/tools-settings-section.tsx +120 -0
  685. package/src/web/components/shared/docx-html-sanitize.ts +59 -0
  686. package/src/web/components/shared/markdown-code-block.tsx +3 -1
  687. package/src/web/components/shared/markdown-renderer.tsx +15 -3
  688. package/src/web/components/shared/markdown-sanitize.ts +65 -0
  689. package/src/web/components/web-preview/web-preview-tab.tsx +6 -3
  690. package/src/web/design-share-page/index.html +17 -0
  691. package/src/web/design-share-page/main.tsx +11 -0
  692. package/src/web/design-share-page/share-api.ts +131 -0
  693. package/src/web/design-share-page/share-app.tsx +14 -0
  694. package/src/web/design-share-page/share-bottom-sheet.tsx +61 -0
  695. package/src/web/design-share-page/share-canvas.tsx +92 -0
  696. package/src/web/design-share-page/share-composer.tsx +104 -0
  697. package/src/web/design-share-page/share-entry.tsx +92 -0
  698. package/src/web/design-share-page/share-identity.ts +81 -0
  699. package/src/web/design-share-page/share-name-prompt.tsx +59 -0
  700. package/src/web/design-share-page/share-panel-content.tsx +57 -0
  701. package/src/web/design-share-page/share-pins-overlay.tsx +50 -0
  702. package/src/web/design-share-page/share-review.tsx +123 -0
  703. package/src/web/design-share-page/share-states.tsx +78 -0
  704. package/src/web/design-share-page/share-thread-model.ts +83 -0
  705. package/src/web/design-share-page/share-thread-view.tsx +61 -0
  706. package/src/web/design-share-page/share-threads-panel.tsx +103 -0
  707. package/src/web/design-share-page/share-toolbar.tsx +105 -0
  708. package/src/web/design-share-page/share-ui.ts +30 -0
  709. package/src/web/design-share-page/share.css +63 -0
  710. package/src/web/design-share-page/use-share-canvas.ts +51 -0
  711. package/src/web/design-share-page/use-share-info.ts +34 -0
  712. package/src/web/design-share-page/use-share-session.ts +75 -0
  713. package/src/web/design-share-page/use-share-threads.ts +139 -0
  714. package/src/web/hooks/use-chat.ts +5 -2
  715. package/src/web/hooks/use-design-session-redirect.ts +3 -2
  716. package/src/web/hooks/use-git-repo.ts +36 -16
  717. package/src/web/hooks/use-global-events.ts +4 -0
  718. package/src/web/hooks/use-inline-blame.ts +17 -11
  719. package/src/web/hooks/use-notification-clicks.ts +23 -5
  720. package/src/web/hooks/use-session-file-changes.ts +118 -41
  721. package/src/web/hooks/use-url-sync.ts +5 -4
  722. package/src/web/lib/api-settings.ts +2 -0
  723. package/src/web/lib/chat-attempt-lifecycle.ts +3 -1
  724. package/src/web/lib/db-tool-call.ts +57 -0
  725. package/src/web/lib/design/api-design-comments.ts +39 -9
  726. package/src/web/lib/design/api-design-shares.ts +47 -0
  727. package/src/web/lib/design/design-comments-prompt.ts +108 -23
  728. package/src/web/lib/design/design-layout-mode.ts +16 -1
  729. package/src/web/lib/design/design-share-address-state.ts +88 -0
  730. package/src/web/lib/design/design-share-expiry.ts +96 -0
  731. package/src/web/lib/design/design-share-link-status.ts +66 -0
  732. package/src/web/lib/design/design-view-prefs.ts +20 -1
  733. package/src/web/lib/design/open-design-tab.ts +54 -1
  734. package/src/web/lib/git-repo-scope.ts +60 -0
  735. package/src/web/lib/icons.generated.tsx +3 -1
  736. package/src/web/lib/model-display-name.ts +16 -0
  737. package/src/web/lib/open-ai-tab.ts +129 -19
  738. package/src/web/lib/running-agent-rows.ts +52 -0
  739. package/src/web/lib/session-file-changes-client.ts +6 -0
  740. package/src/web/lib/session-file-changes.ts +13 -0
  741. package/src/web/lib/tab-tool-call.ts +37 -1
  742. package/src/web/lib/utils.ts +4 -1
  743. package/src/web/stores/panel-store.ts +13 -1
  744. package/src/web/stores/panel-utils.ts +9 -4
  745. package/src/web/stores/settings-store.ts +14 -0
  746. package/src/web/stores/window-panel-actions.ts +21 -3
  747. package/src/web/stores/window-panel-persistence.ts +2 -1
  748. package/src/web/sw-notification-click.ts +12 -1
  749. package/templates/skill/SKILL.md.tmpl +2 -1
  750. package/templates/skill/common-tasks.md +6 -0
  751. package/vite.config.ts +10 -0
  752. package/vite.share.config.ts +43 -0
  753. package/dist/web/assets/accounts-settings-section-DU-lTifs.js +0 -1
  754. package/dist/web/assets/accounts-settings-section-DU-lTifs.js.br +0 -0
  755. package/dist/web/assets/accounts-settings-section-DU-lTifs.js.gz +0 -0
  756. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js +0 -1
  757. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.br +0 -0
  758. package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.gz +0 -0
  759. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js +0 -2
  760. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.br +0 -0
  761. package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.gz +0 -0
  762. package/dist/web/assets/agent-session-sheet-store-BoBrAw5i.js +0 -1
  763. package/dist/web/assets/agent-session-window-content-CB_uvabH.js +0 -1
  764. package/dist/web/assets/agent-session-window-content-CB_uvabH.js.br +0 -0
  765. package/dist/web/assets/agent-session-window-content-CB_uvabH.js.gz +0 -0
  766. package/dist/web/assets/ai-resource-editor-Czearm3I.js +0 -1
  767. package/dist/web/assets/ai-resource-editor-Czearm3I.js.br +0 -0
  768. package/dist/web/assets/ai-resource-editor-Czearm3I.js.gz +0 -0
  769. package/dist/web/assets/ai-settings-section-AOgAUCgH.js +0 -1
  770. package/dist/web/assets/ai-settings-section-B_OFMlrt.js +0 -1
  771. package/dist/web/assets/ai-settings-section-B_OFMlrt.js.br +0 -0
  772. package/dist/web/assets/ai-settings-section-B_OFMlrt.js.gz +0 -0
  773. package/dist/web/assets/android-tab-L7DmLfHG.js +0 -2
  774. package/dist/web/assets/android-tab-L7DmLfHG.js.br +0 -0
  775. package/dist/web/assets/android-tab-L7DmLfHG.js.gz +0 -0
  776. package/dist/web/assets/api-client-DAQfiXg0.js +0 -1
  777. package/dist/web/assets/api-client-OiA8Ida1.js +0 -1
  778. package/dist/web/assets/api-client-OiA8Ida1.js.br +0 -0
  779. package/dist/web/assets/api-client-OiA8Ida1.js.gz +0 -0
  780. package/dist/web/assets/api-settings-D2H6gjen.js +0 -1
  781. package/dist/web/assets/api-settings-D2H6gjen.js.br +0 -0
  782. package/dist/web/assets/api-settings-D2H6gjen.js.gz +0 -0
  783. package/dist/web/assets/api-settings-DHhcUHtx.js +0 -1
  784. package/dist/web/assets/api-themes-CE8gPZ3X.js +0 -1
  785. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js +0 -1
  786. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.br +0 -0
  787. package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.gz +0 -0
  788. package/dist/web/assets/apps-panel-DaojtUvh.js +0 -1
  789. package/dist/web/assets/apps-panel-DaojtUvh.js.br +0 -0
  790. package/dist/web/assets/apps-panel-DaojtUvh.js.gz +0 -0
  791. package/dist/web/assets/audio-preview-CWcPZqTA.js +0 -1
  792. package/dist/web/assets/audio-preview-CWcPZqTA.js.br +0 -4
  793. package/dist/web/assets/audio-preview-CWcPZqTA.js.gz +0 -0
  794. package/dist/web/assets/branch-review-tab-9UB4ccpF.js +0 -1
  795. package/dist/web/assets/branch-review-tab-9UB4ccpF.js.br +0 -0
  796. package/dist/web/assets/branch-review-tab-9UB4ccpF.js.gz +0 -0
  797. package/dist/web/assets/button-Br60hGkw.js +0 -1
  798. package/dist/web/assets/button-Br60hGkw.js.br +0 -0
  799. package/dist/web/assets/button-Br60hGkw.js.gz +0 -0
  800. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js +0 -1
  801. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.br +0 -0
  802. package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.gz +0 -0
  803. package/dist/web/assets/chat-tab-DMVb_mgx.js +0 -1
  804. package/dist/web/assets/chat-tab-DMVb_mgx.js.br +0 -0
  805. package/dist/web/assets/chat-tab-DMVb_mgx.js.gz +0 -0
  806. package/dist/web/assets/chat-tab-s7uAnh-h.js +0 -17
  807. package/dist/web/assets/chat-tab-s7uAnh-h.js.br +0 -0
  808. package/dist/web/assets/chat-tab-s7uAnh-h.js.gz +0 -0
  809. package/dist/web/assets/code-editor-JK49X9EX.js +0 -10
  810. package/dist/web/assets/code-editor-JK49X9EX.js.br +0 -0
  811. package/dist/web/assets/code-editor-JK49X9EX.js.gz +0 -0
  812. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js +0 -1
  813. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.br +0 -0
  814. package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.gz +0 -0
  815. package/dist/web/assets/conflict-editor-rOpVkK9P.js +0 -19
  816. package/dist/web/assets/conflict-editor-rOpVkK9P.js.br +0 -0
  817. package/dist/web/assets/conflict-editor-rOpVkK9P.js.gz +0 -0
  818. package/dist/web/assets/connection-form-tab-BGmb918E.js +0 -4
  819. package/dist/web/assets/connection-form-tab-BGmb918E.js.br +0 -0
  820. package/dist/web/assets/connection-form-tab-BGmb918E.js.gz +0 -0
  821. package/dist/web/assets/context-menu-BoQ6lxte.js +0 -1
  822. package/dist/web/assets/context-menu-BoQ6lxte.js.br +0 -0
  823. package/dist/web/assets/context-menu-BoQ6lxte.js.gz +0 -0
  824. package/dist/web/assets/createLucideIcon-DBXq3G0e.js +0 -1
  825. package/dist/web/assets/createLucideIcon-DBXq3G0e.js.br +0 -0
  826. package/dist/web/assets/createLucideIcon-DBXq3G0e.js.gz +0 -0
  827. package/dist/web/assets/csv-preview-CM7su92m.js +0 -10
  828. package/dist/web/assets/csv-preview-CM7su92m.js.br +0 -0
  829. package/dist/web/assets/csv-preview-CM7su92m.js.gz +0 -0
  830. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js +0 -1
  831. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.br +0 -0
  832. package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.gz +0 -0
  833. package/dist/web/assets/db-explorer-store-BcLxq-X0.js +0 -1
  834. package/dist/web/assets/db-explorer-store-BcLxq-X0.js.br +0 -0
  835. package/dist/web/assets/db-explorer-store-BcLxq-X0.js.gz +0 -0
  836. package/dist/web/assets/db-tab-parts-DvmnlA6V.js +0 -1
  837. package/dist/web/assets/db-tab-parts-DvmnlA6V.js.br +0 -0
  838. package/dist/web/assets/db-tab-parts-DvmnlA6V.js.gz +0 -0
  839. package/dist/web/assets/db-types-9ac-eYxf.js +0 -1
  840. package/dist/web/assets/db-types-9ac-eYxf.js.br +0 -0
  841. package/dist/web/assets/db-types-9ac-eYxf.js.gz +0 -0
  842. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js +0 -1
  843. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.br +0 -0
  844. package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.gz +0 -0
  845. package/dist/web/assets/design-export-client-ClwRg798.js +0 -1
  846. package/dist/web/assets/design-export-client-ClwRg798.js.br +0 -0
  847. package/dist/web/assets/design-export-client-ClwRg798.js.gz +0 -0
  848. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js +0 -1
  849. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.br +0 -0
  850. package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.gz +0 -0
  851. package/dist/web/assets/design-settings-section-CuxZSLAr.js +0 -2
  852. package/dist/web/assets/design-settings-section-CuxZSLAr.js.br +0 -0
  853. package/dist/web/assets/design-settings-section-CuxZSLAr.js.gz +0 -0
  854. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js +0 -3
  855. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.br +0 -0
  856. package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.gz +0 -0
  857. package/dist/web/assets/design-tab-JlKmHVkd.js +0 -57
  858. package/dist/web/assets/design-tab-JlKmHVkd.js.br +0 -0
  859. package/dist/web/assets/design-tab-JlKmHVkd.js.gz +0 -0
  860. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js +0 -1
  861. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.br +0 -0
  862. package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.gz +0 -0
  863. package/dist/web/assets/dialog-DOaEX6AK.js +0 -1
  864. package/dist/web/assets/dialog-DOaEX6AK.js.br +0 -0
  865. package/dist/web/assets/dialog-DOaEX6AK.js.gz +0 -0
  866. package/dist/web/assets/diff-viewer-FidH7Nsq.js +0 -4
  867. package/dist/web/assets/diff-viewer-FidH7Nsq.js.br +0 -0
  868. package/dist/web/assets/diff-viewer-FidH7Nsq.js.gz +0 -0
  869. package/dist/web/assets/docx-preview-ENiLGqzy.js +0 -12
  870. package/dist/web/assets/docx-preview-ENiLGqzy.js.br +0 -0
  871. package/dist/web/assets/docx-preview-ENiLGqzy.js.gz +0 -0
  872. package/dist/web/assets/dropdown-menu-DB3yyoVz.js +0 -1
  873. package/dist/web/assets/dropdown-menu-DB3yyoVz.js.br +0 -0
  874. package/dist/web/assets/dropdown-menu-DB3yyoVz.js.gz +0 -0
  875. package/dist/web/assets/edit-diff-preview-D4EqC86X.js +0 -7
  876. package/dist/web/assets/edit-diff-preview-D4EqC86X.js.br +0 -0
  877. package/dist/web/assets/edit-diff-preview-D4EqC86X.js.gz +0 -0
  878. package/dist/web/assets/editor-dialog-DC7dUWAX.js +0 -1
  879. package/dist/web/assets/editor-dialog-DC7dUWAX.js.br +0 -0
  880. package/dist/web/assets/editor-dialog-DC7dUWAX.js.gz +0 -0
  881. package/dist/web/assets/editor-language-service-0pN0TxYN.js +0 -1
  882. package/dist/web/assets/editor-language-service-0pN0TxYN.js.br +0 -0
  883. package/dist/web/assets/editor-language-service-0pN0TxYN.js.gz +0 -0
  884. package/dist/web/assets/explorer-body-tFaUp9_Q.js +0 -2
  885. package/dist/web/assets/explorer-body-tFaUp9_Q.js.br +0 -0
  886. package/dist/web/assets/explorer-body-tFaUp9_Q.js.gz +0 -0
  887. package/dist/web/assets/explorer-model-BmgFEsj1.js +0 -1
  888. package/dist/web/assets/explorer-model-BmgFEsj1.js.br +0 -0
  889. package/dist/web/assets/explorer-model-BmgFEsj1.js.gz +0 -0
  890. package/dist/web/assets/explorer-window-content-XnRTZT_X.js +0 -1
  891. package/dist/web/assets/explorer-window-content-XnRTZT_X.js.br +0 -0
  892. package/dist/web/assets/explorer-window-content-XnRTZT_X.js.gz +0 -0
  893. package/dist/web/assets/extension-manager-section-DEbwRPf1.js +0 -1
  894. package/dist/web/assets/extension-manager-section-DEbwRPf1.js.br +0 -0
  895. package/dist/web/assets/extension-manager-section-DEbwRPf1.js.gz +0 -0
  896. package/dist/web/assets/extension-webview-C9ApceLU.js +0 -12
  897. package/dist/web/assets/extension-webview-C9ApceLU.js.br +0 -0
  898. package/dist/web/assets/extension-webview-C9ApceLU.js.gz +0 -0
  899. package/dist/web/assets/file-diff-lX1a7RLF.js +0 -1
  900. package/dist/web/assets/file-icons-DpwcJLL4.js +0 -1
  901. package/dist/web/assets/file-icons-DpwcJLL4.js.br +0 -0
  902. package/dist/web/assets/file-icons-DpwcJLL4.js.gz +0 -0
  903. package/dist/web/assets/file-store-Bk1WYfdy.js +0 -1
  904. package/dist/web/assets/file-store-Bk1WYfdy.js.br +0 -0
  905. package/dist/web/assets/file-store-Bk1WYfdy.js.gz +0 -0
  906. package/dist/web/assets/files-settings-section-C8MacVFQ.js +0 -1
  907. package/dist/web/assets/files-settings-section-C8MacVFQ.js.br +0 -0
  908. package/dist/web/assets/files-settings-section-C8MacVFQ.js.gz +0 -0
  909. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js +0 -1
  910. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.br +0 -0
  911. package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.gz +0 -0
  912. package/dist/web/assets/format-file-meta-C0LKHE3e.js +0 -1
  913. package/dist/web/assets/format-file-meta-C0LKHE3e.js.br +0 -0
  914. package/dist/web/assets/format-file-meta-C0LKHE3e.js.gz +0 -0
  915. package/dist/web/assets/fs-api-BQrIEcvo.js +0 -1
  916. package/dist/web/assets/fs-api-BQrIEcvo.js.br +0 -0
  917. package/dist/web/assets/fs-api-BQrIEcvo.js.gz +0 -0
  918. package/dist/web/assets/general-settings-section-DZRRGdlQ.js +0 -1
  919. package/dist/web/assets/general-settings-section-DZRRGdlQ.js.br +0 -0
  920. package/dist/web/assets/general-settings-section-DZRRGdlQ.js.gz +0 -0
  921. package/dist/web/assets/git-commit-horizontal-BVihXafd.js +0 -1
  922. package/dist/web/assets/git-log-panel-g2pBnu6r.js +0 -1
  923. package/dist/web/assets/git-log-panel-g2pBnu6r.js.br +0 -0
  924. package/dist/web/assets/git-log-panel-g2pBnu6r.js.gz +0 -0
  925. package/dist/web/assets/git-repo-store-BOYLnV67.js +0 -1
  926. package/dist/web/assets/git-repo-store-BOYLnV67.js.br +0 -0
  927. package/dist/web/assets/git-repo-store-BOYLnV67.js.gz +0 -0
  928. package/dist/web/assets/git-review-tab-BzI5mxWd.js +0 -3
  929. package/dist/web/assets/git-review-tab-BzI5mxWd.js.br +0 -0
  930. package/dist/web/assets/git-review-tab-BzI5mxWd.js.gz +0 -0
  931. package/dist/web/assets/glide-data-grid-BxvI3ehr.js +0 -177
  932. package/dist/web/assets/glide-data-grid-BxvI3ehr.js.br +0 -0
  933. package/dist/web/assets/glide-data-grid-BxvI3ehr.js.gz +0 -0
  934. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js +0 -2
  935. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.br +0 -0
  936. package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.gz +0 -0
  937. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js +0 -1
  938. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.br +0 -0
  939. package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.gz +0 -0
  940. package/dist/web/assets/icons-JMA45Ifw.js +0 -1
  941. package/dist/web/assets/icons-JMA45Ifw.js.br +0 -0
  942. package/dist/web/assets/icons-JMA45Ifw.js.gz +0 -0
  943. package/dist/web/assets/image-preview-D7KR11Xo.js +0 -1
  944. package/dist/web/assets/impexp-tab-JF6JF8eO.js +0 -1
  945. package/dist/web/assets/impexp-tab-JF6JF8eO.js.br +0 -0
  946. package/dist/web/assets/impexp-tab-JF6JF8eO.js.gz +0 -0
  947. package/dist/web/assets/index-DyYGWFVa.css +0 -1
  948. package/dist/web/assets/index-DyYGWFVa.css.br +0 -0
  949. package/dist/web/assets/index-DyYGWFVa.css.gz +0 -0
  950. package/dist/web/assets/index-ItT-dTPV.js +0 -59
  951. package/dist/web/assets/index-ItT-dTPV.js.br +0 -0
  952. package/dist/web/assets/index-ItT-dTPV.js.gz +0 -0
  953. package/dist/web/assets/input-CKGoVpYv.js +0 -1
  954. package/dist/web/assets/jira-watcher-section-CvyXLyjO.js +0 -1
  955. package/dist/web/assets/keybindings-store-CeEtx6js.js +0 -1
  956. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js +0 -1
  957. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.br +0 -0
  958. package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.gz +0 -0
  959. package/dist/web/assets/language-servers-section-DiYURB24.js +0 -2
  960. package/dist/web/assets/language-servers-section-DiYURB24.js.br +0 -0
  961. package/dist/web/assets/language-servers-section-DiYURB24.js.gz +0 -0
  962. package/dist/web/assets/logs-app-CJlNqOdc.js +0 -13
  963. package/dist/web/assets/logs-app-CJlNqOdc.js.br +0 -0
  964. package/dist/web/assets/logs-app-CJlNqOdc.js.gz +0 -0
  965. package/dist/web/assets/logs-tab-BoAlm_8H.js +0 -1
  966. package/dist/web/assets/logs-window-content-nNm4jl1s.js +0 -1
  967. package/dist/web/assets/lsp-client-LnKiMWeG.js +0 -1
  968. package/dist/web/assets/lsp-client-LnKiMWeG.js.br +0 -0
  969. package/dist/web/assets/lsp-client-LnKiMWeG.js.gz +0 -0
  970. package/dist/web/assets/markdown-renderer-8Hef5MLx.js +0 -1
  971. package/dist/web/assets/markdown-renderer-BH_CFPJw.js +0 -5
  972. package/dist/web/assets/markdown-renderer-BH_CFPJw.js.br +0 -0
  973. package/dist/web/assets/markdown-renderer-BH_CFPJw.js.gz +0 -0
  974. package/dist/web/assets/media-url-CsdZ6q_T.js +0 -1
  975. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js +0 -1
  976. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.br +0 -0
  977. package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.gz +0 -0
  978. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js +0 -1
  979. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.br +0 -0
  980. package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.gz +0 -0
  981. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js +0 -1
  982. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.br +0 -0
  983. package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.gz +0 -0
  984. package/dist/web/assets/new-design-dialog-CgBUrVFx.js +0 -1
  985. package/dist/web/assets/new-design-dialog-CgBUrVFx.js.br +0 -0
  986. package/dist/web/assets/new-design-dialog-CgBUrVFx.js.gz +0 -0
  987. package/dist/web/assets/notification-store-CXC7u6MW.js +0 -1
  988. package/dist/web/assets/notifications-settings-section-CPbx23nU.js +0 -1
  989. package/dist/web/assets/notifications-settings-section-CPbx23nU.js.br +0 -0
  990. package/dist/web/assets/notifications-settings-section-CPbx23nU.js.gz +0 -0
  991. package/dist/web/assets/onboarding-entry--MWe4amV.js +0 -1
  992. package/dist/web/assets/onboarding-entry--MWe4amV.js.br +0 -0
  993. package/dist/web/assets/onboarding-entry--MWe4amV.js.gz +0 -0
  994. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js +0 -1
  995. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.br +0 -0
  996. package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.gz +0 -0
  997. package/dist/web/assets/open-db-tabs-CkQe49j_.js +0 -1
  998. package/dist/web/assets/open-db-tabs-CkQe49j_.js.br +0 -0
  999. package/dist/web/assets/open-db-tabs-CkQe49j_.js.gz +0 -0
  1000. package/dist/web/assets/open-settings-DsGBn73g.js +0 -1
  1001. package/dist/web/assets/overview-panel-CcUGDvnt.js +0 -1
  1002. package/dist/web/assets/overview-panel-CcUGDvnt.js.br +0 -0
  1003. package/dist/web/assets/overview-panel-CcUGDvnt.js.gz +0 -0
  1004. package/dist/web/assets/panel-store-DmP16Fo0.js +0 -1
  1005. package/dist/web/assets/panel-store-DmP16Fo0.js.br +0 -0
  1006. package/dist/web/assets/panel-store-DmP16Fo0.js.gz +0 -0
  1007. package/dist/web/assets/patch-tab-metadata-B-jH5svY.js +0 -1
  1008. package/dist/web/assets/pdf-preview-DMUIWb9B.js +0 -1
  1009. package/dist/web/assets/pdf-preview-DMUIWb9B.js.br +0 -0
  1010. package/dist/web/assets/pdf-preview-DMUIWb9B.js.gz +0 -0
  1011. package/dist/web/assets/performance-panel-CJDLUwrs.js +0 -3
  1012. package/dist/web/assets/performance-panel-CJDLUwrs.js.br +0 -0
  1013. package/dist/web/assets/performance-panel-CJDLUwrs.js.gz +0 -0
  1014. package/dist/web/assets/portal-container-context-BXAsDqrB.js +0 -1
  1015. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js +0 -1
  1016. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.br +0 -0
  1017. package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.gz +0 -0
  1018. package/dist/web/assets/pptx-export-BxmgltJ4.js +0 -111
  1019. package/dist/web/assets/pptx-export-BxmgltJ4.js.br +0 -0
  1020. package/dist/web/assets/pptx-export-BxmgltJ4.js.gz +0 -0
  1021. package/dist/web/assets/problems-panel-DX32QDH_.js +0 -1
  1022. package/dist/web/assets/problems-panel-DX32QDH_.js.br +0 -0
  1023. package/dist/web/assets/problems-panel-DX32QDH_.js.gz +0 -0
  1024. package/dist/web/assets/process-row-format-CBw-CQCx.js +0 -1
  1025. package/dist/web/assets/process-table-CX-NhOg6.js +0 -1
  1026. package/dist/web/assets/process-table-CX-NhOg6.js.br +0 -0
  1027. package/dist/web/assets/process-table-CX-NhOg6.js.gz +0 -0
  1028. package/dist/web/assets/project-framework-store-Bi5dyHdx.js +0 -1
  1029. package/dist/web/assets/project-store-CEGoLMOl.js +0 -1
  1030. package/dist/web/assets/project-store-CEGoLMOl.js.br +0 -0
  1031. package/dist/web/assets/project-store-CEGoLMOl.js.gz +0 -0
  1032. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js +0 -1
  1033. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.br +0 -0
  1034. package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.gz +0 -0
  1035. package/dist/web/assets/query-audit-section-DTHI5GP7.js +0 -1
  1036. package/dist/web/assets/query-audit-section-DTHI5GP7.js.br +0 -0
  1037. package/dist/web/assets/query-audit-section-DTHI5GP7.js.gz +0 -0
  1038. package/dist/web/assets/query-tab-qMlIkHRk.js +0 -22
  1039. package/dist/web/assets/query-tab-qMlIkHRk.js.br +0 -0
  1040. package/dist/web/assets/query-tab-qMlIkHRk.js.gz +0 -0
  1041. package/dist/web/assets/react-PkBxFcos.js +0 -1
  1042. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js +0 -1
  1043. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.br +0 -0
  1044. package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.gz +0 -0
  1045. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js +0 -1
  1046. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.br +0 -0
  1047. package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.gz +0 -0
  1048. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js +0 -2
  1049. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.br +0 -0
  1050. package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.gz +0 -0
  1051. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js +0 -1
  1052. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.br +0 -0
  1053. package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.gz +0 -0
  1054. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js +0 -1
  1055. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.br +0 -0
  1056. package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.gz +0 -0
  1057. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js +0 -1
  1058. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.br +0 -0
  1059. package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.gz +0 -0
  1060. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js +0 -1
  1061. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.br +0 -0
  1062. package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.gz +0 -0
  1063. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js +0 -1
  1064. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.br +0 -0
  1065. package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.gz +0 -0
  1066. package/dist/web/assets/review-code-CfuJeLYd.js +0 -5
  1067. package/dist/web/assets/review-code-CfuJeLYd.js.br +0 -0
  1068. package/dist/web/assets/review-code-CfuJeLYd.js.gz +0 -0
  1069. package/dist/web/assets/run-in-terminal-Bk9Bw7G1.js +0 -1
  1070. package/dist/web/assets/run-in-terminal-button-DFPQUlZs.js +0 -1
  1071. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js +0 -1
  1072. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.br +0 -0
  1073. package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.gz +0 -0
  1074. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js +0 -1
  1075. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.br +0 -0
  1076. package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.gz +0 -0
  1077. package/dist/web/assets/scroll-area-6Am1KMiB.js +0 -1
  1078. package/dist/web/assets/scroll-area-6Am1KMiB.js.br +0 -0
  1079. package/dist/web/assets/scroll-area-6Am1KMiB.js.gz +0 -0
  1080. package/dist/web/assets/send-to-chat-Bcm_Lcog.js +0 -1
  1081. package/dist/web/assets/send-to-chat-Bcm_Lcog.js.br +0 -0
  1082. package/dist/web/assets/send-to-chat-Bcm_Lcog.js.gz +0 -0
  1083. package/dist/web/assets/separator-BOYUIPkH.js +0 -1
  1084. package/dist/web/assets/services-panel-CBRTsROB.js +0 -1
  1085. package/dist/web/assets/services-panel-CBRTsROB.js.br +0 -0
  1086. package/dist/web/assets/services-panel-CBRTsROB.js.gz +0 -0
  1087. package/dist/web/assets/session-changes-bar-BRopa3Dh.js +0 -1
  1088. package/dist/web/assets/session-changes-bar-BRopa3Dh.js.br +0 -0
  1089. package/dist/web/assets/session-changes-bar-BRopa3Dh.js.gz +0 -0
  1090. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js +0 -1
  1091. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.br +0 -0
  1092. package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.gz +0 -0
  1093. package/dist/web/assets/session-review-tab--kNB_FKQ.js +0 -6
  1094. package/dist/web/assets/session-review-tab--kNB_FKQ.js.br +0 -0
  1095. package/dist/web/assets/session-review-tab--kNB_FKQ.js.gz +0 -0
  1096. package/dist/web/assets/settings-body-B-s0fEjc.js +0 -1
  1097. package/dist/web/assets/settings-body-B-s0fEjc.js.br +0 -0
  1098. package/dist/web/assets/settings-body-B-s0fEjc.js.gz +0 -0
  1099. package/dist/web/assets/settings-categories-CcR9eL3x.js +0 -1
  1100. package/dist/web/assets/settings-categories-CcR9eL3x.js.br +0 -0
  1101. package/dist/web/assets/settings-categories-CcR9eL3x.js.gz +0 -0
  1102. package/dist/web/assets/settings-section-content-BJ35dy5r.js +0 -1
  1103. package/dist/web/assets/settings-section-content-DckksvTg.js +0 -2
  1104. package/dist/web/assets/settings-section-content-DckksvTg.js.br +0 -0
  1105. package/dist/web/assets/settings-section-content-DckksvTg.js.gz +0 -0
  1106. package/dist/web/assets/settings-store-WeJyQVL8.js +0 -2
  1107. package/dist/web/assets/settings-store-WeJyQVL8.js.br +0 -0
  1108. package/dist/web/assets/settings-store-WeJyQVL8.js.gz +0 -0
  1109. package/dist/web/assets/settings-tab-BlX33GEN.js +0 -1
  1110. package/dist/web/assets/settings-window-content-B-7yV1_q.js +0 -1
  1111. package/dist/web/assets/slash-command-picker-BBcy6w6m.js +0 -1
  1112. package/dist/web/assets/slash-command-picker-BBcy6w6m.js.br +0 -0
  1113. package/dist/web/assets/slash-command-picker-BBcy6w6m.js.gz +0 -0
  1114. package/dist/web/assets/sortable-header-B9gfWik4.js +0 -1
  1115. package/dist/web/assets/sortable-header-B9gfWik4.js.br +0 -0
  1116. package/dist/web/assets/sortable-header-B9gfWik4.js.gz +0 -0
  1117. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js +0 -5
  1118. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.br +0 -0
  1119. package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.gz +0 -0
  1120. package/dist/web/assets/sql-object-tab-DVo4bxRI.js +0 -1
  1121. package/dist/web/assets/sql-object-tab-DVo4bxRI.js.br +0 -0
  1122. package/dist/web/assets/sql-object-tab-DVo4bxRI.js.gz +0 -0
  1123. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js +0 -1
  1124. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.br +0 -0
  1125. package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.gz +0 -0
  1126. package/dist/web/assets/start-ellipsis-rBh37k0n.js +0 -1
  1127. package/dist/web/assets/structure-save-dialog-STK_RFCK.js +0 -1
  1128. package/dist/web/assets/structure-save-dialog-STK_RFCK.js.br +0 -0
  1129. package/dist/web/assets/structure-save-dialog-STK_RFCK.js.gz +0 -0
  1130. package/dist/web/assets/structure-tab-DuLnsTC4.js +0 -3
  1131. package/dist/web/assets/structure-tab-DuLnsTC4.js.br +0 -0
  1132. package/dist/web/assets/structure-tab-DuLnsTC4.js.gz +0 -0
  1133. package/dist/web/assets/system-monitor-body-BIjW16Pb.js +0 -2
  1134. package/dist/web/assets/system-monitor-body-BIjW16Pb.js.br +0 -0
  1135. package/dist/web/assets/system-monitor-body-BIjW16Pb.js.gz +0 -0
  1136. package/dist/web/assets/system-monitor-tab-B6_tC9LO.js +0 -1
  1137. package/dist/web/assets/system-monitor-window-content-CwBzqMUe.js +0 -1
  1138. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js +0 -1
  1139. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.br +0 -0
  1140. package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.gz +0 -0
  1141. package/dist/web/assets/tab-store-nNzRNfVV.js +0 -1
  1142. package/dist/web/assets/table-tab-B5asfTBP.js +0 -2
  1143. package/dist/web/assets/table-tab-B5asfTBP.js.br +0 -0
  1144. package/dist/web/assets/table-tab-B5asfTBP.js.gz +0 -0
  1145. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js +0 -1
  1146. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.br +0 -0
  1147. package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.gz +0 -0
  1148. package/dist/web/assets/terminal-tab-DpMONMVB.js +0 -3
  1149. package/dist/web/assets/terminal-tab-DpMONMVB.js.br +0 -0
  1150. package/dist/web/assets/terminal-tab-DpMONMVB.js.gz +0 -0
  1151. package/dist/web/assets/tool-cards-DoDKxqN4.js +0 -14
  1152. package/dist/web/assets/tool-cards-DoDKxqN4.js.br +0 -0
  1153. package/dist/web/assets/tool-cards-DoDKxqN4.js.gz +0 -0
  1154. package/dist/web/assets/use-at-most-wide-BQFi1Sjv.js +0 -1
  1155. package/dist/web/assets/use-blob-url-D7ElNPnW.js +0 -1
  1156. package/dist/web/assets/use-db-driver-installed-BscdI-wS.js +0 -1
  1157. package/dist/web/assets/use-db-read-DYuyNA5i.js +0 -1
  1158. package/dist/web/assets/use-db-read-DYuyNA5i.js.br +0 -0
  1159. package/dist/web/assets/use-db-read-DYuyNA5i.js.gz +0 -0
  1160. package/dist/web/assets/use-db-tab-Cr4lXxwF.js +0 -1
  1161. package/dist/web/assets/use-db-tab-Cr4lXxwF.js.br +0 -0
  1162. package/dist/web/assets/use-db-tab-Cr4lXxwF.js.gz +0 -0
  1163. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js +0 -1
  1164. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.br +0 -0
  1165. package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.gz +0 -0
  1166. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js +0 -1
  1167. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.br +0 -0
  1168. package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.gz +0 -0
  1169. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js +0 -16
  1170. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.br +0 -0
  1171. package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.gz +0 -0
  1172. package/dist/web/assets/use-is-mobile-BXHbkfs9.js +0 -1
  1173. package/dist/web/assets/use-lsp-BTVDYrt6.js +0 -6
  1174. package/dist/web/assets/use-lsp-BTVDYrt6.js.br +0 -0
  1175. package/dist/web/assets/use-lsp-BTVDYrt6.js.gz +0 -0
  1176. package/dist/web/assets/use-monaco-theme-DqnhExsm.js +0 -1
  1177. package/dist/web/assets/use-opener-focus-C5L5UUJs.js +0 -1
  1178. package/dist/web/assets/use-process-kill-D-SGQxDn.js +0 -1
  1179. package/dist/web/assets/use-process-kill-D-SGQxDn.js.br +0 -0
  1180. package/dist/web/assets/use-process-kill-D-SGQxDn.js.gz +0 -0
  1181. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js +0 -4
  1182. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.br +0 -0
  1183. package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.gz +0 -0
  1184. package/dist/web/assets/use-visual-viewport-CQ6-A0Dt.js +0 -1
  1185. package/dist/web/assets/use-websocket-C6RnlNVJ.js +0 -1
  1186. package/dist/web/assets/vendor-markdown-QKPNiWEd.js +0 -291
  1187. package/dist/web/assets/vendor-markdown-QKPNiWEd.js.br +0 -0
  1188. package/dist/web/assets/vendor-markdown-QKPNiWEd.js.gz +0 -0
  1189. package/dist/web/assets/vendor-ui-CS1GvlOm.js +0 -45
  1190. package/dist/web/assets/vendor-ui-CS1GvlOm.js.br +0 -0
  1191. package/dist/web/assets/vendor-ui-CS1GvlOm.js.gz +0 -0
  1192. package/dist/web/assets/video-preview-CYzeUPfH.js +0 -1
  1193. package/dist/web/assets/video-preview-CYzeUPfH.js.br +0 -0
  1194. package/dist/web/assets/video-preview-CYzeUPfH.js.gz +0 -0
  1195. package/dist/web/assets/voice-settings-section-C01d-toF.js +0 -1
  1196. package/dist/web/assets/voice-settings-section-C01d-toF.js.br +0 -0
  1197. package/dist/web/assets/voice-settings-section-C01d-toF.js.gz +0 -0
  1198. package/dist/web/assets/web-preview-tab-F5C3quQs.js +0 -1
  1199. package/dist/web/assets/web-preview-tab-F5C3quQs.js.br +0 -0
  1200. package/dist/web/assets/web-preview-tab-F5C3quQs.js.gz +0 -0
  1201. package/dist/web/assets/window-pip-registry-DSoB7T3k.js +0 -1
  1202. package/dist/web/assets/window-store-zJczRsv4.js +0 -1
  1203. package/dist/web/assets/window-store-zJczRsv4.js.br +0 -0
  1204. package/dist/web/assets/window-store-zJczRsv4.js.gz +0 -0
  1205. package/dist/web/assets/ws-auth-cWeQ7_61.js +0 -1
  1206. /package/dist/web/assets/{__vite-browser-external-B4VNaaaA.js → __vite-browser-external-DL4jXWNt.js} +0 -0
  1207. /package/dist/web/assets/{clipboard-D3XnL7CB.js → clipboard-D-VCry-F.js} +0 -0
  1208. /package/dist/web/assets/{clipboard-D3XnL7CB.js.br → clipboard-D-VCry-F.js.br} +0 -0
  1209. /package/dist/web/assets/{clipboard-D3XnL7CB.js.gz → clipboard-D-VCry-F.js.gz} +0 -0
  1210. /package/dist/web/assets/{code-fence-vHZyBehL.js → code-fence-BK57HRhJ.js} +0 -0
  1211. /package/dist/web/assets/{design-system-status-label-Cus6e2Df.js → design-system-status-label-KA4ESjWe.js} +0 -0
  1212. /package/dist/web/assets/{format-bytes-B2kC4sbB.js → format-bytes-he3TR0bV.js} +0 -0
  1213. /package/dist/web/assets/{session-turns-gmrmXzeg.js → session-turns-D3QpTtCq.js} +0 -0
  1214. /package/dist/web/assets/{session-turns-gmrmXzeg.js.br → session-turns-D3QpTtCq.js.br} +0 -0
  1215. /package/dist/web/assets/{session-turns-gmrmXzeg.js.gz → session-turns-D3QpTtCq.js.gz} +0 -0
  1216. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js → vendor-xterm-DRhOk3kW.js} +0 -0
  1217. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.br → vendor-xterm-DRhOk3kW.js.br} +0 -0
  1218. /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.gz → vendor-xterm-DRhOk3kW.js.gz} +0 -0
@@ -0,0 +1,3 @@
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{An as r,Wr as i,et as a,gr as o,gt as s,hn as c,jn as l,mn as u,ut as d,wn as f,xn as p}from"./icons-BwyIKaTT.js";import{k as m,r as h}from"./api-client-xQDlhUTu.js";import{t as g}from"./settings-store-B4mLp19V.js";import{n as _}from"./utils-Bslrbb-G.js";import"./portal-container-context-NBi-KGK0.js";import"./window-store-DqX_qmkQ.js";import{t as v}from"./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 y}from"./tab-store-D5I52eLN.js";import{r as b,t as x}from"./apply-theme-ORrEdHKT.js";import{r as S}from"./clipboard-D-VCry-F.js";import{t as C}from"./mobile-bottom-sheet-DArbIyrD.js";import"./use-visual-viewport-MmugpRg-.js";import{t as w}from"./resolve-theme-BqoL27BW.js";import{t as T}from"./ws-auth-CbF6GqxP.js";import{Pr as E,hi as D}from"./index-DLB3j_P0.js";import{r as O}from"./editor-font-CdxKRKX-.js";import{i as k}from"./send-to-chat-CWV1qd3c.js";import{t as A}from"./code-fence-BK57HRhJ.js";import{n as j,t as M}from"./run-in-terminal-ujoc25vj.js";import{i as N,n as P,r as F,t as I}from"./vendor-xterm-DRhOk3kW.js";var L=e(t(),1);function R(e){let t=e.tokens;if(e.terminal){let n=e.terminal.ansi;return{background:t.bgSolid,foreground:t.text,cursor:e.terminal.cursor,cursorAccent:e.terminal.cursorAccent??t.bgSolid,selectionBackground:e.terminal.selection,black:n[0],red:n[1],green:n[2],yellow:n[3],blue:n[4],magenta:n[5],cyan:n[6],white:n[7],brightBlack:n[8],brightRed:n[9],brightGreen:n[10],brightYellow:n[11],brightBlue:n[12],brightMagenta:n[13],brightCyan:n[14],brightWhite:n[15]}}let n=e.mode===`dark`,r=n?`#1b1f2a`:`#2b2f38`,i=n?`#d7dce8`:`#e9edf5`,a=t.text3,o=n?`#f7f9ff`:`#ffffff`;return{background:t.bgSolid,foreground:t.text,cursor:t.accent,cursorAccent:t.bgSolid,selectionBackground:t.accentWash,black:r,red:t.error,green:t.success,yellow:t.warning,blue:t.accent,magenta:t.accent2,cyan:t.info,white:i,brightBlack:a,brightRed:t.error,brightGreen:t.success,brightYellow:t.warning,brightBlue:t.accent,brightMagenta:t.accent2,brightCyan:t.info,brightWhite:o}}function z(e,t){return e>=20&&t>=2}function B(){let e=g.getState();return R(b()??w(e.themeStyle,e.themeMode,e.customThemes,e.customThemeId))}var ee=/[).,;:'"\]}>]+$/,te=/\bhttps?:\/\/[^\s<>"'`]+/g,ne=5e3,re=100,V=250,ie=3e3,ae=`RESIZE:`,oe=`PING`,se=`PONG`,ce=15e3,le=35e3;function H(e){let{sessionId:t,containerRef:n}=e,r=(0,L.useRef)(null),[i,a]=(0,L.useState)(null),o=(0,L.useRef)(null),s=(0,L.useRef)(null),c=(0,L.useRef)(null),l=(0,L.useRef)(0),u=(0,L.useRef)(!1),d=(0,L.useRef)(Date.now()),[f,p]=(0,L.useState)(!1),[m,h]=(0,L.useState)(!1),[g,_]=(0,L.useState)(!1),[v,y]=(0,L.useState)(!1),b=(0,L.useRef)(null),S=(0,L.useRef)(null),C=e.tabId?`ppm:terminal-session:${e.tabId}`:null,w=(0,L.useRef)((()=>{if(C)try{return localStorage.getItem(C)??t}catch{}return t})()),E=(0,L.useRef)(0),k=(0,L.useRef)(-1),A=(0,L.useCallback)(e=>{let t=s.current;t?.readyState===WebSocket.OPEN&&t.send(e)},[]),j=(0,L.useCallback)(()=>{b.current&&clearTimeout(b.current),b.current=setTimeout(()=>y(!0),V)},[]),M=(0,L.useCallback)(()=>r.current?.getSelection()??``,[]),R=(0,L.useCallback)(()=>{let e=r.current;if(!e)return``;let t=e.buffer.active,n=E.current,i=t.baseY+t.cursorY,a=[];for(let e=n;e<=i;e++){let n=t.getLine(e);n&&a.push(n.translateToString(!0))}for(;a.length>0&&a[a.length-1].trim()===``;)a.pop();return a.join(`
2
+ `)},[]),H=(0,L.useCallback)(()=>{let e=r.current;return!e||k.current<0?``:e.buffer.active.getLine(k.current)?.translateToString(!0).trimEnd()??``},[]),U=(0,L.useCallback)(()=>{let e=r.current;if(!e)return[];let t=e.buffer.active,n=t.baseY+t.cursorY,i=Math.max(0,n-ne),a=[],o=``;for(let e=i;e<=n;e++){let n=t.getLine(e);n&&(o+=n.translateToString(!0),!t.getLine(e+1)?.isWrapped&&(a.push(o),o=``))}o&&a.push(o);let s=new Set,c=[];for(let e of a)for(let t of e.match(te)??[]){let e=t.replace(ee,``);!e||s.has(e)||(s.add(e),c.push(e))}return c.reverse()},[]),W=(0,L.useCallback)(()=>{let e=r.current,t=s.current;e&&t?.readyState===WebSocket.OPEN&&t.send(`${ae}${e.cols},${e.rows}`)},[]),G=(0,L.useCallback)(()=>{if(c.current&&clearTimeout(c.current),s.current?.close(),s.current=null,w.current=`new`,C)try{localStorage.removeItem(C)}catch{}l.current=0,_(!1),y(!1),p(!1),h(!1),setTimeout(()=>K(),0)},[]),K=(0,L.useCallback)(()=>{c.current&&=(clearTimeout(c.current),null),s.current&&=(s.current.onclose=null,s.current.close(),null);let t=r.current;if(!t)return;let n=window.location.protocol===`https:`?`wss:`:`ws:`,i=e.projectName??``,a=w.current,o=a===`new`&&e.cwd?`?cwd=${encodeURIComponent(e.cwd)}`:``,f=T(`/ws/project/${encodeURIComponent(i)}/terminal/${a}${o}`),m=`${n}//${window.location.host}${f}`,g=new WebSocket(m);s.current=g,g.onopen=()=>{u.current&&r.current&&r.current.clear(),u.current=!0,d.current=Date.now(),p(!0),h(!1),l.current=0,w.current===`new`&&y(!1),S.current&&clearTimeout(S.current),S.current=setTimeout(()=>y(!0),ie),W()},g.onmessage=e=>{if(d.current=Date.now(),typeof e.data==`string`){if(e.data===se)return;if(e.data.startsWith(`{`))try{let n=JSON.parse(e.data);if(n.type){if(n.type===`session`&&n.id&&(w.current=n.id,C))try{localStorage.setItem(C,n.id)}catch{}n.type===`error`&&t.write(`\r\n\x1b[31mError: ${n.message}\x1b[0m\r\n`),n.type===`exited`&&_(!0);return}}catch{}j(),t.write(e.data)}},g.onclose=()=>{p(!1),J()},g.onerror=()=>{g.close()}},[W]),q=(0,L.useCallback)(()=>{if(document.visibilityState!==`visible`)return;let e=s.current;if(!e||e.readyState!==WebSocket.OPEN){K();return}if(Date.now()-d.current>le){K();return}try{e.send(oe)}catch{K()}},[K]);function J(){let e=Math.min(1e3*2**l.current,3e4);l.current++,h(!0),c.current=setTimeout(()=>{K()},e)}return(0,L.useEffect)(()=>{let e=n.current;if(!e)return;let t=new N({cursorBlink:!0,fontSize:13,scrollback:5e4,fontFamily:O,theme:B(),minimumContrastRatio:4.5}),i=new F,l=()=>{let e=i.proposeDimensions();e&&z(e.cols,e.rows)&&i.fit()},u=new P;if(t.loadAddon(i),t.loadAddon(u),t.open(e),!(`ontouchstart`in window||navigator.maxTouchPoints>0))try{let e=new I;e.onContextLoss(()=>e.dispose()),t.loadAddon(e)}catch{}l(),r.current=t,o.current=i,a(t);let d=!1;document.fonts.ready.then(()=>{if(!(d||r.current!==t)){d=!0;try{t.options.fontFamily=O,l()}catch{}}}),t.onData(e=>{if(e.includes(`\r`)||e.includes(`
3
+ `)){let e=t.buffer.active;k.current=e.baseY+e.cursorY,E.current=k.current+1}let n=s.current;n?.readyState===WebSocket.OPEN&&n.send(e)}),K();let f=setInterval(q,ce),p=e.ownerDocument,m=()=>{p.visibilityState===`visible`&&q()};p.addEventListener(`visibilitychange`,m);let h=null,g=new ResizeObserver(e=>{let t=e[0];!t||t.contentRect.width===0||t.contentRect.height===0||(h&&clearTimeout(h),h=setTimeout(()=>{try{l(),W()}catch{}},re))});g.observe(e);let _=D(e,()=>{try{l(),W()}catch{}}),v=()=>{t.options.theme=B()};window.addEventListener(x,v);let y=()=>window.removeEventListener(x,v),C=()=>{if(r.current===t)try{t.clearTextureAtlas(),t.refresh(0,t.rows-1)}catch{}};return document.fonts.addEventListener(`loadingdone`,C),()=>{y(),document.fonts.removeEventListener(`loadingdone`,C),_(),h&&clearTimeout(h),g.disconnect(),clearInterval(f),p.removeEventListener(`visibilitychange`,m),c.current&&clearTimeout(c.current),b.current&&clearTimeout(b.current),S.current&&clearTimeout(S.current),s.current?.close(),s.current=null,t.dispose(),r.current=null,a(null),o.current=null}},[]),{connected:f,reconnecting:m,exited:g,shellReady:v,sendData:A,getSelection:M,terminal:i,getLastCommandOutput:R,getLastCommand:H,getBufferUrls:U,restart:G}}function U(e,t,n){return new MouseEvent(e,{bubbles:!0,cancelable:!0,view:window,clientX:t.clientX,clientY:t.clientY,screenX:t.screenX,screenY:t.screenY,button:0,buttons:n,detail:1})}function W(e,t){(0,L.useEffect)(()=>{let n=e.current;if(!t||!n)return;let r=n.querySelector(`.xterm`);if(!r)return;let i=e=>{let t=e.touches[0];!t||e.touches.length>1||(e.preventDefault(),e.stopPropagation(),r.dispatchEvent(U(`mousedown`,t,1)))},a=e=>{let t=e.touches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(U(`mousemove`,t,1)))},o=e=>{let t=e.changedTouches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(U(`mouseup`,t,0)))},s={capture:!0,passive:!1};return n.addEventListener(`touchstart`,i,s),n.addEventListener(`touchmove`,a,s),n.addEventListener(`touchend`,o,s),n.addEventListener(`touchcancel`,o,s),()=>{n.removeEventListener(`touchstart`,i,s),n.removeEventListener(`touchmove`,a,s),n.removeEventListener(`touchend`,o,s),n.removeEventListener(`touchcancel`,o,s)}},[e,t])}var G=40;function K(e){if(!e||typeof e.checkVisibility==`function`&&!e.checkVisibility({visibilityProperty:!0}))return!1;let t=e.getBoundingClientRect();return t.width<G||t.height<G?!1:t.bottom>0&&t.right>0&&t.top<window.innerHeight&&t.left<window.innerWidth}function q({tabId:e,metadata:t,shellReady:n,sendData:r,focusTerminal:i,containerRef:a}){let o=(0,L.useRef)(null),[s,c]=(0,L.useState)(0),l=(0,L.useCallback)(e=>{o.current=e,c(e=>e+1)},[]),u=t?.pendingCommand;(0,L.useEffect)(()=>{if(!(typeof u!=`string`||!u)&&(l(u),e)){let n={...t??{}};delete n.pendingCommand,v.getState().updateTab(e,{metadata:n})}},[u,e,l]),(0,L.useEffect)(()=>{let e=e=>{let t=e.detail;t?.command&&K(a.current)&&(l(t.command),window.dispatchEvent(new Event(M)))};return window.addEventListener(j,e),()=>window.removeEventListener(j,e)},[a,l]),(0,L.useEffect)(()=>{if(!n)return;let e=o.current;e&&(o.current=null,r(e),i())},[n,s,r,i])}var J=n(),ue=[{label:`Tab`,value:` `},{label:`Esc`,value:`\x1B`},{label:`Ctrl`,value:null},{label:`↑`,value:`\x1B[A`},{label:`↓`,value:`\x1B[B`},{label:`←`,value:`\x1B[D`},{label:`→`,value:`\x1B[C`},{label:`^C`,value:``}],Y=`flex items-center justify-center shrink-0 min-w-11 min-h-11 rounded text-xs bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`;function de({ctrlMode:e,onToggleCtrl:t,selectMode:n,onToggleSelect:o,onKey:s,onCopy:c,onPaste:l,onSendToChat:f,onOpenLinks:p}){return(0,J.jsxs)(`div`,{className:`relative shrink-0 bg-surface border-t border-border`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[(0,J.jsx)(`button`,{onClick:o,"aria-label":`Select text`,"aria-pressed":n,className:_(Y,n&&`bg-primary text-primary-foreground`),children:(0,J.jsx)(i,{size:16})}),(0,J.jsx)(`button`,{onClick:c,"aria-label":`Copy`,className:Y,children:(0,J.jsx)(d,{size:16})}),(0,J.jsx)(`button`,{onClick:l,"aria-label":`Paste`,className:Y,children:(0,J.jsx)(a,{size:16})}),(0,J.jsx)(`button`,{onClick:p,"aria-label":`Links`,className:Y,children:(0,J.jsx)(u,{size:16})}),(0,J.jsx)(`button`,{onClick:f,"aria-label":`Send to Chat`,className:Y,children:(0,J.jsx)(r,{size:16})}),(0,J.jsx)(`div`,{className:`w-px h-6 shrink-0 bg-border mx-0.5`}),ue.map(n=>(0,J.jsx)(`button`,{onClick:()=>n.value===null?t():s(n.value),className:_(Y,`font-mono`,n.value===null&&e&&`bg-primary text-primary-foreground`),children:n.label},n.label)),(0,J.jsx)(`div`,{className:`w-6 shrink-0`,"aria-hidden":!0})]}),(0,J.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-surface to-transparent`,"aria-hidden":!0})]})}var fe=new Set([`localhost`,`::1`]);function X(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return fe.has(t)?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(t)}function Z(e){let t;try{t=new URL(e)}catch{return null}let n=t.searchParams.get(`redirect_uri`)??t.searchParams.get(`redirectUri`);if(!n)return null;try{let e=new URL(n);return X(e.hostname)?e.port||(e.protocol===`https:`?`443`:`80`):null}catch{return null}}function Q(e){try{let t=new URL(e.trim());return(t.protocol===`http:`||t.protocol===`https:`)&&X(t.hostname)}catch{return!1}}function pe({onDone:e}){let[t,n]=(0,L.useState)(``),[r,i]=(0,L.useState)(!1),a=t.trim(),o=!r&&Q(a),s=async()=>{i(!0);try{await h.post(`/api/loopback/callback`,{url:a}),m.success(`Sent to the waiting command`,{duration:2e3}),n(``),e()}catch(e){m.error(e.message,{duration:4e3})}finally{i(!1)}};return(0,J.jsxs)(`div`,{className:`shrink-0 border-t border-border px-3 py-3`,children:[(0,J.jsx)(`p`,{className:`pb-2 text-[11px] leading-snug text-text-secondary`,children:`Finished signing in and landed on a page that would not load? Paste that address here — the machine will deliver it to the command still waiting.`}),(0,J.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,J.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),inputMode:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`http://127.0.0.1:54132/oauth/callback?code=…`,"aria-label":`Callback address`,className:`h-11 min-w-0 flex-1 rounded-lg border border-border bg-surface px-3 font-mono text-xs text-foreground placeholder:text-text-subtle`}),(0,J.jsx)(`button`,{onClick:()=>void s(),disabled:!o,"aria-label":`Finish login`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground disabled:opacity-40 active:opacity-80 transition-opacity`,children:r?(0,J.jsx)(p,{className:`size-4 animate-spin`}):(0,J.jsx)(f,{className:`size-4`})})]}),a!==``&&!Q(a)&&(0,J.jsx)(`p`,{className:`pt-1.5 text-[11px] text-error`,children:`Needs to be the http://127.0.0.1:… address the sign-in redirected to.`})]})}function me({open:e,onClose:t,urls:n}){let r=async e=>{let n=await S(e);m[n?`success`:`error`](n?`Link copied`:`Could not copy link`,{duration:1500}),t()},i=[...new Set(n.map(Z).filter(e=>!!e))];return(0,J.jsxs)(C,{open:e,onClose:t,zIndex:70,className:`flex flex-col max-h-[70vh]`,children:[(0,J.jsx)(`div`,{className:`shrink-0 px-4 pb-2 text-xs font-medium text-text-secondary`,children:n.length>0?`Links in terminal (${n.length})`:`Links in terminal`}),(0,J.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto px-2 pb-2`,children:n.length===0?(0,J.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-4 py-8 text-center text-sm text-text-secondary`,children:[(0,J.jsx)(c,{className:`size-5 text-text-subtle`}),`No links found in the visible scrollback.`]}):n.map(e=>{let n=Z(e);return(0,J.jsxs)(`div`,{children:[(0,J.jsxs)(`div`,{className:`flex items-stretch gap-1`,children:[(0,J.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer noopener`,onClick:t,className:`flex min-h-11 flex-1 min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-sm text-foreground active:bg-accent transition-colors`,children:[(0,J.jsx)(s,{className:`size-4 shrink-0 text-text-subtle`}),(0,J.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left font-mono text-xs`,children:e})]}),(0,J.jsx)(`button`,{onClick:()=>void r(e),"aria-label":`Copy ${e}`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg text-text-secondary active:bg-accent transition-colors`,children:(0,J.jsx)(d,{className:`size-4`})})]}),n&&(0,J.jsxs)(`p`,{className:`px-3 pb-2 text-[11px] leading-snug text-text-secondary`,children:[`Signing in here sends you back to port `,n,` `,(0,J.jsx)(`strong`,{children:`on the machine`}),`, not this device — so the terminal keeps waiting. Afterwards, paste the address bar below to finish it.`]})]},e)})}),i.length>0&&(0,J.jsx)(pe,{onDone:t})]})}var he=[{title:`Add to current chat`,newTab:!1,Icon:r},{title:`Add to new chat`,newTab:!0,Icon:l}],$=4;function ge(e){let t=e.replace(/^(?:[ \t]*\r?\n)+/,``).trimEnd();if(!t)return null;let n=A(t);return{label:`Terminal selection`,text:`Selected text from the terminal\n${n}\n${t}\n${n}`}}function _e(e){let{start:t,cell:n,screen:r,box:i,actions:a}=e,o=e.end.x===0&&e.end.y>t.y?{x:e.cols,y:e.end.y-1}:e.end,s=t.y-e.viewportY,c=o.y-e.viewportY;if(c<0||s>=e.rows)return null;let l=i.height-a.height,u=r.top+(Math.min(c,e.rows-1)+1)*n.height+$;if(u>l){let e=r.top+Math.max(s,0)*n.height-a.height-$;u=e>=0?e:l}let d=Math.min(r.left+o.x*n.width,i.width-a.width);return{left:Math.max(0,d),top:Math.max(0,u)}}function ve({terminal:e,projectName:t,touch:n}){let r=(0,L.useRef)(null),[i,a]=(0,L.useState)(!1),o=(0,L.useCallback)(()=>{let t=r.current,n=t?.offsetParent,i=e?.getSelectionPosition(),a=e?.dimensions?.css.cell,o=e?.element?.querySelector(`.xterm-screen`);if(!t||!n||!e||!i||!a||!o)return;let s=n.getBoundingClientRect(),c=o.getBoundingClientRect(),l=_e({start:i.start,end:i.end,viewportY:e.buffer.active.viewportY,rows:e.rows,cols:e.cols,cell:a,screen:{left:c.left-s.left,top:c.top-s.top},box:{width:s.width,height:s.height},actions:{width:t.offsetWidth,height:t.offsetHeight}});t.style.visibility=l?`visible`:`hidden`,l&&(t.style.transform=`translate(${Math.round(l.left)}px, ${Math.round(l.top)}px)`)},[e]);if((0,L.useEffect)(()=>{let t=e?.element;if(!e||!t)return;let n=()=>{a(!!e.getSelection().trim()),o()},r,i,s=()=>{r=void 0,clearTimeout(i),i=setTimeout(n,0)},c=()=>{r?.removeEventListener(`mouseup`,s,!0),r=t.ownerDocument,r.addEventListener(`mouseup`,s,{capture:!0,once:!0})};t.addEventListener(`mousedown`,c,!0);let l=[e.onSelectionChange(n),e.onRender(o)];return()=>{t.removeEventListener(`mousedown`,c,!0),r?.removeEventListener(`mouseup`,s,!0),clearTimeout(i),l.forEach(e=>e.dispose())}},[e,o]),(0,L.useLayoutEffect)(()=>{i&&o()},[i,o]),!i||!e)return null;let s=n=>{let r=ge(e.getSelection());r&&k({...r,projectName:t,newTab:n,asContext:!0}),e.clearSelection()};return(0,J.jsx)(`div`,{ref:r,role:`group`,"aria-label":`Add the selection to chat`,className:`invisible absolute left-0 top-0 z-10 flex max-w-full flex-wrap gap-1 rounded-md border border-border bg-surface p-0.5 shadow-md`,children:he.map(({title:e,newTab:t,Icon:r})=>(0,J.jsxs)(`button`,{type:`button`,onClick:()=>s(t),className:_(`flex items-center gap-1 whitespace-nowrap rounded bg-surface-elevated text-text-primary transition-colors hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground`,n?`min-h-11 px-3 text-sm`:`px-2 py-0.5 text-xs`),children:[(0,J.jsx)(r,{size:n?16:12}),e]},e))})}var ye=(0,L.memo)(function({metadata:e,tabId:t}){let n=e?.sessionId??`new`,i=e?.projectName,a=e?.cwd,s=(0,L.useRef)(null),{connected:c,reconnecting:l,exited:u,shellReady:d,sendData:f,getSelection:p,terminal:h,getLastCommandOutput:g,getLastCommand:v,getBufferUrls:b,restart:x}=H({sessionId:n,projectName:i,cwd:a,containerRef:s,tabId:t}),[C,w]=(0,L.useState)(!1),[T,D]=(0,L.useState)(!1),[O,A]=(0,L.useState)(!1),j=y(e=>e.activeTabId),[M,N]=(0,L.useState)(0);(0,L.useEffect)(()=>{let e=()=>N(e=>e+1);return window.addEventListener(`ppm:onboarding-refresh`,e),()=>window.removeEventListener(`ppm:onboarding-refresh`,e)},[]),(0,L.useEffect)(()=>{if(!i||!t||j!==t||!c||!d||l||u)return;let e=!!s.current?.checkVisibility({checkOpacity:!0,checkVisibilityCSS:!0});e&&E({type:`terminal-ready`,projectName:i,tabId:t,visible:e})},[M,i,t,j,c,d,l,u]),W(s,T);let P=(0,L.useCallback)(()=>{(s.current?.querySelector(`.xterm-helper-textarea`))?.focus()},[]);q({tabId:t,metadata:e,shellReady:d,sendData:f,focusTerminal:P,containerRef:s}),(0,L.useEffect)(()=>{let e=s.current;if(!e||T)return;let t=()=>P();return e.addEventListener(`touchend`,t,{capture:!0}),()=>e.removeEventListener(`touchend`,t,{capture:!0})},[P,T]);let F=(0,L.useCallback)(e=>{if(P(),C&&e.length===1){let t=e.toLowerCase().charCodeAt(0)-96;t>=1&&t<=26&&f(String.fromCharCode(t)),w(!1);return}f(e)},[C,f,P]),I=(0,L.useCallback)(async()=>{let e=p(),t=e||g();if(!t.trim()){m(`Nothing to copy`,{duration:1500});return}let n=await S(t);m[n?`success`:`error`](n?e?`Selection copied`:`Last output copied`:`Could not copy`,{duration:1500})},[p,g]),R=(0,L.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&(f(e),P())}catch{m.error(`Clipboard blocked — paste with the keyboard instead`,{duration:2500})}},[f,P]),z=(0,L.useCallback)(()=>{let e=p(),t=e||g();if(!t.trim())return;let n=e?``:v();k({text:"```bash\n"+(n?`${n}\n${t}`:t)+"\n```",label:e?`Terminal selection`:`Terminal output`,projectName:i}),m.success(`Sent to chat`,{duration:1500})},[p,g,v,i]),B=typeof window<`u`&&`ontouchstart`in window;return(0,J.jsxs)(`div`,{"data-onboarding":`terminal`,className:`flex flex-col h-full min-h-0`,children:[(0,J.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1 bg-surface border-b border-border text-xs`,children:[(0,J.jsx)(`span`,{className:_(`size-2 rounded-full`,u?`bg-error`:c?`bg-success`:l?`bg-warning`:`bg-error`)}),(0,J.jsx)(`span`,{className:`text-text-secondary`,children:u?`Process exited`:c?`Connected`:l?`Reconnecting...`:`Disconnected`}),u&&(0,J.jsxs)(`button`,{onClick:x,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors`,children:[(0,J.jsx)(o,{size:10}),`Restart`]}),(0,J.jsxs)(`button`,{onClick:z,title:`Send to Chat`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors ml-auto`,children:[(0,J.jsx)(r,{size:10}),`Chat`]}),(0,J.jsx)(`span`,{className:`text-text-subtle font-mono`,children:n})]}),(0,J.jsxs)(`div`,{className:`relative flex-1 min-h-0 flex flex-col`,children:[(0,J.jsx)(`div`,{ref:s,onClick:T?void 0:P,className:_(`flex-1 min-h-0 bg-background p-1`,T&&`touch-none`)}),(0,J.jsx)(ve,{terminal:h,projectName:i,touch:B})]}),B&&(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(de,{ctrlMode:C,onToggleCtrl:()=>w(!C),selectMode:T,onToggleSelect:()=>D(!T),onKey:F,onCopy:()=>void I(),onPaste:()=>void R(),onSendToChat:z,onOpenLinks:()=>A(!0)}),(0,J.jsx)(me,{open:O,onClose:()=>A(!1),urls:O?b():[]})]})]})});export{ye as TerminalTab};
@@ -0,0 +1,15 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-renderer-Df3r-CCb.js","assets/vendor-ui-BTSIXzhZ.js","assets/rolldown-runtime-C5c2KzVm.js","assets/vendor-markdown-C-P1aR4p.js","assets/lib-5Chotbwm.js","assets/markdown-renderer-CtEl6qAt.js","assets/index-DLB3j_P0.js","assets/preload-helper-CM8YhcCa.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-M3DUzop8.css","assets/image-gallery-BuxSgBug.js","assets/run-in-terminal-ujoc25vj.js","assets/edit-diff-preview-DyWUMlkI.js","assets/libesm-B6LsX5wH.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{$ as r,Gt as i,Hr as a,J as o,L as s,M as c,P as l,Sr as u,St as d,Tt as f,_n as p,_t as m,at as h,bn as g,ct as _,gt as v,in as y,jr as b,m as x,mt as S,n as C,pt as w,ti as T,tt as E,ui as D,w as O,wt as ee,xn as k,xr as A,xt as te}from"./icons-BwyIKaTT.js";import{k as ne}from"./api-client-xQDlhUTu.js";import{t as j}from"./react-BZ0kba1-.js";import{t as M}from"./preload-helper-CM8YhcCa.js";import{n as N,t as P}from"./utils-Bslrbb-G.js";import{J as F,X as re,Y as ie,n as I,x as ae}from"./window-store-DqX_qmkQ.js";import{r as oe,t as L}from"./panel-store-BJhazigC.js";import{i as se}from"./project-store-BLGl9IAO.js";import{t as ce}from"./tab-store-D5I52eLN.js";import{i as le,t as ue}from"./file-store-BQ41vIs5.js";import{n as de}from"./use-is-mobile-VRV9eZy1.js";import{r as fe}from"./clipboard-D-VCry-F.js";import{n as pe}from"./fs-api-CFtQzsIJ.js";import{En as me,Xr as he,oi as ge,r as _e}from"./index-DLB3j_P0.js";import{a as ve,i as ye,n as be,r as xe,t as Se}from"./image-preview-geometry-CCq8rio7.js";import{t as R}from"./agent-session-sheet-store-BAfLnsLX.js";import{t as Ce}from"./libesm-B6LsX5wH.js";import{t as we}from"./use-blob-url-Clm7wbB_.js";import{r as Te,t as Ee}from"./image-gallery-BuxSgBug.js";import{a as De,i as Oe,o as ke}from"./html-preview-loads-CMWBC-iv.js";import{f as Ae,g as je,h as Me,i as Ne,l as Pe,m as Fe,n as Ie,o as Le,p as Re,r as ze,t as Be,u as Ve}from"./db-ai-tools-CVbbW_MZ.js";var z=new Set([`Write`,`Edit`,`MultiEdit`,`NotebookEdit`]),He={create:3,write:2,notebook:2,edit:1};function B(e){return typeof e==`string`?e:``}function Ue(e,t){let n=0,r=0;for(let i of Ce(e,t))i.added?n+=i.count??0:i.removed&&(r+=i.count??0);return{added:n,removed:r}}function We(e){return e&&/created successfully/i.test(e)?`create`:`write`}function Ge(e,t,n){switch(e){case`Write`:{let e=B(t.file_path);return e?{filePath:e,op:We(n),fragments:[{oldStr:``,newStr:B(t.content)}]}:null}case`Edit`:{let e=B(t.file_path);return e?{filePath:e,op:`edit`,fragments:[{oldStr:B(t.old_string),newStr:B(t.new_string)}]}:null}case`MultiEdit`:{let e=B(t.file_path);if(!e||!Array.isArray(t.edits))return null;let n=t.edits.filter(e=>!!e&&typeof e==`object`).map(e=>({oldStr:B(e.old_string),newStr:B(e.new_string)}));return n.length===0?null:{filePath:e,op:`edit`,fragments:n}}case`NotebookEdit`:{let e=B(t.notebook_path)||B(t.file_path);return e?{filePath:e,op:`notebook`,fragments:[{oldStr:``,newStr:B(t.new_source)}]}:null}default:return null}}function Ke(e,t){if(e!==`Edit`&&e!==`Write`||!Array.isArray(t.files))return null;let n=[];for(let e of t.files){if(!e||typeof e!=`object`)continue;let t=e,r=B(t.file_path);r&&n.push({filePath:r,op:t.op===`add`?`create`:`edit`,fragments:[{oldStr:B(t.old_string),newStr:B(t.new_string)}]})}return n.length>0?n:null}function qe(e,t){if(e){for(let n of e)if(n.type===`tool_result`&&n.toolUseId&&t.set(n.toolUseId,n.output??``),n.type===`tool_use`){let e=n.result;n.toolUseId&&e?.output!=null&&!t.has(n.toolUseId)&&t.set(n.toolUseId,e.output),qe(n.children,t)}}}function Je(e,t,n,r){if(e)for(let i of e){if(i.type!==`tool_use`||(i.children?.length&&Je(i.children,!0,n,r),!z.has(i.tool)))continue;let e=i.input&&typeof i.input==`object`?i.input:null;if(!e)continue;let a=Ge(i.tool,e,i.toolUseId?r.get(i.toolUseId):void 0),o=Ke(i.tool,e)??(a?[a]:[]);for(let e of o)Ye(n,e,i.toolUseId,t)}}function Ye(e,t,n,r){let i=e.get(t.filePath);i||(i={filePath:t.filePath,op:t.op,editCount:0,linesAdded:0,linesRemoved:0,edits:[],viaSubagent:!1},e.set(t.filePath,i)),He[t.op]>He[i.op]&&(i.op=t.op),r&&(i.viaSubagent=!0),t.fragments.forEach((e,t)=>{let{added:a,removed:o}=Ue(e.oldStr,e.newStr);i.linesAdded+=a,i.linesRemoved+=o,i.editCount+=1,i.edits.push({...e,toolUseId:n,editIndex:t,editRef:n?`${n}-${t}`:void 0,viaSubagent:r})})}function Xe(e){let t=new Map;for(let n of e)qe(n.events,t);let n=new Map;for(let r of e)Je(r.events,!1,n,t);return[...n.values()]}function Ze(e,t){let n=[];for(let r=t;r>=0&&e[r]?.role===`assistant`;r--)n.unshift(e[r]);return n}var Qe=new Set([`Bash`,`PowerShell`]),$e=new WeakMap;function et(e){let t=$e.get(e);if(t)return t;let n=new Set,r=[],i=[],a=e=>{for(let t of e??[]){if(t.type===`tool_result`&&t.toolUseId&&i.push(t.toolUseId),t.type!==`tool_use`||(t.toolUseId&&t.result!=null&&i.push(t.toolUseId),a(t.children),Qe.has(t.tool)&&t.toolUseId&&r.push(t.toolUseId),!z.has(t.tool)))continue;let e=t.input&&typeof t.input==`object`?t.input:null;if(!e)continue;let o=Ge(t.tool,e),s=Ke(t.tool,e)??(o?[o]:[]);for(let e of s)n.add(e.filePath);s.length>0&&t.toolUseId&&r.push(t.toolUseId)}};a(e.events);let o={paths:[...n],writeIds:r,resultIds:i};return $e.set(e,o),o}function tt(e){let t=new Set,n=new Set,r=new Set;for(let i of e){let e=et(i);for(let n of e.paths)t.add(n);for(let t of e.writeIds)n.add(t);for(let t of e.resultIds)r.add(t)}let i=0;for(let e of n)r.has(e)&&i++;return{paths:[...t],settled:i}}function V(e){return typeof e==`string`?e:``}function H(e){return`${e} step${e===1?``:`s`}`}function U(e,t){return e.length>t?e.slice(0,t)+`…`:e}function nt(e){if(e.type!==`tool_use`)return``;let t=e.tool,n=e.input&&typeof e.input==`object`?e.input:{};switch(t){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let e=V(n.notebook_path||n.file_path);return e?`${t} ${P(e)}`:t}case`Bash`:case`PowerShell`:return U(n.description?V(n.description):V(n.command),60)||t;case`Glob`:return`Glob ${V(n.pattern)}`;case`Grep`:return`Grep ${U(V(n.pattern),40)}`;case`WebSearch`:return`Search ${U(V(n.query),50)}`;case`WebFetch`:return`Fetch ${U(V(n.url),50)}`;case`ToolSearch`:return`Search ${U(V(n.query),50)}`;case`Agent`:case`Task`:{let e=typeof n.name==`string`&&n.name.trim()?n.name.trim():null,r=U(V(n.description||n.prompt),44);return e?r?`${e} · ${r}`:e:r||t}case`SendMessage`:return`Message ${U(V(n.to),30)}`.trim();case`TodoWrite`:return`Todo update`;case`AskUserQuestion`:return`Question`;case`ScheduleWakeup`:return`Scheduled wakeup`;case`TaskCreate`:return U(V(n.subject),60)||t;case`TaskUpdate`:return`Task #${V(n.taskId)} → ${V(n.status)}`;case`TaskStop`:return`Task #${V(n.taskId)} stopped`;case`ImageGen`:return`Image generation`;default:return t}}function rt(e){return e===`Agent`||e===`Task`||z.has(e)}function W(e){let t=[],n=[],r=new Set,i;return(e??[]).forEach((e,a)=>{if(e.type===`tool_use`){t.push(e.toolUseId??`idx:${a}`);let o=nt(e);if(o&&(i=o),rt(e.tool)){if(e.tool===`Agent`||e.tool===`Task`){let t=W(e.children);n.push({...e,children:t.kept,stepIds:t.stepIds,stepCount:t.stepIds.length,lastStep:t.lastStep})}else n.push(e);e.toolUseId&&r.add(e.toolUseId)}}else e.type===`tool_result`&&e.toolUseId&&r.has(e.toolUseId)&&n.push(e)}),{stepIds:t,lastStep:i,kept:n}}function it(e){let t=e.stepCount??e.stepIds?.length??W(e.children).stepIds.length;for(let n of e.children??[])n.type===`tool_use`&&(n.tool===`Agent`||n.tool===`Task`)&&(t+=it(n));return t}function at(e){let t=it(e);if(e.stepCount!=null)return{stepCount:t,lastStep:e.lastStep};let{lastStep:n}=W(e.children);return{stepCount:t,lastStep:n}}function ot(e){try{return JSON.stringify(e).length}catch{return 0}}function st(e){let t=e.reduce((e,t)=>e+ot(t),0),n=0;for(;t>262144&&n<e.length-1;)t-=ot(e[n]),n++;return n>0?e.slice(n):e}function ct(e,t,n){let r=t.toolUseId;if(r){let i=e.findIndex(e=>e.type===t.type&&e.toolUseId===r);if(i!==-1){let r=e[i].arrivalSeq,a=[...e];return a[i]=n==null?t:{...t,arrivalSeq:r},a}}let i=n==null?t:{...t,arrivalSeq:n},a=[...e,i];return st(a.length>200?a.slice(a.length-200):a)}function lt(e,t){let n=e=>e.map((e,t)=>({ev:e,seq:e.arrivalSeq??t}));return[...n(e),...n(t)].sort((e,t)=>e.seq-t.seq).map(e=>e.ev)}function ut(e,t){if(e.type!==`tool_use`)return e;let n=e.stepIds,r=e.lastStep;if(t.type===`tool_use`){let e=t.toolUseId;(!e||!n?.includes(e))&&(n=[...n??[],e??`idx:${n?.length??0}`]);let i=nt(t);i&&(r=i)}let i=e.childSeq??0,a=e=>{let n=t.toolUseId,r=n?e.findIndex(e=>e.type===t.type&&e.toolUseId===n):-1;if(r!==-1){let n=e[r].arrivalSeq,i=[...e];return i[r]={...t,arrivalSeq:n},i}return[...e,{...t,arrivalSeq:i}]},o=e.children??[],s=e.recentChildren??[],c=t.type===`tool_use`&&rt(t.tool),l=e=>!!e&&o.some(t=>t.type===`tool_use`&&t.toolUseId===e),u=o,d=s;return c||t.type===`tool_result`&&l(t.toolUseId)?u=a(o):d=ct(s,t,i),{...e,children:u,recentChildren:d,stepIds:n,stepCount:n?.length,lastStep:r,childSeq:i+1}}function dt(e){return e&&e.map(e=>{if(e.type!==`tool_use`||e.tool!==`Agent`&&e.tool!==`Task`||!e.transcriptAvailable)return e;let{stepIds:t,lastStep:n,kept:r}=W(e.children);return{...e,children:r,stepIds:t,stepCount:t.length,lastStep:n}})}function G(e,t){return t.kind===`card`?`${e}:${t.cardId}`:`${e}:${t.teamName}:${t.memberName}`}var ft=j(()=>({entries:{}}));function pt(e,t){ft.setState(n=>({entries:{...n.entries,[e]:t}}))}function mt(){let e=new Set;for(let t of Object.values(I.getState().windows)){if(t.kind!==`agent-session`)continue;let n=t.payload;typeof n?.sessionId==`string`&&n.source&&e.add(G(n.sessionId,n.source))}let t=R.getState().payload;return t&&e.add(G(t.sessionId,t.source)),e}function ht(){let e=mt();ft.setState(t=>{let n={},r=!1;for(let[i,a]of Object.entries(t.entries))e.has(i)?n[i]=a:r=!0;return r?{entries:n}:t})}I.subscribe(ht),R.subscribe(ht);var K=e(t(),1),q=n(),gt=(0,K.lazy)(()=>M(()=>import(`./markdown-renderer-Df3r-CCb.js`).then(e=>({default:e.MarkdownRenderer})),__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,58,59])));function J({content:e,maxHeight:t=`max-h-48`}){return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`animate-pulse h-4 bg-muted rounded`}),children:(0,q.jsx)(gt,{content:e,className:`text-text-secondary overflow-auto ${t}`})})}var _t={task_assignment:{label:`task`,className:`bg-primary/20 text-primary`},idle_notification:{label:`idle`,className:`bg-warning/20 text-warning`},completion:{label:`done`,className:`bg-success/20 text-success`},shutdown_request:{label:`shutdown`,className:`bg-error/20 text-error`},shutdown_approved:{label:`shutdown ✓`,className:`bg-text-3/20 text-text-3`},shutdown_response:{label:`shutdown reply`,className:`bg-text-3/20 text-text-3`},plan_approval_request:{label:`plan review`,className:`bg-primary/20 text-primary`},plan_approval_response:{label:`plan reply`,className:`bg-primary/20 text-primary`}},vt=new Set([`to`,`message`,`summary`,`notify_when_idle`,`recipient`,`content`,`type`]),Y=e=>typeof e==`string`?e:e==null?``:String(e);function yt(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;return typeof t.type!=`string`||!t.type?null:{type:t.type,request_id:typeof t.request_id==`string`?t.request_id:void 0,approve:typeof t.approve==`boolean`?t.approve:void 0,reason:typeof t.reason==`string`?t.reason:void 0,feedback:typeof t.feedback==`string`?t.feedback:void 0}}function bt(e){let t=e.trim();if(!t.startsWith(`{`))return null;try{return yt(JSON.parse(t))}catch{return null}}function xt(e){let t=Y(e.to)||Y(e.recipient),n=e.message??e.content,r=yt(n)??bt(Y(n)),i=r?``:Y(n),a=Y(e.type),o=r?.type||(a&&a!==`message`?a:`message`),s=Y(e.summary).trim(),c=Object.entries(e).filter(([e])=>!vt.has(e)).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)??``}));return{to:t,summary:s||void 0,text:i,firstLine:i.split(`
3
+ `).map(e=>e.trim()).find(e=>e.length>0)??``,protocol:r??void 0,kind:o,notifyWhenIdle:e.notify_when_idle===!0,extras:c}}function St(e){if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}if(Array.isArray(t)){let e=Y(t.find(e=>e&&typeof e==`object`&&e.type===`text`)?.text);if(!e)return null;try{t=JSON.parse(e)}catch{return null}}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;if(typeof n.success!=`boolean`)return null;let r=n.pin&&typeof n.pin==`object`?n.pin:null;return{ok:n.success,detail:Y(n.message)||Y(n.error)||void 0,peer:r&&Y(r.name)||void 0,ref:r&&Y(r.ref)||void 0}}function Ct({kind:e}){if(e===`message`)return null;let t=_t[e];return(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] ${t?.className??`bg-panel-2 text-text-3`}`,children:t?.label??e})}function wt({name:e,input:t}){let n=xt(t),r=n.summary||n.firstLine||(n.protocol?n.kind:``),i=r.length>72?`${r.slice(0,72)}…`:r;return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[(0,q.jsx)(x,{className:`size-3 inline`}),` `,n.to||`unknown`,i?` · ${i}`:``]}),n.notifyWhenIdle&&(0,q.jsx)(E,{className:`size-3 inline ml-1 text-text-3`})]})}function Tt({input:e}){let t=xt(e);return(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-text-subtle`,children:`To`}),(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:t.to||`unknown`}),(0,q.jsx)(Ct,{kind:t.kind}),t.notifyWhenIdle&&(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:[(0,q.jsx)(E,{className:`size-3`}),` notify when idle`]})]}),!!t.text&&(0,q.jsx)(J,{content:t.text,maxHeight:`max-h-40`}),t.protocol&&(0,q.jsxs)(`div`,{className:`space-y-0.5 text-text-secondary`,children:[t.protocol.approve!=null&&(0,q.jsxs)(`p`,{children:[t.protocol.approve?`Approved`:`Rejected`,t.protocol.request_id?(0,q.jsxs)(`span`,{className:`text-text-subtle font-mono`,children:[` · `,t.protocol.request_id]}):null]}),!!t.protocol.reason&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.reason}),!!t.protocol.feedback&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.feedback})]}),t.extras.length>0&&(0,q.jsx)(`div`,{className:`space-y-0.5`,children:t.extras.map(e=>(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[(0,q.jsx)(`span`,{className:`font-mono`,children:e.key}),`: `,e.value]},e.key))})]})}function Et({output:e}){let[t,n]=(0,K.useState)(!1),r=St(e);return r?(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[r.ok?(0,q.jsx)(c,{className:`size-3 text-success shrink-0`}):(0,q.jsx)(D,{className:`size-3 text-error shrink-0`}),(0,q.jsx)(`span`,{className:r.ok?`text-success`:`text-error`,children:r.ok?`Delivered`:`Not delivered`}),!!r.detail&&(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`· `,r.detail]}),!!r.ref&&(0,q.jsxs)(`span`,{className:`text-text-3 font-mono text-[10px]`,children:[`[`,r.ref,`]`]})]}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,q.jsx)(h,{className:`size-3`}),t?`Hide`:`Show`,` raw`]}),t&&(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:e})]}):null}var Dt=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.avif`,`.ico`]);function Ot(e){let t=e.lastIndexOf(`.`);return t===-1?!1:Dt.has(e.slice(t).toLowerCase())}var kt=/^\[image(?: · [\d.]+(?:B|KB|MB))?\]$/;function At(e){return kt.test(e)}function jt(e){if(!e.startsWith(`[`))return!1;let t;try{t=JSON.parse(e)}catch{return!1}return Array.isArray(t)?t.some(e=>{let t=e;return t?.type===`text`&&typeof t.text==`string`&&kt.test(t.text)}):!1}var Mt=`Async agent launched successfully`;function Nt(e){return!!e&&e.includes(Mt)}var Pt=`text-[var(--img-meta-label)] @max-[470px]:hidden`,Ft=[`60%`,`45%`,`80%`];function It({aspect:e,actions:t}){return(0,q.jsxs)(`div`,{className:`grid grid-cols-[132px_1fr] items-start gap-[14px] overflow-hidden rounded-lg border border-border bg-panel p-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px] @max-[470px]:p-[11px]`,children:[(0,q.jsx)(`div`,{className:`img-skeleton rounded-lg`,style:{aspectRatio:e}}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,q.jsx)(`div`,{className:`img-skeleton h-[13px] w-2/5 rounded @max-[470px]:hidden`}),(0,q.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:[`dimensions`,`size`,`path`].map((e,t)=>(0,q.jsxs)(K.Fragment,{children:[(0,q.jsx)(`dt`,{className:Pt,children:e}),(0,q.jsx)(`dd`,{className:`flex items-center`,children:(0,q.jsx)(`span`,{className:`img-skeleton h-[11px] rounded`,style:{width:Ft[t]}})})]},e))}),t]})]})}function Lt({code:e,onRetry:t}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border bg-panel px-2.5 py-2 font-mono text-[12px] text-text-2`,children:[(0,q.jsx)(C,{className:`size-3 shrink-0`}),(0,q.jsxs)(`span`,{className:`truncate`,children:[`preview unavailable`,e?` · ${e}`:``]}),(0,q.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto shrink-0 text-accent`,children:`retry`})]})}var Rt=4/5,X=`text-[var(--img-meta-label)] @max-[470px]:hidden`,zt=`truncate text-text @max-[470px]:text-text-2`,Bt=`h-[30px] @max-[470px]:h-[36px] shrink-0 rounded-[7px] px-[9px] font-mono text-[11.5px] text-text-2 bg-[var(--img-ghost)] border border-[var(--img-ghost-border)] backdrop-blur-[6px] transition-colors can-hover:hover:bg-[var(--img-ghost-hover)] can-hover:hover:border-[var(--img-ghost-hover-border)] can-hover:hover:text-text`;function Vt({filePath:e,projectName:t}){let[n,r]=(0,K.useState)(0),{blobUrl:i,blob:a,error:o,errorCode:s}=we(e,t,void 0,n),[c,l]=(0,K.useState)(()=>ye(e)),[u,d]=(0,K.useState)(!1),[f,p]=(0,K.useState)(!1),m=_e(e=>e.open),{openTab:h}=ce(ge(e=>({openTab:e.openTab}))),g=P(e);(0,K.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>p(!1),1200);return()=>clearTimeout(e)},[f]);let _=t=>{let n={w:t.naturalWidth,h:t.naturalHeight};if(!n.w||!n.h)return d(!0);Se(e,n),l(n)},v=()=>{d(!1),r(e=>e+1)};if(o||u)return(0,q.jsx)(`div`,{className:`border-t border-border pt-1.5`,children:(0,q.jsx)(Lt,{code:u?void 0:s??void 0,onRetry:v})});let y=c?ve(c,132):null,b=y?.aspect??Rt,x=(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-[6px]`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:S,className:Bt,children:[(0,q.jsx)(`span`,{className:`@max-[470px]:hidden`,children:`open in editor`}),(0,q.jsx)(`span`,{className:`hidden @max-[470px]:inline`,children:`open`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:C,className:Bt,children:f?`copied`:`copy path`}),(0,q.jsx)(`button`,{type:`button`,onClick:w,className:Bt,children:`full size`})]});function S(){t&&h({type:`editor`,title:g,metadata:{filePath:e,projectName:t},projectId:t,closable:!0})}function C(){fe(e).then(()=>p(!0))}function w(e){i&&m(i,g,Te(e.currentTarget))}if(!i||!y||!c)return(0,q.jsxs)(`div`,{className:`@container border-t border-border pt-1.5`,children:[i&&(0,q.jsx)(`img`,{src:i,alt:``,className:`hidden`,onLoad:e=>_(e.currentTarget),onError:()=>d(!0)}),(0,q.jsx)(It,{aspect:b,actions:x})]});let T=(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:X,children:`dimensions`}),(0,q.jsx)(`dd`,{className:zt,children:be(c,y.fit)}),a&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`dt`,{className:X,children:`size`}),(0,q.jsxs)(`dd`,{className:zt,children:[xe(a.size),a.type?` · ${a.type}`:``]})]}),(0,q.jsx)(`dt`,{className:X,children:`path`}),(0,q.jsx)(`dd`,{dir:`rtl`,className:`${zt} text-left`,children:e})]}),E=(0,q.jsx)(`img`,{src:i,alt:g,[Ee]:``,onLoad:e=>_(e.currentTarget),onError:()=>d(!0),className:y.fit===`cover`?`size-full object-cover`:y.fit===`contain`?`size-full object-contain`:`max-h-full max-w-full`});return(0,q.jsx)(`div`,{className:`@container border-t border-border pt-1.5`,children:(0,q.jsxs)(`div`,{className:`relative overflow-hidden rounded-lg border border-border p-[14px] @max-[470px]:p-[11px]`,children:[(0,q.jsx)(`img`,{"aria-hidden":`true`,alt:``,src:i,className:`absolute inset-0 size-full object-cover`,style:{filter:`var(--img-backdrop)`,transform:`scale(1.3)`}}),(0,q.jsx)(`div`,{className:`absolute inset-0`,style:{background:`var(--img-veil)`}}),y.variant===`band`?(0,q.jsxs)(`div`,{className:`relative grid gap-[11px]`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:w,title:`Open ${g}`,className:`img-checkerboard w-full cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)]`,style:{aspectRatio:y.aspect},children:E}),(0,q.jsx)(`dl`,{className:`grid grid-cols-[auto_auto_1fr] gap-x-[18px] font-mono text-[11.5px] [&_dt]:hidden`,children:T}),x]}):(0,q.jsxs)(`div`,{className:`relative grid grid-cols-[132px_1fr] items-start gap-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px]`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:w,title:`Open ${g}`,className:`cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)] bg-[var(--img-plate)] shadow-[var(--img-plate-shadow)] ${y.fit===`cover`?``:`img-checkerboard flex items-center justify-center`}`,style:{aspectRatio:y.aspect},children:E}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,q.jsx)(`p`,{className:`truncate text-[13px] font-semibold text-text @max-[470px]:hidden`,children:g}),(0,q.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:T}),x]})]})]})})}var Ht=/^(\/|[A-Za-z]:[/\\])/;function Ut(e,t,n){if(e.type!==`editor`)return!1;let r=e.metadata??{};return r.viewerKey||r.isUntitled||r.inlineContent!=null||r.filePath!==t?!1:Ht.test(t)||r.projectName===n}function Wt(e){let{grid:t,panels:n,focusedPanelId:r,sessionId:i}=e,a=t.flat().filter(e=>n[e]);if(a.length===0)return null;let o=a.find(e=>n[e].tabs.some(e=>oe(e)===i))??null,s=Gt(a,o,e);if(e.mobile)return s?{kind:`focus`,...s}:{kind:`open`,panelId:a[0],split:!1};if(o===null)return s?{kind:`focus`,...s}:{kind:`open`,panelId:a.includes(r)?r:a[0],split:!1};let c=n[o],l=c.tabs.some(e=>e.id===c.activeTabId&&oe(e)===i),u=Kt(t,o,r,a);return s?s.panelId!==o||!l?{kind:`focus`,...s}:{kind:`move`,tabId:s.tabId,fromPanelId:o,toPanelId:u}:u?{kind:`open`,panelId:u,split:!1}:{kind:`open`,panelId:o,split:!0}}function Gt(e,t,n){let r=[...e.filter(e=>e!==t),...t?[t]:[]];for(let e of r){let t=n.panels[e].tabs.find(n.isTarget);if(t)return{tabId:t.id,panelId:e}}return null}function Kt(e,t,n,r){if(n!==t&&r.includes(n))return n;let i=e.find(e=>e.includes(t))??[],a=i.indexOf(t);return[...i.slice(a+1),...i.slice(0,a).reverse(),...e.filter(e=>e!==i).flat()].find(e=>e!==t&&r.includes(e))??null}var qt=12e3,Jt=1500,Yt=e=>e instanceof Error?e.message:String(e);function Xt(e){if(!e||L.getState().currentProject===e)return;let t=se.getState().projects.find(t=>t.name===e);t&&(se.getState().setActiveProject(t),L.getState().switchProject(e))}function Zt(e,t){Xt(e.projectName);let n=L.getState(),r=Wt({grid:n.grid,panels:n.panels,focusedPanelId:n.focusedPanelId,mobile:n.isMobile(),sessionId:e.sessionId,isTarget:t});if(!r)throw Error(`PPM has no panel to open the tab in`);return r}function Qt(e){let t=L.getState(),n=e.kind===`focus`?e.panelId:e.fromPanelId;e.kind===`focus`?t.setActiveTab(e.tabId,e.panelId):e.toPanelId?t.moveTab(e.tabId,n,e.toPanelId):t.splitPanel(`right`,e.tabId,n)||t.setActiveTab(e.tabId,n)}function $t(e,t){let n=Zt(t,t=>Ut(t,e.filePath,e.projectName)),r=L.getState(),i=Date.now(),a=e.line?`code`:e.tool===`open_preview`?`preview`:void 0,o={...e.line?{lineNumber:e.line,endLine:void 0,revealAt:i}:{},...a?{aiView:a,aiOpenAt:i}:{}};if(n.kind===`open`){let t={filePath:e.filePath,...e.projectName?{projectName:e.projectName}:{},...o},i=De(e.projectName??void 0,e.filePath),a=Oe(i),s=r.openTab({type:`editor`,title:P(e.filePath),projectId:e.projectName,metadata:t,closable:!0},n.panelId);if(!s)throw Error(`PPM could not open the tab`);return n.split&&r.splitPanel(`right`,s,n.panelId),{tabId:s,previewKey:i,before:a}}let s=n.kind===`focus`?n.panelId:n.fromPanelId,c={...r.panels[s]?.tabs.find(e=>e.id===n.tabId)?.metadata,...o},l=De(c.projectName,String(c.filePath??e.filePath)),u=Oe(l);return r.updateTab(n.tabId,{metadata:c}),Qt(n),{tabId:n.tabId,previewKey:l,before:u}}function en(e,t){let n=Zt(t,()=>!1);if(n.kind!==`open`)throw Error(`PPM has no panel to open the tab in`);let r=L.getState(),i=F(Object.values(r.panels).flatMap(e=>e.tabs)),a={kind:`connection`,connectionId:e.connectionId,...e.database?{database:e.database}:{}},o=r.openTab({type:`db-query`,title:`Query ${i}`,projectId:null,closable:!0,metadata:{...re(a),connectionName:e.connectionName,dbType:e.dbType,...e.connectionColor?{connectionColor:e.connectionColor}:{},...ie(e.sql,i)}},n.panelId);if(!o)throw Error(`PPM could not open the tab`);return n.split&&r.splitPanel(`right`,o,n.panelId),o}function tn(e=window.location.hostname){return e===`localhost`||e===`[::1]`||/^127(?:\.\d{1,3}){3}$/.test(e)}function nn(e,t){if(e.via===`local`&&!tn())throw Error(`this device is not the machine PPM runs on, so it cannot reach localhost:${e.port}`);let n=Zt(t,t=>t.type===`web-preview`&&t.metadata?.url===e.url),r=L.getState(),i={url:e.url,port:e.port,via:e.via,aiOpenAt:Date.now()};if(n.kind===`open`){let t=r.openTab({type:`web-preview`,title:me(e.port,e.url),projectId:null,closable:!0,metadata:i},n.panelId);if(!t)throw Error(`PPM could not open the tab`);return n.split&&r.splitPanel(`right`,t,n.panelId),t}return r.updateTab(n.tabId,{metadata:i}),Qt(n),n.tabId}function rn(e,t){Xt(t.projectName);let n=L.getState().openInDock({type:`terminal`,title:P(e.cwd)||e.cwd,projectId:e.projectName,closable:!0,metadata:{sessionId:e.terminalId,cwd:e.cwd,...e.projectName?{projectName:e.projectName}:{}}});try{localStorage.setItem(`ppm:terminal-session:${n}`,e.terminalId)}catch{}return n}async function an(e,t,n){let r=t=>{let r={type:`tab_open_result`,requestId:e.requestId,...t};n(JSON.stringify(r))};if(e.tool===`open_query`||e.tool===`open_url`||e.tool===`run_in_terminal`){try{e.tool===`open_query`?en(e.query,t):e.tool===`open_url`?nn(e,t):rn(e,t),r({opened:!0})}catch(e){r({opened:!1,error:Yt(e)})}return}let i;try{i=$t({tool:e.tool,filePath:e.filePath,projectName:e.projectName,line:e.line},t)}catch(e){r({opened:!1,error:Yt(e)});return}if(!e.check){r({opened:!0});return}try{let t=await ke(i.previewKey,i.before,qt);if(!t){r({opened:!0,error:`the page did not start loading`});return}await new Promise(e=>setTimeout(e,Jt));let n=L.getState().isMobile()?`Phone`:`Desktop`;r({opened:!0,report:await t.check({screenshot:e.check.screenshot,frame:n})})}catch(e){r({opened:!0,error:Yt(e)})}}async function on(e,t){let n=t?se.getState().projects.find(e=>e.name===t)?.path:void 0,r=e.path.trim(),i=/^(\/|[a-z]:[/\\]|~(?:[/\\]|$))/i.test(r);if(!i&&!n)throw Error(`this chat has no project folder`);let a=await pe.stat(i?r:ue(n,r));if(a.kind===`directory`)throw Error(`${r} is a folder`);let o=n?le(n,a.path):null;return o?{tool:e.tool,filePath:o,projectName:t,line:e.line}:{tool:e.tool,filePath:a.path,projectName:null,line:e.line}}var sn=RegExp(`^(?:mcp__${Pe}__|${Ve}:)(${Ae}|${Re})$`),cn=RegExp(`^(?:mcp__${Pe}__|${Ve}:)(${Fe}|${Me}|${je})$`),ln=/^\[image(?: [^\]\s]+)?\]$/,Z=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function un(e,t){let n=sn.exec(e)?.[1];if(!n||!Z(t))return null;let r=`arguments`in t?t.arguments:t;if(!Z(r)||typeof r.path!=`string`||!r.path.trim())return null;let i=r.line,a=n===`open_file`&&typeof i==`number`&&Number.isInteger(i)&&i>=1&&i<=1e7;return{tool:n,path:r.path,...a?{line:i}:{}}}function dn(e){return cn.exec(e)?.[1]??null}function fn(e,t){let n=dn(e);if(!n||!Z(t))return null;let r=`arguments`in t&&Z(t.arguments)?t.arguments:t,i=e=>typeof e==`string`&&e.trim()?e:void 0;if(n===`open_url`){let e=i(r.url);return e?{tool:n,url:e}:null}if(n===`run_in_terminal`){let e=i(r.command),t=i(r.cwd);return e?{tool:n,command:e,...t?{cwd:t}:{}}:null}let a=i(r.terminal),o=typeof r.lines==`number`&&Number.isInteger(r.lines)&&r.lines>0?r.lines:void 0;return{tool:Me,...a?{terminal:a}:{},...o?{lines:o}:{}}}function pn(e){let t=()=>e.split(`
4
+ `).filter(e=>!ln.test(e)).join(`
5
+ `).trimEnd();if(!e.startsWith(`[`))return t();try{let n=JSON.parse(e);return Array.isArray(n)?n.filter(e=>Z(e)&&e.type===`text`&&typeof e.text==`string`).map(e=>e.text).filter(e=>!At(e)).join(`
6
+
7
+ `):t()}catch{return t()}}function mn(e){let t=e.split(`
8
+ `)[1]??``;if(t.startsWith(`No layout problems or runtime errors were found`))return 0;let n=/^(\d+) problems? found\b/.exec(t);return n?Number(n[1]):null}function hn(e){return e===`codex`?`codex`:`claude`}var gn=(0,K.createContext)(null);function _n(){return(0,K.useContext)(gn)}function vn({value:e,children:t}){return(0,K.createElement)(gn.Provider,{value:e},t)}function yn({call:e,toolUseId:t,output:n,isError:r,done:i,projectName:a}){let[o,u]=(0,K.useState)(!1),d=_n(),f=n===void 0?``:pn(n),p=e.tool===`open_preview`&&!r?mn(f):null,h=P(e.path),g=e.tool===`open_preview`?m:te,_=async()=>{let t=d?.projectName||a;try{$t(await on(e,t),{sessionId:d?.sessionId??``,projectName:t})}catch(e){ne.error(`Could not open ${h}`,{description:e instanceof Error?e.message:String(e)})}};return(0,q.jsxs)(`div`,{"data-tool-ref":t,className:`rounded-[11px] border border-border overflow-hidden text-xs bg-panel`,children:[(0,q.jsxs)(`div`,{className:`flex items-center min-w-0`,children:[(0,q.jsxs)(`button`,{type:`button`,onClick:()=>u(!o),"aria-expanded":o,className:`flex items-center gap-2.5 px-2.5 py-2 flex-1 min-w-0 text-left hover:bg-panel-2/40 transition-colors max-md:min-h-11`,children:[(0,q.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 bg-info/15 text-info`,children:(0,q.jsx)(g,{className:`size-3.5`})}),(0,q.jsxs)(`span`,{className:`truncate text-text font-medium`,children:[e.tool===`open_preview`?`Preview`:`Opened`,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` · `,h,e.line?`:${e.line}`:``]})]}),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[p!==null&&(0,q.jsx)(`span`,{className:`text-[10px] ${p>0?`text-warning`:`text-text-3`}`,children:p===0?`no problems`:`${p} ${p===1?`problem`:`problems`}`}),r?(0,q.jsx)(D,{className:`size-3.5 text-error`}):i?(0,q.jsx)(c,{className:`size-3.5 text-success`}):(0,q.jsx)(k,{className:`size-3.5 text-primary animate-spin`}),o?(0,q.jsx)(l,{className:`size-3 text-text-3`}):(0,q.jsx)(s,{className:`size-3 text-text-3`})]})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>void _(),title:`Open ${h} in a tab`,className:`shrink-0 mr-1 px-2.5 h-7 rounded-md text-primary font-medium hover:bg-accent-wash transition-colors max-md:h-11 max-md:min-w-11`,children:`Open`})]}),o&&(0,q.jsxs)(`div`,{className:`px-2.5 pb-2 select-text`,children:[(0,q.jsx)(`p`,{className:`text-text-subtle font-mono break-all`,children:e.path}),f&&(0,q.jsx)(`pre`,{className:`mt-1.5 border-t border-border pt-1.5 max-h-60 overflow-auto whitespace-pre-wrap break-words text-text-subtle font-mono`,children:f})]})]})}var bn=(e,t)=>e.length>t?`${e.slice(0,t)}…`:e;function xn({call:e}){return e.tool===`open_url`?(0,q.jsxs)(q.Fragment,{children:[`Open app `,(0,q.jsx)(`span`,{className:`font-mono text-text-subtle`,children:bn(e.url.replace(/^https?:\/\//,``),60)})]}):e.tool===`run_in_terminal`?(0,q.jsxs)(q.Fragment,{children:[`Type in terminal `,(0,q.jsx)(`span`,{className:`font-mono text-text-subtle`,children:bn(e.command,60)})]}):(0,q.jsxs)(q.Fragment,{children:[`Read terminal`,e.terminal&&(0,q.jsxs)(`span`,{className:`font-mono text-text-subtle`,children:[` `,e.terminal]}),e.lines&&(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` · `,e.lines,` lines`]})]})}function Sn({call:e}){return e.tool===`open_url`?(0,q.jsx)(`p`,{className:`font-mono text-text-secondary break-all`,children:e.url}):e.tool===`run_in_terminal`?(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:e.command}),e.cwd&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,(0,q.jsx)(`span`,{className:`font-mono text-text-secondary break-all`,children:e.cwd})]})]}):(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[e.terminal?(0,q.jsxs)(q.Fragment,{children:[`Terminal `,(0,q.jsx)(`span`,{className:`font-mono text-text-secondary`,children:e.terminal})]}):`The chat's terminals`,e.lines?`, last ${e.lines} lines`:``]})}var Cn=RegExp(`^(?:mcp__${Be}__|${Ie}:)(${Ne}|${Le}|${ze})$`),wn=e=>!!e&&typeof e==`object`&&!Array.isArray(e),Tn={[Ne]:`Database query`,[Le]:`Open query`,[ze]:`Database change`};function En(e){return Cn.exec(e)?.[1]??null}function Dn(e,t){let n=En(e);if(!n||!wn(t))return null;let r=`arguments`in t&&wn(t.arguments)?t.arguments:t;return typeof r.connection!=`string`||typeof r.sql!=`string`?null:{tool:n,connection:r.connection,sql:r.sql,...typeof r.database==`string`&&r.database?{database:r.database}:{},...typeof r.reason==`string`&&r.reason?{reason:r.reason}:{},...typeof r.expected_rows==`number`?{expectedRows:r.expected_rows}:{}}}var On=e=>e.split(`
9
+ `).find(e=>e.trim())?.trim()??``,kn=(e,t)=>e.length>t?`${e.slice(0,t)}…`:e;function An({call:e}){let t=e.tool===`db_execute`&&e.reason?e.reason:On(e.sql);return(0,q.jsxs)(q.Fragment,{children:[Tn[e.tool],` `,(0,q.jsxs)(`span`,{className:`text-text-primary`,children:[e.connection,e.database?` / ${e.database}`:``]}),t&&(0,q.jsxs)(`span`,{className:`text-text-subtle${t===e.reason?``:` font-mono`}`,children:[` · `,kn(t,60)]})]})}function jn({call:e}){return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`p`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-text-subtle`,children:`Connection`}),(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:e.connection}),e.database&&(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`database `,(0,q.jsx)(`span`,{className:`font-mono text-text-secondary`,children:e.database})]})]}),e.reason&&(0,q.jsx)(`p`,{className:`text-text-secondary italic`,children:e.reason}),(0,q.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-auto max-h-60 whitespace-pre-wrap break-all`,children:e.sql}),e.expectedRows!=null&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`Expected rows changed: `,(0,q.jsx)(`span`,{className:`text-text-secondary`,children:e.expectedRows})]})]})}function Mn({handle:e,description:t,stepCount:n,lastStep:r,status:i,bgRunning:a,onOpen:o}){let l=he(),u=i===`error`?D:i===`done`?c:k,d=i===`error`?`text-error`:i===`done`?`text-success`:`text-primary animate-spin`;return(0,q.jsxs)(`button`,{type:`button`,onClick:o,className:N(`flex w-full items-center gap-2.5 rounded-[11px] border border-border bg-panel px-2.5 text-left text-xs`,`transition-colors hover:bg-panel-2/40`,l?`min-h-[44px] py-2`:`py-2`),title:e?`Open ${e}'s session`:`Open agent session`,children:[(0,q.jsx)(`span`,{className:N(`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0`,e?`bg-accent-2/15 text-accent-2`:`bg-accent-wash text-primary`),children:e?(0,q.jsx)(T,{className:`size-3.5`}):(0,q.jsx)(O,{className:`size-3.5`})}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[e?(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:e}):(0,q.jsx)(`span`,{className:`font-medium text-text`,children:t||`Agent`}),!!r&&(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` · `,r]})]}),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0 text-text-3`,children:[a&&(0,q.jsx)(`span`,{className:`text-[10px] text-primary`,children:`running…`}),n>0&&(0,q.jsx)(`span`,{className:`font-mono text-[10px]`,children:H(n)}),(0,q.jsx)(u,{className:N(`size-3.5`,d)}),(0,q.jsx)(s,{className:`size-3`})]})]})}function Nn(e,t){let n=e;return typeof n?.sessionId!=`string`||!n.source?!1:G(n.sessionId,n.source)===G(t.sessionId,t.source)}function Pn(){let e=de(),t=R(e=>e.open);return(0,K.useCallback)((n,r)=>{if(!n.sessionId)return;if(r&&pt(G(n.sessionId,n.source),r),e){t(n);return}let i=I.getState(),a=n,o=Object.values(i.windows),s=o.find(e=>e.kind===`agent-session`&&Nn(e.payload,n));if(s){i.focus(s.id);return}if(o.length>=8){let e=o.filter(e=>e.kind===`agent-session`).sort((e,t)=>e.rank-t.rank);if(e.length===0){ne.error(`Too many windows open`,{description:`Close one to open this session.`});return}i.close(e[0].id)}let c=ae(Object.values(I.getState().windows).map(e=>e.rect),I.getState().bounds);I.getState().open(`agent-session`,a,c)},[e,t])}function Q(e,t){if(e!==`Agent`&&e!==`Task`)return null;let n=t.name;return typeof n==`string`&&n.trim()?n.trim():null}function Fn(e,t,n=!1){if(t&&(e===`Bash`||e===`PowerShell`))return{Icon:a,cls:`bg-error/15 text-error`};if(n)return{Icon:T,cls:`bg-accent-2/15 text-accent-2`};let s=En(e);if(s)return s===`db_execute`?{Icon:S,cls:`bg-warning/15 text-warning`}:{Icon:w,cls:`bg-info/15 text-info`};let c=dn(e);if(c)return c===`open_url`?{Icon:i,cls:`bg-info/15 text-info`}:{Icon:a,cls:`bg-panel-2 text-text-2`};switch(e){case`Read`:case`Glob`:case`LS`:return{Icon:f,cls:`bg-accent-wash text-primary`};case`Grep`:case`Search`:case`WebSearch`:case`ToolSearch`:return{Icon:A,cls:`bg-accent-wash text-primary`};case`WebFetch`:case`Fetch`:return{Icon:i,cls:`bg-info/15 text-info`};case`Edit`:case`MultiEdit`:case`NotebookEdit`:return{Icon:d,cls:`bg-accent-2/15 text-accent-2`};case`Write`:return{Icon:ee,cls:`bg-success/15 text-success`};case`Bash`:case`PowerShell`:return{Icon:a,cls:`bg-panel-2 text-text-2`};case`TodoWrite`:return{Icon:p,cls:`bg-warning/15 text-warning`};case`Task`:case`Agent`:return{Icon:O,cls:`bg-accent-wash text-primary`};case`SendMessage`:return{Icon:u,cls:`bg-info/15 text-info`};case`AskUserQuestion`:return{Icon:o,cls:`bg-accent-wash text-primary`};case`ExitPlanMode`:return{Icon:r,cls:`bg-accent-wash text-primary`};case`Skill`:return{Icon:b,cls:`bg-accent-2/15 text-accent-2`};case`ImageGen`:return{Icon:y,cls:`bg-accent-2/15 text-accent-2`};default:return{Icon:h,cls:`bg-panel-2 text-text-2`}}}function In(e){let t=e.type===`approval_request`;return{toolName:e.type===`tool_use`?e.tool:t?e.tool??`Tool`:`Tool`,input:e.type===`tool_use`?e.input:t?e.input??{}:{}}}var Ln=new Set([`Read`,`ImageGen`]);function Rn(e){if(e.type!==`tool_use`||!Ln.has(e.tool))return null;let t=e.input?.file_path;return typeof t!=`string`||!/^(\/|[A-Za-z]:[/\\])/.test(t)?null:Ot(t)?t:null}function zn({tool:e,result:t,completed:n,projectName:r,bashPartialOutput:i,variant:a=`chat`}){let[o,u]=(0,K.useState)(()=>{let n=(e.type,e.tool),r=t?.type===`tool_result`&&!!t.isError;return(n===`Edit`||n===`MultiEdit`)&&!r?!0:!!Rn(e)}),d=Pn(),f=_n();if(e.type===`error`)return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 rounded bg-error/10 border border-error/20 px-2 py-1.5 text-xs text-error`,children:[(0,q.jsx)(C,{className:`size-3`}),(0,q.jsx)(`span`,{children:e.message})]});let{toolName:p,input:m}=In(e),h=t?.type===`tool_result`,g=h&&!!t.isError,_=h&&typeof t.exitCode==`number`?t.exitCode:void 0,v=p===`AskUserQuestion`&&!!m?.answers,y=e.type===`approval_request`&&e.approved!=null,b=(p===`Agent`||p===`Task`)&&e.type===`tool_use`,x=b?e.children:void 0,S=x&&x.length>0,w=b&&e.type===`tool_use`?e.bgStatus:void 0,T=b&&(w!=null||h&&!g&&Nt(String(t.output??``)))&&w==null,E=w===`failed`||w===`stopped`,O=T?!1:h||v||y||n,ee=[`Edit`,`MultiEdit`,`Write`,`NotebookEdit`].includes(p),A=Rn(e),te=h&&jt(String(t.output??``)),ne=!!A,j=e.type===`tool_use`?e.toolUseId:void 0,M=e.type===`tool_use`?un(p,m):null;if(M)return(0,q.jsx)(yn,{call:M,toolUseId:j,output:h?String(t.output??``):void 0,isError:g,done:!!O,projectName:r});if(b&&a===`chat`&&e.type===`tool_use`){let t=Q(p,m),n=t?``:$(String(m.description??m.prompt??``),60),{stepCount:i,lastStep:a}=at(e),o=g||E?`error`:O?`done`:`running`,s=j??``,c=f??{projectName:r??``,providerId:hn(void 0),sessionId:`local:${s||`card`}`},l=lt(e.children??[],e.recentChildren??[]);return(0,q.jsx)(Mn,{handle:t,description:n,stepCount:i,lastStep:a,status:o,bgRunning:T,onOpen:()=>d({projectName:c.projectName,providerId:c.providerId,sessionId:c.sessionId,source:{kind:`card`,cardId:s},title:t?`Session — ${t}`:n||`Agent session`,prompt:String(m.prompt??m.description??``)},l)})}let N=(p===`Bash`||p===`PowerShell`)&&!h&&j?i?.current?.get(j):void 0,P=!!N;(0,K.useEffect)(()=>{P&&!o&&u(!0)},[P]);let F=(0,K.useRef)(!1);(0,K.useEffect)(()=>{g&&(p===`Edit`||p===`MultiEdit`)&&!F.current&&(F.current=!0,u(!1))},[g,p]);let{Icon:re,cls:ie}=Fn(p,g,!!Q(p,m)),I=p===`AskUserQuestion`||p===`ExitPlanMode`||b;return(0,q.jsxs)(`div`,{"data-tool-ref":j,className:`rounded-[11px] border overflow-hidden text-xs bg-panel ${I?`border-accent-wash-border`:`border-border`}`,children:[(0,q.jsxs)(`button`,{onClick:()=>u(!o),className:`flex items-center gap-2.5 px-2.5 py-2 w-full text-left hover:bg-panel-2/40 transition-colors min-w-0`,children:[(0,q.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 ${ie}`,children:(0,q.jsx)(re,{className:`size-3.5`})}),(0,q.jsx)(`span`,{className:`truncate text-text font-medium`,children:(0,q.jsx)(Bn,{name:p,input:m})}),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[P&&(0,q.jsxs)(`span`,{className:`text-[10px] text-warning`,children:[N.lineCount,` line`,N.lineCount===1?``:`s`,` streaming…`]}),S&&!P&&(0,q.jsx)(`span`,{className:`text-[10px] text-text-3 font-mono`,children:H(x.length)}),T&&(0,q.jsx)(`span`,{className:`text-[10px] text-primary`,children:`running…`}),_!=null&&(0,q.jsxs)(`span`,{className:`text-[10px] font-mono ${_===0?`text-text-3`:`text-error`}`,children:[`exit `,_]}),g||E?(0,q.jsx)(D,{className:`size-3.5 text-error`}):O?(0,q.jsx)(c,{className:`size-3.5 text-success`}):(0,q.jsx)(k,{className:`size-3.5 text-primary animate-spin`}),o?(0,q.jsx)(l,{className:`size-3 text-text-3`}):(0,q.jsx)(s,{className:`size-3 text-text-3`})]})]}),o&&(0,q.jsxs)(`div`,{className:`px-2 pb-2 space-y-1.5 select-text`,children:[(e.type===`tool_use`||e.type===`approval_request`)&&(0,q.jsx)(Vn,{name:p,input:m,projectName:r,toolUseId:j}),N&&(0,q.jsx)(qn,{content:N.content,lineCount:N.lineCount}),S&&(0,q.jsx)(Kn,{events:x,projectName:r,variant:a}),A&&(0,q.jsx)(Vt,{filePath:A,projectName:r??``}),h&&!(ee&&!g)&&!(te&&!g)&&!(ne&&!g)&&(0,q.jsx)(Wn,{toolName:p,output:t.output})]})]})}function Bn({name:e,input:t}){let n=e=>String(e??``),r=Dn(e,t);if(r)return(0,q.jsx)(An,{call:r});let a=fn(e,t);if(a)return(0,q.jsx)(xn,{call:a});switch(e){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:P(n(t.file_path))})]});case`Bash`:case`PowerShell`:{let r=t.description?n(t.description):n(t.command);return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle${t.description?``:` font-mono`}`,children:$(r,60)})]})}case`Glob`:return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`font-mono text-text-subtle`,children:n(t.pattern)})]});case`Grep`:return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsx)(`span`,{className:`font-mono text-text-subtle`,children:$(n(t.pattern),40)})]});case`WebSearch`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(A,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`WebFetch`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(i,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.url),50)})]});case`ToolSearch`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(A,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`ImageGen`:{let e=(n(t.prompt).split(`
10
+ `).find(e=>e.trim())??``)||P(n(t.file_path));return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(y,{className:`size-3 inline`}),` Image`,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` `,$(e,50)]})]})}case`Agent`:case`Task`:{let r=Q(e,t),i=$(n(t.description||t.prompt),r?44:60);return(0,q.jsxs)(q.Fragment,{children:[!r&&(0,q.jsx)(O,{className:`size-3 inline`}),` `,e,` `,r&&(0,q.jsx)(`span`,{className:`text-text-primary font-medium`,children:r}),(0,q.jsx)(`span`,{className:`text-text-subtle`,children:r?` · ${i}`:i})]})}case`SendMessage`:return(0,q.jsx)(wt,{name:e,input:t});case`TodoWrite`:{let n=Array.isArray(t.todos)?t.todos:[],r=n.filter(e=>e.status===`completed`).length;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[r,`/`,n.length,` done`]})]})}case`AskUserQuestion`:{let n=Array.isArray(t.questions)?t.questions:[],r=!!t.answers;return(0,q.jsxs)(q.Fragment,{children:[e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[n.length,` question`,n.length===1?``:`s`,r?` ✓`:``]})]})}case`ScheduleWakeup`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(E,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`in `,Zn(Number(t.delaySeconds)),t.reason?` — ${$(n(t.reason),50)}`:``]})]});case`TaskCreate`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.subject),60)})]});case`TaskUpdate`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` → `,n(t.status)]})]});case`TaskStop`:return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(g,{className:`size-3 inline`}),` `,e,` `,(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` stopped`]})]});default:return(0,q.jsx)(q.Fragment,{children:e})}}function Vn({name:e,input:t,projectName:n,toolUseId:r}){let a=e=>String(e??``),{openTab:o}=ce(ge(e=>({openTab:e.openTab}))),s=e=>{n&&o({type:`editor`,title:P(e),metadata:{filePath:e,projectName:n},projectId:n,closable:!0})},c=(e,t,r)=>{o({type:`git-diff`,title:`Diff ${P(e)}`,metadata:{filePath:e,projectName:n,original:t,modified:r},projectId:n??null,closable:!0})},l=Dn(e,t);if(l)return(0,q.jsx)(jn,{call:l});let u=fn(e,t);if(u)return(0,q.jsx)(Sn,{call:u});switch(e){case`Bash`:case`PowerShell`:return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,q.jsx)(`p`,{className:`text-text-subtle italic`,children:a(t.description)}),(0,q.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:a(t.command)})]});case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let n=a(t.notebook_path||t.file_path),i=e===`Edit`&&(!!t.old_string||!!t.new_string),o=e=>r?`${r}-${e}`:void 0;return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,q.jsxs)(`button`,{type:`button`,className:`font-mono text-text-secondary break-all hover:text-primary hover:underline text-left flex items-center gap-1 min-w-0`,onClick:()=>s(n),title:`Open file in editor`,children:[(0,q.jsx)(v,{className:`size-3 shrink-0`}),n]}),i&&(0,q.jsxs)(`button`,{type:`button`,className:`text-text-subtle hover:text-primary hover:underline flex items-center gap-1 shrink-0 whitespace-nowrap`,onClick:()=>c(n,a(t.old_string),a(t.new_string)),title:`View diff in new tab`,children:[(0,q.jsx)(_,{className:`size-3 shrink-0`}),`View Diff`]})]}),i&&(0,q.jsx)(`div`,{"data-edit-ref":o(0),children:(0,q.jsx)(Xn,{oldStr:a(t.old_string),newStr:a(t.new_string),filePath:n})}),e===`MultiEdit`&&Array.isArray(t.edits)&&(0,q.jsx)(`div`,{className:`space-y-1.5`,children:t.edits.map((e,t)=>(0,q.jsxs)(`div`,{"data-edit-ref":o(t),className:`space-y-0.5`,children:[(0,q.jsxs)(`p`,{className:`text-text-subtle text-[10px]`,children:[`Edit `,t+1]}),(0,q.jsx)(Xn,{oldStr:a(e.old_string),newStr:a(e.new_string),filePath:n})]},t))}),e===`Write`&&!!t.content&&(0,q.jsx)(`pre`,{"data-edit-ref":o(0),className:`font-mono text-text-subtle overflow-x-auto max-h-32 whitespace-pre-wrap`,children:$(a(t.content),300)})]})}case`Glob`:return(0,q.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[a(t.pattern),t.path?` in ${a(t.path)}`:``]});case`Grep`:return(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[`/`,a(t.pattern),`/`]}),!!t.path&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,a(t.path)]})]});case`TodoWrite`:return(0,q.jsx)(Un,{todos:t.todos??[]});case`Agent`:case`Task`:{let n=Q(e,t);return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[!!n&&(0,q.jsxs)(`p`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-text-subtle`,children:`Name`}),(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:n}),(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-accent-2/15 text-accent-2`,children:`teammate`}),t.isolation===`worktree`&&(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:`worktree`})]}),!!t.description&&(0,q.jsx)(`p`,{className:`text-text-secondary font-medium`,children:a(t.description)}),!!t.subagent_type&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`Type: `,a(t.subagent_type)]}),!!t.prompt&&(0,q.jsx)(J,{content:a(t.prompt),maxHeight:`max-h-48`})]})}case`SendMessage`:return(0,q.jsx)(Tt,{input:t});case`ToolSearch`:return(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(`p`,{className:`font-mono text-text-secondary`,children:a(t.query)}),!!t.max_results&&(0,q.jsxs)(`p`,{className:`text-text-subtle`,children:[`Max results: `,a(t.max_results)]})]});case`WebFetch`:return(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsxs)(`a`,{href:a(t.url),target:`_blank`,rel:`noopener noreferrer`,className:`font-mono text-primary hover:underline break-all flex items-center gap-1`,children:[(0,q.jsx)(i,{className:`size-3 shrink-0`}),a(t.url)]}),!!t.prompt&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:$(a(t.prompt),100)})]});case`AskUserQuestion`:{let e=t.questions??[],n=t.answers??{};return(0,q.jsx)(`div`,{className:`space-y-2`,children:e.map((e,t)=>(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsxs)(`p`,{className:`text-text-primary font-medium`,children:[e.header?`${e.header}: `:``,e.question]}),(0,q.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.options.map((t,r)=>(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-xs border ${(n[e.question]??``).split(`, `).includes(t.label)?`border-primary bg-primary/20 text-text-primary`:`border-border text-text-subtle`}`,children:t.label},r))}),n[e.question]&&(0,q.jsxs)(`p`,{className:`text-foreground text-xs`,children:[`Answer: `,n[e.question]]})]},t))})}case`ScheduleWakeup`:{let e=Number(t.delaySeconds)||0;return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsxs)(`p`,{className:`text-text-secondary`,children:[(0,q.jsx)(E,{className:`size-3 inline mr-1`}),`Wake in `,(0,q.jsx)(`span`,{className:`font-medium text-text-primary`,children:Zn(e)}),(0,q.jsxs)(`span`,{className:`text-text-subtle`,children:[` (`,e,`s)`]})]}),!!t.reason&&(0,q.jsx)(`p`,{className:`text-text-secondary italic`,children:a(t.reason)}),!!t.prompt&&(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`p`,{className:`text-text-subtle text-[10px] mb-0.5`,children:`Prompt on wake`}),(0,q.jsx)(J,{content:a(t.prompt),maxHeight:`max-h-48`})]})]})}case`TaskCreate`:return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-text-primary font-medium`,children:a(t.subject)}),!!t.description&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:a(t.description)}),!!t.activeForm&&(0,q.jsx)(`p`,{className:`text-text-subtle italic`,children:a(t.activeForm)})]});case`TaskUpdate`:return(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,a(t.taskId)]}),(0,q.jsx)(Hn,{status:a(t.status)})]});case`TaskStop`:return(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,a(t.taskId)]}),(0,q.jsx)(Hn,{status:`stopped`})]});case`ImageGen`:return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[!!t.prompt&&(0,q.jsx)(`p`,{className:`text-text-secondary whitespace-pre-wrap`,children:a(t.prompt)}),t.transparentBackground===!0&&(0,q.jsx)(`p`,{className:`text-text-subtle`,children:`Transparent background`})]});default:return(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-secondary font-mono whitespace-pre-wrap break-all`,children:JSON.stringify(t,null,2)})}}function Hn({status:e}){return(0,q.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] border ${e===`completed`?`text-success border-success/30 bg-success/10`:e===`in_progress`?`text-warning border-warning/30 bg-warning/10`:`text-text-subtle border-border bg-surface`}`,children:e})}function Un({todos:e}){return(0,q.jsx)(`div`,{className:`space-y-0.5`,children:e.map((e,t)=>(0,q.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,q.jsx)(`span`,{className:`shrink-0 mt-0.5 ${e.status===`completed`?`text-success`:e.status===`in_progress`?`text-warning`:`text-text-subtle`}`,children:e.status===`completed`?`✓`:e.status===`in_progress`?`▶`:`○`}),(0,q.jsx)(`span`,{className:e.status===`completed`?`line-through text-text-subtle`:`text-text-secondary`,children:e.content})]},t))})}function Wn({toolName:e,output:t}){let[n,r]=(0,K.useState)(!1),i=(0,K.useMemo)(()=>{if(e!==`Agent`&&e!==`Task`)return null;try{let e=JSON.parse(t);if(Array.isArray(e)){let t=e.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
11
+
12
+ `);if(t)return t}if(typeof e==`string`)return e}catch{if(t&&!t.startsWith(`[{`))return t}return null},[e,t]);return e===`SendMessage`&&St(t)?(0,q.jsx)(Et,{output:t}):i?(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,q.jsx)(J,{content:i,maxHeight:`max-h-60`}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,q.jsx)(h,{className:`size-3`}),n?`Hide`:`Show`,` raw`]}),n&&(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:t})]}):(0,q.jsx)(Gn,{output:t})}function Gn({output:e}){let t=e.split(`
13
+ `).length,n=t>3||e.length>200,[r,i]=(0,K.useState)(n);return(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[n&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors mb-1`,children:[r?(0,q.jsx)(s,{className:`size-3`}):(0,q.jsx)(l,{className:`size-3`}),`Output (`,t,` lines)`]}),(0,q.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono whitespace-pre-wrap break-all ${r?`max-h-16 overflow-hidden`:`max-h-60`}`,children:e})]})}function Kn({events:e,projectName:t,className:n,variant:r=`chat`}){let i=[],a=``;for(let t of e)if(t.type===`text`)a+=t.content;else if(t.type===`tool_use`)a&&=(i.push({kind:`text`,content:a}),``),i.push({kind:`tool`,tool:t});else if(t.type===`tool_result`){let e=t.toolUseId,n=e?i.find(t=>t.kind===`tool`&&t.tool.type===`tool_use`&&t.tool.toolUseId===e&&!t.result):i.findLast(e=>e.kind===`tool`&&!e.result);n&&(n.result=t)}a&&i.push({kind:`text`,content:a});let o=(0,K.useRef)(null),s=(0,K.useRef)(!1);return(0,K.useEffect)(()=>{o.current&&!s.current&&(o.current.scrollTop=o.current.scrollHeight)},[i.length]),(0,q.jsx)(`div`,{ref:o,onScroll:e=>{let t=e.currentTarget;s.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:n??`border-l-2 border-accent/20 pl-2 space-y-1 mt-1 max-h-64 md:max-h-96 overflow-y-auto`,children:i.map((e,n)=>e.kind===`text`?(0,q.jsx)(`div`,{className:`text-text-secondary text-[11px]`,children:(0,q.jsx)(J,{content:e.content,maxHeight:`max-h-24`})},`st-${n}`):(0,q.jsx)(zn,{tool:e.tool,result:e.result,completed:!!e.result,projectName:t,variant:r},`sc-${n}`))})}function qn({content:e,lineCount:t}){let n=(0,K.useRef)(null),r=(0,K.useRef)(!1);return(0,K.useEffect)(()=>{n.current&&!r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e]),(0,q.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-warning mb-1`,children:[(0,q.jsx)(k,{className:`size-3 animate-spin`}),(0,q.jsxs)(`span`,{children:[`Output (`,t,` line`,t===1?``:`s`,`, streaming...)`]})]}),(0,q.jsx)(`pre`,{ref:n,onScroll:e=>{let t=e.currentTarget;r.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:`overflow-x-auto overflow-y-auto max-h-60 text-text-subtle font-mono whitespace-pre-wrap break-all text-[11px]`,children:e.split(`
14
+ `).slice(-200).join(`
15
+ `)})]})}var Jn=M(()=>import(`./edit-diff-preview-DyWUMlkI.js`),__vite__mapDeps([60,2,3,61])),Yn=(0,K.lazy)(()=>Jn);function Xn(e){return(0,q.jsx)(K.Suspense,{fallback:(0,q.jsx)(`div`,{className:`animate-pulse h-8 bg-muted rounded`}),children:(0,q.jsx)(Yn,{...e})})}function $(e,t=50){return e?e.length>t?e.slice(0,t)+`…`:e:``}function Zn(e){if(!Number.isFinite(e)||e<=0)return`0s`;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.round(e%60),i=[];return t&&i.push(`${t}h`),n&&i.push(`${n}m`),(r||i.length===0)&&i.push(`${r}s`),i.join(` `)}export{hn as a,_t as c,ut as d,H as f,tt as g,Ze as h,vn as i,G as l,Xe as m,zn as n,an as o,dt as p,Pn as r,Nt as s,Kn as t,ft as u};
@@ -0,0 +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{k as r}from"./api-client-xQDlhUTu.js";import"./chat-preparation-cache-190LLyy7.js";import"./button-C9ZXWb3b.js";import"./design-canvas-check-BIHc2d_k.js";import{a as i,f as a,g as o,h as s,m as c,p as l}from"./db-ai-tools-CVbbW_MZ.js";import{a as u,b as d}from"./api-settings-vmIRFNwZ.js";import{n as f,r as p}from"./settings-rows-DD7Gxmst.js";var m=e(t(),1),h=[s,o];[...[a,l,c,...h],...i];var g=[a,l];function _(e,t){let n=e.ppm_tools?.[t];return typeof n==`boolean`?n:g.includes(t)?e.tab_tools===!0:!0}var v=n(),y=e=>e instanceof Error?e.message:String(e),b={open_file:{label:`Open files`,note:`Opens a file in a PPM tab, at a line when it points you at one.`},open_preview:{label:`Show pages`,note:`Opens a page, chart or report it made in a PPM tab, and reads back its errors and a screenshot. While on, Claude's claude.ai Artifact tool is off.`},open_url:{label:`Show running apps`,note:`Opens a web server running on this machine, such as a dev server, in a PPM tab. On another device it goes through a private Tailscale forward; it never makes a public link.`},read_terminal:{label:`Read terminals`,note:`Reads what the terminals of the chat's project printed, so you need not paste an error into the chat.`},run_in_terminal:{label:`Type commands`,note:`Opens a terminal with a command typed in, for one that needs your password or your eyes. Nothing runs until you press Enter.`},db_query:{label:`Read databases`,note:`Runs read-only SQL. It cannot change anything.`},open_query:{label:`Open Query tabs`,note:`Opens a Query tab holding a script it wrote. You press Run.`},db_execute:{label:`Change databases`,note:`Runs a change only after you approve it with PPM's password, once, in one transaction.`}},x=[{title:`Tabs`,intro:`On the device you are chatting from.`,tools:[`open_file`,`open_preview`,`open_url`]},{title:`Terminal`,intro:`PPM's own terminals, on the machine PPM runs on.`,tools:h},{title:`Database`,intro:`On the connections with “Available to the AI chat” on. The AI never sees their passwords.`,tools:i}];function S(){let[e,t]=(0,m.useState)(null),[n,i]=(0,m.useState)(null),a=(0,m.useCallback)(async()=>{try{t(await u()),i(null)}catch(e){i(y(e))}},[]);(0,m.useEffect)(()=>{a()},[a]);let o=(0,m.useCallback)(async(e,n)=>{t(t=>t&&{...t,ppm_tools:{...t.ppm_tools,[e]:n}});try{t(await d({ppm_tools:{[e]:n}}))}catch(e){r.error(`Could not save`,{description:y(e)}),await a()}},[a]);return e?(0,v.jsxs)(`div`,{className:`space-y-6`,children:[(0,v.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`PPM's own tools for the AI chat, with Claude and Codex alike. New chats get the tools that are on; turning one off also stops it in chats already open.`}),x.map(t=>(0,v.jsxs)(`section`,{className:`space-y-3`,children:[(0,v.jsx)(f,{title:t.title,children:t.intro}),(0,v.jsx)(`div`,{className:`divide-y divide-border rounded-lg border border-border`,children:t.tools.map(t=>(0,v.jsx)(p,{label:(0,v.jsxs)(v.Fragment,{children:[b[t].label,(0,v.jsx)(`code`,{className:`ml-2 font-mono text-[11px] text-muted-foreground`,children:t})]}),note:b[t].note,checked:_(e,t),onChange:e=>void o(t,e)},t))})]},t.title))]}):(0,v.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n??`Loading…`})}export{S as ToolsSettingsSection};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";var n=e(t(),1);function r(e,t){let[r,i]=(0,n.useState)(!1);return(0,n.useLayoutEffect)(()=>{let n=e.current;if(!n)return;let r=()=>{n.clientWidth>0&&i(n.clientWidth<=t)};if(r(),typeof ResizeObserver>`u`)return;let a=new ResizeObserver(r);return a.observe(n),()=>a.disconnect()},[e,t]),r}export{r as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{a as n,o as r}from"./api-client-xQDlhUTu.js";var i=e(t(),1);function a(e,t,a,o=0){let[s,c]=(0,i.useState)(null),[l,u]=(0,i.useState)(null),[d,f]=(0,i.useState)(!1),[p,m]=(0,i.useState)(null),h=(0,i.useRef)(null);return(0,i.useEffect)(()=>{let i=!1;f(!1),m(null);let o=/^(\/|[A-Za-z]:[/\\])/.test(e)?`/api/fs/raw?path=${encodeURIComponent(e)}`:`${r(t)}/files/raw?path=${encodeURIComponent(e)}`,s=n();return fetch(o,{headers:s?{Authorization:`Bearer ${s}`}:{}}).then(e=>{if(!e.ok)throw Error(String(e.status));return e.blob()}).then(e=>{if(i)return;let t=a?new Blob([e],{type:a}):e,n=URL.createObjectURL(t);h.current&&URL.revokeObjectURL(h.current),h.current=n,c(n),u(t)}).catch(e=>{i||(f(!0),m(/^\d+$/.test(e.message)?e.message:`network`))}),()=>{i=!0}},[e,t,a,o]),(0,i.useEffect)(()=>()=>{h.current&&URL.revokeObjectURL(h.current)},[]),{blobUrl:s,blob:l,error:d,errorCode:p}}export{a as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{n,r}from"./api-client-xQDlhUTu.js";function i(e){if(!(e instanceof n)||e.code!==`DB_DRIVER_MISSING`)return null;let t=e.body.driver;return typeof t?.id!=`string`||typeof t.displayName!=`string`?null:{id:t.id,displayName:t.displayName}}function a(){return r.get(`/api/db/drivers`)}var o=`ppm:db-driver-installed`;async function s(e){let t=await r.post(`/api/db/drivers/${encodeURIComponent(e)}/install`);return window.dispatchEvent(new CustomEvent(o,{detail:e})),t}function c(e){return r.del(`/api/db/drivers/${encodeURIComponent(e)}`)}var l=e(t(),1);function u(e){let t=(0,l.useRef)(e);(0,l.useEffect)(()=>{t.current=e}),(0,l.useEffect)(()=>{let e=e=>t.current(e.detail);return window.addEventListener(o,e),()=>window.removeEventListener(o,e)},[])}export{c as a,i,s as n,a as r,u as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{r as n}from"./api-client-xQDlhUTu.js";import{et as r}from"./window-store-DqX_qmkQ.js";import{t as i}from"./panel-store-BJhazigC.js";import{i as a,t as o}from"./use-db-driver-installed-anzWkGi5.js";import{L as s}from"./db-explorer-store-BmpvDHz6.js";var c=e(t(),1);function l(e,t,i){let l=e&&t?r(e,t):null,[d,f]=(0,c.useState)({data:null,error:null,loading:l!==null,driver:null}),p=(0,c.useRef)(0),m=(0,c.useRef)([]),h=(0,c.useCallback)(async()=>{if(!l){for(let e of m.current.splice(0))e();return}let e=++p.current;f(e=>({...e,loading:!0}));let t;try{t={data:await n.get(l),error:null,loading:!1,driver:null}}catch(e){t={data:null,error:e.message,loading:!1,driver:a(e)}}if(e===p.current){f(t);for(let e of m.current.splice(0))e()}},[l]),g=(0,c.useCallback)(()=>new Promise(e=>{m.current.push(e),h()}),[h]);(0,c.useEffect)(()=>{h()},[h]);let{active:_,shown:v}=u(i);(0,c.useEffect)(()=>{v>0&&h()},[v]);let y=e?.kind===`connection`?e.connectionId:null,b=s(e=>y===null?0:e.structureChanges[y]??0),x=(0,c.useRef)(b);return(0,c.useEffect)(()=>{b!==x.current&&(x.current=b,_&&h())},[b]),o(e=>{d.driver?.id===e&&h()}),{...d,reload:g}}function u(e){let t=i(t=>!!e&&Object.values(t.panels).some(t=>t.activeTabId===e)),[n,r]=(0,c.useState)(0),a=(0,c.useRef)(t);return(0,c.useEffect)(()=>{t&&!a.current&&r(e=>e+1),a.current=t},[t]),{active:t,shown:n}}export{l as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{$ as n,K as r,W as i}from"./window-store-DqX_qmkQ.js";import{t as a}from"./tab-store-D5I52eLN.js";import{r as o}from"./db-types-CNhENouW.js";import{L as s,h as c}from"./db-explorer-store-BmpvDHz6.js";import{c as l}from"./open-db-tabs-CtWIWHOa.js";var u=e(t(),1);function d(e,t){let d=JSON.stringify(n(e)),f=(0,u.useMemo)(()=>JSON.parse(d),[d]),p=f?.kind===`connection`?f.connectionId:null,m=s(e=>p===null?void 0:e.connections.find(e=>e.id===p)),h=s(e=>e.loaded);(0,u.useEffect)(()=>{p!==null&&!h&&c()},[p,h]);let g=f?.kind===`file`?`sqlite`:m?.type??e?.dbType,_=f?.kind===`file`?r(f.path):m?.name??(typeof e?.connectionName==`string`?e.connectionName:`Database`),v=m?.color??(typeof e?.connectionColor==`string`?e.connectionColor:null),y=a(e=>e.updateTab);(0,u.useEffect)(()=>{if(!t||!m||typeof e?.connectionName==`string`)return;let n=e?.tableName??e?.objectName;y(t,{metadata:{...e,connectionName:m.name,dbType:m.type,...m.color?{connectionColor:m.color}:{}},...n&&e?.queryId===void 0?{title:i(f,m.name,n)}:{}})},[t,m,e,f,y]);let b=(0,u.useMemo)(()=>f?l(f,{connectionName:_,dbType:g,connectionColor:v}):null,[f,_,g,v]);return{target:f,conn:m,dbType:g,dialect:g?o(g):void 0,name:_,place:b,readonly:m?.readonly===1,missing:p!==null&&h&&!m}}export{d as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{o as n,r}from"./api-client-xQDlhUTu.js";import{t as i}from"./preload-helper-CM8YhcCa.js";import{a,i as o,n as s,t as c}from"./design-canvas-check-BIHc2d_k.js";var l={maxComments:500,maxReplies:100,maxGuestEntriesPerLink:150,maxGuestEntries:1500,guestName:40,body:4e3,snippet:2e3,exact:160,prefix:32,suffix:32,cssPath:512,file:1024},u=/^[0-9a-f]{12}$/,d=/^[a-z][a-z0-9-]{0,31}$/,f=String.raw`[a-z][a-z0-9-]{0,31}:nth-of-type\([1-9][0-9]{0,5}\)`,p=new RegExp(String.raw`^(?:(?:#[A-Za-z][\w-]{0,63}|body|${f})(?: > ${f}){0,5})?$`),m=e=>!!e&&typeof e==`object`&&!Array.isArray(e),h=(e,t)=>typeof e==`string`?e.slice(0,t):``;function g(e){let t=m(e)?e:{};return{exact:y(h(t.exact,l.exact*2)).slice(0,l.exact),prefix:y(h(t.prefix,l.prefix*2)).slice(-l.prefix),suffix:y(h(t.suffix,l.suffix*2)).slice(0,l.suffix)}}function _(e){return e===null?null:typeof e==`number`&&Number.isInteger(e)&&e>=0&&e<=2147483647?e:void 0}function v(e){if(!m(e))return null;let t=_(e.ppmId),n=e.gen===null?null:typeof e.gen==`string`&&a.test(e.gen)?e.gen:void 0,r=typeof e.file==`string`?e.file:``,i=typeof e.tag==`string`?e.tag.toLowerCase():``;if(t===void 0||n===void 0||!r||r.length>l.file||!d.test(i))return null;let o=h(e.cssPath,l.cssPath);return{file:r,ppmId:t,gen:n,tag:i,cssPath:p.test(o)?o:``,quote:g(e.quote)}}function y(e){return e.replace(/<!--[\s\S]*?(?:-->|$)/g,``)}function ee(e){return!e.resolvedAt}var te=2e3,ne=500,b=1e6,x=e=>!!e&&typeof e==`object`&&!Array.isArray(e),S=e=>typeof e==`number`&&Number.isFinite(e)?Math.max(-b,Math.min(b,e)):null;function C(e){if(!x(e))return null;let t=S(e.x),n=S(e.y),r=S(e.w),i=S(e.h);return t===null||n===null||r===null||i===null?null:{x:t,y:n,w:Math.max(0,r),h:Math.max(0,i)}}var w=e=>e==null?null:typeof e==`string`&&a.test(e)?e:void 0;function T(e){if(!x(e))return null;let t=_(e.ppmId),n=w(e.gen),r=typeof e.tag==`string`?e.tag.toLowerCase():``,i=C(e.rect),a=typeof e.file==`string`?e.file.slice(0,l.file):``;if(t===void 0||n===void 0||!d.test(r)||!i||!a)return null;let o=typeof e.cssPath==`string`?e.cssPath.slice(0,l.cssPath):``;return{ppmId:t,gen:n,file:a,tag:r,rect:i,cssPath:p.test(o)?o:``,outerHtml:typeof e.outerHtml==`string`?e.outerHtml.slice(0,te):``,text:typeof e.text==`string`?e.text.slice(0,ne):``,quote:g(e.quote)}}function re(e){if(!x(e)||typeof e.id!=`string`||!u.test(e.id))return null;let t=_(e.ppmId),n=w(e.gen);return t===void 0||n===void 0?null:{id:e.id,rect:e.rect===null?null:C(e.rect),ppmId:t,gen:n,reanchored:e.reanchored===!0}}function E(e,t){if(!Array.isArray(e)||e.length>500)return null;let n=[];for(let r of e){let e=t(r);e&&n.push(e)}return n}var ie={hover:e=>{if(e.el===null)return{type:`hover`,el:null};if(!x(e.el))return null;let t=typeof e.el.tag==`string`?e.el.tag.toLowerCase():``,n=C(e.el.rect);return d.test(t)&&n?{type:`hover`,el:{tag:t,rect:n}}:null},select:e=>{let t=T(e.el);return t?{type:`select`,el:t}:null},"element-menu":e=>{let t=T(e.el);return t?{type:`element-menu`,el:t}:null},"picker-exit":()=>({type:`picker-exit`}),"pins-rects":e=>{let t=E(e.pins,re);return t?{type:`pins-rects`,pins:t}:null}},ae={picker:e=>typeof e.on==`boolean`?{type:`picker`,on:e.on}:null,"pins-set":e=>{let t=E(e.pins,e=>{if(!x(e)||typeof e.id!=`string`||!u.test(e.id))return null;let t=v(e.anchor);return t?{id:e.id,anchor:t}:null});return t?{type:`pins-set`,pins:t}:null},"select-parent":()=>({type:`select-parent`}),"clear-selection":()=>({type:`clear-selection`})},D=/^--[a-zA-Z0-9_-]{1,48}$/,oe=/^-?\d{1,6}(\.\d{1,4})?(px|rem|em|%|deg)?$/,O=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,se=/^[A-Za-z0-9 #.,%()-]{1,64}$/,ce=new Set([`rgb`,`rgba`,`hsl`,`hsla`,`hwb`,`lab`,`lch`,`oklab`,`oklch`,`calc`,`min`,`max`,`clamp`,`var`]);function k(e){if(typeof e!=`string`||!se.test(e)||e.trim()!==e||e.includes(`/*`)||e.includes(`*/`))return!1;let t=0;for(let n of e)if(n===`(`)t++;else if(n===`)`&&--t<0)return!1;if(t!==0)return!1;for(let t of e.matchAll(/([A-Za-z-]*)\(/g))if(!ce.has(t[1].toLowerCase()))return!1;return!0}function le(e,t){return`${Number(t.toFixed(4))}${e.unit}`}function A(e,t){if(typeof t!=`string`)return null;if(e.type===`color`)return O.test(t)?t:null;if(e.type===`select`)return e.options.some(e=>e.value===t)&&k(t)?t:null;let n=oe.exec(t);if(!n||(n[2]??``)!==e.unit)return null;let r=Number(t.slice(0,t.length-e.unit.length));return Number.isFinite(r)&&r>=e.min&&r<=e.max?t:null}var j=[`root`,`conditional`,`other`,`unknown`],ue=e=>!!e&&typeof e==`object`&&!Array.isArray(e);function M(e,t){if(!ue(e))return null;let n=Object.entries(e);if(n.length>24)return null;let r={};for(let[e,i]of n){let n=t(i);if(!D.test(e)||n===null)return null;r[e]=n}return r}function N(e){return!Array.isArray(e)||e.length>24?null:e.every(e=>typeof e==`string`&&D.test(e))?e:null}var de={"tweak-values":e=>{let t=M(e.values,e=>typeof e==`string`?e.slice(0,200):null),n=M(e.winners,e=>j.find(t=>t===e)??null);return t&&n?{type:`tweak-values`,values:t,winners:n}:null}},fe={"tweak-set":e=>{let t=M(e.values,e=>k(e)?e:null);return t?{type:`tweak-set`,values:t}:null},"tweak-reset":e=>{if(e.vars===void 0)return{type:`tweak-reset`};let t=N(e.vars);return t?{type:`tweak-reset`,vars:t}:null},"tweak-read":e=>{let t=N(e.vars);return t?{type:`tweak-read`,vars:t}:null}},pe=2e4,P=`(-?\\d{1,5}(?:\\.\\d{1,2})?)px`,me=RegExp(`^${P} ${P}$`),he=/^(\d{1,5}(?:\.\d{1,2})?)px$/,F=e=>!!e&&typeof e==`object`&&!Array.isArray(e),I=e=>Math.abs(Number(e))<=pe,L=e=>typeof e==`number`&&Number.isFinite(e)?e:null;function R(e){if(!F(e))return null;let t=Object.keys(e);if(t.length===0||t.length>3)return null;let n={};for(let r of t){let t=e[r];if(typeof t!=`string`)return null;if(r===`translate`){let e=me.exec(t);if(!e||!I(e[1])||!I(e[2]))return null;n.translate=t}else if(r===`width`||r===`height`){let e=he.exec(t);if(!e||!I(e[1]))return null;n[r]=t}else return null}return n}function ge(e){if(!F(e))return null;let t=L(e.tx),n=L(e.ty),r=L(e.w),i=L(e.h);if(t===null||n===null||r===null||i===null)return null;let a=e=>Math.max(-1e6,Math.min(1e6,e));return{tx:a(t),ty:a(n),w:Math.max(0,a(r)),h:Math.max(0,a(i))}}var _e={"transform-live":e=>{let t=_(e.ppmId);if(typeof t!=`number`)return null;let n=e.rect===null?null:C(e.rect);return e.rect!==null&&!n?null:{type:`transform-live`,ppmId:t,rect:n,box:e.box===null||e.box===void 0?null:ge(e.box)}},"transform-commit":e=>{let t=_(e.ppmId),n=typeof e.tag==`string`?e.tag.toLowerCase():``,r=typeof e.gen==`string`&&a.test(e.gen)?e.gen:null,i=typeof e.file==`string`&&e.file.length<=1024?e.file:``,o=R(e.props);return typeof t!=`number`||!d.test(n)||!r||!i||!o?null:{type:`transform-commit`,ppmId:t,tag:n,gen:r,file:i,props:o}}},ve={"transform-mode":e=>{let t=L(e.scale);return typeof e.on!=`boolean`||t===null||t<=0||t>10?null:{type:`transform-mode`,on:e.on,scale:t}},"transform-target":e=>{if(e.ppmId===null)return{type:`transform-target`,ppmId:null,tag:``};let t=_(e.ppmId),n=typeof e.tag==`string`?e.tag.toLowerCase():``;return typeof t==`number`&&d.test(n)?{type:`transform-target`,ppmId:t,tag:n}:null},"transform-nudge":e=>{let t=L(e.dx),n=L(e.dy);return t===null||n===null||!Number.isInteger(t)||!Number.isInteger(n)||Math.abs(t)>1e3||Math.abs(n)>1e3||t===0&&n===0?null:{type:`transform-nudge`,dx:t,dy:n}},"transform-cancel":()=>({type:`transform-cancel`})},ye=5e3,z=5376,be=1e5,xe=/^[0-9A-F]{6}$/,Se=/^[\p{L}\p{N} ._-]{1,64}$/u,Ce=/^data:image\/(?:png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$/,we=[`left`,`center`,`right`,`justify`],Te=[`top`,`middle`,`bottom`],B=e=>!!e&&typeof e==`object`&&!Array.isArray(e),V=(e,t=be)=>typeof e==`number`&&Number.isFinite(e)&&Math.abs(e)<=t?e:null;function H(e){if(!B(e)||typeof e.hex!=`string`||!xe.test(e.hex))return null;let t=V(e.alpha,1);return t===null||t<0?null:{hex:e.hex,alpha:t}}function Ee(e){let t=V(e.x),n=V(e.y),r=V(e.w),i=V(e.h);if(t===null||n===null||r===null||i===null||r<=0||i<=0)return null;let a={x:t,y:n,w:r,h:i};if(e.rotation!==void 0){let t=V(e.rotation,360);if(t===null)return null;t!==0&&(a.rotation=t)}return a}function De(e){if(!B(e)||typeof e.text!=`string`)return null;let t={text:e.text.slice(0,ye)};for(let n of[`bold`,`italic`,`underline`,`breakLine`])e[n]===!0&&(t[n]=!0);if(e.color!==void 0){let n=H(e.color);if(!n)return null;t.color=n}if(e.sizePx!==void 0){let n=V(e.sizePx,4e3);if(n===null||n<=0)return null;t.sizePx=n}return typeof e.font==`string`&&Se.test(e.font)&&(t.font=e.font),t}function Oe(e,t){if(!B(e))return null;let n=Ee(e);if(!n)return null;if(e.kind===`text`){if(!Array.isArray(e.runs)||e.runs.length===0||e.runs.length>400)return null;let t=e.runs.map(De);if(t.some(e=>e===null))return null;let r=we.find(t=>t===e.align),i=Te.find(t=>t===e.valign);if(!r||!i)return null;let a={kind:`text`,...n,runs:t,align:r,valign:i},o=e.lineHeightPx===void 0?void 0:V(e.lineHeightPx,4e3);return o===null||o!==void 0&&o<=0?null:(o!==void 0&&(a.lineHeightPx=o),(e.bullet===`bullet`||e.bullet===`number`)&&(a.bullet=e.bullet),a)}if(e.kind===`shape`){let t={kind:`shape`,...n};if(e.fill!==void 0){let n=H(e.fill);if(!n)return null;t.fill=n}if(e.border!==void 0){if(!B(e.border))return null;let n=V(e.border.widthPx,1e3),r=H(e.border.color);if(n===null||n<=0||!r)return null;t.border={widthPx:n,color:r}}if(e.radiusPx!==void 0){let n=V(e.radiusPx);if(n===null||n<0)return null;n>0&&(t.radiusPx=n)}return t.fill||t.border?t:null}return e.kind===`image`?typeof e.data!=`string`||e.data.length>52428800-t.imageBytes||!Ce.test(e.data)?null:(t.imageBytes+=e.data.length,{kind:`image`,...n,data:e.data}):null}function ke(e){if(!B(e))return null;let t=V(e.width,z),n=V(e.height,z);if(t===null||n===null||t<1||n<1||!Array.isArray(e.slides)||e.slides.length===0||e.slides.length>200||!Array.isArray(e.warnings)||e.warnings.length>200||!e.warnings.every(e=>typeof e==`string`))return null;let r={imageBytes:0},i=[];for(let t of e.slides){if(!B(t)||!Array.isArray(t.items)||t.items.length>600)return null;let e={items:[]};if(t.background!==void 0){let n=H(t.background);if(!n)return null;e.background=n}for(let n of t.items){let t=Oe(n,r);if(!t)return null;e.items.push(t)}i.push(e)}return{width:t,height:n,slides:i,warnings:e.warnings.map(e=>e.slice(0,300))}}var Ae=/^[A-Za-z0-9_-]{8,64}$/,U=e=>typeof e==`string`&&Ae.test(e)?e:null,W={"slides-data":e=>{let t=U(e.requestId),n=t?ke(e.doc):null;return t&&n?{type:`slides-data`,requestId:t,doc:n}:null},"slides-error":e=>{let t=U(e.requestId);return!t||typeof e.message!=`string`?null:{type:`slides-error`,requestId:t,message:e.message.slice(0,300)}}},je={"slides-extract":e=>{let t=U(e.requestId);return t?{type:`slides-extract`,requestId:t}:null}},G=e=>typeof e==`string`&&c.test(e)?e:null,Me={"check-result":e=>{let t=G(e.requestId),n=t?s(e.report):null;return t&&n?{type:`check-result`,requestId:t,report:n}:null},"check-error":e=>{let t=G(e.requestId);return!t||typeof e.message!=`string`?null:{type:`check-error`,requestId:t,message:e.message.slice(0,300)}}},Ne={"check-run":e=>{let t=G(e.requestId);return!t||typeof e.screenshot!=`boolean`||e.lib!==void 0&&(typeof e.lib!=`string`||e.lib.length>262144)?null:{type:`check-run`,requestId:t,screenshot:e.screenshot,...typeof e.lib==`string`?{lib:e.lib}:{}}}},Pe=`design-bridge`,Fe=/^[A-Za-z0-9_-]{16,64}$/,K=(e,t)=>typeof e==`string`?e.slice(0,t):null,q=e=>typeof e==`number`&&Number.isFinite(e)?e:null;function Ie(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=Object.entries(e);if(t.length>64)return null;let n={};for(let[e,r]of t){if(e.length>512||typeof r!=`string`||!a.test(r))return null;n[e]=r}return n}var Le=[`error`,`rejection`,`resource`,`csp`],Re={ready:e=>{let t=typeof e.gen==`string`&&a.test(e.gen)?e.gen:null,n=K(e.file,1024),r=Ie(e.cssGens);return t===null||n===null||r===null||typeof e.instrumented!=`boolean`?null:{type:`ready`,gen:t,cssGens:r,file:n,instrumented:e.instrumented,title:K(e.title,200)??``,docHeight:Math.max(0,q(e.docHeight)??0)}},scroll:e=>{let t=q(e.x),n=q(e.y);return t===null||n===null?null:{type:`scroll`,x:t,y:n}},issue:e=>{let t=Le.find(t=>t===e.kind),n=K(e.message,500);return!t||n===null?null:{type:`issue`,kind:t,message:n,source:K(e.source,1024)??void 0,line:q(e.line)??void 0}},"navigate-blocked":e=>{let t=K(e.href,2048);return t===null?null:{type:`navigate-blocked`,href:t}},expired:()=>({type:`expired`})},ze={"restore-scroll":e=>{let t=q(e.x),n=q(e.y);return t===null||n===null?null:{type:`restore-scroll`,x:t,y:n}}},Be={...Re,...ie,...de,..._e,...W,...Me},Ve={...ze,...ae,...fe,...ve,...je,...Ne};function J(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e;if(n.ppm!==`design-bridge`||n.v!==1||typeof n.type!=`string`||n.nonce!==null&&(typeof n.nonce!=`string`||!Fe.test(n.nonce))||!Object.prototype.hasOwnProperty.call(t,n.type))return null;let r=t[n.type](n);return r?{nonce:n.nonce,body:r}:null}function He(e){let t=J(e,Be);return t?{...t.body,nonce:t.nonce}:null}function Ue(e){let t=J(e,Ve);return t?t.body:null}function We(e){return{...e,ppm:Pe,v:1,nonce:null}}var Y=e(t(),1);function Ge(e,t){if(!t.contentWindow||e.source!==t.contentWindow)return null;let n=He(e.data);return!n||!t.nonce||n.nonce!==t.nonce?null:n}function X(){let e=new Uint8Array(16);crypto.getRandomValues(e);let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}var Ke=3e3;function Z(e,t){return e>t}function qe(e,t,n){let[r,i]=(0,Y.useState)(null),a=(0,Y.useRef)(t),o=(0,Y.useRef)(new Map),s=(0,Y.useRef)(new Set),c=(0,Y.useRef)(null),l=(0,Y.useRef)({loads:0,readies:0}),u=(0,Y.useRef)(n);u.current=n;let d=(0,Y.useCallback)(()=>{c.current&&clearTimeout(c.current),c.current=null},[]);(0,Y.useEffect)(()=>{a.current=t,l.current={loads:0,readies:0},d(),i(null)},[t,d]);let f=(0,Y.useCallback)(t=>{let n=e.current?.contentWindow;if(!n||!a.current||Z(l.current.loads,l.current.readies))return!1;let r=We(t);return Ue(r)?(n.postMessage(r,`*`),!0):!1},[e]);(0,Y.useEffect)(()=>{let t=t=>{let n=Ge(t,{contentWindow:e.current?.contentWindow??null,nonce:a.current});if(n){if(n.type===`ready`){l.current.readies++,Z(l.current.loads,l.current.readies)||d(),i(n);for(let e of s.current)try{e(f,n)}catch(e){console.warn(`[design] replay failed:`,e)}}for(let e of o.current.get(n.type)??[])try{e(n)}catch(e){console.warn(`[design] ${n.type} handler failed:`,e)}}};return window.addEventListener(`message`,t),()=>window.removeEventListener(`message`,t)},[e,f,d]),(0,Y.useEffect)(()=>d,[d]);let p=(0,Y.useCallback)(()=>{l.current.loads++,Z(l.current.loads,l.current.readies)&&(d(),c.current=setTimeout(()=>{c.current=null,Z(l.current.loads,l.current.readies)&&u.current()},Ke))},[d]),m=(0,Y.useCallback)((e,t)=>{let n=o.current.get(e)??new Set,r=t;return n.add(r),o.current.set(e,n),()=>{n.delete(r)}},[]),h=(0,Y.useCallback)(e=>(s.current.add(e),()=>{s.current.delete(e)}),[]);return(0,Y.useMemo)(()=>({send:f,on:m,onReplay:h,ready:r,frameLoaded:p}),[f,m,h,r,p])}var Je=15e3,Ye=8e3,Q=null;function Xe(){return Q??=i(()=>import(`./dist--v_QGJF6.js`).then(e=>e.default),[]).catch(e=>{throw Q=null,e}),Q}function Ze(e){return e.ready?Promise.resolve(e.ready):new Promise(t=>{let n=setTimeout(()=>{r(),t(null)},Ye),r=e.on(`ready`,e=>{clearTimeout(n),r(),t(e)})})}async function $(e,t,n){let r=n.screenshot?await Xe().catch(()=>void 0):void 0,i=await Ze(e);if(!i)throw Error(`The canvas is still loading`);let a=o(await new Promise((t,i)=>{let a=X(),o=()=>{s(),c(),clearTimeout(l)},s=e.on(`check-result`,e=>{e.requestId===a&&(o(),t(e.report))}),c=e.on(`check-error`,e=>{e.requestId===a&&(o(),i(Error(e.message)))}),l=setTimeout(()=>{o(),i(Error(`The canvas did not answer in time`))},Je);e.send({type:`check-run`,requestId:a,screenshot:n.screenshot,...r?{lib:r}:{}})||(o(),i(Error(`The canvas is not accepting messages`)))}),t.issues.filter(e=>e.kind!==`navigate-blocked`&&e.kind!==`layout`)),s=n.screenshot&&!r?`The screenshot library could not be loaded.`:a.screenshotNote;return{...a,...s?{screenshotNote:s}:{},file:i.file,gen:i.gen,frame:t.frame}}function Qe(e){let t=(0,Y.useRef)(e);t.current=e;let{projectName:i,slug:a}=e;(0,Y.useEffect)(()=>{let e=e=>{let o=e.detail;if(!o||o.projectName!==i||o.slug!==a||typeof o.requestId!=`string`||!c.test(o.requestId))return;let s=o.requestId,{bridge:l,context:u}=t.current;$(l,u(),{screenshot:o.screenshot===!0}).then(e=>r.post(`${n(i)}/designs/${encodeURIComponent(a)}/check/${s}`,e)).catch(e=>{let t=e?.message??String(e);/pending check/i.test(t)||console.warn(`[design] canvas check for ${a} not sent: ${t}`)})};return window.addEventListener(`design:check_request`,e),()=>window.removeEventListener(`design:check_request`,e)},[i,a])}export{O as a,A as c,d,ee as f,qe as i,l,Qe as n,le as o,y as p,X as r,k as s,$ as t,p as u};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";var n=30;function r(e,t=n){return Math.round(e*1e6/t)}var i=e(t(),1);function a(e,t){return t||e}function o(e=typeof window<`u`?window.isSecureContext:!0){return e?`This browser has no WebCodecs VideoDecoder — try Chrome, Edge, or Safari 16.4+.`:`Video needs a secure origin on this transport: browsers only expose WebCodecs over HTTPS or on localhost. Reach PPM through its HTTPS tunnel, or install the WebRTC relay in Settings, which streams over plain HTTP too.`}function s(e){let[t,n]=(0,i.useState)(`idle`),[s,c]=(0,i.useState)(null),[l,u]=(0,i.useState)({width:0,height:0}),d=(0,i.useRef)(null),f=(0,i.useRef)(null),p=(0,i.useRef)(!1),m=(0,i.useRef)(0),h=(0,i.useRef)(0),g=(0,i.useRef)(null),_=(0,i.useRef)(!1),v=(0,i.useCallback)(e=>{n(`error`),c(e)},[]),y=(0,i.useCallback)(async t=>{if(g.current=t,typeof VideoDecoder>`u`){n(`unsupported`),c(o());return}let r={codec:t,optimizeForLatency:!0};try{if(!(await VideoDecoder.isConfigSupported(r)).supported){n(`unsupported`),c(`This browser's decoder does not support ${t}.`);return}}catch(e){v(e.message);return}d.current?.close(),p.current=!1,h.current=0;let i=new VideoDecoder({output:t=>{m.current+=1;let n=e.current;n&&((n.width!==t.displayWidth||n.height!==t.displayHeight)&&(n.width=t.displayWidth,n.height=t.displayHeight,u({width:t.displayWidth,height:t.displayHeight})),f.current||=n.getContext(`2d`),f.current?.drawImage(t,0,0,n.width,n.height)),t.close()},error:e=>b(e.message)});try{i.configure(r)}catch(e){v(e.message);return}d.current=i,_.current=!0,n(`ready`),c(null)},[e,v]),b=(0,i.useCallback)(e=>{if(!_.current)return;let t=g.current;if(!t){v(e);return}try{d.current?.close()}catch{}d.current=null,y(t)},[y,v]);return{status:t,errorMessage:s,configure:y,decodeAccessUnit:(0,i.useCallback)((e,t)=>{let n=d.current;if(!(!n||n.state!==`configured`)&&a(p.current,t)){t&&(p.current=!0);try{n.decode(new EncodedVideoChunk({type:t?`key`:`delta`,timestamp:r(h.current++),data:e}))}catch(e){b(e.message)}}},[b]),reset:(0,i.useCallback)(()=>{_.current=!1;try{d.current?.close()}catch{}d.current=null,p.current=!1,m.current=0,h.current=0,n(`idle`),c(null)},[]),getFrameCount:(0,i.useCallback)(()=>m.current,[]),frameSize:l}}export{s as n,a as t};
@@ -0,0 +1,16 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{k as n,r}from"./api-client-xQDlhUTu.js";import{i}from"./project-store-BLGl9IAO.js";import{r as a}from"./clipboard-D-VCry-F.js";import{_r as o,br as s,ii as c,vr as l,yr as u}from"./index-DLB3j_P0.js";var d=[`ppm.blame.copySha`,`ppm.blame.fileHistory`,`ppm.blame.blameFile`,`ppm.blame.showInGraph`],f=7;function p(e){return e.replace(/[\\`*_{}[\]()#+\-!<>]/g,e=>`\\${e}`)}function m(e){let t=e.trim().split(/\s+/).filter(Boolean);return t.length===0?`?`:(t[0][0]+(t.length>1?t[t.length-1][0]:``)).toUpperCase()}var h=[`4E79A7`,`F28E2B`,`E15759`,`76B7B2`,`59A14F`,`AF7AA1`,`9C755F`,`B07AA1`];function g(e){let t=0;for(let n=0;n<e.length;n++)t=t*31+e.charCodeAt(n)|0;return h[Math.abs(t)%h.length]}function _(e){let t=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="8" cy="8" r="8" fill="#${g(e)}"/><text x="8" y="11.5" font-family="sans-serif" font-size="7" font-weight="700" fill="#ffffff" text-anchor="middle">${v(m(e))}</text></svg>`;return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(t)}`}function v(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}function y(e,t){return`command:${e}?${encodeURIComponent(JSON.stringify(t))}`}function b(e){let{commit:t,detail:n,filePath:r,projectPath:i,now:a=Date.now()}=e;if(s(t.hash))return null;let c=t.author||`Unknown`,l=t.hash.slice(0,f),m=[],h=t.authorTime>0?`${u(t.authorTime*1e3,a)} (${o(t.authorTime*1e3)})`:``;m.push(`![](${_(c)}) **${p(c)}**${h?` &nbsp;$(history) ${p(h)}`:``}`);let g=n?.message||t.summary;g&&(m.push(``),m.push(p(g).split(`
2
+ `).join(`
3
+ `)));let v=[``,`---`,``],b=[`[$(git-commit) ${l}](${y(`ppm.blame.copySha`,[t.hash])} "Copy commit hash")`];i&&b.push(`[$(history) File History](${y(`ppm.blame.fileHistory`,[i,r])} "Open the file's history")`,`[$(users) Blame](${y(`ppm.blame.blameFile`,[i,r])} "Open the blame view")`,`[$(git-branch) Graph](${y(`ppm.blame.showInGraph`,[i])} "Open the commit graph")`),m.push(...v),m.push(b.join(` &nbsp; `));let x=[...(n?.removed??[]).map(e=>`-${e}`),...(n?.added??[]).map(e=>`+${e}`)];if(x.length>0){m.push(...v),m.push("```diff"),m.push(...x),m.push("```"),m.push(``);let e=(n?.removed.length??0)===0?`added in`:`in`;m.push(`Changes ${e} \`${l}\``)}return{value:m.join(`
4
+ `),isTrusted:{enabledCommands:[...d]},supportThemeIcons:!0}}var x=!1;function S(e,t){window.dispatchEvent(new CustomEvent(`ext:command:execute`,{detail:{command:e,args:t}}))}function C(e){return typeof e==`string`&&/^[0-9a-f]{7,40}$/.test(e)?e:null}function w(e){return typeof e==`string`&&e.length>0?e:null}function T(e,t,n){let r=w(t),i=w(n);!r||!i||S(e,[r,i])}function E(e){x||(x=!0,e.editor.registerCommand(`ppm.blame.copySha`,(e,t)=>{let r=C(t);r&&a(r).then(e=>{n[e?`success`:`error`](e?`Copied ${r.slice(0,7)}`:`Could not copy`)})}),e.editor.registerCommand(`ppm.blame.fileHistory`,(e,t,n)=>{T(`git-graph.fileHistory`,t,n)}),e.editor.registerCommand(`ppm.blame.blameFile`,(e,t,n)=>{T(`git-graph.blame`,t,n)}),e.editor.registerCommand(`ppm.blame.showInGraph`,(e,t)=>{let n=w(t);n&&S(`git-graph.view`,[n])}))}var D=`diff`,O=!1;function k(e){if(!O){if(e.languages.getLanguages().some(e=>e.id===`diff`)){O=!0;return}e.languages.register({id:D,aliases:[`Diff`,`patch`],extensions:[`.diff`,`.patch`]}),e.languages.setMonarchTokensProvider(D,{tokenizer:{root:[[/^diff .*$/,`meta.diff.header`],[/^(index|similarity index|rename from|rename to|new file mode|deleted file mode|old mode|new mode) .*$/,`meta.diff.header`],[/^(\+\+\+|---) .*$/,`meta.diff.header`],[/^@@.*$/,`meta.diff.range`],[/^\+.*$/,`inserted`],[/^-.*$/,`deleted`],[/^\\ .*$/,`meta.diff.header`],[/^.*$/,``]]}}),O=!0}}var A=e(t(),1),j=`inline-blame-styles`,M=`
5
+ .inline-blame-annotation {
6
+ color: var(--color-muted-foreground);
7
+ opacity: 0.6;
8
+ font-style: italic;
9
+ white-space: pre;
10
+ }
11
+ /* The hover's avatar is a markdown image, so it sits on the text baseline and
12
+ hangs below the author name without this. */
13
+ .monaco-hover img {
14
+ vertical-align: text-bottom;
15
+ }
16
+ `;function N(e){let t=e.getDomNode()?.ownerDocument??document;if(t.getElementById(j))return;let n=t.createElement(`style`);n.id=j,n.textContent=M,t.head?.appendChild(n)}function P({editor:e,monaco:t,projectName:n,filePath:a,rev:o,enabled:u,readOnly:d=!1}){let[f,p]=(0,A.useState)(null),[m,h]=(0,A.useState)(!1),[g,_]=(0,A.useState)(0),[v,y]=(0,A.useState)(0),[x,S]=(0,A.useState)(null),C=(0,A.useRef)(new Map),w=(0,A.useRef)(null),T=(0,A.useRef)(0),D=i(e=>e.projects.find(e=>e.name===n)?.path),{fileScope:O,fileGitUrl:j}=c(n),M=a?O(a):null,P=M?.repo??null,F=P?.path??D,I=M?.path??null,L=(0,A.useCallback)(()=>y(e=>e+1),[]);(0,A.useEffect)(()=>{!t||!u||(k(t),E(t))},[t,u]),(0,A.useEffect)(()=>{if(!u||!n||!a||I==null){p(null);return}let e=!1,t=new URLSearchParams({path:I});return o&&t.set(`rev`,o),r.get(j(`/blame?${t}`,P)).then(t=>{e||(p(t),h(!1))}).catch(()=>{e||p(null)}),()=>{e=!0}},[u,n,a,I,o,v,j,P]),(0,A.useEffect)(()=>{if(!e||!u)return;_(e.getPosition()?.lineNumber??0);let t=e.onDidChangeCursorPosition(e=>_(e.position.lineNumber));if(d)return()=>t.dispose();let n=e.onDidChangeModelContent(()=>h(!0));return()=>{t.dispose(),n.dispose()}},[e,u,d]),(0,A.useEffect)(()=>{if(!e||!u||!window.matchMedia?.(`(hover: none)`).matches)return;let t=e.onMouseDown(t=>{let n=t.target.position,r=e.getModel();!n||!r||n.lineNumber===T.current&&(n.column<r.getLineMaxColumn(n.lineNumber)||e.getAction(`editor.action.showHover`)?.run())});return()=>t.dispose()},[e,u]);let R=(()=>{if(!f||m||g<=0)return null;let e=f.lines[g-1],t=e?.finalLine===g?e:f.lines.find(e=>e.finalLine===g);if(!t)return null;let n=f.commits[t.hash];return n?{commit:n,origLine:t.origLine}:null})(),z=R?.commit??null,B=z&&!s(z.hash)?z.hash:null,V=z?.filename||I||void 0,H=R?.origLine??0,U=`${B} ${H} ${V}`;return(0,A.useEffect)(()=>{if(!u||!n||!B||!V||H<1){S(null);return}let e=U,t=C.current;if(t.has(e)){S({key:e,value:t.get(e)??null});return}let i=!1,a=new URLSearchParams({hash:B,path:V,line:String(H)});return r.get(j(`/commit-line?${a}`,P)).then(n=>{i||(t.size>=200&&t.delete(t.keys().next().value),t.set(e,n??null),S({key:e,value:n??null}))}).catch(()=>{i||S(null)}),()=>{i=!0}},[u,n,B,V,H,U,j,P]),(0,A.useEffect)(()=>{if(!e||!t)return;if(!u||!z||g<=0){T.current=0,w.current?.clear();return}N(e);let n=e.getModel();if(!n||g>n.getLineCount()){T.current=0,w.current?.clear();return}T.current=g;let r=n.getLineMaxColumn(g),i=l(z),a={range:new t.Range(g,r,g,r),options:{after:{content:` ${i}`,inlineClassName:`inline-blame-annotation`},showIfCollapsed:!0,hoverMessage:b({commit:z,detail:x?.key===U?x.value:null,filePath:I??``,projectPath:F})}};w.current?w.current.set([a]):w.current=e.createDecorationsCollection([a])},[e,t,u,z,g,x,U,I,F]),(0,A.useEffect)(()=>()=>{w.current?.clear(),w.current=null},[]),{stale:m,refresh:L}}export{P as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";var n=e(t(),1);function r(e){return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)}function i(){return typeof window<`u`&&window.innerWidth<768}function a(){return!1}function o(){return(0,n.useSyncExternalStore)(r,i,a)}function s(){return typeof window<`u`&&window.innerWidth<768}export{o as n,s as t};
@@ -0,0 +1,6 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import"./vendor-ui-BTSIXzhZ.js";import{o as n,r}from"./api-client-xQDlhUTu.js";import"./ws-auth-CbF6GqxP.js";import{mt as i}from"./index-DLB3j_P0.js";import{i as a,r as o,t as s}from"./lsp-client-DpYmPhXX.js";var c=e(t(),1),l=new Map;function u(e,t){l.set(e.uri.toString(),t)}function ee(e){l.delete(e.uri.toString())}function d(e){return l.get(e.uri.toString())}function f(e){if(!e.startsWith(`file:`))return null;let t=e.slice(5),n=``;if(t.startsWith(`//`)){t=t.slice(2);let e=t.indexOf(`/`);n=e<0?t:t.slice(0,e),t=e<0?``:t.slice(e)}let r=t.split(`/`).map(p).join(`/`);return/^\/[A-Za-z]:/.test(r)?r.slice(1):n?`//${p(n)}${r}`:r}function p(e){try{return decodeURIComponent(e)}catch{return e}}var m=40,h=500,g=3,_=6,v=new Map,y=new Map;function te(e){return(y.get(e)??0)>=g}function b(e){x(e,(y.get(e)??0)+1)}function ne(e){x(e,g)}function x(e,t){for(y.delete(e),y.set(e,t);y.size>h;){let e=y.keys().next().value;if(e===void 0)return;y.delete(e)}}function re(e){y.delete(e)}async function S(e,t,n){let r=0,i=Array.from({length:Math.min(t,e.length)},async()=>{for(;;){let t=r++;if(t>=e.length)return;await n(e[t])}});await Promise.all(i)}function C(e,t){let n=e.replace(/\\/g,`/`).replace(/\/+$/,``),r=t.replace(/\\/g,`/`),i=n+`/`,a=/^[A-Za-z]:\//.test(i),o=r.slice(0,i.length);return(a?o.toLowerCase()!==i.toLowerCase():o!==i)?null:r.slice(i.length)}async function w(e,t,i,a){if(!i)return;let o=new Set,s=[...new Set(a)].filter(t=>{if(te(t))return!1;let n=v.get(t);return n&&(v.delete(t),!n.isDisposed())?(v.set(t,n),o.add(t),!1):t.startsWith(`file:`)&&!e.editor.getModel(e.Uri.parse(t))});s.length!==0&&(await S(s,_,async a=>{try{let s=f(a),c=s?C(i,s):null;if(!c){ne(a);return}let l=(await r.get(`${n(t)}/files/read?path=${encodeURIComponent(c)}`))?.content;if(typeof l!=`string`){b(a);return}re(a);let u=e.Uri.parse(a);if(e.editor.getModel(u)){o.add(a);return}v.set(a,e.editor.createModel(l,void 0,u)),o.add(a)}catch{b(a)}}),T(o))}function T(e){for(let t of[...v.keys()]){if(v.size<=m)return;if(e.has(t))continue;let n=v.get(t);v.delete(t);try{n?.dispose()}catch{}}}function E(){for(let e of v.values())try{e.dispose()}catch{}v.clear(),y.clear()}function D(e){if(!e)return;let t=new AbortController;return e.isCancellationRequested?t.abort():e.onCancellationRequested(()=>t.abort()),t.signal}function O(e){return{line:e.lineNumber-1,character:e.column-1}}function ie(e){return{lineNumber:e.line+1,column:e.character+1}}function k(e){return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function A(e){return{startLineNumber:e.start.line+1,startColumn:e.start.character+1,endLineNumber:e.end.line+1,endColumn:e.end.character+1}}var ae={1:`Text`,2:`Method`,3:`Function`,4:`Constructor`,5:`Field`,6:`Variable`,7:`Class`,8:`Interface`,9:`Module`,10:`Property`,11:`Unit`,12:`Value`,13:`Enum`,14:`Keyword`,15:`Snippet`,16:`Color`,17:`File`,18:`Reference`,19:`Folder`,20:`EnumMember`,21:`Constant`,22:`Struct`,23:`Event`,24:`Operator`,25:`TypeParameter`},oe={1:`File`,2:`Module`,3:`Namespace`,4:`Package`,5:`Class`,6:`Method`,7:`Property`,8:`Field`,9:`Constructor`,10:`Enum`,11:`Interface`,12:`Function`,13:`Variable`,14:`Constant`,15:`String`,16:`Number`,17:`Boolean`,18:`Array`,19:`Object`,20:`Key`,21:`Null`,22:`EnumMember`,23:`Struct`,24:`Event`,25:`Operator`,26:`TypeParameter`},se={1:`Error`,2:`Warning`,3:`Info`,4:`Hint`},ce={1:`Text`,2:`Read`,3:`Write`};function j(e,t){let n=ae[t??0];return e.languages.CompletionItemKind[n??`Text`]}function M(e,t){let n=oe[t??0];return e.languages.SymbolKind[n??`Variable`]}function N(e,t){let n=se[t??0];return e.MarkerSeverity[n??`Warning`]}function P(e,t){let n=ce[t??0];return e.languages.DocumentHighlightKind[n??`Text`]}function F(e){if(e!=null){if(Array.isArray(e)){let t=e.map(F).filter(e=>!!e?.value);return t.length===0?void 0:{value:t.map(e=>e.value).join(`
2
+
3
+ ---
4
+
5
+ `),isTrusted:!1}}return typeof e==`string`?{value:L(e),isTrusted:!1}:`language`in e?{value:I(e.language,e.value),isTrusted:!1}:{value:e.kind===`markdown`?e.value:L(e.value),isTrusted:!1}}}function I(e,t){return["```"+e,t,"```"].join(`
6
+ `)}function L(e){return e.replace(/([\\`*_{}[\]()#+\-.!|>~])/g,`\\$1`)}function R(e,t){return t?(Array.isArray(t)?t:[t]).flatMap(t=>`targetUri`in t?[{uri:e.Uri.parse(t.targetUri),range:A(t.targetSelectionRange??t.targetRange)}]:!t.uri||!t.range?[]:[{uri:e.Uri.parse(t.uri),range:A(t.range)}]):[]}async function z(e,t,n){let r=R(e,n),i=t.connection.statusOf(t.path);return i?.state===`ready`&&await w(e,t.connection.projectName,i.projectPath,r.map(e=>e.uri.toString())),r}function B(e,t){let n=[],r=(t,r)=>{for(let i of r)n.push({resource:e.Uri.parse(t),versionId:void 0,textEdit:{range:A(i.range),text:i.newText}})};if(t?.documentChanges)for(let e of t.documentChanges)e.textDocument?.uri&&Array.isArray(e.edits)&&r(e.textDocument.uri,e.edits);else if(t?.changes)for(let[e,n]of Object.entries(t.changes))r(e,n);return{edits:n}}function V(e,t,n){let r=n.textEdit;if(r?.insert&&r.replace)return{insert:A(r.insert),replace:A(r.replace)};if(r?.range)return A(r.range);let i=e.getWordUntilPosition(t);return{startLineNumber:t.lineNumber,startColumn:i.startColumn,endLineNumber:t.lineNumber,endColumn:i.endColumn}}function H(e,t,n,r,i){let a=typeof r.label==`string`?r.label:r.label.label,o=r.textEdit?.newText??r.insertText??a,s={label:typeof r.label==`string`?r.label:{label:r.label.label,detail:r.label.detail,description:r.label.description},kind:j(e,r.kind),insertText:o,range:V(t,n,r),detail:r.detail,documentation:F(r.documentation),sortText:r.sortText,filterText:r.filterText,preselect:r.preselect,tags:r.tags?.includes(1)?[e.languages.CompletionItemTag.Deprecated]:void 0,additionalTextEdits:r.additionalTextEdits?.map(e=>({range:A(e.range),text:e.newText})),__lsp:r,__document:i};return r.insertTextFormat===2&&(s.insertTextRules=e.languages.CompletionItemInsertTextRule.InsertAsSnippet),s}function U(e,t){return t.flatMap(t=>{let n=t.range??t.location?.range;return n?[{name:t.name,detail:t.detail??t.containerName??``,kind:M(e,t.kind),tags:[],range:A(n),selectionRange:A(t.selectionRange??n),children:t.children?U(e,t.children):void 0}]:[]})}var W=[`typescript`,`javascript`,`python`,`html`,`css`,`scss`,`less`,`json`,`yaml`,`shell`,`go`,`rust`,`cpp`,`c`,`php`,`ruby`,`lua`],G=new Set,K=null;async function q(e,t,n,r){try{return await e.connection.request(e.path,t,n,{signal:D(r)})}catch{return null}}function J(e,t){let n=e.connection.statusOf(e.path);return n?.state===`ready`?!!n.capabilities[t]:!1}function le(e){let t=e.connection.statusOf(e.path);if(t?.state!==`ready`)return[];let n=t.capabilities.completionProvider?.triggerCharacters;return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function ue(e){K||(K=`ppm.lsp.executeCommand`,e.editor.registerCommand(K,async(e,t)=>{let n=t?.model,r=n?d(n):void 0;!r||!t?.command||await q(r,`workspace/executeCommand`,{command:t.command,arguments:t.arguments??[]})}));for(let t of W)G.has(t)||(G.add(t),de(e,t))}function de(e,t){e.languages.registerCompletionItemProvider(t,{triggerCharacters:[`.`,`:`,`>`,`<`,`"`,`'`,`/`,`@`,`#`,`$`,`-`,` `],async provideCompletionItems(t,n,r,i){let a=d(t);if(!a||!J(a,`completionProvider`))return{suggestions:[]};let o=r.triggerKind===e.languages.CompletionTriggerKind.TriggerCharacter;if(o&&!le(a).includes(r.triggerCharacter??``))return{suggestions:[]};let s=await q(a,`textDocument/completion`,{textDocument:{uri:t.uri.toString()},position:O(n),context:{triggerKind:o?2:1,triggerCharacter:o?r.triggerCharacter:void 0}},i);return s?{suggestions:(Array.isArray(s)?s:s.items??[]).map(r=>H(e,t,n,r,a)),incomplete:Array.isArray(s)?!1:!!s.isIncomplete}:{suggestions:[]}},async resolveCompletionItem(e,t){let n=e.__lsp,r=e.__document;if(!n||!r)return e;let i=await q(r,`completionItem/resolve`,n,t);return i?{...e,detail:i.detail??e.detail,documentation:F(i.documentation)??e.documentation,additionalTextEdits:i.additionalTextEdits?.map(e=>({range:A(e.range),text:e.newText}))??e.additionalTextEdits}:e}}),e.languages.registerHoverProvider(t,{async provideHover(e,t,n){let r=d(e);if(!r||!J(r,`hoverProvider`))return null;let i=await q(r,`textDocument/hover`,{textDocument:{uri:e.uri.toString()},position:O(t)},n),a=F(i?.contents);return a?.value?{contents:[a],range:i?.range?A(i.range):void 0}:null}}),e.languages.registerSignatureHelpProvider(t,{signatureHelpTriggerCharacters:[`(`,`,`],signatureHelpRetriggerCharacters:[`)`],async provideSignatureHelp(e,t,n){let r=d(e);if(!r||!J(r,`signatureHelpProvider`))return null;let i=await q(r,`textDocument/signatureHelp`,{textDocument:{uri:e.uri.toString()},position:O(t)},n);return i?.signatures?.length?{value:{signatures:i.signatures.map(e=>({label:e.label,documentation:F(e.documentation),parameters:(e.parameters??[]).map(e=>({label:e.label,documentation:F(e.documentation)}))})),activeSignature:i.activeSignature??0,activeParameter:i.activeParameter??0},dispose:()=>{}}:null}});let n=(t,n)=>async(r,i,a)=>{let o=d(r);return!o||!J(o,n)?[]:z(e,o,await q(o,t,{textDocument:{uri:r.uri.toString()},position:O(i)},a))};e.languages.registerDefinitionProvider(t,{provideDefinition:n(`textDocument/definition`,`definitionProvider`)}),e.languages.registerTypeDefinitionProvider(t,{provideTypeDefinition:n(`textDocument/typeDefinition`,`typeDefinitionProvider`)}),e.languages.registerImplementationProvider(t,{provideImplementation:n(`textDocument/implementation`,`implementationProvider`)}),e.languages.registerReferenceProvider(t,{async provideReferences(t,n,r,i){let a=d(t);return!a||!J(a,`referencesProvider`)?[]:z(e,a,await q(a,`textDocument/references`,{textDocument:{uri:t.uri.toString()},position:O(n),context:{includeDeclaration:r.includeDeclaration}},i))}}),e.languages.registerDocumentHighlightProvider(t,{async provideDocumentHighlights(t,n,r){let i=d(t);return!i||!J(i,`documentHighlightProvider`)?[]:(await q(i,`textDocument/documentHighlight`,{textDocument:{uri:t.uri.toString()},position:O(n)},r)??[]).map(t=>({range:A(t.range),kind:P(e,t.kind)}))}}),e.languages.registerDocumentSymbolProvider(t,{async provideDocumentSymbols(t,n){let r=d(t);return!r||!J(r,`documentSymbolProvider`)?[]:U(e,await q(r,`textDocument/documentSymbol`,{textDocument:{uri:t.uri.toString()}},n)??[])}}),e.languages.registerRenameProvider(t,{async provideRenameEdits(t,n,r,i){let a=d(t);if(!a||!J(a,`renameProvider`))return{edits:[],rejectReason:`This language server cannot rename.`};let o=await q(a,`textDocument/rename`,{textDocument:{uri:t.uri.toString()},position:O(n),newName:r},i);return o?B(e,o):{edits:[],rejectReason:`The language server could not rename this.`}},async resolveRenameLocation(e,t,n){let r=d(e);if(!r)return{range:Y(t),text:``};let i=await q(r,`textDocument/prepareRename`,{textDocument:{uri:e.uri.toString()},position:O(t)},n);if(!i){let n=e.getWordAtPosition(t);return n?{range:{startLineNumber:t.lineNumber,startColumn:n.startColumn,endLineNumber:t.lineNumber,endColumn:n.endColumn},text:n.word}:{range:Y(t),text:``,rejectReason:`There is nothing here to rename.`}}let a=A(`range`in i&&i.range?i.range:i);return{range:a,text:`placeholder`in i&&i.placeholder||e.getValueInRange(a)}}}),e.languages.registerDocumentFormattingEditProvider(t,{async provideDocumentFormattingEdits(e,t,n){let r=d(e);return!r||!J(r,`documentFormattingProvider`)?[]:(await q(r,`textDocument/formatting`,{textDocument:{uri:e.uri.toString()},options:{tabSize:t.tabSize,insertSpaces:t.insertSpaces}},n)??[]).map(e=>({range:A(e.range),text:e.newText}))}}),e.languages.registerDocumentRangeFormattingEditProvider(t,{async provideDocumentRangeFormattingEdits(e,t,n,r){let i=d(e);return!i||!J(i,`documentRangeFormattingProvider`)?[]:(await q(i,`textDocument/rangeFormatting`,{textDocument:{uri:e.uri.toString()},range:k(t),options:{tabSize:n.tabSize,insertSpaces:n.insertSpaces}},r)??[]).map(e=>({range:A(e.range),text:e.newText}))}}),e.languages.registerCodeActionProvider(t,{async provideCodeActions(t,n,r,i){let a=d(t);return!a||!J(a,`codeActionProvider`)?{actions:[],dispose:()=>{}}:{actions:(await q(a,`textDocument/codeAction`,{textDocument:{uri:t.uri.toString()},range:k(n),context:{diagnostics:(a.diagnostics??[]).filter(t=>e.Range.areIntersectingOrTouching(A(t.range),n)),only:r.only?[r.only]:void 0}},i)??[]).map(n=>{let r=typeof n.command==`object`?n.command:void 0;return{title:n.title,kind:n.kind,isPreferred:n.isPreferred,edit:n.edit?B(e,n.edit):void 0,command:r&&K?{id:K,title:r.title,arguments:[{model:t,command:r.command,arguments:r.arguments}]}:void 0}}),dispose:()=>{}}}}),e.languages.registerInlayHintsProvider(t,{async provideInlayHints(t,n,r){let i=d(t);return!i||!J(i,`inlayHintProvider`)?{hints:[],dispose:()=>{}}:{hints:(await q(i,`textDocument/inlayHint`,{textDocument:{uri:t.uri.toString()},range:k(n)},r)??[]).map(t=>({position:{lineNumber:t.position.line+1,column:t.position.character+1},label:typeof t.label==`string`?t.label:t.label.map(e=>e.value).join(``),kind:t.kind===1?e.languages.InlayHintKind.Type:e.languages.InlayHintKind.Parameter,paddingLeft:t.paddingLeft,paddingRight:t.paddingRight})),dispose:()=>{}}}})}function Y(e){return{startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column}}var X=new Map;function fe(e,t){return`${e}\u0000${t}`}function Z(e){let t=e.semanticTokensProvider?.legend;return!t||!Array.isArray(t.tokenTypes)||t.tokenTypes.length===0?null:{tokenTypes:t.tokenTypes,tokenModifiers:t.tokenModifiers??[]}}function pe(e){let t=e.semanticTokensProvider?.full;return typeof t==`object`&&t?.delta===!0}function me(e,t,n){let r=JSON.stringify(n),i=fe(t,r);if(X.has(i))return;let a=e.languages.registerDocumentSemanticTokensProvider(t,{getLegend:()=>n,provideDocumentSemanticTokens:async(e,t,n)=>{let i=d(e);if(!i||Q(i)!==r)return null;let a=await he(i,e,t,n);return a?`edits`in a?{resultId:a.resultId,edits:a.edits.map(e=>({start:e.start,deleteCount:e.deleteCount,data:e.data?new Uint32Array(e.data):void 0}))}:{resultId:a.resultId,data:new Uint32Array(a.data)}:null},releaseDocumentSemanticTokens:()=>{}});X.set(i,a)}function Q(e){let t=e.connection.statusOf(e.path);if(t?.state!==`ready`)return null;let n=Z(t.capabilities);return n?JSON.stringify(n):null}async function he(e,t,n,r){let i=e.connection.statusOf(e.path);if(i?.state!==`ready`)return null;let a={uri:t.uri.toString()},o=!!n&&pe(i.capabilities),s={signal:D(r)};try{return o?await e.connection.request(e.path,`textDocument/semanticTokens/full/delta`,{textDocument:a,previousResultId:n},s):await e.connection.request(e.path,`textDocument/semanticTokens/full`,{textDocument:a},s)}catch{return null}}var $=`ppm-lsp`;function ge({editor:e,monaco:t,projectName:l,filePath:d,enabled:f}){let[p,m]=(0,c.useState)(null),[h,g]=(0,c.useState)([]),_=(0,c.useRef)(null),v=f&&!!(l&&d&&e&&t);return(0,c.useEffect)(()=>{!t||!v||ue(t)},[t,v]),(0,c.useEffect)(()=>{if(!v||!e||!t||!l||!d){m(null),g([]);return}let n=e.getModel();if(!n)return;let r=s(l);_.current=r;let a={connection:r,path:d};u(n,a);let c=r.onStatus((e,r)=>{if(e===d&&(m(r),r.state===`ready`)){let e=Z(r.capabilities);e&&me(t,n.getLanguageId(),e)}}),f=r.onNotification((e,r)=>{if(e!==`textDocument/publishDiagnostics`)return;let o=r;if(o.uri!==n.uri.toString())return;let s=o.diagnostics??[];a.diagnostics=s,g(s),i.getState().publish(l,d,s),t.editor.setModelMarkers(n,$,s.map(e=>({...A(e.range),message:e.message,severity:N(t,e.severity),source:e.source,code:e.code===void 0?void 0:String(e.code)})))});r.open(d,{getText:()=>n.getValue(),getVersion:()=>n.getVersionId(),clientUri:n.uri.toString()});let p=n.onDidChangeContent(e=>{r.change(d,e.versionId,e.changes.map(e=>({range:{start:{line:e.range.startLineNumber-1,character:e.range.startColumn-1},end:{line:e.range.endLineNumber-1,character:e.range.endColumn-1}},text:e.text})))});return()=>{p.dispose(),c(),f(),t.editor.setModelMarkers(n,$,[]),i.getState().clear(l,d),ee(n),r.close(d),o(l)&&E(),_.current=null,m(null),g([])}},[v,e,t,l,d]),{status:p,diagnostics:h,install:(0,c.useCallback)(async e=>{if(l)try{await r.post(`${n(l)}/lsp/install`,{serverId:e})}finally{a()}},[l])}}function _e(e,t,n){let r=s(e);try{r.save(t,n)}finally{o(e)}}export{d as i,O as n,_e as notifyLspSave,f as r,ie as t,ge as useLsp};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{t as n}from"./settings-store-B4mLp19V.js";import{r,t as i}from"./apply-theme-ORrEdHKT.js";import{t as a}from"./resolve-theme-BqoL27BW.js";import{q as o}from"./index-DLB3j_P0.js";var s=e(t(),1);function c(){let e=n(e=>e.themeStyle),t=n(e=>e.themeMode),c=n(e=>e.customThemeId),l=n(e=>e.customThemes),u=()=>o(r()??a(e,t,l,c)),[d,f]=(0,s.useState)(u);return(0,s.useEffect)(()=>{f(u());let e=()=>f(u());return window.addEventListener(i,e),()=>window.removeEventListener(i,e)},[e,t,c,l]),d}export{c as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";var n=e(t(),1);function r(){let[e]=(0,n.useState)(()=>document.activeElement);return(0,n.useCallback)(t=>{e instanceof HTMLElement&&(t.preventDefault(),e.focus({preventScroll:!0}))},[e])}export{r as t};
@@ -0,0 +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{a as r,k as i}from"./api-client-xQDlhUTu.js";import{n as a}from"./use-is-mobile-VRV9eZy1.js";import{t as o}from"./button-C9ZXWb3b.js";import{a as s,n as c,o as l,t as u}from"./dialog-Dn_2tuYa.js";import{t as d}from"./mobile-bottom-sheet-DArbIyrD.js";import{Kn as f}from"./index-DLB3j_P0.js";import{r as p}from"./format-bytes-he3TR0bV.js";var m=e(t(),1),h=n();function g({target:e,onConfirm:t,onCancel:n}){let r=a(),[i,g]=(0,m.useState)(!1);if((0,m.useEffect)(()=>{e||g(!1)},[e]),!e)return null;let _=e.kind===`group`,v=_?`End app`:`End process`,y=_?e.group.cpu:e.proc.cpu,b=_?e.group.ramMB:e.proc.ramMB,x=(0,h.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-kill-confirm`,"data-kill-kind":e.kind,children:[_?(0,h.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,h.jsx)(`span`,{className:`font-medium`,children:e.group.label}),` and all its`,` `,(0,h.jsx)(`span`,{className:`font-medium`,children:e.members.length}),` processes?`]}):(0,h.jsxs)(`p`,{className:`text-sm`,children:[`End `,(0,h.jsx)(`span`,{className:`font-medium`,children:e.proc.name}),` (pid `,e.proc.pid,`)?`]}),(0,h.jsxs)(`p`,{className:`text-xs text-text-subtle`,children:[`CPU `,y.toFixed(1),`% · RAM `,p(b)]}),!_&&(0,h.jsxs)(`label`,{className:`flex items-center justify-between gap-3 min-h-11 py-1`,children:[(0,h.jsx)(`span`,{className:`text-sm`,children:`Also end child processes`}),(0,h.jsx)(f,{checked:i,onCheckedChange:g,"data-testid":`sysmon-kill-tree`,"aria-label":`Also end child processes`})]}),(0,h.jsxs)(`div`,{className:`flex flex-col-reverse md:flex-row gap-2 md:justify-end pt-2`,children:[(0,h.jsx)(o,{variant:`outline`,onClick:n,"data-testid":`sysmon-kill-confirm-cancel`,className:`min-h-11`,children:`Cancel`}),(0,h.jsx)(o,{variant:`destructive`,autoFocus:!1,onClick:()=>t(e,i),"data-testid":`sysmon-kill-confirm-ok`,className:`min-h-11`,children:_?`End ${e.members.length} processes`:`End process`})]})]});return r?(0,h.jsx)(d,{open:!0,onClose:n,children:(0,h.jsxs)(`div`,{className:`px-4 pb-4`,children:[(0,h.jsx)(`h2`,{className:`text-base font-semibold mb-3`,children:v}),x]})}):(0,h.jsx)(u,{open:!0,onOpenChange:e=>!e&&n(),children:(0,h.jsxs)(c,{children:[(0,h.jsx)(s,{children:(0,h.jsx)(l,{children:v})}),x]})})}function _(e,t){return{pid:e.pid,startedAt:e.startedAt,tree:t}}function v(e,t){let n=e.rootPid===null?void 0:t.find(t=>t.pid===e.rootPid);return n?[_(n,!0)]:t.map(e=>_(e,!1))}function y(e){return e.some(e=>e.protected)}async function b(e){let t=r(),n={"Content-Type":`application/json`,"X-PPM-Request":`1`};t&&(n.Authorization=`Bearer ${t}`);let i=await fetch(`/api/system/resources/kill`,{method:`POST`,headers:n,body:JSON.stringify(e)}),a;try{a=await i.json()}catch{throw Error(i.ok?`Empty response from server`:`Server error (HTTP ${i.status})`)}if(a.ok===!1)throw Error(a.error??`HTTP ${i.status}`);return a.data}function x(e){let[t,n]=(0,m.useState)(null),r=(0,m.useCallback)(t=>{let n=new Map(e.processes.map(e=>[e.pid,e]));return t.pids.map(e=>n.get(e)).filter(e=>!!e)},[e.processes]),a=(0,m.useMemo)(()=>new Map(e.groups.map(e=>[e.key,y(r(e))])),[e.groups,r]),o=(0,m.useCallback)(e=>n({kind:`process`,proc:e}),[]),s=(0,m.useCallback)(e=>n({kind:`group`,group:e,members:r(e)}),[r]),c=(0,m.useCallback)(()=>n(null),[]);return{pendingKill:t,groupProtected:a,requestKillProcess:o,requestKillGroup:s,confirmKill:(0,m.useCallback)(async(e,t)=>{if(n(null),e.kind===`process`){let{proc:n}=e;try{await b(_(n,t)),i.success(`Ended ${n.name} (${n.pid})`)}catch(e){i.error(e instanceof Error?e.message:`Failed to end ${n.name}`)}return}let{group:r,members:a}=e,o=[];for(let e of v(r,a))try{await b(e)}catch(t){o.push(t instanceof Error?t.message:`pid ${e.pid}`)}o.length===0?i.success(`Ended ${r.label} (${a.length} processes)`):i.error(`${r.label}: ${o.length} of ${a.length} could not be ended — ${o[0]}`)},[]),cancelKill:c}}export{y as n,g as r,x as t};
@@ -0,0 +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{r}from"./api-client-xQDlhUTu.js";import{et as i}from"./window-store-DqX_qmkQ.js";import{n as a}from"./explorer-model-BtJN4MZ9.js";import{J as o,Y as s}from"./index-DLB3j_P0.js";import{t as c}from"./use-monaco-theme-BiDXRJ4e.js";import{t as l}from"./editor-font-CdxKRKX-.js";import{c as u,l as d,o as f,r as p}from"./split-sql-statements-DcAeXbk_.js";import{t as m}from"./sql-completion-provider-CS-ElfgJ.js";function h(e,t){return t?.text.trim()?{sql:t.text,lineOffset:t.startLine-1,from:`selection`}:e.trim()?{sql:e,lineOffset:0,from:`script`}:null}function g(e,t,n){let r=d(e,t,n);return r?{sql:r.run,lineOffset:p(r),from:`statement`}:null}function _(e,t,n,r){return t?.text.trim()?{sql:t.text,lineOffset:t.startLine-1,from:`selection`}:g(e,n,r)}var v=/\s/;function y(e,t,n){let r=0;for(let t=1;t<n.lineNumber;t++)r=e.indexOf(`
2
+ `,r)+1;r+=n.column-1;let i=0;for(let t=0;t<r;t++)v.test(e[t])||i++;let a=r===0||v.test(e[r-1]),o=a?i:i-1,s=0;for(let e=0;s<t.length;s++)if(!v.test(t[s])){if(e===o)break;e++}!a&&s<t.length&&s++;let c=1,l=0;for(let e=t.indexOf(`
3
+ `);e!==-1&&e<s;e=t.indexOf(`
4
+ `,e+1))c++,l=e+1;return{lineNumber:c,column:s-l+1}}var b=e(t(),1),x=n(),S=120;function C(e){let t=e.getSelection(),n=e.getModel();return!t||!n||t.isEmpty()?null:{text:n.getValueInRange(t),startLine:t.startLineNumber}}function w({onExecute:e,loading:t,defaultValue:n=`SELECT * FROM `,schemaInfo:r,onSqlChange:i,persistedSql:a,dialect:d=`postgres`,handleRef:p,queryTab:v=!1,errorLines:w,onFormat:T}){let[E,D]=(0,b.useState)(()=>a??n),O=(0,b.useRef)(!!a),[k,A]=(0,b.useState)(null),j=(0,b.useRef)(e);j.current=e;let M=(0,b.useRef)(d);M.current=d;let N=(0,b.useRef)(T);N.current=T;let P=c();(0,b.useEffect)(()=>{if(!k||!r)return;let{editor:e,monaco:t}=k,n=t.languages.registerCompletionItemProvider(`sql`,m(t,r,()=>M.current,e));return()=>n.dispose()},[k,r]);let F=(0,b.useCallback)((e,t)=>{let n=()=>{let t=e.getPosition();return t?g(e.getValue(),t.lineNumber,M.current):null};e.addAction({id:`run-query-at-cursor`,label:`Run Statement at Cursor`,keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.Enter,...v?[t.KeyMod.CtrlCmd|t.KeyMod.Shift|t.KeyCode.Enter]:[]],run:()=>{let e=n();e&&j.current(e)}}),v&&(e.addAction({id:`run-query-script`,label:`Run Script or Selection`,keybindings:[t.KeyCode.F5],run:()=>{let t=h(e.getValue(),C(e));t&&j.current(t)}}),e.addAction({id:`format-query-script`,label:`Format SQL`,keybindings:[t.KeyMod.Shift|t.KeyMod.Alt|t.KeyCode.KeyF],run:()=>N.current?.()})),p&&(p.current={runAtCursor:()=>{e.getAction(`run-query-at-cursor`)?.run()},runScript:()=>{let t=h(e.getValue(),C(e));t&&j.current(t)},selectionOrStatement:()=>{let t=e.getPosition();return _(e.getValue(),C(e),t?.lineNumber??1,M.current)},revealLine:t=>{e.setPosition({lineNumber:t,column:1}),e.revealLineInCenterIfOutsideViewport(t),e.focus()},insertText:n=>{let r=e.getSelection();if(!r)return;e.pushUndoStop(),e.executeEdits(`ppm-insert`,[{range:r,text:n,forceMoveMarkers:!0}],e=>{let n=e[0]?.range;return n?[new t.Selection(n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn)]:null}),e.pushUndoStop();let i=e.getSelection();i&&e.revealRangeInCenterIfOutsideViewport(i),e.focus()},reformat:n=>{let r=e.getModel();if(!r)return;let i=r.getValue(t.editor.EndOfLinePreference.LF),a=n(i);if(a!==i){let n=y(i,a,e.getPosition()??{lineNumber:1,column:1});e.pushUndoStop(),e.executeEdits(`ppm-format`,[{range:r.getFullModelRange(),text:a}],[new t.Selection(n.lineNumber,n.column,n.lineNumber,n.column)]),e.pushUndoStop(),e.revealPositionInCenterIfOutsideViewport(n)}e.focus()}}),A({editor:e,monaco:t})},[p]);return(0,b.useEffect)(()=>{if(!k||!v)return;let{editor:e,monaco:t}=k,n=e.createDecorationsCollection(),r=null,i=null,a=()=>{i=null;let a=e.getModel(),o=e.getPosition();if(!a||!o)return n.clear();let s=a.getVersionId();r?.version!==s&&(r={version:s,statements:f(a.getValue(),M.current)});let c=r.statements.length>1?u(r.statements,o.lineNumber):null;n.set(c?[{range:new t.Range(c.startLine,1,c.endLine,1),options:{isWholeLine:!0,lineNumberClassName:`ppm-sql-current-statement`,linesDecorationsClassName:`ppm-sql-current-statement-bar`}}]:[])},o=()=>{i&&clearTimeout(i),i=setTimeout(a,S)};a();let s=e.onDidChangeCursorPosition(o),c=e.onDidChangeModelContent(o);return()=>{i&&clearTimeout(i),s.dispose(),c.dispose(),n.clear()}},[k,v]),(0,b.useEffect)(()=>{if(!k||!w?.length)return;let{editor:e,monaco:t}=k,n=e.getModel()?.getLineCount()??0,r=e.createDecorationsCollection(w.filter(e=>e>=1&&e<=n).map(e=>({range:new t.Range(e,1,e,1),options:{isWholeLine:!0,className:`ppm-sql-error-line`,linesDecorationsClassName:`ppm-sql-error-bar`}}))),i=e.onDidChangeModelContent(()=>r.clear());return()=>{i.dispose(),r.clear()}},[k,w]),(0,b.useEffect)(()=>{O.current||D(n)},[n]),(0,x.jsx)(`div`,{className:`h-full overflow-hidden`,children:(0,x.jsx)(s,{beforeMount:o,height:`100%`,language:`sql`,theme:P,value:E,onChange:e=>{let t=e??``;D(t),O.current=!0,i?.(t)},onMount:F,options:{minimap:{enabled:!1},lineNumbers:v?`on`:`off`,scrollBeyondLastLine:!1,wordWrap:`on`,fontFamily:l,fontSize:12,tabSize:2,renderLineHighlight:`none`,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,scrollbar:{vertical:`auto`,horizontal:`auto`,verticalScrollbarSize:6,horizontalScrollbarSize:6},padding:{top:4,bottom:4},lineDecorationsWidth:v?8:4,lineNumbersMinChars:v?3:0,glyphMargin:!1,folding:!1,fixedOverflowWidgets:!0}})})}function T(e){let[t,n]=(0,b.useState)([]);return(0,b.useEffect)(()=>{if(n([]),!e)return;let t=!0;return(e.kind===`connection`&&e.database===void 0?r.get(i(e,`/tables?cached=1`)):r.get(i(e,`/objects`)).then(e=>e.objects.filter(e=>a.has(e.kind)).map(e=>({name:e.name,schema:e.schema??``})))).then(e=>{t&&n(e.map(({name:e,schema:t})=>({name:e,schema:t})))}).catch(()=>{}),()=>{t=!1}},[e]),(0,b.useMemo)(()=>{if(!(!e||t.length===0))return{tables:t,getColumns:(t,n)=>r.get(i(e,`/schema?table=${encodeURIComponent(t)}${n?`&schema=${encodeURIComponent(n)}`:``}`))}},[e,t])}export{w as n,T as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";var n=e(t(),1),r=120;function i(e){let t=Math.max(0,window.innerHeight-e.height-e.offsetTop);return{height:e.height,keyboardInset:t,keyboardOpen:t>=r}}function a(e){let[t,r]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let t=window.visualViewport;if(!e||!t){r(null);return}let n=null,a=()=>{n=null,r(e=>{let n=i(t);return e&&e.height===n.height&&e.keyboardInset===n.keyboardInset?e:n})},o=()=>{n===null&&(n=requestAnimationFrame(a))};return a(),t.addEventListener(`resize`,o),t.addEventListener(`scroll`,o),()=>{n!==null&&cancelAnimationFrame(n),t.removeEventListener(`resize`,o),t.removeEventListener(`scroll`,o)}},[e]),t}export{a as t};
@@ -0,0 +1 @@
1
+ import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{D as t}from"./vendor-markdown-C-P1aR4p.js";import{L as n}from"./index-DLB3j_P0.js";var r=e(t(),1);function i({url:e,onMessage:t,autoConnect:i=!0,idleTimeoutMs:a,onConnectionChange:o}){let s=(0,r.useRef)(null),c=(0,r.useRef)(t),l=(0,r.useRef)(o);return c.current=t,l.current=o,(0,r.useEffect)(()=>{let t=!0,r=new n(e,{idleTimeoutMs:a,onConnectionChange:e=>{t&&l.current?.(e)}});return s.current=r,r.onMessage(e=>c.current?.(e)),i&&r.connect(),()=>{t=!1,r.disconnect(),s.current=null}},[e,i,a]),{send:(0,r.useCallback)(e=>{s.current?.send(e)},[]),connect:(0,r.useCallback)(()=>{s.current?.connect()},[]),disconnect:(0,r.useCallback)(()=>{s.current?.disconnect()},[])}}export{i as t};