@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.
- package/CHANGELOG.md +58 -0
- package/CLAUDE.md +19 -4
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/assets/skills/ppm/SKILL.md +3 -2
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/common-tasks.md +6 -0
- package/assets/skills/ppm/references/http-api.md +13 -1
- package/bun.lock +15 -0
- package/dist/web/assets/accounts-settings-section-B5YXy0vd.js +1 -0
- package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-B5YXy0vd.js.gz +0 -0
- package/dist/web/assets/adaptive-context-menu-C4jNSORA.js +1 -0
- package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.br +0 -0
- package/dist/web/assets/adaptive-context-menu-C4jNSORA.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-Bj42PwCK.js +2 -0
- package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-Bj42PwCK.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-store-BAfLnsLX.js +1 -0
- package/dist/web/assets/agent-session-window-content-LqL6fVPU.js +1 -0
- package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-LqL6fVPU.js.gz +0 -0
- package/dist/web/assets/ai-resource-editor-jVv2nvAG.js +1 -0
- package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-jVv2nvAG.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-C9Q-v8fY.js +1 -0
- package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.br +0 -0
- package/dist/web/assets/ai-settings-section-C9Q-v8fY.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-CN5BR1ZZ.js +1 -0
- package/dist/web/assets/android-tab-CwqiuEZP.js +2 -0
- package/dist/web/assets/android-tab-CwqiuEZP.js.br +0 -0
- package/dist/web/assets/android-tab-CwqiuEZP.js.gz +0 -0
- package/dist/web/assets/api-client-xQDlhUTu.js +1 -0
- package/dist/web/assets/api-client-xQDlhUTu.js.br +0 -0
- package/dist/web/assets/api-client-xQDlhUTu.js.gz +0 -0
- package/dist/web/assets/api-client-xR05zj6r.js +1 -0
- package/dist/web/assets/api-settings-VAi0LpIJ.js +1 -0
- package/dist/web/assets/api-settings-vmIRFNwZ.js +1 -0
- package/dist/web/assets/api-settings-vmIRFNwZ.js.br +0 -0
- package/dist/web/assets/api-settings-vmIRFNwZ.js.gz +0 -0
- package/dist/web/assets/api-themes-CaXofG7d.js +1 -0
- package/dist/web/assets/appearance-settings-section-D0JIfiRx.js +1 -0
- package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-D0JIfiRx.js.gz +0 -0
- package/dist/web/assets/apps-panel-Cz_KJ37M.js +1 -0
- package/dist/web/assets/apps-panel-Cz_KJ37M.js.br +0 -0
- package/dist/web/assets/apps-panel-Cz_KJ37M.js.gz +0 -0
- package/dist/web/assets/audio-preview-Dq7qZ_6i.js +1 -0
- package/dist/web/assets/audio-preview-Dq7qZ_6i.js.br +0 -0
- package/dist/web/assets/audio-preview-Dq7qZ_6i.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-C3QNpsm7.js +1 -0
- package/dist/web/assets/branch-review-tab-C3QNpsm7.js.br +0 -0
- package/dist/web/assets/branch-review-tab-C3QNpsm7.js.gz +0 -0
- package/dist/web/assets/button-C9ZXWb3b.js +1 -0
- package/dist/web/assets/button-C9ZXWb3b.js.br +0 -0
- package/dist/web/assets/button-C9ZXWb3b.js.gz +0 -0
- package/dist/web/assets/chat-preparation-cache-190LLyy7.js +1 -0
- package/dist/web/assets/chat-preparation-cache-190LLyy7.js.br +0 -0
- package/dist/web/assets/chat-preparation-cache-190LLyy7.js.gz +0 -0
- package/dist/web/assets/chat-tab-D14CUl0J.js +1 -0
- package/dist/web/assets/chat-tab-D14CUl0J.js.br +0 -0
- package/dist/web/assets/chat-tab-D14CUl0J.js.gz +0 -0
- package/dist/web/assets/chat-tab-D8iAVZKV.js +16 -0
- package/dist/web/assets/chat-tab-D8iAVZKV.js.br +0 -0
- package/dist/web/assets/chat-tab-D8iAVZKV.js.gz +0 -0
- package/dist/web/assets/code-editor-B7gbH4-x.js +10 -0
- package/dist/web/assets/code-editor-B7gbH4-x.js.br +0 -0
- package/dist/web/assets/code-editor-B7gbH4-x.js.gz +0 -0
- package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js +1 -0
- package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-DQDtyvnd.js.gz +0 -0
- package/dist/web/assets/conflict-editor-ktOkrODA.js +19 -0
- package/dist/web/assets/conflict-editor-ktOkrODA.js.br +0 -0
- package/dist/web/assets/conflict-editor-ktOkrODA.js.gz +0 -0
- package/dist/web/assets/connection-form-tab-CxvExR7T.js +4 -0
- package/dist/web/assets/connection-form-tab-CxvExR7T.js.br +0 -0
- package/dist/web/assets/connection-form-tab-CxvExR7T.js.gz +0 -0
- package/dist/web/assets/context-menu-BCuZYfWC.js +1 -0
- package/dist/web/assets/context-menu-BCuZYfWC.js.br +0 -0
- package/dist/web/assets/context-menu-BCuZYfWC.js.gz +0 -0
- package/dist/web/assets/createLucideIcon-D9_fdOKS.js +1 -0
- package/dist/web/assets/createLucideIcon-D9_fdOKS.js.br +0 -0
- package/dist/web/assets/createLucideIcon-D9_fdOKS.js.gz +0 -0
- package/dist/web/assets/csv-preview-CBDMTEsF.js +10 -0
- package/dist/web/assets/csv-preview-CBDMTEsF.js.br +0 -0
- package/dist/web/assets/csv-preview-CBDMTEsF.js.gz +0 -0
- package/dist/web/assets/database-drivers-section-DJvU6bf5.js +1 -0
- package/dist/web/assets/database-drivers-section-DJvU6bf5.js.br +0 -0
- package/dist/web/assets/database-drivers-section-DJvU6bf5.js.gz +0 -0
- package/dist/web/assets/db-ai-tools-CVbbW_MZ.js +1 -0
- package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.br +0 -0
- package/dist/web/assets/db-ai-tools-CVbbW_MZ.js.gz +0 -0
- package/dist/web/assets/db-explorer-store-BmpvDHz6.js +1 -0
- package/dist/web/assets/db-explorer-store-BmpvDHz6.js.br +0 -0
- package/dist/web/assets/db-explorer-store-BmpvDHz6.js.gz +0 -0
- package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js +1 -0
- package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.br +0 -0
- package/dist/web/assets/db-sidebar-reveal-_qw0CliT.js.gz +0 -0
- package/dist/web/assets/db-tab-parts-BgVpKbi6.js +1 -0
- package/dist/web/assets/db-tab-parts-BgVpKbi6.js.br +0 -0
- package/dist/web/assets/db-tab-parts-BgVpKbi6.js.gz +0 -0
- package/dist/web/assets/db-types-CNhENouW.js +1 -0
- package/dist/web/assets/design-canvas-check-BIHc2d_k.js +1 -0
- package/dist/web/assets/design-canvas-check-BIHc2d_k.js.br +0 -0
- package/dist/web/assets/design-canvas-check-BIHc2d_k.js.gz +0 -0
- package/dist/web/assets/design-export-client-CJ3w7Zrk.js +1 -0
- package/dist/web/assets/design-export-client-CJ3w7Zrk.js.br +0 -0
- package/dist/web/assets/design-export-client-CJ3w7Zrk.js.gz +0 -0
- package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js +1 -0
- package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.br +0 -0
- package/dist/web/assets/design-responsive-dialog-MAFgVOmv.js.gz +0 -0
- package/dist/web/assets/design-settings-section-DPGw61pY.js +2 -0
- package/dist/web/assets/design-settings-section-DPGw61pY.js.br +0 -0
- package/dist/web/assets/design-settings-section-DPGw61pY.js.gz +0 -0
- package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js +3 -0
- package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.br +0 -0
- package/dist/web/assets/design-skill-suggestion-Dmmg_ap5.js.gz +0 -0
- package/dist/web/assets/design-tab-BiCqHNl3.js +57 -0
- package/dist/web/assets/design-tab-BiCqHNl3.js.br +0 -0
- package/dist/web/assets/design-tab-BiCqHNl3.js.gz +0 -0
- package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js +1 -0
- package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-pcJ2Rx5G.js.gz +0 -0
- package/dist/web/assets/dialog-Dn_2tuYa.js +1 -0
- package/dist/web/assets/dialog-Dn_2tuYa.js.br +0 -0
- package/dist/web/assets/dialog-Dn_2tuYa.js.gz +0 -0
- package/dist/web/assets/diff-viewer-CLAvyqVG.js +4 -0
- package/dist/web/assets/diff-viewer-CLAvyqVG.js.br +0 -0
- package/dist/web/assets/diff-viewer-CLAvyqVG.js.gz +0 -0
- package/dist/web/assets/docx-preview-XSkD2IL6.js +12 -0
- package/dist/web/assets/docx-preview-XSkD2IL6.js.br +0 -0
- package/dist/web/assets/docx-preview-XSkD2IL6.js.gz +0 -0
- package/dist/web/assets/dropdown-menu-BQidk_OJ.js +1 -0
- package/dist/web/assets/dropdown-menu-BQidk_OJ.js.br +0 -0
- package/dist/web/assets/dropdown-menu-BQidk_OJ.js.gz +0 -0
- package/dist/web/assets/edit-diff-preview-DyWUMlkI.js +7 -0
- package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.br +0 -0
- package/dist/web/assets/edit-diff-preview-DyWUMlkI.js.gz +0 -0
- package/dist/web/assets/editor-dialog-cQvqVZAR.js +1 -0
- package/dist/web/assets/editor-dialog-cQvqVZAR.js.br +0 -0
- package/dist/web/assets/editor-dialog-cQvqVZAR.js.gz +0 -0
- package/dist/web/assets/editor-language-service-6-7mS6_9.js +1 -0
- package/dist/web/assets/editor-language-service-6-7mS6_9.js.br +0 -0
- package/dist/web/assets/editor-language-service-6-7mS6_9.js.gz +0 -0
- package/dist/web/assets/explorer-body-BlGDPmNa.js +2 -0
- package/dist/web/assets/explorer-body-BlGDPmNa.js.br +0 -0
- package/dist/web/assets/explorer-body-BlGDPmNa.js.gz +0 -0
- package/dist/web/assets/explorer-model-BtJN4MZ9.js +1 -0
- package/dist/web/assets/explorer-model-BtJN4MZ9.js.br +0 -0
- package/dist/web/assets/explorer-model-BtJN4MZ9.js.gz +0 -0
- package/dist/web/assets/explorer-window-content-BLWY8GJ_.js +1 -0
- package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.br +0 -0
- package/dist/web/assets/explorer-window-content-BLWY8GJ_.js.gz +0 -0
- package/dist/web/assets/extension-manager-section-NSEt5f4z.js +1 -0
- package/dist/web/assets/extension-manager-section-NSEt5f4z.js.br +0 -0
- package/dist/web/assets/extension-manager-section-NSEt5f4z.js.gz +0 -0
- package/dist/web/assets/extension-webview-BkAEBWin.js +12 -0
- package/dist/web/assets/extension-webview-BkAEBWin.js.br +0 -0
- package/dist/web/assets/extension-webview-BkAEBWin.js.gz +0 -0
- package/dist/web/assets/file-diff-CcDhJkXB.js +1 -0
- package/dist/web/assets/file-icons-JInFtBVl.js +1 -0
- package/dist/web/assets/file-icons-JInFtBVl.js.br +0 -0
- package/dist/web/assets/file-icons-JInFtBVl.js.gz +0 -0
- package/dist/web/assets/file-store-BQ41vIs5.js +1 -0
- package/dist/web/assets/file-store-BQ41vIs5.js.br +0 -0
- package/dist/web/assets/file-store-BQ41vIs5.js.gz +0 -0
- package/dist/web/assets/files-settings-section-Bq7liJ_r.js +1 -0
- package/dist/web/assets/files-settings-section-Bq7liJ_r.js.br +0 -0
- package/dist/web/assets/files-settings-section-Bq7liJ_r.js.gz +0 -0
- package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js +1 -0
- package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.br +0 -0
- package/dist/web/assets/filter-dialog-frame-BkEbqBA4.js.gz +0 -0
- package/dist/web/assets/format-file-meta-DdYtk07C.js +1 -0
- package/dist/web/assets/format-file-meta-DdYtk07C.js.br +0 -0
- package/dist/web/assets/format-file-meta-DdYtk07C.js.gz +0 -0
- package/dist/web/assets/fs-api-CFtQzsIJ.js +1 -0
- package/dist/web/assets/fs-api-CFtQzsIJ.js.br +0 -0
- package/dist/web/assets/fs-api-CFtQzsIJ.js.gz +0 -0
- package/dist/web/assets/general-settings-section-DvHROAMa.js +1 -0
- package/dist/web/assets/general-settings-section-DvHROAMa.js.br +0 -0
- package/dist/web/assets/general-settings-section-DvHROAMa.js.gz +0 -0
- package/dist/web/assets/git-commit-horizontal-BPdj2L1i.js +1 -0
- package/dist/web/assets/git-log-panel-Cu9kK48H.js +1 -0
- package/dist/web/assets/git-log-panel-Cu9kK48H.js.br +0 -0
- package/dist/web/assets/git-log-panel-Cu9kK48H.js.gz +0 -0
- package/dist/web/assets/git-repo-store-CKB5fdNP.js +1 -0
- package/dist/web/assets/git-repo-store-CKB5fdNP.js.br +0 -0
- package/dist/web/assets/git-repo-store-CKB5fdNP.js.gz +0 -0
- package/dist/web/assets/git-review-tab-B_JT649W.js +3 -0
- package/dist/web/assets/git-review-tab-B_JT649W.js.br +0 -0
- package/dist/web/assets/git-review-tab-B_JT649W.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-BlposOph.js +177 -0
- package/dist/web/assets/glide-data-grid-BlposOph.js.br +0 -0
- package/dist/web/assets/glide-data-grid-BlposOph.js.gz +0 -0
- package/dist/web/assets/grid-save-dialog-B0d0qhnN.js +2 -0
- package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-B0d0qhnN.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-jirUsGm-.js +1 -0
- package/dist/web/assets/group-chat-tab-jirUsGm-.js.br +0 -0
- package/dist/web/assets/group-chat-tab-jirUsGm-.js.gz +0 -0
- package/dist/web/assets/html-preview-loads-CMWBC-iv.js +1 -0
- package/dist/web/assets/icons-BwyIKaTT.js +1 -0
- package/dist/web/assets/icons-BwyIKaTT.js.br +0 -0
- package/dist/web/assets/icons-BwyIKaTT.js.gz +0 -0
- package/dist/web/assets/image-preview-gOBK9zED.js +1 -0
- package/dist/web/assets/impexp-tab-HJVcOTYJ.js +1 -0
- package/dist/web/assets/impexp-tab-HJVcOTYJ.js.br +0 -0
- package/dist/web/assets/impexp-tab-HJVcOTYJ.js.gz +0 -0
- package/dist/web/assets/index-DLB3j_P0.js +59 -0
- package/dist/web/assets/index-DLB3j_P0.js.br +0 -0
- package/dist/web/assets/index-DLB3j_P0.js.gz +0 -0
- package/dist/web/assets/index-M3DUzop8.css +1 -0
- package/dist/web/assets/index-M3DUzop8.css.br +0 -0
- package/dist/web/assets/index-M3DUzop8.css.gz +0 -0
- package/dist/web/assets/input-C3oVNCMq.js +1 -0
- package/dist/web/assets/jira-watcher-section-EQvdnETB.js +1 -0
- package/dist/web/assets/keybindings-store-CEy-Sdcc.js +1 -0
- package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js +1 -0
- package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-DN21gB-T.js.gz +0 -0
- package/dist/web/assets/language-servers-section-DOcZ72FJ.js +2 -0
- package/dist/web/assets/language-servers-section-DOcZ72FJ.js.br +0 -0
- package/dist/web/assets/language-servers-section-DOcZ72FJ.js.gz +0 -0
- package/dist/web/assets/lib-5Chotbwm.js +2 -0
- package/dist/web/assets/lib-5Chotbwm.js.br +0 -0
- package/dist/web/assets/lib-5Chotbwm.js.gz +0 -0
- package/dist/web/assets/logs-app-C7n9GSCn.js +13 -0
- package/dist/web/assets/logs-app-C7n9GSCn.js.br +0 -0
- package/dist/web/assets/logs-app-C7n9GSCn.js.gz +0 -0
- package/dist/web/assets/logs-tab-CSOiexvx.js +1 -0
- package/dist/web/assets/logs-window-content-C4Qs6-0q.js +1 -0
- package/dist/web/assets/lsp-client-DpYmPhXX.js +1 -0
- package/dist/web/assets/lsp-client-DpYmPhXX.js.br +0 -0
- package/dist/web/assets/lsp-client-DpYmPhXX.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-CtEl6qAt.js +4 -0
- package/dist/web/assets/markdown-renderer-CtEl6qAt.js.br +0 -0
- package/dist/web/assets/markdown-renderer-CtEl6qAt.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-Df3r-CCb.js +1 -0
- package/dist/web/assets/media-url-Cn2yRAxP.js +1 -0
- package/dist/web/assets/metric-chart-canvas-DEW16Su8.js +1 -0
- package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.br +0 -0
- package/dist/web/assets/metric-chart-canvas-DEW16Su8.js.gz +0 -0
- package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js +1 -0
- package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.br +0 -0
- package/dist/web/assets/mobile-bottom-sheet-DArbIyrD.js.gz +0 -0
- package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js +1 -0
- package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-B-rcKEL9.js.gz +0 -0
- package/dist/web/assets/new-design-dialog-DgztQK5R.js +1 -0
- package/dist/web/assets/new-design-dialog-DgztQK5R.js.br +0 -0
- package/dist/web/assets/new-design-dialog-DgztQK5R.js.gz +0 -0
- package/dist/web/assets/notification-store-B92dvP_u.js +1 -0
- package/dist/web/assets/notifications-settings-section-JiGvaCFx.js +1 -0
- package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-JiGvaCFx.js.gz +0 -0
- package/dist/web/assets/onboarding-entry-eehqBvyM.js +1 -0
- package/dist/web/assets/onboarding-entry-eehqBvyM.js.br +0 -0
- package/dist/web/assets/onboarding-entry-eehqBvyM.js.gz +0 -0
- package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js +1 -0
- package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.br +0 -0
- package/dist/web/assets/onboarding-quick-orientation-CTHtIRib.js.gz +0 -0
- package/dist/web/assets/open-db-tabs-CtWIWHOa.js +1 -0
- package/dist/web/assets/open-db-tabs-CtWIWHOa.js.br +0 -0
- package/dist/web/assets/open-db-tabs-CtWIWHOa.js.gz +0 -0
- package/dist/web/assets/open-settings-EXR4zoZG.js +1 -0
- package/dist/web/assets/overview-panel-DEGF2DmZ.js +1 -0
- package/dist/web/assets/overview-panel-DEGF2DmZ.js.br +0 -0
- package/dist/web/assets/overview-panel-DEGF2DmZ.js.gz +0 -0
- package/dist/web/assets/panel-store-BJhazigC.js +1 -0
- package/dist/web/assets/panel-store-BJhazigC.js.br +0 -0
- package/dist/web/assets/panel-store-BJhazigC.js.gz +0 -0
- package/dist/web/assets/patch-tab-metadata-C92YkrRX.js +1 -0
- package/dist/web/assets/pdf-preview-C9gMtv2a.js +1 -0
- package/dist/web/assets/pdf-preview-C9gMtv2a.js.br +0 -0
- package/dist/web/assets/pdf-preview-C9gMtv2a.js.gz +0 -0
- package/dist/web/assets/performance-panel-TkwfKIZa.js +3 -0
- package/dist/web/assets/performance-panel-TkwfKIZa.js.br +0 -0
- package/dist/web/assets/performance-panel-TkwfKIZa.js.gz +0 -0
- package/dist/web/assets/portal-container-context-NBi-KGK0.js +1 -0
- package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js +1 -0
- package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-XfrZ8VoC.js.gz +0 -0
- package/dist/web/assets/pptx-export-B2wCBWlV.js +111 -0
- package/dist/web/assets/pptx-export-B2wCBWlV.js.br +0 -0
- package/dist/web/assets/pptx-export-B2wCBWlV.js.gz +0 -0
- package/dist/web/assets/problems-panel-CDzwSJn6.js +1 -0
- package/dist/web/assets/problems-panel-CDzwSJn6.js.br +0 -0
- package/dist/web/assets/problems-panel-CDzwSJn6.js.gz +0 -0
- package/dist/web/assets/process-row-format-CytRH7g2.js +1 -0
- package/dist/web/assets/process-table-C_B39GHm.js +1 -0
- package/dist/web/assets/process-table-C_B39GHm.js.br +0 -0
- package/dist/web/assets/process-table-C_B39GHm.js.gz +0 -0
- package/dist/web/assets/project-framework-store-DwLxaRan.js +1 -0
- package/dist/web/assets/project-store-BLGl9IAO.js +1 -0
- package/dist/web/assets/project-store-BLGl9IAO.js.br +0 -0
- package/dist/web/assets/project-store-BLGl9IAO.js.gz +0 -0
- package/dist/web/assets/proxy-settings-section-CvaOvYIv.js +1 -0
- package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-CvaOvYIv.js.gz +0 -0
- package/dist/web/assets/query-audit-section-D_WDp1m-.js +1 -0
- package/dist/web/assets/query-audit-section-D_WDp1m-.js.br +0 -0
- package/dist/web/assets/query-audit-section-D_WDp1m-.js.gz +0 -0
- package/dist/web/assets/query-tab-B8aMpAbI.js +22 -0
- package/dist/web/assets/query-tab-B8aMpAbI.js.br +0 -0
- package/dist/web/assets/query-tab-B8aMpAbI.js.gz +0 -0
- package/dist/web/assets/react-BZ0kba1-.js +1 -0
- package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js +1 -0
- package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-Bv0eawR4.js.gz +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js +1 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-BpDakRY0.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js +2 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-C5GQ3kzY.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js +1 -0
- package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-CZb5EMEK.js.gz +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js +1 -0
- package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-CipNtLX5.js.gz +0 -0
- package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js +1 -0
- package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.br +0 -0
- package/dist/web/assets/remote-desktop-settings-section-ZAsBRwjq.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js +1 -0
- package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-B7OXXvAM.js.gz +0 -0
- package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js +1 -0
- package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-B4W6S7Xg.js.gz +0 -0
- package/dist/web/assets/review-code-B4osj0k1.js +5 -0
- package/dist/web/assets/review-code-B4osj0k1.js.br +0 -0
- package/dist/web/assets/review-code-B4osj0k1.js.gz +0 -0
- package/dist/web/assets/run-in-terminal-button-m3i-Hcou.js +1 -0
- package/dist/web/assets/run-in-terminal-ujoc25vj.js +1 -0
- package/dist/web/assets/save-as-dialog-DpXv_f1d.js +1 -0
- package/dist/web/assets/save-as-dialog-DpXv_f1d.js.br +5 -0
- package/dist/web/assets/save-as-dialog-DpXv_f1d.js.gz +0 -0
- package/dist/web/assets/schedules-settings-section-BbaPbc28.js +1 -0
- package/dist/web/assets/schedules-settings-section-BbaPbc28.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-BbaPbc28.js.gz +0 -0
- package/dist/web/assets/scroll-area-DOlQJGZp.js +1 -0
- package/dist/web/assets/scroll-area-DOlQJGZp.js.br +0 -0
- package/dist/web/assets/scroll-area-DOlQJGZp.js.gz +0 -0
- package/dist/web/assets/send-to-chat-CWV1qd3c.js +1 -0
- package/dist/web/assets/send-to-chat-CWV1qd3c.js.br +0 -0
- package/dist/web/assets/send-to-chat-CWV1qd3c.js.gz +0 -0
- package/dist/web/assets/separator-DmU9aJwq.js +1 -0
- package/dist/web/assets/services-panel-CZQOrvth.js +1 -0
- package/dist/web/assets/services-panel-CZQOrvth.js.br +0 -0
- package/dist/web/assets/services-panel-CZQOrvth.js.gz +0 -0
- package/dist/web/assets/session-changes-bar-VfS2sHuH.js +1 -0
- package/dist/web/assets/session-changes-bar-VfS2sHuH.js.br +0 -0
- package/dist/web/assets/session-changes-bar-VfS2sHuH.js.gz +0 -0
- package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js +1 -0
- package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.br +0 -0
- package/dist/web/assets/session-list-sync-triggers-DtJI5KF0.js.gz +0 -0
- package/dist/web/assets/session-review-tab-Aq3FEooH.js +6 -0
- package/dist/web/assets/session-review-tab-Aq3FEooH.js.br +0 -0
- package/dist/web/assets/session-review-tab-Aq3FEooH.js.gz +0 -0
- package/dist/web/assets/settings-body-vXbOWchN.js +1 -0
- package/dist/web/assets/settings-body-vXbOWchN.js.br +0 -0
- package/dist/web/assets/settings-body-vXbOWchN.js.gz +0 -0
- package/dist/web/assets/settings-categories-Ajj4ui27.js +1 -0
- package/dist/web/assets/settings-categories-Ajj4ui27.js.br +0 -0
- package/dist/web/assets/settings-categories-Ajj4ui27.js.gz +0 -0
- package/dist/web/assets/settings-rows-DD7Gxmst.js +1 -0
- package/dist/web/assets/settings-rows-DD7Gxmst.js.br +0 -0
- package/dist/web/assets/settings-rows-DD7Gxmst.js.gz +0 -0
- package/dist/web/assets/settings-section-content-CVtvJ6ze.js +1 -0
- package/dist/web/assets/settings-section-content-DkUJFop6.js +2 -0
- package/dist/web/assets/settings-section-content-DkUJFop6.js.br +0 -0
- package/dist/web/assets/settings-section-content-DkUJFop6.js.gz +0 -0
- package/dist/web/assets/settings-store-B4mLp19V.js +2 -0
- package/dist/web/assets/settings-store-B4mLp19V.js.br +0 -0
- package/dist/web/assets/settings-store-B4mLp19V.js.gz +0 -0
- package/dist/web/assets/settings-tab-Cdv9_OIe.js +1 -0
- package/dist/web/assets/settings-window-content-DLa6Ph4u.js +1 -0
- package/dist/web/assets/share-BV49OI6q.css +2 -0
- package/dist/web/assets/share-BV49OI6q.css.br +0 -0
- package/dist/web/assets/share-BV49OI6q.css.gz +0 -0
- package/dist/web/assets/share-D5ufGmNI.js +9 -0
- package/dist/web/assets/share-D5ufGmNI.js.br +0 -0
- package/dist/web/assets/share-D5ufGmNI.js.gz +0 -0
- package/dist/web/assets/slash-command-picker-lILYDfK3.js +1 -0
- package/dist/web/assets/slash-command-picker-lILYDfK3.js.br +0 -0
- package/dist/web/assets/slash-command-picker-lILYDfK3.js.gz +0 -0
- package/dist/web/assets/sortable-header-DwzTFLkG.js +1 -0
- package/dist/web/assets/sortable-header-DwzTFLkG.js.br +0 -0
- package/dist/web/assets/sortable-header-DwzTFLkG.js.gz +0 -0
- package/dist/web/assets/split-sql-statements-DcAeXbk_.js +5 -0
- package/dist/web/assets/split-sql-statements-DcAeXbk_.js.br +0 -0
- package/dist/web/assets/split-sql-statements-DcAeXbk_.js.gz +0 -0
- package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js +1 -0
- package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.br +0 -0
- package/dist/web/assets/sql-completion-provider-CS-ElfgJ.js.gz +0 -0
- package/dist/web/assets/sql-object-tab-Da42SMK5.js +1 -0
- package/dist/web/assets/sql-object-tab-Da42SMK5.js.br +0 -0
- package/dist/web/assets/sql-object-tab-Da42SMK5.js.gz +0 -0
- package/dist/web/assets/sqlite-viewer-V3SKNukY.js +1 -0
- package/dist/web/assets/sqlite-viewer-V3SKNukY.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-V3SKNukY.js.gz +0 -0
- package/dist/web/assets/start-ellipsis-CU8GkxaV.js +1 -0
- package/dist/web/assets/structure-save-dialog-B635iyPI.js +1 -0
- package/dist/web/assets/structure-save-dialog-B635iyPI.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-B635iyPI.js.gz +0 -0
- package/dist/web/assets/structure-tab-Co9d8ktU.js +3 -0
- package/dist/web/assets/structure-tab-Co9d8ktU.js.br +0 -0
- package/dist/web/assets/structure-tab-Co9d8ktU.js.gz +0 -0
- package/dist/web/assets/system-monitor-body-DC0j8RqP.js +2 -0
- package/dist/web/assets/system-monitor-body-DC0j8RqP.js.br +0 -0
- package/dist/web/assets/system-monitor-body-DC0j8RqP.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-DA8BcdXo.js +1 -0
- package/dist/web/assets/system-monitor-window-content-BiuLo8XW.js +1 -0
- package/dist/web/assets/tab-host-window-content-Crvt1r5F.js +1 -0
- package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-Crvt1r5F.js.gz +0 -0
- package/dist/web/assets/tab-store-D5I52eLN.js +1 -0
- package/dist/web/assets/table-tab-C2cYw7a0.js +2 -0
- package/dist/web/assets/table-tab-C2cYw7a0.js.br +0 -0
- package/dist/web/assets/table-tab-C2cYw7a0.js.gz +0 -0
- package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js +1 -0
- package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-BqNtOo5n.js.gz +0 -0
- package/dist/web/assets/terminal-tab-CrKxibGC.js +3 -0
- package/dist/web/assets/terminal-tab-CrKxibGC.js.br +0 -0
- package/dist/web/assets/terminal-tab-CrKxibGC.js.gz +0 -0
- package/dist/web/assets/tool-cards-BRto67jM.js +15 -0
- package/dist/web/assets/tool-cards-BRto67jM.js.br +0 -0
- package/dist/web/assets/tool-cards-BRto67jM.js.gz +0 -0
- package/dist/web/assets/tools-settings-section-DEvZsrxq.js +1 -0
- package/dist/web/assets/tools-settings-section-DEvZsrxq.js.br +0 -0
- package/dist/web/assets/tools-settings-section-DEvZsrxq.js.gz +0 -0
- package/dist/web/assets/use-at-most-wide-BHsrzvv3.js +1 -0
- package/dist/web/assets/use-blob-url-Clm7wbB_.js +1 -0
- package/dist/web/assets/use-db-driver-installed-anzWkGi5.js +1 -0
- package/dist/web/assets/use-db-read-BCYhIrJM.js +1 -0
- package/dist/web/assets/use-db-read-BCYhIrJM.js.br +0 -0
- package/dist/web/assets/use-db-read-BCYhIrJM.js.gz +0 -0
- package/dist/web/assets/use-db-tab-B8LjdDb7.js +1 -0
- package/dist/web/assets/use-db-tab-B8LjdDb7.js.br +0 -0
- package/dist/web/assets/use-db-tab-B8LjdDb7.js.gz +0 -0
- package/dist/web/assets/use-design-canvas-check-DBsLf1At.js +1 -0
- package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.br +0 -0
- package/dist/web/assets/use-design-canvas-check-DBsLf1At.js.gz +0 -0
- package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js +1 -0
- package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.br +0 -0
- package/dist/web/assets/use-h264-canvas-decoder-_zqeiVx8.js.gz +0 -0
- package/dist/web/assets/use-inline-blame-CRWJU6Rq.js +16 -0
- package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.br +0 -0
- package/dist/web/assets/use-inline-blame-CRWJU6Rq.js.gz +0 -0
- package/dist/web/assets/use-is-mobile-VRV9eZy1.js +1 -0
- package/dist/web/assets/use-lsp-B-otjr-6.js +6 -0
- package/dist/web/assets/use-lsp-B-otjr-6.js.br +0 -0
- package/dist/web/assets/use-lsp-B-otjr-6.js.gz +0 -0
- package/dist/web/assets/use-monaco-theme-BiDXRJ4e.js +1 -0
- package/dist/web/assets/use-opener-focus-CDRKhHwX.js +1 -0
- package/dist/web/assets/use-process-kill-BW2UW0mZ.js +1 -0
- package/dist/web/assets/use-process-kill-BW2UW0mZ.js.br +0 -0
- package/dist/web/assets/use-process-kill-BW2UW0mZ.js.gz +0 -0
- package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js +4 -0
- package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-D_Kc2FI7.js.gz +0 -0
- package/dist/web/assets/use-visual-viewport-MmugpRg-.js +1 -0
- package/dist/web/assets/use-websocket-n3Ud9vEA.js +1 -0
- package/dist/web/assets/vendor-markdown-C-P1aR4p.js +291 -0
- package/dist/web/assets/vendor-markdown-C-P1aR4p.js.br +0 -0
- package/dist/web/assets/vendor-markdown-C-P1aR4p.js.gz +0 -0
- package/dist/web/assets/vendor-ui-BTSIXzhZ.js +45 -0
- package/dist/web/assets/vendor-ui-BTSIXzhZ.js.br +0 -0
- package/dist/web/assets/vendor-ui-BTSIXzhZ.js.gz +0 -0
- package/dist/web/assets/video-preview-CjB6wesi.js +1 -0
- package/dist/web/assets/video-preview-CjB6wesi.js.br +0 -0
- package/dist/web/assets/video-preview-CjB6wesi.js.gz +0 -0
- package/dist/web/assets/voice-settings-section-C6Wb6q5o.js +1 -0
- package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.br +0 -0
- package/dist/web/assets/voice-settings-section-C6Wb6q5o.js.gz +0 -0
- package/dist/web/assets/web-preview-tab-doNpegW3.js +1 -0
- package/dist/web/assets/web-preview-tab-doNpegW3.js.br +0 -0
- package/dist/web/assets/web-preview-tab-doNpegW3.js.gz +0 -0
- package/dist/web/assets/window-store-DqX_qmkQ.js +1 -0
- package/dist/web/assets/window-store-DqX_qmkQ.js.br +0 -0
- package/dist/web/assets/window-store-DqX_qmkQ.js.gz +0 -0
- package/dist/web/assets/ws-auth-CbF6GqxP.js +1 -0
- package/dist/web/design-share-page/index.html +18 -0
- package/dist/web/index.html +47 -47
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +1 -1
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/docs/architecture/ai-chat-and-providers.md +258 -26
- package/docs/architecture/data-and-storage.md +9 -3
- package/docs/architecture/workspace-and-ui.md +42 -5
- package/docs/project-roadmap.md +5 -0
- package/package.json +6 -2
- package/scripts/gen-product-icons.ts +1 -0
- package/src/cli/commands/db-cmd.ts +79 -1
- package/src/providers/claude-agent-sdk-query-options.ts +42 -10
- package/src/providers/claude-agent-sdk.ts +19 -6
- package/src/providers/codex-app-server/codex-provider.ts +9 -3
- package/src/providers/codex-app-server/codex-thread-params.ts +34 -4
- package/src/server/index.ts +17 -5
- package/src/server/middleware/access-log.ts +6 -3
- package/src/server/routes/accounts.ts +3 -2
- package/src/server/routes/chat-file-changes.ts +15 -1
- package/src/server/routes/chat.ts +92 -18
- package/src/server/routes/database-query.ts +14 -5
- package/src/server/routes/database.ts +14 -0
- package/src/server/routes/debug-crash.ts +30 -0
- package/src/server/routes/design-comments.ts +56 -7
- package/src/server/routes/design-share-address.ts +20 -0
- package/src/server/routes/design-share-guest-comments.ts +120 -0
- package/src/server/routes/design-share-guest-files.ts +99 -0
- package/src/server/routes/design-share-guest-shared.ts +95 -0
- package/src/server/routes/design-share-guest.ts +77 -0
- package/src/server/routes/design-shares.ts +90 -0
- package/src/server/routes/designs.ts +2 -0
- package/src/server/routes/settings.ts +12 -0
- package/src/server/routes/static.ts +10 -2
- package/src/server/ws/chat.ts +113 -39
- package/src/server/ws/global.ts +10 -8
- package/src/services/account.service.ts +57 -18
- package/src/services/chat.service.ts +16 -6
- package/src/services/db-ai-tools/db-ai-connections.ts +48 -0
- package/src/services/db-ai-tools/db-ai-format.ts +107 -0
- package/src/services/db-ai-tools/db-ai-run.ts +199 -0
- package/src/services/db-ai-tools/db-ai-target.ts +59 -0
- package/src/services/db-ai-tools/db-ai-tools-endpoint.ts +225 -0
- package/src/services/db-ai-tools/db-ai-tools-tokens.ts +33 -0
- package/src/services/db-ai-tools/db-ai-tools-tool.ts +131 -0
- package/src/services/db-ai-tools/db-approval-broker.ts +157 -0
- package/src/services/db.service.ts +25 -1
- package/src/services/design/bridge/bridge-picker.ts +15 -5
- package/src/services/design/bridge/guest-bridge.ts +19 -0
- package/src/services/design/comments/design-comment-element-context.ts +28 -6
- package/src/services/design/comments/design-comment-input.ts +47 -0
- package/src/services/design/comments/design-comment-views.ts +146 -0
- package/src/services/design/comments/design-comments-revision.ts +19 -0
- package/src/services/design/comments/design-comments-store.ts +82 -9
- package/src/services/design/design-comment-replies.service.ts +126 -0
- package/src/services/design/design-comments.service.ts +77 -34
- package/src/services/design/design-restore.service.ts +6 -2
- package/src/services/design/design-snapshots.service.ts +8 -2
- package/src/services/design/design-store.service.ts +7 -1
- package/src/services/design/design-write-rate-limit.ts +11 -17
- package/src/services/design/preview/design-guest-alias.ts +64 -0
- package/src/services/design/preview/design-preview-html.ts +16 -3
- package/src/services/design/preview/design-preview-scope.ts +29 -5
- package/src/services/design/share/design-share-address.ts +81 -0
- package/src/services/design/share/design-share-changed-files.ts +74 -0
- package/src/services/design/share/design-share-client-key.ts +72 -0
- package/src/services/design/share/design-share-code.ts +116 -0
- package/src/services/design/share/design-share-comments.service.ts +162 -0
- package/src/services/design/share/design-share-guest-link.ts +109 -0
- package/src/services/design/share/design-share-guest-page.ts +86 -0
- package/src/services/design/share/design-share-link-rules.ts +83 -0
- package/src/services/design/share/design-share-links-store.ts +157 -0
- package/src/services/design/share/design-share-links.service.ts +174 -0
- package/src/services/design/share/design-share-notifier.ts +192 -0
- package/src/services/design/share/design-share-rate-limit.ts +71 -0
- package/src/services/design/share/design-share-resolve.ts +31 -0
- package/src/services/mcp-http-endpoint.ts +23 -10
- package/src/services/mysql.service.ts +6 -2
- package/src/services/notification-format.ts +10 -2
- package/src/services/notification-link.ts +1 -1
- package/src/services/notification.service.ts +47 -15
- package/src/services/ppm-password.ts +26 -0
- package/src/services/project-name-for-path.ts +18 -0
- package/src/services/query-audit/query-audit.service.ts +7 -4
- package/src/services/remote-desktop/access-unit-assembler.ts +11 -7
- package/src/services/remote-desktop/nal-splitter.ts +14 -1
- package/src/services/remote-desktop/remote-desktop-capture-wayland.ts +47 -21
- package/src/services/remote-desktop/remote-desktop-encoder-args.ts +5 -3
- package/src/services/session-file-baselines/session-file-baselines.service.ts +48 -0
- package/src/services/session-file-baselines/session-file-blame.ts +57 -24
- package/src/services/session-file-baselines/session-file-changes.service.ts +220 -22
- package/src/services/session-file-baselines/session-file-history.ts +5 -1
- package/src/services/session-file-baselines/session-file-writes.ts +28 -0
- package/src/services/sliding-window-limiter.ts +106 -0
- package/src/services/tab-tools-mcp/open-url-tool.ts +149 -0
- package/src/services/tab-tools-mcp/tab-open-broker.ts +12 -4
- package/src/services/tab-tools-mcp/tab-tools-mcp-endpoint.ts +66 -22
- package/src/services/tab-tools-mcp/tab-tools-mcp-tokens.ts +3 -1
- package/src/services/tab-tools-mcp/tab-tools-mcp-tool.ts +78 -6
- package/src/services/tab-tools-mcp/terminal-text.ts +45 -0
- package/src/services/tab-tools-mcp/terminal-tools.ts +297 -0
- package/src/services/terminal.service.ts +39 -4
- package/src/shared/db-ai-tools.ts +118 -0
- package/src/shared/db-query-script.ts +16 -0
- package/src/shared/design-comment-thread-types.ts +80 -0
- package/src/shared/design-comment-types.ts +53 -4
- package/src/shared/design-share-guest-types.ts +59 -0
- package/src/shared/design-share-types.ts +100 -0
- package/src/shared/notification-settings.ts +4 -3
- package/src/shared/ppm-tools.ts +39 -0
- package/src/shared/session-file-changes.ts +16 -0
- package/src/shared/tab-open-protocol.ts +50 -6
- package/src/shared/untrusted-text.ts +15 -1
- package/src/types/chat.ts +7 -1
- package/src/types/config.ts +5 -2
- package/src/types/database.ts +6 -0
- package/src/web/components/chat/chat-history-bar.tsx +10 -6
- package/src/web/components/chat/chat-tab.tsx +7 -1
- package/src/web/components/chat/db-execute-approval-card.tsx +100 -0
- package/src/web/components/chat/db-tool-card.tsx +42 -0
- package/src/web/components/chat/device-tool-card.tsx +45 -0
- package/src/web/components/chat/message-input.tsx +9 -6
- package/src/web/components/chat/message-list.tsx +6 -1
- package/src/web/components/chat/message-markdown.tsx +6 -3
- package/src/web/components/chat/message-user-bubble.tsx +2 -1
- package/src/web/components/chat/model-thinking-selector.tsx +6 -4
- package/src/web/components/chat/prompt-cache-chip.tsx +1 -1
- package/src/web/components/chat/running-agents-bar.tsx +164 -76
- package/src/web/components/chat/session-changes-bar.tsx +46 -13
- package/src/web/components/chat/tool-cards.tsx +29 -1
- package/src/web/components/chat/turn-change-rollup.tsx +8 -1
- package/src/web/components/chat/usage-badge.tsx +3 -3
- package/src/web/components/database/query/query-run-state.ts +11 -1
- package/src/web/components/database/query/query-tab.tsx +33 -7
- package/src/web/components/database/query/use-query-runner.ts +3 -0
- package/src/web/components/database/query/write-once-dialog.tsx +70 -0
- package/src/web/components/design/canvas/design-canvas-pane.tsx +5 -2
- package/src/web/components/design/comments/comment-author-label.tsx +23 -0
- package/src/web/components/design/comments/comment-composer.tsx +6 -14
- package/src/web/components/design/comments/comment-pins-overlay.tsx +8 -3
- package/src/web/components/design/comments/comment-thread-replies.tsx +82 -0
- package/src/web/components/design/comments/comment-thread-text-box.tsx +69 -0
- package/src/web/components/design/comments/comment-thread-view.tsx +115 -0
- package/src/web/components/design/comments/comments-panel.tsx +33 -10
- package/src/web/components/design/comments/comments-send-preview.tsx +20 -8
- package/src/web/components/design/comments/design-comments-layer.tsx +3 -1
- package/src/web/components/design/comments/use-comment-pins.ts +3 -0
- package/src/web/components/design/comments/use-design-comments-feature.ts +40 -25
- package/src/web/components/design/comments/use-design-comments.ts +44 -12
- package/src/web/components/design/design-split-layout.tsx +106 -10
- package/src/web/components/design/design-tab-context.ts +2 -0
- package/src/web/components/design/design-tab.tsx +5 -1
- package/src/web/components/design/design-toolbar.tsx +24 -4
- package/src/web/components/design/share/design-share-dialog.tsx +81 -0
- package/src/web/components/design/share/new-share-link-form.tsx +85 -0
- package/src/web/components/design/share/share-address-block.tsx +101 -0
- package/src/web/components/design/share/share-changed-files.tsx +30 -0
- package/src/web/components/design/share/share-expiry-picker.tsx +44 -0
- package/src/web/components/design/share/share-repin-panel.tsx +64 -0
- package/src/web/components/design/share/share-row-panel.tsx +35 -0
- package/src/web/components/design/share/share-version-picker.tsx +67 -0
- package/src/web/components/design/share/shared-link-action-panels.tsx +120 -0
- package/src/web/components/design/share/shared-link-row.tsx +131 -0
- package/src/web/components/design/share/shared-links-list.tsx +33 -0
- package/src/web/components/design/share/use-share-address.ts +74 -0
- package/src/web/components/design/share/use-share-links.ts +93 -0
- package/src/web/components/design/use-design-layout.ts +7 -4
- package/src/web/components/editor/diff-viewer.tsx +16 -12
- package/src/web/components/editor/docx-preview.tsx +7 -2
- package/src/web/components/floating-window/close-window.ts +32 -0
- package/src/web/components/floating-window/floating-window.tsx +65 -24
- package/src/web/components/floating-window/open-tab-in-pip.ts +3 -0
- package/src/web/components/floating-window/use-window-drag.ts +33 -7
- package/src/web/components/floating-window/use-window-meta.ts +138 -0
- package/src/web/components/floating-window/window-chrome-contract.ts +19 -2
- package/src/web/components/floating-window/window-dock-layout.ts +72 -0
- package/src/web/components/floating-window/window-dock-list.tsx +156 -0
- package/src/web/components/floating-window/window-dock.tsx +192 -0
- package/src/web/components/floating-window/window-geometry.ts +39 -1
- package/src/web/components/floating-window/window-layer.tsx +59 -23
- package/src/web/components/floating-window/window-persistence.ts +16 -3
- package/src/web/components/floating-window/window-store-types.ts +13 -2
- package/src/web/components/floating-window/window-store.ts +75 -8
- package/src/web/components/floating-window/window-title-identity.tsx +86 -0
- package/src/web/components/layout/status-bar.tsx +3 -0
- package/src/web/components/layout/tab-pop-out-menu-item.tsx +2 -2
- package/src/web/components/logs/open-logs.ts +0 -1
- package/src/web/components/os-explorer/actions/explorer-actions-upload.ts +2 -1
- package/src/web/components/os-explorer/skins/macos-window-chrome.tsx +17 -11
- package/src/web/components/os-explorer/skins/windows-window-chrome.tsx +14 -5
- package/src/web/components/remote-desktop/use-remote-desktop-readiness.ts +8 -3
- package/src/web/components/settings/accounts/account-add-dialog.tsx +25 -13
- package/src/web/components/settings/accounts/claude-accounts-section.tsx +3 -3
- package/src/web/components/settings/ai-settings-section.tsx +0 -20
- package/src/web/components/settings/design-settings-section.tsx +3 -0
- package/src/web/components/settings/design-window-setting.tsx +28 -0
- package/src/web/components/settings/settings-categories.ts +3 -0
- package/src/web/components/settings/settings-section-content.tsx +1 -0
- package/src/web/components/settings/tools-settings-section.tsx +120 -0
- package/src/web/components/shared/docx-html-sanitize.ts +59 -0
- package/src/web/components/shared/markdown-code-block.tsx +3 -1
- package/src/web/components/shared/markdown-renderer.tsx +15 -3
- package/src/web/components/shared/markdown-sanitize.ts +65 -0
- package/src/web/components/web-preview/web-preview-tab.tsx +6 -3
- package/src/web/design-share-page/index.html +17 -0
- package/src/web/design-share-page/main.tsx +11 -0
- package/src/web/design-share-page/share-api.ts +131 -0
- package/src/web/design-share-page/share-app.tsx +14 -0
- package/src/web/design-share-page/share-bottom-sheet.tsx +61 -0
- package/src/web/design-share-page/share-canvas.tsx +92 -0
- package/src/web/design-share-page/share-composer.tsx +104 -0
- package/src/web/design-share-page/share-entry.tsx +92 -0
- package/src/web/design-share-page/share-identity.ts +81 -0
- package/src/web/design-share-page/share-name-prompt.tsx +59 -0
- package/src/web/design-share-page/share-panel-content.tsx +57 -0
- package/src/web/design-share-page/share-pins-overlay.tsx +50 -0
- package/src/web/design-share-page/share-review.tsx +123 -0
- package/src/web/design-share-page/share-states.tsx +78 -0
- package/src/web/design-share-page/share-thread-model.ts +83 -0
- package/src/web/design-share-page/share-thread-view.tsx +61 -0
- package/src/web/design-share-page/share-threads-panel.tsx +103 -0
- package/src/web/design-share-page/share-toolbar.tsx +105 -0
- package/src/web/design-share-page/share-ui.ts +30 -0
- package/src/web/design-share-page/share.css +63 -0
- package/src/web/design-share-page/use-share-canvas.ts +51 -0
- package/src/web/design-share-page/use-share-info.ts +34 -0
- package/src/web/design-share-page/use-share-session.ts +75 -0
- package/src/web/design-share-page/use-share-threads.ts +139 -0
- package/src/web/hooks/use-chat.ts +5 -2
- package/src/web/hooks/use-design-session-redirect.ts +3 -2
- package/src/web/hooks/use-git-repo.ts +36 -16
- package/src/web/hooks/use-global-events.ts +4 -0
- package/src/web/hooks/use-inline-blame.ts +17 -11
- package/src/web/hooks/use-notification-clicks.ts +23 -5
- package/src/web/hooks/use-session-file-changes.ts +118 -41
- package/src/web/hooks/use-url-sync.ts +5 -4
- package/src/web/lib/api-settings.ts +2 -0
- package/src/web/lib/chat-attempt-lifecycle.ts +3 -1
- package/src/web/lib/db-tool-call.ts +57 -0
- package/src/web/lib/design/api-design-comments.ts +39 -9
- package/src/web/lib/design/api-design-shares.ts +47 -0
- package/src/web/lib/design/design-comments-prompt.ts +108 -23
- package/src/web/lib/design/design-layout-mode.ts +16 -1
- package/src/web/lib/design/design-share-address-state.ts +88 -0
- package/src/web/lib/design/design-share-expiry.ts +96 -0
- package/src/web/lib/design/design-share-link-status.ts +66 -0
- package/src/web/lib/design/design-view-prefs.ts +20 -1
- package/src/web/lib/design/open-design-tab.ts +54 -1
- package/src/web/lib/git-repo-scope.ts +60 -0
- package/src/web/lib/icons.generated.tsx +3 -1
- package/src/web/lib/model-display-name.ts +16 -0
- package/src/web/lib/open-ai-tab.ts +129 -19
- package/src/web/lib/running-agent-rows.ts +52 -0
- package/src/web/lib/session-file-changes-client.ts +6 -0
- package/src/web/lib/session-file-changes.ts +13 -0
- package/src/web/lib/tab-tool-call.ts +37 -1
- package/src/web/lib/utils.ts +4 -1
- package/src/web/stores/panel-store.ts +13 -1
- package/src/web/stores/panel-utils.ts +9 -4
- package/src/web/stores/settings-store.ts +14 -0
- package/src/web/stores/window-panel-actions.ts +21 -3
- package/src/web/stores/window-panel-persistence.ts +2 -1
- package/src/web/sw-notification-click.ts +12 -1
- package/templates/skill/SKILL.md.tmpl +2 -1
- package/templates/skill/common-tasks.md +6 -0
- package/vite.config.ts +10 -0
- package/vite.share.config.ts +43 -0
- package/dist/web/assets/accounts-settings-section-DU-lTifs.js +0 -1
- package/dist/web/assets/accounts-settings-section-DU-lTifs.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-DU-lTifs.js.gz +0 -0
- package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js +0 -1
- package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.br +0 -0
- package/dist/web/assets/adaptive-context-menu-Cq7ynvIn.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js +0 -2
- package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-At6Rt-Yf.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-store-BoBrAw5i.js +0 -1
- package/dist/web/assets/agent-session-window-content-CB_uvabH.js +0 -1
- package/dist/web/assets/agent-session-window-content-CB_uvabH.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-CB_uvabH.js.gz +0 -0
- package/dist/web/assets/ai-resource-editor-Czearm3I.js +0 -1
- package/dist/web/assets/ai-resource-editor-Czearm3I.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-Czearm3I.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-AOgAUCgH.js +0 -1
- package/dist/web/assets/ai-settings-section-B_OFMlrt.js +0 -1
- package/dist/web/assets/ai-settings-section-B_OFMlrt.js.br +0 -0
- package/dist/web/assets/ai-settings-section-B_OFMlrt.js.gz +0 -0
- package/dist/web/assets/android-tab-L7DmLfHG.js +0 -2
- package/dist/web/assets/android-tab-L7DmLfHG.js.br +0 -0
- package/dist/web/assets/android-tab-L7DmLfHG.js.gz +0 -0
- package/dist/web/assets/api-client-DAQfiXg0.js +0 -1
- package/dist/web/assets/api-client-OiA8Ida1.js +0 -1
- package/dist/web/assets/api-client-OiA8Ida1.js.br +0 -0
- package/dist/web/assets/api-client-OiA8Ida1.js.gz +0 -0
- package/dist/web/assets/api-settings-D2H6gjen.js +0 -1
- package/dist/web/assets/api-settings-D2H6gjen.js.br +0 -0
- package/dist/web/assets/api-settings-D2H6gjen.js.gz +0 -0
- package/dist/web/assets/api-settings-DHhcUHtx.js +0 -1
- package/dist/web/assets/api-themes-CE8gPZ3X.js +0 -1
- package/dist/web/assets/appearance-settings-section-s3KWKTBm.js +0 -1
- package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-s3KWKTBm.js.gz +0 -0
- package/dist/web/assets/apps-panel-DaojtUvh.js +0 -1
- package/dist/web/assets/apps-panel-DaojtUvh.js.br +0 -0
- package/dist/web/assets/apps-panel-DaojtUvh.js.gz +0 -0
- package/dist/web/assets/audio-preview-CWcPZqTA.js +0 -1
- package/dist/web/assets/audio-preview-CWcPZqTA.js.br +0 -4
- package/dist/web/assets/audio-preview-CWcPZqTA.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-9UB4ccpF.js +0 -1
- package/dist/web/assets/branch-review-tab-9UB4ccpF.js.br +0 -0
- package/dist/web/assets/branch-review-tab-9UB4ccpF.js.gz +0 -0
- package/dist/web/assets/button-Br60hGkw.js +0 -1
- package/dist/web/assets/button-Br60hGkw.js.br +0 -0
- package/dist/web/assets/button-Br60hGkw.js.gz +0 -0
- package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js +0 -1
- package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.br +0 -0
- package/dist/web/assets/chat-preparation-cache-CRX9WAK5.js.gz +0 -0
- package/dist/web/assets/chat-tab-DMVb_mgx.js +0 -1
- package/dist/web/assets/chat-tab-DMVb_mgx.js.br +0 -0
- package/dist/web/assets/chat-tab-DMVb_mgx.js.gz +0 -0
- package/dist/web/assets/chat-tab-s7uAnh-h.js +0 -17
- package/dist/web/assets/chat-tab-s7uAnh-h.js.br +0 -0
- package/dist/web/assets/chat-tab-s7uAnh-h.js.gz +0 -0
- package/dist/web/assets/code-editor-JK49X9EX.js +0 -10
- package/dist/web/assets/code-editor-JK49X9EX.js.br +0 -0
- package/dist/web/assets/code-editor-JK49X9EX.js.gz +0 -0
- package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js +0 -1
- package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-CxJsBnff.js.gz +0 -0
- package/dist/web/assets/conflict-editor-rOpVkK9P.js +0 -19
- package/dist/web/assets/conflict-editor-rOpVkK9P.js.br +0 -0
- package/dist/web/assets/conflict-editor-rOpVkK9P.js.gz +0 -0
- package/dist/web/assets/connection-form-tab-BGmb918E.js +0 -4
- package/dist/web/assets/connection-form-tab-BGmb918E.js.br +0 -0
- package/dist/web/assets/connection-form-tab-BGmb918E.js.gz +0 -0
- package/dist/web/assets/context-menu-BoQ6lxte.js +0 -1
- package/dist/web/assets/context-menu-BoQ6lxte.js.br +0 -0
- package/dist/web/assets/context-menu-BoQ6lxte.js.gz +0 -0
- package/dist/web/assets/createLucideIcon-DBXq3G0e.js +0 -1
- package/dist/web/assets/createLucideIcon-DBXq3G0e.js.br +0 -0
- package/dist/web/assets/createLucideIcon-DBXq3G0e.js.gz +0 -0
- package/dist/web/assets/csv-preview-CM7su92m.js +0 -10
- package/dist/web/assets/csv-preview-CM7su92m.js.br +0 -0
- package/dist/web/assets/csv-preview-CM7su92m.js.gz +0 -0
- package/dist/web/assets/database-drivers-section-C6ZKPWaE.js +0 -1
- package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.br +0 -0
- package/dist/web/assets/database-drivers-section-C6ZKPWaE.js.gz +0 -0
- package/dist/web/assets/db-explorer-store-BcLxq-X0.js +0 -1
- package/dist/web/assets/db-explorer-store-BcLxq-X0.js.br +0 -0
- package/dist/web/assets/db-explorer-store-BcLxq-X0.js.gz +0 -0
- package/dist/web/assets/db-tab-parts-DvmnlA6V.js +0 -1
- package/dist/web/assets/db-tab-parts-DvmnlA6V.js.br +0 -0
- package/dist/web/assets/db-tab-parts-DvmnlA6V.js.gz +0 -0
- package/dist/web/assets/db-types-9ac-eYxf.js +0 -1
- package/dist/web/assets/db-types-9ac-eYxf.js.br +0 -0
- package/dist/web/assets/db-types-9ac-eYxf.js.gz +0 -0
- package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js +0 -1
- package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.br +0 -0
- package/dist/web/assets/design-canvas-check-Bo76Q6Qr.js.gz +0 -0
- package/dist/web/assets/design-export-client-ClwRg798.js +0 -1
- package/dist/web/assets/design-export-client-ClwRg798.js.br +0 -0
- package/dist/web/assets/design-export-client-ClwRg798.js.gz +0 -0
- package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js +0 -1
- package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.br +0 -0
- package/dist/web/assets/design-responsive-dialog-Cdccv3Nw.js.gz +0 -0
- package/dist/web/assets/design-settings-section-CuxZSLAr.js +0 -2
- package/dist/web/assets/design-settings-section-CuxZSLAr.js.br +0 -0
- package/dist/web/assets/design-settings-section-CuxZSLAr.js.gz +0 -0
- package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js +0 -3
- package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.br +0 -0
- package/dist/web/assets/design-skill-suggestion-DZQjG8FV.js.gz +0 -0
- package/dist/web/assets/design-tab-JlKmHVkd.js +0 -57
- package/dist/web/assets/design-tab-JlKmHVkd.js.br +0 -0
- package/dist/web/assets/design-tab-JlKmHVkd.js.gz +0 -0
- package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js +0 -1
- package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-C1EwWf4Z.js.gz +0 -0
- package/dist/web/assets/dialog-DOaEX6AK.js +0 -1
- package/dist/web/assets/dialog-DOaEX6AK.js.br +0 -0
- package/dist/web/assets/dialog-DOaEX6AK.js.gz +0 -0
- package/dist/web/assets/diff-viewer-FidH7Nsq.js +0 -4
- package/dist/web/assets/diff-viewer-FidH7Nsq.js.br +0 -0
- package/dist/web/assets/diff-viewer-FidH7Nsq.js.gz +0 -0
- package/dist/web/assets/docx-preview-ENiLGqzy.js +0 -12
- package/dist/web/assets/docx-preview-ENiLGqzy.js.br +0 -0
- package/dist/web/assets/docx-preview-ENiLGqzy.js.gz +0 -0
- package/dist/web/assets/dropdown-menu-DB3yyoVz.js +0 -1
- package/dist/web/assets/dropdown-menu-DB3yyoVz.js.br +0 -0
- package/dist/web/assets/dropdown-menu-DB3yyoVz.js.gz +0 -0
- package/dist/web/assets/edit-diff-preview-D4EqC86X.js +0 -7
- package/dist/web/assets/edit-diff-preview-D4EqC86X.js.br +0 -0
- package/dist/web/assets/edit-diff-preview-D4EqC86X.js.gz +0 -0
- package/dist/web/assets/editor-dialog-DC7dUWAX.js +0 -1
- package/dist/web/assets/editor-dialog-DC7dUWAX.js.br +0 -0
- package/dist/web/assets/editor-dialog-DC7dUWAX.js.gz +0 -0
- package/dist/web/assets/editor-language-service-0pN0TxYN.js +0 -1
- package/dist/web/assets/editor-language-service-0pN0TxYN.js.br +0 -0
- package/dist/web/assets/editor-language-service-0pN0TxYN.js.gz +0 -0
- package/dist/web/assets/explorer-body-tFaUp9_Q.js +0 -2
- package/dist/web/assets/explorer-body-tFaUp9_Q.js.br +0 -0
- package/dist/web/assets/explorer-body-tFaUp9_Q.js.gz +0 -0
- package/dist/web/assets/explorer-model-BmgFEsj1.js +0 -1
- package/dist/web/assets/explorer-model-BmgFEsj1.js.br +0 -0
- package/dist/web/assets/explorer-model-BmgFEsj1.js.gz +0 -0
- package/dist/web/assets/explorer-window-content-XnRTZT_X.js +0 -1
- package/dist/web/assets/explorer-window-content-XnRTZT_X.js.br +0 -0
- package/dist/web/assets/explorer-window-content-XnRTZT_X.js.gz +0 -0
- package/dist/web/assets/extension-manager-section-DEbwRPf1.js +0 -1
- package/dist/web/assets/extension-manager-section-DEbwRPf1.js.br +0 -0
- package/dist/web/assets/extension-manager-section-DEbwRPf1.js.gz +0 -0
- package/dist/web/assets/extension-webview-C9ApceLU.js +0 -12
- package/dist/web/assets/extension-webview-C9ApceLU.js.br +0 -0
- package/dist/web/assets/extension-webview-C9ApceLU.js.gz +0 -0
- package/dist/web/assets/file-diff-lX1a7RLF.js +0 -1
- package/dist/web/assets/file-icons-DpwcJLL4.js +0 -1
- package/dist/web/assets/file-icons-DpwcJLL4.js.br +0 -0
- package/dist/web/assets/file-icons-DpwcJLL4.js.gz +0 -0
- package/dist/web/assets/file-store-Bk1WYfdy.js +0 -1
- package/dist/web/assets/file-store-Bk1WYfdy.js.br +0 -0
- package/dist/web/assets/file-store-Bk1WYfdy.js.gz +0 -0
- package/dist/web/assets/files-settings-section-C8MacVFQ.js +0 -1
- package/dist/web/assets/files-settings-section-C8MacVFQ.js.br +0 -0
- package/dist/web/assets/files-settings-section-C8MacVFQ.js.gz +0 -0
- package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js +0 -1
- package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.br +0 -0
- package/dist/web/assets/filter-dialog-frame-CoWlaNRy.js.gz +0 -0
- package/dist/web/assets/format-file-meta-C0LKHE3e.js +0 -1
- package/dist/web/assets/format-file-meta-C0LKHE3e.js.br +0 -0
- package/dist/web/assets/format-file-meta-C0LKHE3e.js.gz +0 -0
- package/dist/web/assets/fs-api-BQrIEcvo.js +0 -1
- package/dist/web/assets/fs-api-BQrIEcvo.js.br +0 -0
- package/dist/web/assets/fs-api-BQrIEcvo.js.gz +0 -0
- package/dist/web/assets/general-settings-section-DZRRGdlQ.js +0 -1
- package/dist/web/assets/general-settings-section-DZRRGdlQ.js.br +0 -0
- package/dist/web/assets/general-settings-section-DZRRGdlQ.js.gz +0 -0
- package/dist/web/assets/git-commit-horizontal-BVihXafd.js +0 -1
- package/dist/web/assets/git-log-panel-g2pBnu6r.js +0 -1
- package/dist/web/assets/git-log-panel-g2pBnu6r.js.br +0 -0
- package/dist/web/assets/git-log-panel-g2pBnu6r.js.gz +0 -0
- package/dist/web/assets/git-repo-store-BOYLnV67.js +0 -1
- package/dist/web/assets/git-repo-store-BOYLnV67.js.br +0 -0
- package/dist/web/assets/git-repo-store-BOYLnV67.js.gz +0 -0
- package/dist/web/assets/git-review-tab-BzI5mxWd.js +0 -3
- package/dist/web/assets/git-review-tab-BzI5mxWd.js.br +0 -0
- package/dist/web/assets/git-review-tab-BzI5mxWd.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-BxvI3ehr.js +0 -177
- package/dist/web/assets/glide-data-grid-BxvI3ehr.js.br +0 -0
- package/dist/web/assets/glide-data-grid-BxvI3ehr.js.gz +0 -0
- package/dist/web/assets/grid-save-dialog-D55Po6Vu.js +0 -2
- package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.br +0 -0
- package/dist/web/assets/grid-save-dialog-D55Po6Vu.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-CoMC-Fx1.js +0 -1
- package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.br +0 -0
- package/dist/web/assets/group-chat-tab-CoMC-Fx1.js.gz +0 -0
- package/dist/web/assets/icons-JMA45Ifw.js +0 -1
- package/dist/web/assets/icons-JMA45Ifw.js.br +0 -0
- package/dist/web/assets/icons-JMA45Ifw.js.gz +0 -0
- package/dist/web/assets/image-preview-D7KR11Xo.js +0 -1
- package/dist/web/assets/impexp-tab-JF6JF8eO.js +0 -1
- package/dist/web/assets/impexp-tab-JF6JF8eO.js.br +0 -0
- package/dist/web/assets/impexp-tab-JF6JF8eO.js.gz +0 -0
- package/dist/web/assets/index-DyYGWFVa.css +0 -1
- package/dist/web/assets/index-DyYGWFVa.css.br +0 -0
- package/dist/web/assets/index-DyYGWFVa.css.gz +0 -0
- package/dist/web/assets/index-ItT-dTPV.js +0 -59
- package/dist/web/assets/index-ItT-dTPV.js.br +0 -0
- package/dist/web/assets/index-ItT-dTPV.js.gz +0 -0
- package/dist/web/assets/input-CKGoVpYv.js +0 -1
- package/dist/web/assets/jira-watcher-section-CvyXLyjO.js +0 -1
- package/dist/web/assets/keybindings-store-CeEtx6js.js +0 -1
- package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js +0 -1
- package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-MUIE0Rvf.js.gz +0 -0
- package/dist/web/assets/language-servers-section-DiYURB24.js +0 -2
- package/dist/web/assets/language-servers-section-DiYURB24.js.br +0 -0
- package/dist/web/assets/language-servers-section-DiYURB24.js.gz +0 -0
- package/dist/web/assets/logs-app-CJlNqOdc.js +0 -13
- package/dist/web/assets/logs-app-CJlNqOdc.js.br +0 -0
- package/dist/web/assets/logs-app-CJlNqOdc.js.gz +0 -0
- package/dist/web/assets/logs-tab-BoAlm_8H.js +0 -1
- package/dist/web/assets/logs-window-content-nNm4jl1s.js +0 -1
- package/dist/web/assets/lsp-client-LnKiMWeG.js +0 -1
- package/dist/web/assets/lsp-client-LnKiMWeG.js.br +0 -0
- package/dist/web/assets/lsp-client-LnKiMWeG.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-8Hef5MLx.js +0 -1
- package/dist/web/assets/markdown-renderer-BH_CFPJw.js +0 -5
- package/dist/web/assets/markdown-renderer-BH_CFPJw.js.br +0 -0
- package/dist/web/assets/markdown-renderer-BH_CFPJw.js.gz +0 -0
- package/dist/web/assets/media-url-CsdZ6q_T.js +0 -1
- package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js +0 -1
- package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.br +0 -0
- package/dist/web/assets/metric-chart-canvas-LAMaVJTu.js.gz +0 -0
- package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js +0 -1
- package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.br +0 -0
- package/dist/web/assets/mobile-bottom-sheet-CGmmdp_5.js.gz +0 -0
- package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js +0 -1
- package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-Dh2ZECzL.js.gz +0 -0
- package/dist/web/assets/new-design-dialog-CgBUrVFx.js +0 -1
- package/dist/web/assets/new-design-dialog-CgBUrVFx.js.br +0 -0
- package/dist/web/assets/new-design-dialog-CgBUrVFx.js.gz +0 -0
- package/dist/web/assets/notification-store-CXC7u6MW.js +0 -1
- package/dist/web/assets/notifications-settings-section-CPbx23nU.js +0 -1
- package/dist/web/assets/notifications-settings-section-CPbx23nU.js.br +0 -0
- package/dist/web/assets/notifications-settings-section-CPbx23nU.js.gz +0 -0
- package/dist/web/assets/onboarding-entry--MWe4amV.js +0 -1
- package/dist/web/assets/onboarding-entry--MWe4amV.js.br +0 -0
- package/dist/web/assets/onboarding-entry--MWe4amV.js.gz +0 -0
- package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js +0 -1
- package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.br +0 -0
- package/dist/web/assets/onboarding-quick-orientation-DZYQekRt.js.gz +0 -0
- package/dist/web/assets/open-db-tabs-CkQe49j_.js +0 -1
- package/dist/web/assets/open-db-tabs-CkQe49j_.js.br +0 -0
- package/dist/web/assets/open-db-tabs-CkQe49j_.js.gz +0 -0
- package/dist/web/assets/open-settings-DsGBn73g.js +0 -1
- package/dist/web/assets/overview-panel-CcUGDvnt.js +0 -1
- package/dist/web/assets/overview-panel-CcUGDvnt.js.br +0 -0
- package/dist/web/assets/overview-panel-CcUGDvnt.js.gz +0 -0
- package/dist/web/assets/panel-store-DmP16Fo0.js +0 -1
- package/dist/web/assets/panel-store-DmP16Fo0.js.br +0 -0
- package/dist/web/assets/panel-store-DmP16Fo0.js.gz +0 -0
- package/dist/web/assets/patch-tab-metadata-B-jH5svY.js +0 -1
- package/dist/web/assets/pdf-preview-DMUIWb9B.js +0 -1
- package/dist/web/assets/pdf-preview-DMUIWb9B.js.br +0 -0
- package/dist/web/assets/pdf-preview-DMUIWb9B.js.gz +0 -0
- package/dist/web/assets/performance-panel-CJDLUwrs.js +0 -3
- package/dist/web/assets/performance-panel-CJDLUwrs.js.br +0 -0
- package/dist/web/assets/performance-panel-CJDLUwrs.js.gz +0 -0
- package/dist/web/assets/portal-container-context-BXAsDqrB.js +0 -1
- package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js +0 -1
- package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-DTCTPQ-R.js.gz +0 -0
- package/dist/web/assets/pptx-export-BxmgltJ4.js +0 -111
- package/dist/web/assets/pptx-export-BxmgltJ4.js.br +0 -0
- package/dist/web/assets/pptx-export-BxmgltJ4.js.gz +0 -0
- package/dist/web/assets/problems-panel-DX32QDH_.js +0 -1
- package/dist/web/assets/problems-panel-DX32QDH_.js.br +0 -0
- package/dist/web/assets/problems-panel-DX32QDH_.js.gz +0 -0
- package/dist/web/assets/process-row-format-CBw-CQCx.js +0 -1
- package/dist/web/assets/process-table-CX-NhOg6.js +0 -1
- package/dist/web/assets/process-table-CX-NhOg6.js.br +0 -0
- package/dist/web/assets/process-table-CX-NhOg6.js.gz +0 -0
- package/dist/web/assets/project-framework-store-Bi5dyHdx.js +0 -1
- package/dist/web/assets/project-store-CEGoLMOl.js +0 -1
- package/dist/web/assets/project-store-CEGoLMOl.js.br +0 -0
- package/dist/web/assets/project-store-CEGoLMOl.js.gz +0 -0
- package/dist/web/assets/proxy-settings-section-BGNvFe7e.js +0 -1
- package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-BGNvFe7e.js.gz +0 -0
- package/dist/web/assets/query-audit-section-DTHI5GP7.js +0 -1
- package/dist/web/assets/query-audit-section-DTHI5GP7.js.br +0 -0
- package/dist/web/assets/query-audit-section-DTHI5GP7.js.gz +0 -0
- package/dist/web/assets/query-tab-qMlIkHRk.js +0 -22
- package/dist/web/assets/query-tab-qMlIkHRk.js.br +0 -0
- package/dist/web/assets/query-tab-qMlIkHRk.js.gz +0 -0
- package/dist/web/assets/react-PkBxFcos.js +0 -1
- package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js +0 -1
- package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.br +0 -0
- package/dist/web/assets/remote-access-settings-section-t2BYAA9g.js.gz +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js +0 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-ChUU6Jts.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js +0 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-_bopEtCa.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js +0 -1
- package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-D9G4kDfa.js.gz +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js +0 -1
- package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-Yz9eVB3-.js.gz +0 -0
- package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js +0 -1
- package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.br +0 -0
- package/dist/web/assets/remote-desktop-settings-section-BTGGSjZY.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js +0 -1
- package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-B8ZaG2bL.js.gz +0 -0
- package/dist/web/assets/rename-object-dialog-FSlcdUoB.js +0 -1
- package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.br +0 -0
- package/dist/web/assets/rename-object-dialog-FSlcdUoB.js.gz +0 -0
- package/dist/web/assets/review-code-CfuJeLYd.js +0 -5
- package/dist/web/assets/review-code-CfuJeLYd.js.br +0 -0
- package/dist/web/assets/review-code-CfuJeLYd.js.gz +0 -0
- package/dist/web/assets/run-in-terminal-Bk9Bw7G1.js +0 -1
- package/dist/web/assets/run-in-terminal-button-DFPQUlZs.js +0 -1
- package/dist/web/assets/save-as-dialog-Bj9VpGYf.js +0 -1
- package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.br +0 -0
- package/dist/web/assets/save-as-dialog-Bj9VpGYf.js.gz +0 -0
- package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js +0 -1
- package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-DNJ4K7zS.js.gz +0 -0
- package/dist/web/assets/scroll-area-6Am1KMiB.js +0 -1
- package/dist/web/assets/scroll-area-6Am1KMiB.js.br +0 -0
- package/dist/web/assets/scroll-area-6Am1KMiB.js.gz +0 -0
- package/dist/web/assets/send-to-chat-Bcm_Lcog.js +0 -1
- package/dist/web/assets/send-to-chat-Bcm_Lcog.js.br +0 -0
- package/dist/web/assets/send-to-chat-Bcm_Lcog.js.gz +0 -0
- package/dist/web/assets/separator-BOYUIPkH.js +0 -1
- package/dist/web/assets/services-panel-CBRTsROB.js +0 -1
- package/dist/web/assets/services-panel-CBRTsROB.js.br +0 -0
- package/dist/web/assets/services-panel-CBRTsROB.js.gz +0 -0
- package/dist/web/assets/session-changes-bar-BRopa3Dh.js +0 -1
- package/dist/web/assets/session-changes-bar-BRopa3Dh.js.br +0 -0
- package/dist/web/assets/session-changes-bar-BRopa3Dh.js.gz +0 -0
- package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js +0 -1
- package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.br +0 -0
- package/dist/web/assets/session-list-sync-triggers-DitiR5h1.js.gz +0 -0
- package/dist/web/assets/session-review-tab--kNB_FKQ.js +0 -6
- package/dist/web/assets/session-review-tab--kNB_FKQ.js.br +0 -0
- package/dist/web/assets/session-review-tab--kNB_FKQ.js.gz +0 -0
- package/dist/web/assets/settings-body-B-s0fEjc.js +0 -1
- package/dist/web/assets/settings-body-B-s0fEjc.js.br +0 -0
- package/dist/web/assets/settings-body-B-s0fEjc.js.gz +0 -0
- package/dist/web/assets/settings-categories-CcR9eL3x.js +0 -1
- package/dist/web/assets/settings-categories-CcR9eL3x.js.br +0 -0
- package/dist/web/assets/settings-categories-CcR9eL3x.js.gz +0 -0
- package/dist/web/assets/settings-section-content-BJ35dy5r.js +0 -1
- package/dist/web/assets/settings-section-content-DckksvTg.js +0 -2
- package/dist/web/assets/settings-section-content-DckksvTg.js.br +0 -0
- package/dist/web/assets/settings-section-content-DckksvTg.js.gz +0 -0
- package/dist/web/assets/settings-store-WeJyQVL8.js +0 -2
- package/dist/web/assets/settings-store-WeJyQVL8.js.br +0 -0
- package/dist/web/assets/settings-store-WeJyQVL8.js.gz +0 -0
- package/dist/web/assets/settings-tab-BlX33GEN.js +0 -1
- package/dist/web/assets/settings-window-content-B-7yV1_q.js +0 -1
- package/dist/web/assets/slash-command-picker-BBcy6w6m.js +0 -1
- package/dist/web/assets/slash-command-picker-BBcy6w6m.js.br +0 -0
- package/dist/web/assets/slash-command-picker-BBcy6w6m.js.gz +0 -0
- package/dist/web/assets/sortable-header-B9gfWik4.js +0 -1
- package/dist/web/assets/sortable-header-B9gfWik4.js.br +0 -0
- package/dist/web/assets/sortable-header-B9gfWik4.js.gz +0 -0
- package/dist/web/assets/sql-completion-provider-CaTHVr1l.js +0 -5
- package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.br +0 -0
- package/dist/web/assets/sql-completion-provider-CaTHVr1l.js.gz +0 -0
- package/dist/web/assets/sql-object-tab-DVo4bxRI.js +0 -1
- package/dist/web/assets/sql-object-tab-DVo4bxRI.js.br +0 -0
- package/dist/web/assets/sql-object-tab-DVo4bxRI.js.gz +0 -0
- package/dist/web/assets/sqlite-viewer-BGfIpl5x.js +0 -1
- package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-BGfIpl5x.js.gz +0 -0
- package/dist/web/assets/start-ellipsis-rBh37k0n.js +0 -1
- package/dist/web/assets/structure-save-dialog-STK_RFCK.js +0 -1
- package/dist/web/assets/structure-save-dialog-STK_RFCK.js.br +0 -0
- package/dist/web/assets/structure-save-dialog-STK_RFCK.js.gz +0 -0
- package/dist/web/assets/structure-tab-DuLnsTC4.js +0 -3
- package/dist/web/assets/structure-tab-DuLnsTC4.js.br +0 -0
- package/dist/web/assets/structure-tab-DuLnsTC4.js.gz +0 -0
- package/dist/web/assets/system-monitor-body-BIjW16Pb.js +0 -2
- package/dist/web/assets/system-monitor-body-BIjW16Pb.js.br +0 -0
- package/dist/web/assets/system-monitor-body-BIjW16Pb.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-B6_tC9LO.js +0 -1
- package/dist/web/assets/system-monitor-window-content-CwBzqMUe.js +0 -1
- package/dist/web/assets/tab-host-window-content-CpdEjkZd.js +0 -1
- package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-CpdEjkZd.js.gz +0 -0
- package/dist/web/assets/tab-store-nNzRNfVV.js +0 -1
- package/dist/web/assets/table-tab-B5asfTBP.js +0 -2
- package/dist/web/assets/table-tab-B5asfTBP.js.br +0 -0
- package/dist/web/assets/table-tab-B5asfTBP.js.gz +0 -0
- package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js +0 -1
- package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.br +0 -0
- package/dist/web/assets/telegram-bot-token-field-BiqKbXwE.js.gz +0 -0
- package/dist/web/assets/terminal-tab-DpMONMVB.js +0 -3
- package/dist/web/assets/terminal-tab-DpMONMVB.js.br +0 -0
- package/dist/web/assets/terminal-tab-DpMONMVB.js.gz +0 -0
- package/dist/web/assets/tool-cards-DoDKxqN4.js +0 -14
- package/dist/web/assets/tool-cards-DoDKxqN4.js.br +0 -0
- package/dist/web/assets/tool-cards-DoDKxqN4.js.gz +0 -0
- package/dist/web/assets/use-at-most-wide-BQFi1Sjv.js +0 -1
- package/dist/web/assets/use-blob-url-D7ElNPnW.js +0 -1
- package/dist/web/assets/use-db-driver-installed-BscdI-wS.js +0 -1
- package/dist/web/assets/use-db-read-DYuyNA5i.js +0 -1
- package/dist/web/assets/use-db-read-DYuyNA5i.js.br +0 -0
- package/dist/web/assets/use-db-read-DYuyNA5i.js.gz +0 -0
- package/dist/web/assets/use-db-tab-Cr4lXxwF.js +0 -1
- package/dist/web/assets/use-db-tab-Cr4lXxwF.js.br +0 -0
- package/dist/web/assets/use-db-tab-Cr4lXxwF.js.gz +0 -0
- package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js +0 -1
- package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.br +0 -0
- package/dist/web/assets/use-design-canvas-check-DKlyMp-S.js.gz +0 -0
- package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js +0 -1
- package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.br +0 -0
- package/dist/web/assets/use-h264-canvas-decoder-DAjp9oHe.js.gz +0 -0
- package/dist/web/assets/use-inline-blame-DS0HrHJ3.js +0 -16
- package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.br +0 -0
- package/dist/web/assets/use-inline-blame-DS0HrHJ3.js.gz +0 -0
- package/dist/web/assets/use-is-mobile-BXHbkfs9.js +0 -1
- package/dist/web/assets/use-lsp-BTVDYrt6.js +0 -6
- package/dist/web/assets/use-lsp-BTVDYrt6.js.br +0 -0
- package/dist/web/assets/use-lsp-BTVDYrt6.js.gz +0 -0
- package/dist/web/assets/use-monaco-theme-DqnhExsm.js +0 -1
- package/dist/web/assets/use-opener-focus-C5L5UUJs.js +0 -1
- package/dist/web/assets/use-process-kill-D-SGQxDn.js +0 -1
- package/dist/web/assets/use-process-kill-D-SGQxDn.js.br +0 -0
- package/dist/web/assets/use-process-kill-D-SGQxDn.js.gz +0 -0
- package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js +0 -4
- package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.br +0 -0
- package/dist/web/assets/use-sql-schema-info-DRb9dAKi.js.gz +0 -0
- package/dist/web/assets/use-visual-viewport-CQ6-A0Dt.js +0 -1
- package/dist/web/assets/use-websocket-C6RnlNVJ.js +0 -1
- package/dist/web/assets/vendor-markdown-QKPNiWEd.js +0 -291
- package/dist/web/assets/vendor-markdown-QKPNiWEd.js.br +0 -0
- package/dist/web/assets/vendor-markdown-QKPNiWEd.js.gz +0 -0
- package/dist/web/assets/vendor-ui-CS1GvlOm.js +0 -45
- package/dist/web/assets/vendor-ui-CS1GvlOm.js.br +0 -0
- package/dist/web/assets/vendor-ui-CS1GvlOm.js.gz +0 -0
- package/dist/web/assets/video-preview-CYzeUPfH.js +0 -1
- package/dist/web/assets/video-preview-CYzeUPfH.js.br +0 -0
- package/dist/web/assets/video-preview-CYzeUPfH.js.gz +0 -0
- package/dist/web/assets/voice-settings-section-C01d-toF.js +0 -1
- package/dist/web/assets/voice-settings-section-C01d-toF.js.br +0 -0
- package/dist/web/assets/voice-settings-section-C01d-toF.js.gz +0 -0
- package/dist/web/assets/web-preview-tab-F5C3quQs.js +0 -1
- package/dist/web/assets/web-preview-tab-F5C3quQs.js.br +0 -0
- package/dist/web/assets/web-preview-tab-F5C3quQs.js.gz +0 -0
- package/dist/web/assets/window-pip-registry-DSoB7T3k.js +0 -1
- package/dist/web/assets/window-store-zJczRsv4.js +0 -1
- package/dist/web/assets/window-store-zJczRsv4.js.br +0 -0
- package/dist/web/assets/window-store-zJczRsv4.js.gz +0 -0
- package/dist/web/assets/ws-auth-cWeQ7_61.js +0 -1
- /package/dist/web/assets/{__vite-browser-external-B4VNaaaA.js → __vite-browser-external-DL4jXWNt.js} +0 -0
- /package/dist/web/assets/{clipboard-D3XnL7CB.js → clipboard-D-VCry-F.js} +0 -0
- /package/dist/web/assets/{clipboard-D3XnL7CB.js.br → clipboard-D-VCry-F.js.br} +0 -0
- /package/dist/web/assets/{clipboard-D3XnL7CB.js.gz → clipboard-D-VCry-F.js.gz} +0 -0
- /package/dist/web/assets/{code-fence-vHZyBehL.js → code-fence-BK57HRhJ.js} +0 -0
- /package/dist/web/assets/{design-system-status-label-Cus6e2Df.js → design-system-status-label-KA4ESjWe.js} +0 -0
- /package/dist/web/assets/{format-bytes-B2kC4sbB.js → format-bytes-he3TR0bV.js} +0 -0
- /package/dist/web/assets/{session-turns-gmrmXzeg.js → session-turns-D3QpTtCq.js} +0 -0
- /package/dist/web/assets/{session-turns-gmrmXzeg.js.br → session-turns-D3QpTtCq.js.br} +0 -0
- /package/dist/web/assets/{session-turns-gmrmXzeg.js.gz → session-turns-D3QpTtCq.js.gz} +0 -0
- /package/dist/web/assets/{vendor-xterm-sFX94k3w.js → vendor-xterm-DRhOk3kW.js} +0 -0
- /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.br → vendor-xterm-DRhOk3kW.js.br} +0 -0
- /package/dist/web/assets/{vendor-xterm-sFX94k3w.js.gz → vendor-xterm-DRhOk3kW.js.gz} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{Bt as r,Cr as i,D as a,Gt as o,It as s,Jn as c,T as l,Ut as u,br as d,fr as f,jr as p,nt as m,pt as h,ti as g,x as _,xr as v}from"./icons-JMA45Ifw.js";import{t as y}from"./react-PkBxFcos.js";import{n as b}from"./use-is-mobile-BXHbkfs9.js";import{t as x}from"./button-Br60hGkw.js";import{n as S,o as C,r as w,t as T}from"./dialog-DOaEX6AK.js";var E=y(e=>({sessions:new Map,setStreaming:(t,n,r)=>e(e=>{let i=new Map(e.sessions);return n?i.set(t,r??i.get(t)??``):i.delete(t),{sessions:i}}),replaceAllStreaming:t=>e(()=>({sessions:new Map(t.map(e=>[e.sessionId,e.projectName]))})),dropSession:t=>e(e=>{if(!e.sessions.has(t))return e;let n=new Map(e.sessions);return n.delete(t),{sessions:n}})})),D=e=>t=>{if(!e)return!1;for(let n of t.sessions.values())if(n===e)return!0;return!1},O=[{id:`history`,label:`Chat History`,shortLabel:`History`,icon:l},{id:`teams`,label:`Teams`,icon:g,badge:`teams`},{id:`designs`,label:`Designs`,icon:c,badge:`designs`},{id:`explorer`,label:`Explorer`,icon:s},{id:`search`,label:`Search`,icon:v},{id:`git`,label:`Git`,icon:u},{id:`database`,label:`Database`,icon:h},{id:`tunnels`,label:`Port Forwarding`,shortLabel:`Ports`,icon:o},{id:`ai-resources`,label:`AI Resources`,shortLabel:`AI`,icon:p}];function k(e){let t=[...O];e.jiraEnabled&&t.push({id:`jira`,label:`Jira`,icon:a});let n=e.contributions?.views;if(n){let e=n.sidebar??n.explorer??[];for(let n of e)t.push({id:`ext:${n.id}`,label:n.name,icon:f})}return t}var A={ai:[`project`,`chat`,`send`,`history`],explore:[`project`,`file`,`search`],developer:[`project`,`terminal`,`git`,`run`]};function j(e){return e?A[e]:[]}var M={project:`project`,chat:`chat`,send:`chat-input`,history:`chat-history`,file:`explorer`,search:`search`,terminal:`terminal`,git:`git`,run:`explorer`};function N(){return{version:1,status:`unseen`,familiarity:null,goal:null,currentStep:null,completed:[],skipped:[],projectName:null,sessionId:null,attempt:null,runDocumentReady:!1}}function P(e,t=!1){if(e.status!==`active`||!e.currentStep)return e;let n=e.completed.filter(t=>t!==e.currentStep),r=e.skipped.filter(t=>t!==e.currentStep);(t?r:n).push(e.currentStep);let i=j(e.goal),a=i.slice(i.indexOf(e.currentStep)+1).find(e=>!n.includes(e)&&!r.includes(e));return{...e,completed:n,skipped:r,currentStep:a??e.currentStep,status:a?`active`:`finished`}}function F(e,t){if(t.type===`chat-failed`&&t.projectName===e.projectName&&e.attempt?.id===t.attemptId&&e.attempt.tabId===t.tabId&&e.attempt.sessionId===t.sessionId)return{...e,attempt:{...e.attempt,failed:!0}};if(e.status!==`active`||!t.visible||t.projectName!==e.projectName)return e;let n=e.currentStep;if(t.type===`run-document-ready`&&n===`run`)return{...e,runDocumentReady:!0};if(t.type===`chat-opened`&&n===`chat`)return P(e);if(t.type===`chat-started`&&n===`send`)return e.attempt?.id===t.attemptId?e:{...e,sessionId:t.sessionId,attempt:{id:t.attemptId,tabId:t.tabId,sessionId:t.sessionId,failed:!1}};if(t.type===`chat-session`&&e.attempt?.id===t.attemptId&&e.attempt.tabId===t.tabId&&e.attempt.sessionId===t.previousSessionId)return{...e,sessionId:t.sessionId,attempt:{...e.attempt,sessionId:t.sessionId}};if(t.type===`chat-failed`||t.type===`chat-succeeded`){let r=e.attempt;return!r||r.id!==t.attemptId||r.tabId!==t.tabId||r.sessionId!==t.sessionId?e:t.type===`chat-failed`?{...e,attempt:{...r,failed:!0}}:n===`send`&&!r.failed&&t.hasContent?P(e):e}if(t.type===`history-opened`&&n===`history`&&e.completed.includes(`send`)&&t.sessionId===e.sessionId)return P(e);if(t.type===`file-ready`){if(n===`file`)return P(e);if(n===`run`&&t.isRunDocument)return{...e,runDocumentReady:!0}}return t.type===`search-succeeded`&&n===`search`||t.type===`terminal-ready`&&n===`terminal`||t.type===`git-ready`&&n===`git`||t.type===`run-acknowledged`&&n===`run`&&e.runDocumentReady?P(e):e}function I(e){let{version:t,status:n,familiarity:r,goal:i,currentStep:a,completed:o,skipped:s,projectName:c,sessionId:l}=e;return JSON.stringify({version:t,status:n,familiarity:r,goal:i,currentStep:a,completed:o,skipped:s,projectName:c,sessionId:l})}function L(e){let t=N();if(!e)return t;try{let n=JSON.parse(e);if(!n||n.version!==1||![`unseen`,`choosing`,`active`,`paused`,`dismissed`,`finished`].includes(n.status)||![null,`beginner`,`familiar`,`advanced`].includes(n.familiarity)||![null,`ai`,`explore`,`developer`].includes(n.goal))return t;let r=j(n.goal);if(n.currentStep!==null&&!r.includes(n.currentStep)||![n.completed,n.skipped].every(e=>Array.isArray(e)&&e.every(e=>r.includes(e)))||![n.projectName,n.sessionId].every(e=>e===null||typeof e==`string`)||[`active`,`finished`].includes(n.status)&&(!n.familiarity||!n.goal||!n.currentStep))return t;let i=[...new Set(n.completed)],a=[...new Set(n.skipped)].filter(e=>!i.includes(e));return{...t,status:n.status===`active`?`paused`:n.status,familiarity:n.familiarity,goal:n.goal,currentStep:n.currentStep,completed:i,skipped:a,projectName:n.projectName,sessionId:n.sessionId}}catch{return t}}var R=`ppm-onboarding-v1`;function z(){try{return L(typeof localStorage>`u`?null:localStorage.getItem(R))}catch{return N()}}var B=y((e,t)=>{let n=t=>e(e=>{if(!e.goal||!e.familiarity)return{status:`choosing`};let n=t===void 0?e.projectName:t,r=n!==e.projectName,i={...e,status:`active`,projectName:n,currentStep:r||!e.currentStep?`project`:e.currentStep,completed:r?[]:e.completed,skipped:r?[]:e.skipped,attempt:r?null:e.attempt,sessionId:r?null:e.sessionId,runDocumentReady:r?!1:e.runDocumentReady};return i.currentStep===`project`&&n?P(i):i});return{...z(),begin:()=>e({status:`choosing`}),chooseFamiliarity:t=>e({familiarity:t}),chooseGoal:t=>e(e=>e.goal===t?{goal:t}:{goal:t,currentStep:`project`,completed:e.completed.includes(`project`)&&e.projectName?[`project`]:[],skipped:[],sessionId:null,attempt:null,runDocumentReady:!1}),start:n,pause:()=>e(e=>e.status===`active`||e.status===`choosing`?{status:`paused`,attempt:null}:{}),dismiss:()=>e({status:`dismissed`,attempt:null}),resume:n,replay:()=>e({...N(),status:`choosing`}),skip:()=>e(e=>P(e,!0)),back:()=>e(e=>{let t=j(e.goal),n=e.currentStep?t.indexOf(e.currentStep):-1;return n>0?{currentStep:t[n-1],status:`active`}:{}}),changeChoices:()=>e({status:`choosing`,attempt:null}),observe:t=>e(e=>F(e,t)),setProjectContext:n=>{let r=t();r.status===`active`&&(r.currentStep===`project`&&n?e(P({...r,projectName:n})):n!==r.projectName&&e({status:`paused`,attempt:null,runDocumentReady:!1}))}}});B.subscribe(e=>{try{typeof localStorage<`u`&&localStorage.setItem(R,I(e))}catch{}});var V=e(t(),1),H=n();function U({stepKey:e,order:t,className:n,children:r}){let i=(0,V.useRef)(null),a=(0,V.useRef)({stepKey:e,order:t});return(0,V.useLayoutEffect)(()=>{let n=a.current;a.current={stepKey:e,order:t};let r=i.current;if(n.stepKey===e||!r?.animate)return;let o=window.matchMedia(`(prefers-reduced-motion: reduce)`);if(o.matches)return;let s=r.animate([{opacity:.35,transform:`translateX(${t<n.order?-12:12}px)`},{opacity:1,transform:`translateX(0)`}],{duration:200,easing:`cubic-bezier(0.2, 0, 0, 1)`});s.finished.catch(()=>{});let c=()=>{o.matches&&s.cancel()};return o.addEventListener(`change`,c),()=>{s.cancel(),o.removeEventListener(`change`,c)}},[e,t]),(0,H.jsx)(`div`,{ref:i,"data-onboarding-transition":e,className:n,children:r})}var W=`ppm:open-quick-orientation`;function G(){window.dispatchEvent(new Event(W))}var K={history:`Return to earlier AI conversations and continue where you left off.`,teams:`Find group conversations with multiple AI agents.`,designs:`Design pages and slide decks with AI beside a live preview.`,explorer:`Browse files and folders in the selected project.`,search:`Find words across your project's files.`,git:`Review changed files and diffs before committing your work.`,database:`Browse connected databases and open the query editor.`,tunnels:`Open a dev server running on this machine from another device, over Tailscale or Cloudflare.`,"ai-resources":`Find available AI skills, commands and agents.`},q=[{title:`Notifications`,icon:_,body:`See conversations that finished or need your attention.`},{title:`Cloud & Share`,icon:m,body:`Find sharing and remote-access options for this PPM instance.`},{title:`File Explorer`,icon:r,body:`Browse the host computer, beyond the selected project.`},{title:`Settings`,icon:i,body:`Configure AI, appearance and preferences; reopen guided tours.`},{title:`Logs`,icon:d,body:`Read what PPM logged, see what AI made of recent errors, and report a bug with the lines that show it.`}];function J({onClose:e,onTryPalette:t}){let[n,r]=(0,V.useState)(`palette`),i=b(),a=(0,V.useRef)(document.activeElement),o=(0,V.useRef)(!1);return(0,H.jsx)(T,{open:!0,onOpenChange:t=>{t||e()},children:(0,H.jsxs)(S,{className:`max-h-[88dvh] overflow-y-auto sm:max-w-2xl p-5 sm:p-6`,onCloseAutoFocus:e=>{e.preventDefault(),o.current||(a.current?.isConnected?a.current:document.querySelector(`aside[aria-label="PPM guided tour"] button`))?.focus()},children:[(0,H.jsx)(`div`,{className:`text-xs font-medium uppercase tracking-widest text-primary`,children:`Quick orientation`}),(0,H.jsx)(C,{className:`text-xl`,children:`Find your way around PPM`}),(0,H.jsx)(w,{children:`Two shortcuts to getting comfortable. Your guided-tour progress stays saved.`}),(0,H.jsxs)(`div`,{className:`flex gap-2`,"aria-label":`Orientation topics`,children:[(0,H.jsx)(x,{variant:n===`palette`?`default`:`outline`,className:`min-h-11 flex-1`,"aria-pressed":n===`palette`,onClick:()=>r(`palette`),children:`Command Palette`}),(0,H.jsx)(x,{variant:n===`rail`?`default`:`outline`,className:`min-h-11 flex-1`,"aria-pressed":n===`rail`,onClick:()=>r(`rail`),children:i?`Navigation buttons`:`Left rail`})]}),(0,H.jsx)(U,{stepKey:n,order:n===`palette`?0:1,children:n===`palette`?(0,H.jsxs)(`section`,{className:`space-y-4`,"aria-label":`Command Palette introduction`,children:[(0,H.jsxs)(`div`,{className:`rounded-lg border border-border bg-surface p-4`,children:[(0,H.jsx)(v,{className:`size-6 text-primary mb-3`}),(0,H.jsx)(`h3`,{className:`font-medium`,children:`One place to find actions and files`}),(0,H.jsx)(`p`,{className:`text-sm text-text-secondary mt-2`,children:`Type what you need, such as “Settings”, “Open Terminal”, or a filename. Choose a result to open it.`})]}),(0,H.jsx)(`p`,{className:`text-sm text-text-secondary`,children:i?`No keyboard required: tap Open Command Palette below. The same palette works on your phone.`:`Double-tap Shift to open it from anywhere. F1 is the default shortcut and can be changed in Settings → Keyboard Shortcuts.`}),(0,H.jsx)(`p`,{className:`text-sm text-text-secondary`,children:`With a keyboard, use ↑ / ↓ to select a result, Enter to open it, and Escape to close. Opening the palette alone does not run a command.`}),(0,H.jsx)(x,{className:`w-full min-h-11`,onClick:()=>{o.current=!0,t()},children:`Open Command Palette`})]}):(0,H.jsxs)(`section`,{"aria-label":`Navigation introduction`,className:`space-y-4`,children:[(0,H.jsx)(`p`,{className:`text-sm text-text-secondary`,children:i?`Tap the menu button at the bottom to open navigation. These are the same sections shown in the left rail on desktop.`:`The icon strip on the left switches between project sections. Hover for labels; click a section to open it. Clicking the active section again collapses it.`}),(0,H.jsx)(`div`,{className:`grid sm:grid-cols-2 gap-3`,children:O.map(({id:e,label:t,icon:n})=>(0,H.jsxs)(`div`,{className:`flex gap-3 rounded-lg border border-border p-3`,children:[(0,H.jsx)(n,{className:`size-5 shrink-0 text-primary mt-0.5`}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h3`,{className:`text-sm font-medium`,children:t}),(0,H.jsx)(`p`,{className:`text-sm text-text-secondary mt-1`,children:K[e]})]})]},e))}),(0,H.jsx)(`h3`,{className:`font-medium text-sm`,children:i?`Utilities in the navigation menu`:`Utilities at the bottom of the rail`}),(0,H.jsx)(`div`,{className:`space-y-3`,children:q.filter(e=>!i||e.title!==`Notifications`).map(({title:e,icon:t,body:n})=>(0,H.jsxs)(`div`,{className:`flex gap-3`,children:[(0,H.jsx)(t,{className:`size-4 shrink-0 text-primary mt-1`}),(0,H.jsxs)(`p`,{className:`text-sm text-text-secondary`,children:[(0,H.jsx)(`strong`,{className:`font-medium text-foreground`,children:e}),` — `,n]})]},e))}),i&&(0,H.jsx)(`p`,{className:`text-sm text-text-secondary`,children:`Mobile uses shorter labels: History, Ports and AI for the matching sections above; Files and Cloud for File Explorer and Cloud & Share. The menu badge signals conversations needing attention.`}),(0,H.jsx)(`p`,{className:`text-xs text-text-secondary`,children:`Jira, Remote Desktop and extension buttons appear when available. Button order can be customized.`})]})}),(0,H.jsx)(x,{variant:`ghost`,className:`min-h-11`,onClick:e,children:`Back to what I was doing`})]})})}export{B as a,k as c,U as i,D as l,J as n,M as o,G as r,j as s,W as t,E as u};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./utils-Bslrbb-G.js";import{A as t,O as n,S as r,b as i,g as a,q as o,t as s,x as c}from"./panel-store-DmP16Fo0.js";import{t as l}from"./tab-store-nNzRNfVV.js";import{E as u}from"./explorer-model-BmgFEsj1.js";function d(e){let t=e.toLowerCase();return t.endsWith(`[]`)?`other`:/^(character varying|varchar|character|char|bpchar|text|name|citext)\b/.test(t)?`text`:/^(smallint|integer|bigint|int[248]?|numeric|decimal|real|double precision|float[48]?|money|oid|smallserial|serial|bigserial)\b/.test(t)?`number`:t===`boolean`||t===`bool`?`boolean`:t===`date`?`date`:/^timestamp(\(\d+\))? with time zone$/.test(t)||t===`timestamptz`?`datetimetz`:/^timestamp/.test(t)?`datetime`:/^time/.test(t)?`time`:t===`bytea`?`binary`:t===`json`||t===`jsonb`?`json`:`other`}function f(e){let t=e.toUpperCase();return/BOOL/.test(t)?`boolean`:/^DATE$/.test(t)?`date`:/DATETIME|TIMESTAMP/.test(t)?`datetime`:/^TIME$/.test(t)?`time`:/JSON/.test(t)?`json`:/INT/.test(t)?`number`:/CHAR|CLOB|TEXT/.test(t)?`text`:t===``?`other`:/BLOB/.test(t)?`binary`:/REAL|FLOA|DOUB|NUM|DEC/.test(t)?`number`:`other`}function p(e){let t=e.toLowerCase().trim();return/^(tinyint\(1\)|bool|boolean|bit\(1\))(\s|$)/.test(t)?`boolean`:/^(tinyint|smallint|mediumint|int|integer|bigint|decimal|numeric|dec|fixed|float|double|real|bit|year)\b/.test(t)?`number`:/^(char|varchar|tinytext|text|mediumtext|longtext|enum|set|national)\b/.test(t)?`text`:t===`date`?`date`:/^(datetime|timestamp)\b/.test(t)?`datetime`:/^time\b/.test(t)?`time`:/^(binary|varbinary|tinyblob|blob|mediumblob|longblob)\b/.test(t)?`binary`:t===`json`?`json`:`other`}var ee={postgres:d,sqlite:f,mysql:p,mariadb:p};function m(e,t){return(ee[e]??(()=>`other`))(t)}var te=1e4,ne=5e3,re=4e3;function ie(e){let t=new Set(e),n=new Set;return e.map(e=>{if(!n.has(e))return n.add(e),e;let r=2;for(;n.has(`${e} (${r})`)||t.has(`${e} (${r})`);)r++;let i=`${e} (${r})`;return n.add(i),i})}function h(e,t){let n=ie(e.map(e=>e.name));return{keys:n,records:t.map(e=>{let t={};return n.forEach((n,r)=>{t[n]=e[r]}),t})}}function ae(e){let{keys:t,records:n}=h(e.columns,e.rows);return{...e,columns:t,rows:n}}var oe=[`!=`,`<>`,`<=`,`>=`,`!^`,`!$`,`=`,`<`,`>`,`+`,`~`,`^`,`$`],g=new Set([`+`,`~`,`^`,`!^`,`$`,`!$`]),se=64,_=/\s/,ce=/^-?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i,le=/^(\d{4})(?:-(\d{2})(?:-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,6}))?)?(Z|[+-]\d{2}(?::?\d{2})?)?)?)?)?$/i,ue=/^\d{4}-\d{2}-\d{2}$/,de=/^\d{2}:\d{2}(?::\d{2}(?:\.\d{1,6})?)?(?:Z|[+-]\d{2}(?::?\d{2})?)?$/i,fe=`use 2021, 2021-02, 2021-02-15 or 2021-02-15 23:15`,v=class extends Error{constructor(e,t,n){super(e),this.start=t,this.end=n}};function y(e,t,n){throw new v(e,t,n)}function b(e,t){for(;t<e.length&&_.test(e[t]);)t++;return t}function pe(e,t){let n=e[t],r=``;for(let i=t+1;i<e.length;i++)if(e[i]!==n)r+=e[i];else if(e[i+1]===n)r+=n,i++;else return{value:r,end:i+1};y(`Missing closing ${n}`,t,e.length)}function me(e,t){let n=0,r=null,i=-1;for(let a=t;a<e.length;a++){let o=e[a];if(r)o===r&&(r=null);else if(o===`'`||o===`"`||o==="`")r=o;else if(o===`;`)i<0&&(i=a);else if(o===`{`)n++;else if(o===`}`&&--n===0){let n=e.slice(t+1,a).trim();return n||y(`The SQL condition is empty`,t,a+1),n.length>4e3&&y(`An SQL condition may hold at most ${re} characters`,t,a+1),i>=0&&y(`An SQL condition may not contain ";"`,i,i+1),{sql:n,end:a+1}}}y(`Missing closing }`,t,e.length)}function he(e,t){let n=oe.find(n=>e.startsWith(n,t))??null,r=t;n&&(r=b(e,t+n.length),(r===e.length||e[r]===`,`)&&y(`Expected a value after "${n}"`,t,t+n.length));let i=e[r];if(i===`'`||i===`"`){let{value:i,end:a}=pe(e,r);return{op:n,text:i,quoted:!0,sql:!1,start:t,valueStart:r,end:a}}if(i===`{`&&!n){let{sql:n,end:i}=me(e,r);return{op:null,text:n,quoted:!1,sql:!0,start:t,valueStart:r,end:i}}let a=r;for(;a<e.length&&!_.test(e[a])&&e[a]!==`,`;)a++;return{op:n,text:e.slice(r,a),quoted:!1,sql:!1,start:t,valueStart:r,end:a}}function x(e){let t=b(e,0);if(t===e.length)return[];let n=[[]];for(;;){e[t]===`,`&&y(`Expected a value before ","`,t,t+1);let r=he(e,t);n[n.length-1].push(r);let i=b(e,r.end);if(i===e.length)return n;e[i]===`,`?(t=b(e,i+1),t===e.length&&y(`Expected a value after ","`,i,i+1),n.push([])):i===r.end?y(`Expected a space or a comma`,i,i+1):t=i}}function S(e){return e&&e.op===null&&!e.quoted&&!e.sql?e.text.toUpperCase():null}function C(e){switch(e){case`number`:case`boolean`:case`binary`:return e;case`date`:case`datetime`:case`datetimetz`:return`date`;default:return`text`}}var w=(e,t=1)=>({alt:[[e]],used:t});function T(e,t){y(`"${e.op}" does not work on ${t} columns`,e.start,e.start+e.op.length)}function ge(e,t){let n=e[t],r=S(n);if(r===`EMPTY`)return w({op:`isEmpty`});if(r===`NOT`&&S(e[t+1])===`EMPTY`)return w({op:`notEmpty`},2);let i=n.text;switch(n.op){case null:case`+`:return w({op:`contains`,value:i});case`~`:return w({op:`notContains`,value:i});case`^`:return w({op:`startsWith`,value:i});case`!^`:return w({op:`notStartsWith`,value:i});case`$`:return w({op:`endsWith`,value:i});case`!$`:return w({op:`notEndsWith`,value:i});case`=`:return w({op:`eq`,value:i});case`!=`:case`<>`:return w({op:`ne`,value:i});case`<`:return w({op:`lt`,value:i});case`>`:return w({op:`gt`,value:i});case`<=`:return w({op:`le`,value:i});case`>=`:return w({op:`ge`,value:i})}}function _e(e){let t=Number(e);if(!Number.isFinite(t))return e;if(/^-?\d+$/.test(e))return Number.isSafeInteger(t)?t:e;let n=e.replace(/^-/,``).replace(/e.*$/i,``).replace(`.`,``).replace(/^0+/,``).replace(/0+$/,``);return n.length<=15&&!(t===0&&n!==``)?t:e}function ve(e){e.op&&g.has(e.op)&&T(e,`number`),ce.test(e.text)||y(`"${e.text}" is not a number`,e.valueStart,e.end);let t=_e(e.text);switch(e.op){case`!=`:case`<>`:return w({op:`ne`,value:t});case`<`:return w({op:`lt`,value:t});case`>`:return w({op:`gt`,value:t});case`<=`:return w({op:`le`,value:t});case`>=`:return w({op:`ge`,value:t});default:return w({op:`eq`,value:t})}}function ye(e){e.op&&e.op!==`=`&&T(e,`boolean`);let t=e.text.toUpperCase();if(t===`TRUE`||t===`1`)return w({op:`isTrue`});if(t===`FALSE`||t===`0`)return w({op:`isFalse`});y(`"${e.text}" is not TRUE or FALSE`,e.valueStart,e.end)}function E(e,t=1,n=1,r=0,i=0,a=0,o=``){return{y:e,mo:t,d:n,h:r,mi:i,s:a,frac:o}}function D(e,t,n){let r=new Date(0);return r.setUTCFullYear(e.y,e.mo-1,e.d),r.setUTCHours(e.h,e.mi,e.s,0),t===`year`?r.setUTCFullYear(r.getUTCFullYear()+n):t===`month`?r.setUTCMonth(r.getUTCMonth()+n):t===`day`?r.setUTCDate(r.getUTCDate()+n):t===`minute`?r.setUTCMinutes(r.getUTCMinutes()+n):r.setUTCSeconds(r.getUTCSeconds()+n),E(r.getUTCFullYear(),r.getUTCMonth()+1,r.getUTCDate(),r.getUTCHours(),r.getUTCMinutes(),r.getUTCSeconds(),e.frac)}function O(e,t){if(t!==`fraction`)return D(e,t,1);let n=e.frac.length,r=Number(e.frac)+1;return r<10**n?{...e,frac:String(r).padStart(n,`0`)}:{...D(e,`second`,1),frac:`0`.repeat(n)}}function be(e,t){let n=new Date(0);return n.setUTCFullYear(e,t,0),n.getUTCDate()}var k=(e,t=2)=>String(e).padStart(t,`0`);function xe(e){return`${k(e.y,4)}-${k(e.mo)}-${k(e.d)} ${k(e.h)}:${k(e.mi)}:${k(e.s)}${e.frac?`.${e.frac}`:``}`}function Se(e){let t=Math.abs(e);return`${e<0?`-`:`+`}${k(Math.floor(t/60))}:${k(t%60)}`}function Ce(e){let t=new Date(2e3,0,1);return t.setFullYear(e.y,e.mo-1,e.d),t.setHours(e.h,e.mi,e.s,0),Se(-Math.round(t.getTimezoneOffset()))}function we(e){let t=le.exec(e);if(!t)return null;let[,n,r,i,a,o,s,c,l]=t,u=E(Number(n),r?Number(r):1,i?Number(i):1,a?Number(a):0,o?Number(o):0,s?Number(s):0,c??``);if(u.mo<1||u.mo>12||u.d<1||u.d>be(u.y,u.mo)||u.h>23||u.mi>59||u.s>59)return null;let d=c?`fraction`:s?`second`:o?`minute`:i?`day`:r?`month`:`year`,f=null;if(l)if(l.toUpperCase()===`Z`)f=0;else{let e=Number(l.slice(1,3)),t=Number(l.slice(3).replace(`:`,``)||`0`);if(e>23||t>59)return null;f=(l[0]===`-`?-1:1)*(e*60+t)}return{start:u,precision:d,zone:f}}function A(e,t,n,r){let i=e=>({at:xe(e),offset:r??Ce(e)}),a=i(t),o=n.y<=9999?i(n):null,s=e=>({op:`dateRange`,from:e.at,offset:e.offset}),c=e=>({op:`dateRange`,to:e.at,offset:e.offset});switch(e.op){case`!=`:case`<>`:return o?[[c(a)],[s(o)]]:[[c(a)]];case`>`:return o||y(`Nothing comes after the year 9999`,e.start,e.end),[[s(o)]];case`>=`:return[[s(a)]];case`<`:return[[c(a)]];case`<=`:return o?[[c(o)]]:[[{op:`notNull`}]];default:return o?a.offset===o.offset?[[{op:`dateRange`,from:a.at,to:o.at,offset:a.offset}]]:[[s(a),c(o)]]:[[s(a)]]}}var Te={YESTERDAY:-1,TODAY:0,TOMORROW:1},Ee={LAST:-1,THIS:0,NEXT:1};function De(e,t,n){let r=E(e.getFullYear(),e.getMonth()+1,e.getDate());if(n===`WEEK`){let n=D(r,`day`,7*t-(e.getDay()+6)%7);return[n,D(n,`day`,7)]}if(n===`MONTH`){let e=D(E(r.y,r.mo),`month`,t);return[e,D(e,`month`,1)]}let i=E(r.y+t);return[i,D(i,`year`,1)]}function Oe(e,t,n){let r=e[t],i=e[t+1];if(r.op&&g.has(r.op)&&T(r,`date`),!r.quoted){let e=r.text.toUpperCase(),t=Te[e];if(t!==void 0){let e=D(E(n.getFullYear(),n.getMonth()+1,n.getDate()),`day`,t);return{alt:A(r,e,D(e,`day`,1),null),used:1}}let a=Ee[e];if(a!==void 0){let t=S(i);t!==`WEEK`&&t!==`MONTH`&&t!==`YEAR`&&y(`Expected WEEK, MONTH or YEAR after ${e}`,r.valueStart,r.end);let[o,s]=De(n,a,t);return{alt:A({...r,end:i.end},o,s,null),used:2}}}let a=!r.quoted&&ue.test(r.text)&&S(i)!==null&&de.test(i.text),o=a?{...r,text:`${r.text} ${i.text}`,end:i.end}:r,s=we(o.text)??y(`"${o.text}" is not a date — ${fe}`,o.valueStart,o.end),c=a?2:1;if(s.zone===null)return{alt:A(o,s.start,O(s.start,s.precision),null),used:c};let l=D(s.start,`minute`,-s.zone);return{alt:A(o,l,O(l,s.precision),`+00:00`),used:c}}function ke(e,t,n,r){let i=e[t];if(i.sql)return w({op:`rawSql`,sql:i.text});let a=S(i);if(a===`NULL`)return w({op:`isNull`});if(a===`NOT`&&S(e[t+1])===`NULL`)return w({op:`notNull`},2);switch(n){case`text`:return ge(e,t);case`number`:return ve(i);case`boolean`:return ye(i);case`date`:return Oe(e,t,r);case`binary`:y(`A binary column can only be filtered with NULL, NOT NULL or an SQL condition in braces`,i.start,i.end)}}function Ae(e,t,n){let r=[[]];for(let i=0;i<e.length;){let{alt:a,used:o}=ke(e,i,t,n);r.length*a.length>se&&y(`Too many conditions joined with spaces`,e[i].start,e[i+o-1].end),r=r.flatMap(e=>a.map(t=>[...e,...t])),i+=o}return r}function je(e,t){let n=e=>e.length===1&&e[0].op===`eq`,r=e.filter(n).map(e=>e[0].value);if(r.length<2)return e;r.length>5e3&&y(`More than ${ne} values`,0,t.length);let i=e.findIndex(n),a=e.filter(e=>!n(e));return[...a.slice(0,i),[{op:`in`,values:r}],...a.slice(i)]}function j(e){if(!(e instanceof v))throw e;return{ok:!1,error:{message:e.message,start:e.start,end:e.end}}}function M(e,t,n=new Date){try{let r=C(t);return{ok:!0,anyOf:je(x(e).flatMap(e=>Ae(e,r,n)),e)}}catch(e){return j(e)}}function N(e,t,n=new Date){try{let t=x(e).flat().find(e=>e.sql);t&&y(`An SQL condition only works in one column's own filter`,t.start,t.end)}catch(e){return j(e)}let r=t.flatMap(t=>{let r=M(e,t.kind,n);return r.ok&&r.anyOf.length>0?[{column:t.name,anyOf:r.anyOf}]:[]});return r.length===0&&e.trim()?{ok:!1,error:{message:`No column can read this filter`,start:0,end:e.length}}:{ok:!0,groups:r}}var P={columns:{}},Me={state:`empty`};function Ne(e,t){return e.map(e=>({name:e.name,kind:t?m(t,e.type):`other`}))}function F(e,t){if(!e||!e.text.trim())return Me;let n=t(e.text);return n.ok?{state:e.off?`off`:`ok`}:{state:`bad`,error:n.error}}function Pe(e,t,n=new Date){return F(e,e=>M(e,t,n))}function Fe(e,t,n=new Date){return F(e,e=>N(e,t,n))}function Ie(e,t,n=new Date){let r=t.flatMap(t=>{let r=e.columns[t.name];if(!r||r.off)return[];let i=M(r.text,t.kind,n);return i.ok&&i.anyOf.length>0?[{column:t.name,anyOf:i.anyOf}]:[]}),i=e.multi,a=i&&!i.off?N(i.text,t,n):null;return{filters:r,anyColumn:a?.ok?a.groups:[]}}function Le(e,t,n){let r={...e.columns};return n.trim()?r[t]={text:n}:delete r[t],{...e,columns:r}}function Re(e,t){let{multi:n,...r}=e;return t.trim()?{...r,multi:{text:t}}:r}var I=(e,t)=>t?{text:e.text,off:!0}:{text:e.text};function ze(e,t,n){if(t===null)return e.multi?{...e,multi:I(e.multi,n)}:e;let r=e.columns[t];return r?{...e,columns:{...e.columns,[t]:I(r,n)}}:e}function L(e){return Object.keys(e.columns).length>0||!!e.multi?.text.trim()}function Be(e,t){let n=new Set(t.map(e=>e.name)),r=Object.entries(e.columns).filter(([e])=>n.has(e));return r.length===Object.keys(e.columns).length?e:{...e,columns:Object.fromEntries(r)}}var R=`filters`,z={columns:1e3,name:1e3,text:1e4},B=e=>typeof e==`object`&&!!e&&!Array.isArray(e);function V(e){return!B(e)||typeof e.text!=`string`||!e.text.trim()||e.text.length>z.text?null:I({text:e.text},e.off===!0)}function Ve(e){let t=e?.[R];if(!B(t))return P;let n=B(t.columns)?Object.entries(t.columns).slice(0,z.columns).flatMap(([e,t])=>{let n=V(t);return n&&e&&e.length<=z.name?[[e,n]]:[]}):[],r=V(t.multi);return r?{columns:Object.fromEntries(n),multi:r}:{columns:Object.fromEntries(n)}}function H(e,t){let{[R]:n,...r}=e??{};return L(t)?{...r,[R]:t}:r}var He={is:`=`,isNot:`<>`,contains:``,begins:`^`,ends:`$`};function Ue(e,t){return t.split(/\r?\n/).map(e=>e.trim()).filter(Boolean).map(t=>`${He[e]}'${t.replaceAll(`'`,`''`)}'`).join(e===`isNot`?` `:`,`)}var U=`gridView`,W={min:170,max:420,initial:300},G={columns:1e3,name:1e3},K={min:40,max:2e3},q={hidden:[],panelWidth:W.initial,columnWidths:{},form:!1},J=e=>typeof e==`object`&&!!e&&!Array.isArray(e),Y=e=>typeof e==`string`&&e.length>0&&e.length<=G.name;function X(e){return Number.isFinite(e)?Math.round(Math.min(W.max,Math.max(W.min,e))):W.initial}function We(e){let t=e?.[U];if(!J(t))return q;let n=Array.isArray(t.hidden)?[...new Set(t.hidden.slice(0,G.columns).filter(Y))]:[],r=typeof t.panelWidth==`number`?X(t.panelWidth):W.initial,i=J(t.columnWidths)?Object.entries(t.columnWidths).slice(0,G.columns).flatMap(([e,t])=>Y(e)&&typeof t==`number`&&Number.isFinite(t)&&t>=K.min&&t<=K.max?[[e,Math.round(t)]]:[]):[];return{hidden:n,panelWidth:r,columnWidths:Object.fromEntries(i),form:t.form===!0}}function Z(e,t){let{[U]:n,...r}=e??{},i={};return t.hidden.length&&(i.hidden=t.hidden),t.panelWidth!==W.initial&&(i.panelWidth=t.panelWidth),Object.keys(t.columnWidths).length&&(i.columnWidths=t.columnWidths),t.form&&(i.form=!0),Object.keys(i).length?{...r,[U]:i}:r}function Ge(e,t){let n=u(t,e);return{target:{kind:`connection`,connectionId:e.id,...n?{database:n}:{}},connectionName:e.name,dbType:e.type,connectionColor:e.color}}function Ke(e,t){let n=t?.connectionName,r=t?.connectionColor;return{target:e,...typeof n==`string`?{connectionName:n}:{},...typeof t?.dbType==`string`?{dbType:t.dbType}:{},...typeof r==`string`?{connectionColor:r}:{}}}function Q(e){return{...r(e.target),...e.connectionName?{connectionName:e.connectionName}:{},...e.dbType?{dbType:e.dbType}:{},...e.connectionColor?{connectionColor:e.connectionColor}:{}}}function $(e){return e.target.kind===`file`?e.target.projectName??null:null}function qe(e,t,n,r){return s.getState().openTab({type:e,title:a(t.target,t.connectionName,n.name),projectId:$(t),closable:!0,metadata:{...Q(t),schemaName:n.schema??``,tableName:n.name,...n.kind?{objectKind:n.kind}:{}}},r)}function Je(e,t){return qe(`database`,e,t)}function Ye(t,n,r){let i={...Q(t),schemaName:n.schema??``,tableName:n.name,instance:e()};return s.getState().openTab({type:`database`,title:a(t.target,t.connectionName,n.name),projectId:$(t),closable:!0,metadata:Z(H(i,r),{...q,form:!0})})}function Xe(e,t,n){return qe(`db-structure`,e,t,n)}function Ze(e,t,n){let r=s.getState().getPanelForTab(e),i=r?r.tabs.findIndex(t=>t.id===e):-1,a=Xe(t,n,r?.id);return r?(s.getState().closeTab(e,r.id),i>=0&&s.getState().reorderTab(a,r.id,i),a):a}function Qe(r,i){let a=t(Object.values(s.getState().panels).flatMap(e=>e.tabs));return l.getState().openTab({type:`db-structure`,title:`Table #${a}`,projectId:$(r),closable:!0,metadata:{...Q(r),...n(o(i),a,e())}})}function $e(e,t){return l.getState().openTab({type:`db-sql`,title:a(e.target,e.connectionName,t.name),projectId:$(e),closable:!0,metadata:{...Q(e),schemaName:t.schema??``,objectKind:t.kind,objectName:t.name,...t.args===void 0?{}:{objectArgs:t.args},...t.table?{objectTable:t.table}:{}}})}function et(e,t,n={}){let r=i(Object.values(s.getState().panels).flatMap(e=>e.tabs));return l.getState().openTab({type:`db-query`,title:`Query ${r}`,projectId:$(e),closable:!0,metadata:{...Q(e),...c(t,r,n)}})}export{H as A,L as C,Le as D,Ve as E,ae as F,h as I,m as L,N as M,M as N,ze as O,te as P,Be as S,Fe as T,R as _,Xe as a,Ie as b,Ke as c,W as d,U as f,P as g,Z as h,$e as i,C as j,Re as k,Ge as l,We as m,et as n,Ze as o,X as p,Ye as r,Je as s,Qe as t,q as u,z as v,Ue as w,Ne as x,Pe as y};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./window-store-zJczRsv4.js";import{t}from"./tab-store-nNzRNfVV.js";import{t as n}from"./use-is-mobile-BXHbkfs9.js";import{r}from"./settings-categories-CcR9eL3x.js";function i(e,t,n){return e?{kind:`tab`,tab:{type:`settings`,title:`Settings`,projectId:null,closable:!0,...n&&{metadata:{category:n}}}}:t?{kind:`focus`,id:t,...n&&{category:n}}:{kind:`window`,...n&&{category:n}}}function a(a){let o=e.getState(),s=Object.values(o.windows).find(e=>e.kind===`settings`),c=i(n(),s?.id??null,a);if(c.kind===`tab`){let e=t.getState(),n=e.openTab(c.tab);a&&n&&e.updateTab(n,{metadata:{category:a}})}else c.kind===`focus`?(c.category&&o.setPayload(c.id,{category:c.category}),o.focus(c.id)):o.open(`settings`,c.category?{category:c.category}:void 0);a&&window.dispatchEvent(new CustomEvent(r,{detail:a}))}export{a as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{n as r}from"./utils-Bslrbb-G.js";import{r as i,t as a}from"./format-bytes-B2kC4sbB.js";import{t as o}from"./metric-chart-canvas-LAMaVJTu.js";var s=e(t(),1),c=n();function l(e){return e>80?`bg-error`:e>50?`bg-warning`:`bg-success`}function u({cores:e}){return(0,c.jsx)(`div`,{className:`flex items-end gap-0.5 min-h-11 w-full`,"data-testid":`sysmon-core-bars`,"data-core-count":e.length,children:e.map((e,t)=>(0,c.jsx)(`div`,{className:`flex-1 h-11 flex items-end rounded-sm overflow-hidden bg-surface-hover`,title:`Core ${t}: ${e.toFixed(0)}%`,children:(0,c.jsx)(`div`,{className:r(`w-full transition-[height]`,l(e)),style:{height:`${Math.max(2,Math.min(100,e))}%`}})},t))})}function d({testId:e,data:t,onOpen:n,openLabel:i,children:a}){let o=`rounded-lg border border-border p-4 space-y-2`,s={"data-testid":e,...t};return n?(0,c.jsx)(`button`,{type:`button`,onClick:n,"aria-label":i,...s,className:r(o,`w-full text-left cursor-pointer transition-colors`,`hover:bg-surface-hover hover:border-primary/40`,`focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary`),children:a}):(0,c.jsx)(`div`,{className:o,...s,children:a})}function f(e){return e>80?`text-error`:e>50?`text-warning`:`text-success`}function p({total:e,cores:t,model:n,series:r,onOpen:i}){return(0,c.jsxs)(d,{testId:`sysmon-card-cpu`,data:{"data-cpu-total":e},onOpen:i,openLabel:`CPU details`,children:[(0,c.jsxs)(`div`,{className:`flex items-baseline justify-between`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-medium`,children:`CPU`}),(0,c.jsxs)(`span`,{className:`text-2xl font-semibold ${f(e)}`,children:[e.toFixed(1),`%`]})]}),(0,c.jsx)(o,{series:[{data:r,color:`var(--color-primary)`}],height:56,maxValue:100,grid:!0}),(0,c.jsx)(u,{cores:t}),(0,c.jsx)(`p`,{className:`text-[11px] text-text-subtle truncate`,title:n,children:n})]})}function m({usedMB:e,totalMB:t,percent:n,series:r,onOpen:a}){return(0,c.jsxs)(d,{testId:`sysmon-card-mem`,data:{"data-mem-percent":n},onOpen:a,openLabel:`Memory details`,children:[(0,c.jsxs)(`div`,{className:`flex items-baseline justify-between`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-medium`,children:`Memory`}),(0,c.jsxs)(`span`,{className:`text-2xl font-semibold`,children:[n.toFixed(1),`%`]})]}),(0,c.jsx)(o,{series:[{data:r,color:`var(--color-primary)`}],height:56,maxValue:100,grid:!0}),(0,c.jsxs)(`p`,{className:`text-[11px] text-text-subtle`,children:[i(e),` / `,i(t)]})]})}function h({available:e,inBps:t,outBps:n,readSeries:r,writeSeries:i,measuring:s,onOpen:l}){return(0,c.jsxs)(d,{testId:`sysmon-card-disk`,data:{"data-available":e},onOpen:l,openLabel:`Disk details`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-medium`,children:`Disk`}),e?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o,{series:[{data:r,color:`var(--color-primary)`},{data:i,color:`var(--color-warning)`}],height:56,grid:!0}),(0,c.jsxs)(`p`,{className:`text-[11px] text-text-subtle`,children:[`Read `,a(t),` · Write `,a(n)]})]}):(0,c.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:s?`measuring…`:`n/a`})]})}function g({available:e,inBps:t,outBps:n,downSeries:r,upSeries:i,measuring:s,onOpen:l}){return(0,c.jsxs)(d,{testId:`sysmon-card-net`,data:{"data-available":e},onOpen:l,openLabel:`Network details`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-medium`,children:`Network`}),e?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(o,{series:[{data:r,color:`var(--color-primary)`},{data:i,color:`var(--color-warning)`}],height:56,grid:!0}),(0,c.jsxs)(`p`,{className:`text-[11px] text-text-subtle`,children:[`Down `,a(t),` · Up `,a(n)]})]}):(0,c.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:s?`measuring…`:`n/a`})]})}function _({name:e,utilPercent:t,vramUsedMB:n,vramTotalMB:r,series:a,onOpen:s}){return(0,c.jsxs)(d,{testId:`sysmon-card-gpu`,onOpen:s,openLabel:`${e} details`,children:[(0,c.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2`,children:[(0,c.jsx)(`h3`,{className:`text-sm font-medium truncate`,title:e,children:e}),(0,c.jsxs)(`span`,{className:`text-2xl font-semibold shrink-0`,children:[t.toFixed(0),`%`]})]}),(0,c.jsx)(o,{series:[{data:a,color:`var(--color-primary)`}],height:56,maxValue:100,grid:!0}),r>0&&(0,c.jsxs)(`p`,{className:`text-[11px] text-text-subtle`,children:[`VRAM `,i(n),` / `,i(r)]})]})}function v(e,t){let n=null,r=-1/0;for(let i of e){let e=t(i);e!==null&&e>r&&(n=i,r=e)}return n??e[0]??null}function y(e){let t=v(e.disks??[],e=>e.available?e.busyPercent:null);return t?`disk:${t.id}`:null}function b(e){let t=v(e.nics??[],e=>e.available?e.rxBps+e.txBps:null);return t?`nic:${t.id}`:null}function x(e,t){return`gpu:${e??t}`}var S=200;function C(e){return(0,s.useMemo)(()=>{let t=e.slice(-S),n=[],r=[],i=[],a=[],o=[],s=[],c=[];for(let e of t)n.push(e.system.cpu.total),r.push(e.system.mem.percent),i.push(e.system.disk.available?e.system.disk.inBps:0),a.push(e.system.disk.available?e.system.disk.outBps:0),o.push(e.system.net.available?e.system.net.inBps:0),s.push(e.system.net.available?e.system.net.outBps:0),e.system.gpus.forEach((e,t)=>{(c[t]??=[]).push(e.utilPercent)});return{cpu:n,mem:r,diskRead:i,diskWrite:a,netDown:o,netUp:s,gpuUtil:c}},[e])}function w({system:e,history:t,onOpenDevice:n}){let r=C(t),i=t.length<=1,a=e=>n&&e?()=>n(e):void 0;return(0,c.jsxs)(`div`,{className:`p-4 grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4`,"data-testid":`sysmon-overview`,children:[(0,c.jsx)(p,{total:e.cpu.total,cores:e.cpu.cores,model:e.cpu.model,series:r.cpu,onOpen:a(`cpu`)}),(0,c.jsx)(m,{usedMB:e.mem.usedMB,totalMB:e.mem.totalMB,percent:e.mem.percent,series:r.mem,onOpen:a(`memory`)}),(0,c.jsx)(h,{available:e.disk.available,inBps:e.disk.inBps,outBps:e.disk.outBps,readSeries:r.diskRead,writeSeries:r.diskWrite,measuring:i,onOpen:a(y(e))}),(0,c.jsx)(g,{available:e.net.available,inBps:e.net.inBps,outBps:e.net.outBps,downSeries:r.netDown,upSeries:r.netUp,measuring:i,onOpen:a(b(e))}),e.gpus.map((e,t)=>(0,c.jsx)(_,{name:e.name,utilPercent:e.utilPercent,vramUsedMB:e.vramUsedMB,vramTotalMB:e.vramTotalMB,series:r.gpuUtil[t]??[],onOpen:a(x(e.id,t))},`${e.name}-${t}`))]})}export{w as OverviewPanel};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as e,h as t,u as n,v as r}from"./api-client-OiA8Ida1.js";import{t as i}from"./react-PkBxFcos.js";import{r as a}from"./utils-Bslrbb-G.js";import{t as o}from"./window-store-zJczRsv4.js";import{i as s}from"./project-store-CEGoLMOl.js";import{t as c}from"./session-list-sync-triggers-DitiR5h1.js";var l=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function u(e){return e.indexes.filter(t=>!t.primary&&!e.uniques.some(e=>e.name===null?t.unique&&l(e.columns,t.columns):e.name===t.name))}var d=e=>`c:${e}`;function f(e){let t=e.trim(),n=!1,r=!1;for(;;){let e=/\s+(unsigned|zerofill)$/i.exec(t);if(!e)break;e[1].toLowerCase()===`unsigned`?n=!0:r=!0,t=t.slice(0,e.index)}return{type:t,unsigned:n,zerofill:r}}function p(e,t){return t===`mysql`?[e.type,e.unsigned?`unsigned`:``,e.zerofill?`zerofill`:``].filter(Boolean).join(` `):e.type}function m(e,t){let n=new Map(e.columns.map(e=>[e.name,d(e.name)])),r=e=>n.get(e)??d(e);return{schema:e.schema,name:e.name,columns:e.columns.map(e=>{let n=t===`mysql`?f(e.type):{type:e.type,unsigned:!1,zerofill:!1};return{id:r(e.name),name:e.name,type:n.type,notNull:!e.nullable,autoIncrement:e.autoIncrement,defaultValue:e.defaultValue,computedExpression:e.generated?e.computedExpression:null,comment:e.comment,unsigned:n.unsigned,zerofill:n.zerofill,collation:e.collation??null,computedStored:e.computedStored??!1,onUpdate:e.onUpdate??null,identity:e.identity??null,sqliteAutoincrement:e.sqliteAutoincrement??!1}}),primaryKey:e.primaryKey?{id:`pk`,name:e.primaryKey.name,columns:e.primaryKey.columns.map(r)}:null,indexes:u(e).map(e=>({id:`ix:${e.name}`,name:e.name,columns:e.keys.map(e=>{let t=e.column!==null&&n.has(e.column),i={columnId:t?r(e.column):null,expression:t?null:e.expression??e.column,descending:e.descending};return e.nulls&&(i.nulls=e.nulls),e.length!==void 0&&(i.length=e.length),e.opclass&&(i.opclass=e.opclass),i}),unique:e.unique,method:e.method&&e.method!==`btree`?e.method:null,where:e.where})),uniques:e.uniques.map((e,t)=>({id:e.name===null?`uq#${t}`:`uq:${e.name}`,name:e.name,columns:e.columns.map(r)})),foreignKeys:e.foreignKeys.map((e,t)=>({id:e.name===null?`fk#${t}`:`fk:${e.name}`,name:e.name,columns:e.columns.map(r),refSchema:e.refSchema,refTable:e.refTable,refColumns:[...e.refColumns],onUpdate:e.onUpdate,onDelete:e.onDelete})),checks:e.checks.map(e=>({...e})),comment:e.comment,engine:e.engine??null,withoutRowid:e.withoutRowid??!1,strict:e.strict??!1}}function h(e,t=`n`){let n=new Set([...e.columns.map(e=>e.id),...e.indexes.map(e=>e.id),...e.uniques.map(e=>e.id),...e.foreignKeys.map(e=>e.id),...e.primaryKey?[e.primaryKey.id]:[]]);for(let e=n.size+1;;e++){let r=`${t}:${e}`;if(!n.has(r))return r}}function g(e,t=``){return{id:e,name:t,type:`int`,notNull:!1,autoIncrement:!1,defaultValue:null,computedExpression:null,comment:null,unsigned:!1,zerofill:!1,collation:null,computedStored:!1,onUpdate:null,identity:null,sqliteAutoincrement:!1}}function _(e){let t={...g(`n:1`,`id`),notNull:!0,autoIncrement:!0};return{schema:e,name:`new_table`,columns:[t],primaryKey:{id:`n:2`,name:null,columns:[t.id]},indexes:[],uniques:[],foreignKeys:[],checks:[],comment:null,engine:null,withoutRowid:!1,strict:!1}}function v(e,t){return e.columns.find(e=>e.id===t)}function y(e,t){return v(e,t)?.name??``}function ee(e,t){return e.primaryKey?.columns.includes(t)??!1}function b(e,t){return t.refTable===e.name&&(t.refSchema??null)===(e.schema??null)}function te(e,t,n){let r=e.primaryKey;if(n)return r?.columns.includes(t)?e:{...e,primaryKey:r?{...r,columns:[...r.columns,t]}:{id:h(e),name:null,columns:[t]}};if(!r?.columns.includes(t))return e;let i=r.columns.filter(e=>e!==t);return{...e,primaryKey:i.length>0?{...r,columns:i}:null}}function ne(e,t,n){let r=v(e,t.id),i={...e,columns:r?e.columns.map(e=>e.id===t.id?t:e):[...e.columns,t]};return r&&r.name!==t.name&&(i={...i,foreignKeys:i.foreignKeys.map(n=>b(e,n)?{...n,refColumns:n.refColumns.map(e=>e===r.name?t.name:e)}:n)}),n===void 0?i:te(i,t.id,n)}function re(e,t){let n=new Set(t),r=new Set(e.columns.filter(e=>n.has(e.id)).map(e=>e.name)),i=e.primaryKey?.columns.filter(e=>!n.has(e))??[];return{...e,columns:e.columns.filter(e=>!n.has(e.id)),primaryKey:e.primaryKey&&i.length>0?{...e.primaryKey,columns:i}:null,indexes:e.indexes.map(e=>({...e,columns:e.columns.filter(e=>e.columnId===null||!n.has(e.columnId))})).filter(e=>e.columns.length>0),uniques:e.uniques.map(e=>({...e,columns:e.columns.filter(e=>!n.has(e))})).filter(e=>e.columns.length>0),foreignKeys:e.foreignKeys.map(t=>{let i=b(e,t),a=t.columns.map((e,a)=>!n.has(e)&&!(i&&r.has(t.refColumns[a]??``)));return{...t,columns:t.columns.filter((e,t)=>a[t]),refColumns:t.refColumns.filter((e,t)=>a[t])}}).filter(e=>e.columns.length>0)}}function ie(e,t,n){let r=e[t],i=r.some(e=>e.id===n.id);return{...e,[t]:i?r.map(e=>e.id===n.id?n:e):[...r,n]}}function ae(e,t,n){return t===`primaryKey`?e.primaryKey?.id===n?{...e,primaryKey:null}:e:{...e,[t]:e[t].filter(e=>e.id!==n)}}function x(e){return{schema:e.schema??null,name:e.name,columns:e.columns.map(e=>[e.id,e.name,e.type,!!e.notNull,!!e.autoIncrement,e.defaultValue??null,e.computedExpression??null,e.comment??null,!!e.unsigned,!!e.zerofill,e.collation??null,!!e.computedStored,e.onUpdate??null,e.identity??null,!!e.sqliteAutoincrement]),primaryKey:e.primaryKey?[e.primaryKey.id,e.primaryKey.name??null,[...e.primaryKey.columns]]:null,indexes:e.indexes.map(e=>[e.id,e.name,e.columns.map(e=>[e.columnId??null,e.expression??null,!!e.descending,e.nulls??null,e.length??null,e.opclass??null]),!!e.unique,e.method??null,e.where??null]),uniques:e.uniques.map(e=>[e.id,e.name??null,[...e.columns]]),foreignKeys:e.foreignKeys.map(e=>[e.id,e.name??null,[...e.columns],e.refSchema??null,e.refTable,[...e.refColumns],e.onUpdate??null,e.onDelete??null]),checks:e.checks.map(e=>[e.name??null,e.expression]),comment:e.comment??null,engine:e.engine??null,withoutRowid:!!e.withoutRowid,strict:!!e.strict}}function oe(e,t){return JSON.stringify(x(e))===JSON.stringify(x(t))}function S(e,t){return t===`postgres`?e:e.toLowerCase()}function se(e,t,n,r){let i=n.trim();return i?[...e.indexes.map(e=>[e.id,e.name]),...e.uniques.map(e=>[e.id,e.name]),...e.foreignKeys.map(e=>[e.id,e.name]),...e.primaryKey&&r===`postgres`?[[e.primaryKey.id,e.primaryKey.name]]:[]].some(([e,n])=>e!==t&&!!n?.trim()&&S(n.trim(),r)===S(i,r)):!1}var ce=/^(tiny|small|medium|big)?int(eger)?\b|^int[248]\b|^(small|big)?serial\b/i;function le(e,t,n){let r=[],i=t.name.trim();return i?e.columns.some(e=>e.id!==t.id&&S(e.name,n)===S(i,n))&&r.push(`There is already a column named ${i}`):r.push(`Column name is required`),t.type.trim()||r.push(`Data type is required`),t.autoIncrement&&!ce.test(t.type.trim())&&r.push(`An autoincrement column needs an integer type`),t.autoIncrement&&t.computedExpression&&r.push(`A computed column cannot be autoincrement`),r}function ue(e,t,n){let r=[],i=t.filter(e=>e!==null),a=n===`primaryKey`?`A primary key`:n===`index`?`An index`:`A unique constraint`;return t.length===0&&r.push(`${a} needs at least one column`),i.some(t=>!v(e,t))&&r.push(`Choose a column for every row`),new Set(i).size!==i.length&&r.push(`A column is listed twice`),r}function de(e,t){let n=[];return t.refTable||n.push(`Choose the referenced table`),t.columns.length===0&&n.push(`A foreign key needs at least one column`),(t.columns.length!==t.refColumns.length||t.columns.some(t=>!v(e,t))||t.refColumns.some(e=>!e))&&n.push(`Choose a base column and a referenced column for every row`),n}function fe(e,t,n){return e===`PK`?`PK_${t}`:`${e}_${t}_${n.join(`_`)}`}var C=`tableEdit`,w=e=>Array.isArray(e);function pe(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.name==`string`&&w(t.columns)&&w(t.indexes)&&w(t.uniques)&&w(t.foreignKeys)&&w(t.checks)}function me(e){let t=e?.[C];if(typeof t!=`object`||!t)return null;let{base:n,current:r,isNew:i}=t;return!pe(n)||!pe(r)?null:i===!0?{base:n,current:r,isNew:!0}:{base:n,current:r}}function T(e){let t=me(e);return t!==null&&!oe(t.base,t.current)}function he(e,t,n,r){let i=e??(t?{base:m(t,n),current:m(t,n)}:null);if(!i)return null;let a=r(i.current);return!i.isNew&&oe(i.base,a)?null:{...i,current:a}}function ge(e,t){let{[C]:n,...r}=e??{};return t?{...r,[C]:t}:r}function _e(e){return e?.isNew?{...e,current:e.base}:null}function ve(e,t,n){return{newTableId:n,tableNumber:t,schemaName:e.schema??``,[C]:{base:e,current:e,isNew:!0}}}function ye(e){let t=0;for(let n of e){let e=n.type===`db-structure`?n.metadata?.tableNumber:void 0;typeof e==`number`&&e>t&&(t=e)}return t+1}var be=`file`,xe=new Set([`table`,`view`,`matview`,`function`,`procedure`,`trigger`,`sequence`]),Se=new Set([`table`,`view`,`matview`]);function E(e){let t=typeof e==`string`&&/^\d+$/.test(e)?Number(e):e;return typeof t==`number`&&Number.isInteger(t)&&t>0?t:null}function Ce(e){let t=e?.dbFile;if(t&&typeof t==`object`){let{path:e,projectName:n}=t;return typeof e!=`string`||!e?null:{kind:`file`,path:e,...typeof n==`string`&&n?{projectName:n}:{}}}let n=E(e?.connectionId);if(n===null)return null;let r=e?.database;return{kind:`connection`,connectionId:n,...typeof r==`string`&&r?{database:r}:{}}}function D(e){return e.kind===`file`?{dbFile:{path:e.path,...e.projectName?{projectName:e.projectName}:{}}}:{connectionId:e.connectionId,...e.database?{database:e.database}:{}}}function we(e,t=``){let n=`/api/db/connections/${e.kind===`file`?be:e.connectionId}${t}`,r=e.kind===`file`?[[`path`,e.path],...e.projectName?[[`project`,e.projectName]]:[]]:e.database===void 0?[]:[[`database`,e.database]];return r.length===0?n:`${n}${n.includes(`?`)?`&`:`?`}${r.map(([e,t])=>`${e}=${encodeURIComponent(t)}`).join(`&`)}`}function Te(e){return e.slice(Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`))+1)||e}function Ee(e,t){let n=e?.kind===`file`?Te(e.path):t??`Database`;return e?.kind===`connection`&&e.database?`${n}/${e.database}`:n}function De(e,t,n){return`${Ee(e,t)} · ${n}`}var O=e=>encodeURIComponent(typeof e==`string`?e:``);function Oe(e){return e?e.kind===`file`?`file:${O(e.projectName)}:${O(e.path)}`:`${e.connectionId}:${O(e.database)}`:`default:`}function ke(e,t){if(e===`db-query`)return`db-query:${O(t?.queryId)||a()}`;if(e===`db-structure`&&typeof t?.newTableId==`string`&&t.newTableId)return`db-structure:new:${O(t.newTableId)}`;let n=Oe(Ce(t)),r=O(t?.schemaName);if(e===`db-sql`)return`db-sql:${n}:${r}:${typeof t?.objectKind==`string`&&Se.has(t.objectKind)?`table`:O(t?.objectKind)}:${O(t?.objectName)}:${O(t?.objectArgs)}:${O(t?.objectTable)}`;let i=e===`database`&&typeof t?.instance==`string`&&t.instance?`:${O(t.instance)}`:``;return`${e}:${n}:${r}:${O(t?.tableName)}${i}`}function Ae(e){try{return decodeURIComponent(e)}catch{return null}}function je(e,t){if(e===`db-query`)return null;let n=t.split(`:`).map(Ae);if(n.some(e=>e===null))return null;let[r=``,...i]=n,a,o;if(r===be){let[e=``,t=``,...n]=i;if(!t)return null;a={kind:`file`,path:t,...e?{projectName:e}:{}},o=n}else{let e=E(r);if(e===null)return null;let[t=``,...n]=i;a={kind:`connection`,connectionId:e,...t?{database:t}:{}},o=n}if(e===`db-sql`){let[e=``,t=``,n=``,r=``,i=``]=o;if(!xe.has(t)||!n)return null;let s=t===`function`||t===`procedure`;return{...D(a),schemaName:e,objectKind:t,objectName:n,...s?{objectArgs:r}:{},...i?{objectTable:i}:{}}}let[s=``,c=``,l=``]=o;return c?{...D(a),schemaName:s,tableName:c,...e===`database`&&l?{instance:l}:{}}:null}function Me(e,t,n={}){return{queryId:a(),queryNumber:t,currentSql:e,openedSql:e,...n.run?{runOnOpen:!0}:{}}}function Ne(e){return typeof e?.currentSql==`string`?e.currentSql!==(typeof e.openedSql==`string`?e.openedSql:``):!1}function Pe(e,t){return e===`db-query`?Ne(t):e===`db-structure`?T(t):!1}function Fe(e){let t=0;for(let n of e){let e=n.type===`db-query`?n.metadata?.queryNumber:void 0;typeof e==`number`&&e>t&&(t=e)}return t+1}function Ie(e){let t=E(e.connectionId),n={};for(let t of[`connectionName`,`dbType`,`connectionColor`,`database`,`dbFile`])e[t]!==void 0&&(n[t]=e[t]);return{...n,...t===null?{}:{connectionId:t}}}function Le(e){let t=typeof e.currentSql==`string`?e.currentSql:typeof e.initialSql==`string`?e.initialSql:``;return{type:`db-query`,metadata:{...Ie(e),queryId:typeof e.queryId==`string`&&e.queryId?e.queryId:a(),...typeof e.queryNumber==`number`?{queryNumber:e.queryNumber}:{},currentSql:t,openedSql:t}}}function Re(e){let t=e.metadata??{},n=e.id.includes(`@`)?e.id.slice(e.id.indexOf(`@`)):``,r=typeof t.tableName==`string`&&t.tableName!==``,i;if(e.type===`database`)if(!r)i=Le(t);else{let n=E(t.connectionId);if(n===null||n===t.connectionId)return e;i={type:`database`,metadata:{...t,connectionId:n}}}else if(e.type===`postgres`||e.type===`sqlite`){if(E(t.connectionId)===null)return e.type===`sqlite`&&typeof t.filePath==`string`&&t.filePath?e:null;let n=t.dbType??e.type;i=r?{type:`database`,metadata:{...Ie(t),dbType:n,schemaName:typeof t.schemaName==`string`?t.schemaName:``,tableName:t.tableName}}:{type:`db-query`,metadata:{...Le(t).metadata,dbType:n}}}else return e;return{...e,id:`${ke(i.type,i.metadata)}${n}`,type:i.type,metadata:i.metadata}}var k=`__dock__`,ze=new Set([`terminal`,`system-monitor`,`problems`]),Be=new Set([`system-monitor`,`settings`,`problems`,`design`,`logs`]),Ve=`__win__:`;function A(e){return`${Ve}${e}`}function j(e){return e.startsWith(Ve)}function M(e){return j(e)&&e.slice(8)||null}function He(e){return{id:A(e),tabs:[],activeTabId:null,tabHistory:[]}}function N(){return{id:k,tabs:[],activeTabId:null,tabHistory:[]}}function Ue(){return`panel-${a()}`}function P(e=[],t=null){return{id:Ue(),tabs:e,activeTabId:t,tabHistory:t?[t]:[]}}function F(e){return e?1:3}function I(e,t){return e.map(e=>e.filter(e=>e!==t)).filter(e=>e.length>0)}function We(e,t){return!t||t===`__global__`?e:e.filter(e=>!e.projectId||e.projectId===t)}function L(e,t){for(let n=0;n<e.length;n++){let r=e[n].indexOf(t);if(r!==-1)return{row:n,col:r}}return null}function Ge(e){let t=0;for(let n of Object.values(e))for(let e of n.tabs){let n=e.id.match(/^editor:untitled-(\d+)$/);n&&(t=Math.max(t,Number(n[1])))}return t+1}function R(e,t){switch(e){case`editor`:return t?.viewerKey?`editor:viewer:${t.viewerKey}`:t?.isUntitled?`editor:untitled-${t.untitledNumber??1}`:`editor:${t?.filePath??`untitled`}`;case`chat`:return`chat:${t?.providerId??`default`}/${t?.sessionId??a()}`;case`terminal`:return`terminal:${t?.terminalIndex??1}`;case`database`:case`db-structure`:case`db-sql`:case`db-query`:return ke(e,t);case`db-impexp`:return`db-impexp:${typeof t?.impexpId==`string`&&t.impexpId?t.impexpId:a()}`;case`db-connection`:return`db-connection:${t?.connectionId??`new-${a()}`}`;case`sqlite`:return`sqlite:${t?.filePath??`default`}`;case`extension`:return`extension:${String(t?.viewType??`unknown`).replace(/\.view$/,``)}`;case`git-diff`:return`git-diff:${t?.filePath??`unknown`}`;case`branch-review`:return`branch-review:${t?.projectName??`unknown`}`;case`session-review`:return`session-review:${t?.projectName??`unknown`}:${t?.sessionId??`unknown`}`;case`git-review`:return`git-review:${t?.projectName??`unknown`}`;case`conflict-editor`:return`conflict-editor:${t?.filePath??`unknown`}`;case`settings`:return`settings`;case`problems`:return`problems`;case`system-monitor`:return`system-monitor`;case`logs`:return`logs`;case`group`:return`group:${t?.groupId??`unknown`}`;case`design`:return`design:${t?.designSlug??`unknown`}`;case`web-preview`:return`web-preview:${t?.url??`unknown`}`;default:return`${e}:${a()}`}}var Ke=new Set([`ports`,`tunnels`]);function qe(e){if(!e.tabs.some(e=>Ke.has(e.type)))return e;let t=new Set(e.tabs.filter(e=>Ke.has(e.type)).map(e=>e.id)),n=e.tabs.filter(e=>!t.has(e.id)),r=e.tabHistory.filter(e=>!t.has(e)),i=e.activeTabId&&!t.has(e.activeTabId)?e.activeTabId:r[r.length-1]??n[n.length-1]?.id??null;return{...e,tabs:n,tabHistory:r,activeTabId:i}}function z(e){let t={};for(let[n,r]of Object.entries(e.panels))t[n]=qe(r);let n=e.dockPanel?qe(e.dockPanel):e.dockPanel;return{...e,panels:t,dockPanel:n}}function Je(e){let t=new Map,n=[];for(let r of e.tabs){let e=Re(r);e!==r&&t.set(r.id,e?.id??null),e&&!n.some(t=>t.id===e.id)&&n.push(e)}if(t.size===0)return e;let r=new Set(n.map(e=>e.id)),i=e=>t.has(e)?t.get(e)??null:e,a=e.tabHistory.map(i).filter(e=>e!==null&&r.has(e)),o=e.activeTabId?i(e.activeTabId):null,s=o&&r.has(o)?o:a[a.length-1]??n[n.length-1]?.id??null;return{...e,tabs:n,tabHistory:a,activeTabId:s}}function Ye(e){let t={};for(let[n,r]of Object.entries(e.panels))t[n]=Je(r);return{...e,panels:t}}function Xe(e){let t={...e,panels:{...e.panels}};for(let[e,n]of Object.entries(t.panels)){let r=n.tabs.map(e=>{if(e.id.startsWith(`tab-`)){let t=R(e.type,e.metadata);return{...e,id:t}}if(e.type===`database`){let t=e.id.indexOf(`@`),n=R(e.type,e.metadata);if((t<0?e.id:e.id.slice(0,t))!==n)return{...e,id:t<0?n:`${n}${e.id.slice(t)}`}}return e}),i=new Map;n.tabs.forEach((e,t)=>{e.id!==r[t].id&&i.set(e.id,r[t].id)});let a=i.get(n.activeTabId??``)??n.activeTabId,o=n.tabHistory.map(e=>i.get(e)??e);t.panels[e]={...n,tabs:r,activeTabId:a,tabHistory:o}}return t}var B=`ppm-panels-`,Ze=`ppm-tabs-`;function Qe(e){return`${B}${e}`}function V(e,t){try{let n={...t,updatedAt:new Date().toISOString()};localStorage.setItem(Qe(e),JSON.stringify(n)),e!==`__global__`&&nt(e,t)}catch{}}function $e(e){try{let t=localStorage.getItem(Qe(e));if(t)return et(Xe(Ye(z(JSON.parse(t)))))}catch{}let t=at(e);return t?et(Ye(z(t))):null}function et(e){let t=e.dock??{visible:!1,height:30},n;if(!e.dockPanel)n=N();else{let t=e.dockPanel.tabs.filter(e=>ze.has(e.type)),r=new Set(t.map(e=>e.id)),i=e.dockPanel.tabHistory.filter(e=>r.has(e)),a=e.dockPanel.activeTabId&&r.has(e.dockPanel.activeTabId)?e.dockPanel.activeTabId:i[i.length-1]??t[t.length-1]?.id??null;n={...e.dockPanel,tabs:t,tabHistory:i,activeTabId:a}}return{...e,dock:t,dockPanel:n}}async function tt(e){if(e===`__global__`)return null;try{let t={},n=localStorage.getItem(`ppm-auth-token`);n&&(t.Authorization=`Bearer ${n}`);let r=await fetch(`/api/project/${encodeURIComponent(e)}/workspace`,{headers:t});if(!r.ok)return null;let i=await r.json();return!i.ok||!i.data?null:{...i.data.layout,updatedAt:i.data.updatedAt}}catch{return null}}var H=new Map;function nt(e,t){let n=H.get(e);n&&clearTimeout(n),H.set(e,setTimeout(async()=>{H.delete(e);try{let n={"Content-Type":`application/json`},r=localStorage.getItem(`ppm-auth-token`);r&&(n.Authorization=`Bearer ${r}`);let i=await fetch(`/api/project/${encodeURIComponent(e)}/workspace`,{method:`PUT`,headers:n,body:JSON.stringify({layout:t})});if(i.ok){let t=await i.json();if(t.data?.updatedAt){let n=`${B}${e}`,r=localStorage.getItem(n);if(r){let e=JSON.parse(r);e.updatedAt=t.data.updatedAt,localStorage.setItem(n,JSON.stringify(e))}}}}catch{}},1500))}function rt(e,t){if(!e&&!t)return null;if(!e)return t;if(!t)return e;let n=new Date(e.updatedAt).getTime();return new Date(t.updatedAt).getTime()>=n?t:e}async function it(e){if(e===`__global__`)return!1;let t=await tt(e);if(!t)return!1;let n=`${B}${e}`,r=null;try{let e=localStorage.getItem(n);r=e?JSON.parse(e):null}catch{}if(rt(r,t)!==t)return!1;try{let e={...z(t),updatedAt:t.updatedAt};return localStorage.setItem(n,JSON.stringify(e)),!0}catch{return!1}}function at(e){try{let t=localStorage.getItem(`${Ze}${e}`);if(!t)return null;let n=JSON.parse(t);if(!n.tabs?.length)return null;let r=P(n.tabs,n.activeTabId),i={panels:{[r.id]:r},grid:[[r.id]],focusedPanelId:r.id};return V(e,i),localStorage.removeItem(`${Ze}${e}`),i}catch{return null}}var ot=15,st=85;function ct(e){return Math.min(st,Math.max(ot,e))}function U(e,t){let n=e.filter(e=>e!==t);return n.push(t),n.length>50&&n.shift(),n}function lt(e){let t=e().panels[k];if(!t)return 0;let n=e().currentProject;return t.tabs.filter(e=>!e.projectId||!n||e.projectId===n).length}function ut(e){let t=e().currentProject;e().openInDock({type:`terminal`,title:`Terminal`,projectId:t??null,closable:!0,metadata:t?{projectName:t}:void 0})}function dt(e,t){return function(){let{dock:n}=t(),r=!n.visible;e({dock:{...n,visible:r}}),W(t),r&<(t)===0&&ut(t)}}function ft(e,t){return function(n){let{dock:r}=t();e({dock:{...r,visible:n}}),W(t)}}function pt(e,t){return function(n){let{dock:r}=t();e({dock:{...r,height:ct(n)}}),W(t)}}function mt(e,t){return function(n){let{panels:r,dock:i}=t(),a=r.__dock__??N(),o=n;if(n.type===`terminal`&&!n.metadata?.terminalIndex){let e=Object.values(r).flatMap(e=>e.tabs).filter(e=>e.type===`terminal`).map(e=>{let t=e.id.match(/^terminal:(\d+)/);return t?parseInt(t[1],10):0}),t=e.length>0?Math.max(...e)+1:1;o={...n,metadata:{...n.metadata,terminalIndex:t}}}let s=R(o.type,o.metadata);if(a.tabs.find(e=>e.id===s))return e(e=>({dock:{...e.dock,visible:!0},panels:{...e.panels,[k]:{...a,activeTabId:s,tabHistory:U(a.tabHistory,s)}}})),W(t),s;let c={...o,id:s},l=[...a.tabs,c],u=U(a.tabHistory,s);return e(e=>({dock:{...e.dock,visible:!0},panels:{...e.panels,[k]:{...a,tabs:l,activeTabId:s,tabHistory:u}}})),W(t),s}}function ht(e,t){return function(n,r){t().moveTab(n,r,k);let{dock:i}=t();e({dock:{...i,visible:!0}}),W(t)}}function W(e){let{currentProject:t,panels:n,grid:r,focusedPanelId:i,dock:a}=e();if(!t)return;let o=new Set(r.flat()),s={};for(let[e,t]of Object.entries(n))o.has(e)&&(s[e]=t);V(t,{panels:s,grid:r,focusedPanelId:i,dock:a,dockPanel:n.__dock__??N()})}function gt(e,t,n){return{...n,[e]:t}}function G(e,t){return t[e]??{visible:!1,height:30}}function _t(e,t){return t&&e.visible?{...e,visible:!1}:e}var K=`ppm-window-panels`,vt={terminal:!0,chat:!0,editor:!0,database:!0,"db-structure":!0,"db-sql":!0,"db-query":!0,"db-impexp":!0,"db-connection":!0,sqlite:!0,"git-diff":!0,"branch-review":!0,"session-review":!0,"git-review":!0,settings:!1,extension:!0,"extension-webview":!0,"conflict-editor":!0,"system-monitor":!1,"git-log":!0,"ai-resource":!0,group:!0,problems:!1,design:!1,android:!0,"web-preview":!0,logs:!1};function yt(e){return typeof e==`string`&&vt[e]===!0}function bt(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&!!t.id&&typeof t.title==`string`&&yt(t.type)}function xt(e){let t={};for(let[n,r]of Object.entries(e))!j(n)||r.tabs.length===0||(t[n]=r);return t}function q(e){try{let t=xt(e);Object.keys(t).length===0?localStorage.removeItem(K):localStorage.setItem(K,JSON.stringify(t))}catch{}}function St(){let e=null;try{e=localStorage.getItem(K)}catch{return{}}if(!e)return{};let t;try{t=JSON.parse(e)}catch{return{}}if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t)){if(!j(e)||!r||typeof r!=`object`)continue;let t=r;if(!Array.isArray(t.tabs))continue;let i=Je({id:e,tabs:t.tabs.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`),activeTabId:typeof t.activeTabId==`string`?t.activeTabId:null,tabHistory:Array.isArray(t.tabHistory)?t.tabHistory.filter(e=>typeof e==`string`):[]}),a=i.tabs.filter(bt);if(a.length===0)continue;let o=new Set(a.map(e=>e.id)),s=i.tabHistory.filter(e=>o.has(e));n[e]={id:e,tabs:a,activeTabId:i.activeTabId&&o.has(i.activeTabId)?i.activeTabId:s[s.length-1]??a[a.length-1].id,tabHistory:s}}return n}function J(e,t){let n=e.flat();return t&&n.includes(t)?t:n[0]??null}function Y(e){q(e().panels),W(e)}function Ct(e,t,n){if(t().panels[n]?.tabs.length){q(t().panels);return}e(e=>{let{[n]:t,...r}=e.panels;return{panels:r}}),q(t().panels);let r=M(n);r&&o.getState().close(r)}var wt=!1;function Tt(e,t){if(wt)return;wt=!0;let n=St();Object.keys(n).length!==0&&e({panels:{...n,...t().panels}})}function Et(e,t){return function(n,r){if(t().isMobile())return null;let i=t().panels[r]?.tabs.find(e=>e.id===n);if(!i||Be.has(i.type))return null;let a=o.getState();if(Object.keys(a.windows).length>=8)return null;let s=a.open(`tab-host`,{originPanelId:r,title:i.title}),c=A(s);e(e=>({panels:{...e.panels,[c]:He(s)}})),t().moveTab(n,r,c);let l=J(t().grid,r);return l&&e({focusedPanelId:l}),Y(t),s}}function Dt(e,t){return function(n,r){let i=A(n),a=t().panels[i];if(!a)return;let s=Ot(t(),r);if(s)for(let e of[...a.tabs])t().moveTab(e.id,i,s);e(e=>{let{[i]:t,...n}=e.panels,r=J(e.grid,s??e.focusedPanelId);return r?{panels:n,focusedPanelId:r}:{panels:n}}),Y(t),o.getState().close(n)}}function Ot(e,t){return t&&e.panels[t]&&!j(t)?t:J(e.grid,e.focusedPanelId)}function kt(e,t){let n={...e},r=[];for(let[i,a]of Object.entries(e)){if(!j(i))continue;let e=a.tabs.filter(e=>e.projectId!==t);if(e.length===a.tabs.length)continue;let o=M(i);if(e.length===0){delete n[i],o&&r.push(o);continue}let s=new Set(e.map(e=>e.id)),c=a.tabHistory.filter(e=>s.has(e));n[i]={...a,tabs:e,tabHistory:c,activeTabId:a.activeTabId&&s.has(a.activeTabId)?a.activeTabId:c[c.length-1]??e[e.length-1].id}}return{panels:n,windowIdsToClose:r}}var At=new Set([`chat`,`design`]);function jt(e){if(!e||!At.has(e.type))return;let t=e.metadata?.sessionId;return typeof t==`string`&&t?t:void 0}function Mt(e,t){return e.new_chat_provider_mode===`follow-focus`&&t&&t!==`default`?t:e.default_provider||`claude`}var Nt=new Set([`settings`,`git-log`]),Pt=new Set([`database`,`db-structure`,`db-sql`]),Ft=new Set([`projects`,`git-status`,`git-graph`]);function It(e,t){if(!e)return null;let n=e.tabs.filter(e=>!e.projectId||e.projectId===t);if(n.length===0)return null;for(let t=e.tabHistory.length-1;t>=0;t--){let r=e.tabHistory[t];if(n.some(e=>e.id===r))return r}return n[n.length-1].id}function Lt(t,i){let a=n(),o=t?e(r(c(t))):null,s=a?Mt(a,i):null;return a&&s&&o?.some(e=>e.id===s)?{providerId:s,permissionMode:a.providers[s]?.permission_mode??`bypassPermissions`,permissionModeSource:`cache`}:{providerPending:!0,focusedProviderOnOpen:i}}function Rt(e,t){if(e.permissionMode&&e.permissionModeSource!==`cache`)return{};let r=n()?.providers[t]?.permission_mode;return r?{permissionMode:r,permissionModeSource:`cache`}:{}}function X(e,t){let n=e.filter(e=>e!==t);return n.push(t),n.length>50&&n.shift(),n}function Z(e,t){let n=Date.now();return e.map(e=>e.id===t?{...e,metadata:{...e.metadata,lastActiveAt:n}}:e)}function zt(){let e=P(),t=N();return{panels:{[e.id]:e,[k]:t},grid:[[e.id]],focusedPanelId:e.id}}var Q=i()((e,n)=>{function r(){let{currentProject:e,panels:t,grid:r,focusedPanelId:i,dock:a}=n();if(!e)return;let o=new Set(r.flat()),s={};for(let[e,n]of Object.entries(t))o.has(e)&&(s[e]=n);V(e,{panels:s,grid:r,focusedPanelId:i,dock:a,dockPanel:t[k]})}function i(e){return Object.values(n().panels).find(t=>t.tabs.some(t=>t.id===e))}function a(e){return e??n().focusedPanelId}function c(e){return j(e)?n().focusedPanelId:e}return{...zt(),currentProject:null,lastFocusedChatProviders:{},projectGrids:{},projectFocused:{},dock:{visible:!1,height:30},projectDock:{},dockExpanded:!1,toggleDock:dt(e,n),setDockVisible:ft(e,n),setDockHeight:pt(e,n),toggleDockExpanded:()=>e(e=>({dockExpanded:!e.dockExpanded})),openInDock:mt(e,n),redockTab:ht(e,n),popOutTab:Et(e,n),redockFromWindow:Dt(e,n),switchProject:r=>{if(r!==`__global__`){let e=s.getState().projects.find(e=>e.name===r);e&&t(e)}Tt(e,n);let{currentProject:i,panels:a,grid:o,focusedPanelId:c,projectGrids:l,projectFocused:u,dock:d,projectDock:f}=n();if(i===r)return;let p={...l},m={...u},h=i?gt(i,d,f):{...f};if(i){p[i]=o,m[i]=c;let e=new Set(o.flat()),t={};for(let[n,r]of Object.entries(a))e.has(n)&&(t[n]=r);V(i,{panels:t,grid:o,focusedPanelId:c,dock:d,dockPanel:a[k]})}if(p[r]){let t=p[r],n=m[r]??t[0]?.[0]??``,i=G(r,h),o=a[k];e({currentProject:r,panels:o?{...a,[k]:{...o,activeTabId:It(o,r)}}:a,grid:t,focusedPanelId:n,projectGrids:p,projectFocused:m,dock:i,projectDock:h});return}let g=$e(r);if(g&&Object.keys(g.panels).length>0){let t=!1,i={};for(let[e,n]of Object.entries(g.panels)){let a=We(n.tabs,r).filter(e=>!Ft.has(e.type));a.length!==n.tabs.length&&(t=!0);let o=n.tabHistory.filter(e=>a.some(t=>t.id===e)),s=n.activeTabId&&a.some(e=>e.id===n.activeTabId)?n.activeTabId:o[o.length-1]??a[0]?.id??null;i[e]={...n,tabs:a,tabHistory:o,activeTabId:s}}let o=g.grid;for(let e of o.flat())if(!((i[e]?.tabs.length??0)>0)){if(o.flat().length<=1)break;o=I(o,e),delete i[e],t=!0}let s=o.flat().includes(g.focusedPanelId)?g.focusedPanelId:o.flat()[0]??g.focusedPanelId,c=a.__dock__??N(),l=g.dockPanel??N(),u=[...c.tabs];for(let e of l.tabs)u.some(t=>t.id===e.id)||u.push(e);let d={...c,tabs:u,tabHistory:[...new Set([...c.tabHistory,...l.tabHistory])].filter(e=>u.some(t=>t.id===e)),activeTabId:null};d.activeTabId=It(d,r);let f={...a,...i,[k]:d};p[r]=o,m[r]=s;let _=_t(g.dock??G(r,h),n().isMobile());e({currentProject:r,panels:f,grid:o,focusedPanelId:s,projectGrids:p,projectFocused:m,dock:_,projectDock:h}),t&&V(r,{panels:i,grid:o,focusedPanelId:s,dock:_,dockPanel:d})}else{let t=P(),n=[[t.id]],i={...a,[t.id]:t};p[r]=n,m[r]=t.id;let o=G(r,h);V(r,{panels:{[t.id]:t},grid:n,focusedPanelId:t.id,dock:o,dockPanel:a[k]}),e({currentProject:r,panels:i,grid:n,focusedPanelId:t.id,projectGrids:p,projectFocused:m,dock:o,projectDock:h})}},reloadProject:t=>{let{projectGrids:r,projectFocused:i,projectDock:a,panels:s}=n(),c={...r},l={...i},u={...a};delete c[t],delete l[t],delete u[t];let d=r[t],f=d?new Set(d.flat()):new Set,p={...s};for(let e of f)e!==`__dock__`&&delete p[e];let m=p[k];if(m){let e=m.tabs.filter(e=>e.projectId!==t),n=new Set(e.map(e=>e.id));p[k]={...m,tabs:e,tabHistory:m.tabHistory.filter(e=>n.has(e)),activeTabId:m.activeTabId&&n.has(m.activeTabId)?m.activeTabId:e[e.length-1]?.id??null}}let h=kt(p,t);e({projectGrids:c,projectFocused:l,projectDock:u,panels:h.panels,currentProject:null}),q(h.panels);for(let e of h.windowIdsToClose)o.getState().close(e);n().switchProject(t)},setFocusedPanel:(t,r=!0)=>{if(j(t))return;let i=n().panels[t];i&&(e({focusedPanelId:t}),r&&$(i.tabs.find(e=>e.id===i.activeTabId)))},openTab:(t,i)=>{let s=n().isMobile(),l=s?n().grid[0]?.[0]??a(i):a(i);if(!n().panels[l])return``;if(t.type===`chat`&&!t.metadata?.sessionId&&!t.metadata?.providerId){let e=t.projectId??t.metadata?.projectName??n().currentProject??void 0,r=e?n().lastFocusedChatProviders[e]:void 0;t={...t,metadata:{...t.metadata,...Lt(e,r)}}}else t.type===`chat`&&t.metadata&&!t.metadata.sessionId&&typeof t.metadata.providerId==`string`&&(t={...t,metadata:{...t.metadata,...Rt(t.metadata,t.metadata.providerId)}});if(t.type===`terminal`&&!t.metadata?.terminalIndex){let e=Object.values(n().panels).flatMap(e=>e.tabs).filter(e=>e.type===`terminal`).map(e=>{let t=e.id.match(/^terminal:(\d+)/);return t?parseInt(t[1],10):0}),r=e.length>0?Math.max(...e)+1:1;t={...t,metadata:{...t.metadata,terminalIndex:r}}}let u=R(t.type,t.metadata);if(t.type===`chat`&&t.metadata?.sessionId){let i=t.metadata.sessionId;for(let t of Object.values(n().panels)){let n=t.tabs.find(e=>jt(e)===i);if(n)return $(n),e(e=>({focusedPanelId:c(t.id),panels:{...e.panels,[t.id]:{...t,tabs:Z(t.tabs,n.id),activeTabId:n.id,tabHistory:X(t.tabHistory,n.id)}}})),r(),n.id}}if(t.type===`design`){let i=t.metadata?.designSlug,a=t.projectId??t.metadata?.projectName;for(let t of Object.values(n().panels)){let n=t.tabs.find(e=>e.type===`design`&&e.metadata?.designSlug===i&&(e.projectId??e.metadata?.projectName)===a);if(n)return e(e=>({focusedPanelId:c(t.id),panels:{...e.panels,[t.id]:{...t,tabs:Z(t.tabs,n.id),activeTabId:n.id,tabHistory:X(t.tabHistory,n.id)}}})),r(),n.id}}if(Pt.has(t.type)){let t=s?[]:Object.keys(n().panels).filter(j),i=[...n().grid.flat(),...t];for(let t of i){let i=n().panels[t],a=i?.tabs.find(e=>e.id===u||e.id.startsWith(`${u}@`));if(!i||!a)continue;e(e=>({focusedPanelId:c(i.id),panels:{...e.panels,[i.id]:{...i,tabs:Z(i.tabs,a.id),activeTabId:a.id,tabHistory:X(i.tabHistory,a.id)}}}));let s=M(i.id);return s&&(o.getState().focus(s),q(n().panels)),r(),a.id}}if(Nt.has(t.type))for(let t of Object.values(n().panels)){let n=t.tabs.find(e=>e.id===u);if(n)return e(e=>({focusedPanelId:c(t.id),panels:{...e.panels,[t.id]:{...t,tabs:Z(t.tabs,n.id),activeTabId:n.id,tabHistory:X(t.tabHistory,n.id)}}})),r(),n.id}if(s)for(let t of n().grid.flat()){let i=n().panels[t];if(!i)continue;let a=i.tabs.find(e=>e.id===u||e.id.startsWith(`${u}@`));if(a)return e(e=>({focusedPanelId:i.id,panels:{...e.panels,[i.id]:{...i,tabs:Z(i.tabs,a.id),activeTabId:a.id,tabHistory:X(i.tabHistory,a.id)}}})),r(),a.id}let d=n().panels[l],f=d.tabs.find(e=>e.id===u);if(f)return e(e=>({panels:{...e.panels,[l]:{...d,tabs:Z(d.tabs,f.id),activeTabId:f.id,tabHistory:X(d.tabHistory,f.id)}}})),r(),f.id;let p=Object.values(n().panels).some(e=>e.id!==l&&e.tabs.some(e=>e.id===u))?`${u}@${l}`:u,m={...t,id:p,metadata:{...t.metadata,lastActiveAt:Date.now()}};return e(e=>{let t=e.panels[l];return{focusedPanelId:l,panels:{...e.panels,[l]:{...t,tabs:[...t.tabs,m],activeTabId:p,tabHistory:X(t.tabHistory,p)}}}}),r(),p},closeTab:(t,a)=>{let o=a?n().panels[a]:i(t);if(!o)return;let s=o.id;if(t.startsWith(`terminal:`))try{localStorage.removeItem(`ppm:terminal-session:${t}`)}catch{}e(e=>{let n=e.panels[s],r=n.tabs.filter(e=>e.id!==t),i=n.tabHistory.filter(e=>e!==t),a=n.activeTabId;if(n.activeTabId===t){let e=i.length>0?i[i.length-1]:null;a=e&&r.some(t=>t.id===e)?e:r[r.length-1]?.id??null}let o=e.grid.flat().length,c=j(s)||o>1&&s!==`__dock__`;if(r.length===0&&c){let{[s]:t,...n}=e.panels,r=I(e.grid,s);return{panels:n,grid:r,focusedPanelId:e.focusedPanelId===s?r.flat()[0]??Object.keys(n)[0]:e.focusedPanelId}}return{panels:{...e.panels,[s]:{...n,tabs:r,activeTabId:a,tabHistory:i}}}}),r(),s===`__dock__`&<(n)===0&&n().setDockVisible(!1),j(s)&&Ct(e,n,s)},setActiveTab:(t,a)=>{let o=a?n().panels[a]:i(t);if(!o)return;$(o.tabs.find(e=>e.id===t));let s=o.id;e(e=>{let n=e.panels[s];return{focusedPanelId:c(s),panels:{...e.panels,[s]:{...n,tabs:Z(n.tabs,t),activeTabId:t,tabHistory:X(n.tabHistory,t)}}}}),r()},updateTab:(t,n)=>{let a=i(t);a&&(e(e=>({panels:{...e.panels,[a.id]:{...a,tabs:a.tabs.map(e=>e.id===t?{...e,...n}:e)}}})),r())},reorderTab:(t,i,a)=>{let o=n().panels[i];if(!o)return;let s=o.tabs.findIndex(e=>e.id===t);if(s===-1||s===a)return;let c=[...o.tabs],[l]=c.splice(s,1);c.splice(a,0,l),e(e=>({panels:{...e.panels,[i]:{...o,tabs:c}}})),r()},moveTab:(t,i,a,o)=>{if(i===a)return;let s=n().panels[i],c=n().panels[a];if(!s||!c)return;let l=s.tabs.find(e=>e.id===t);if(!l)return;let u=s.tabs.filter(e=>e.id!==t),d=s.tabHistory.filter(e=>e!==t),f=s.activeTabId===t?d[d.length-1]??u[u.length-1]?.id??null:s.activeTabId,p=[...c.tabs];o===void 0?p.push(l):p.splice(o,0,l),e(e=>{let n=e.grid.flat().length,r=i===`__dock__`||j(i);if(u.length===0&&n>1&&!r){let{[i]:n,...r}=e.panels;return{panels:{...r,[a]:{...c,tabs:p,activeTabId:t,tabHistory:X(c.tabHistory,t)}},grid:I(e.grid,i),focusedPanelId:a}}return{focusedPanelId:a,panels:{...e.panels,[i]:{...s,tabs:u,activeTabId:f,tabHistory:d},[a]:{...c,tabs:p,activeTabId:t,tabHistory:X(c.tabHistory,t)}}}}),r(),j(i)&&Ct(e,n,i)},splitPanel:(t,i,a,o)=>{let{grid:s,panels:c}=n(),l=n().isMobile(),u=c[a];if(!u)return!1;let d=u.tabs.find(e=>e.id===i);if(!d)return!1;let f=L(s,o??a);if(!f)return!1;let p=t===`left`||t===`right`,m=t===`up`||t===`down`;if(p&&(s[f.row]?.length??0)>=F(l)||m&&s.length>=3)return!1;let h=P([d],d.id);h.tabHistory=[d.id];let g=u.tabs.filter(e=>e.id!==i),_=u.tabHistory.filter(e=>e!==i),v=u.activeTabId===i?_[_.length-1]??g[g.length-1]?.id??null:u.activeTabId,y;if(p)y=s.map((e,n)=>{if(n!==f.row)return e;let r=[...e],i=t===`right`?f.col+1:f.col;return r.splice(i,0,h.id),r});else{y=[...s];let e=t===`down`?f.row+1:f.row;y.splice(e,0,[h.id])}return e(e=>{let t=e.grid.flat().length,n={...e.panels,[h.id]:h};if(g.length===0&&t>1){let{[a]:e,...t}=n;n=t,y=I(y,a)}else n[a]={...u,tabs:g,activeTabId:v,tabHistory:_};return{panels:n,grid:y,focusedPanelId:h.id}}),r(),!0},closePanel:t=>{let{panels:i,grid:a}=n();if(a.flat().length<=1)return;let o=i[t];if(!o)return;L(a,t);let s=a.flat(),c=s.indexOf(t),l=c>0?s[c-1]:s[1],u=i[l];u&&(e(e=>{let{[t]:n,...r}=e.panels,i=[...u.tabs,...o.tabs],a=u.activeTabId??o.activeTabId;return{panels:{...r,[l]:{...u,tabs:i,activeTabId:a,tabHistory:[...u.tabHistory,...o.tabHistory]}},grid:I(e.grid,t),focusedPanelId:l}}),r())},getPanelForTab:e=>i(e),isMobile:()=>typeof window<`u`&&window.innerWidth<768}});function $(e){let t=Q.getState();if(e?.type!==`chat`||e.metadata?.providerPending)return;let n=e.projectId??e.metadata?.projectName??t.currentProject,r=e.metadata?.providerId??`claude`;r!==`default`&&(!n||t.lastFocusedChatProviders[n]===r||Q.setState({lastFocusedChatProviders:{...t.lastFocusedChatProviders,[n]:r}}))}Q.subscribe((e,t)=>{let n=e.panels[e.focusedPanelId],r=n?.tabs.find(e=>e.id===n.activeTabId),i=t.panels[e.focusedPanelId],a=i?.tabs.find(e=>e.id===i.activeTabId);r?.id===a?.id&&r?.metadata?.providerId===a?.metadata?.providerId&&e.currentProject===t.currentProject||$(r)});export{ye as A,de as B,Oe as C,T as D,we as E,g as F,m as G,b as H,v as I,u as J,h as K,y as L,_e as M,ge as N,ve as O,fe as P,ie as Q,le as R,D as S,Ce as T,se as U,ee as V,ue as W,ae as X,re as Y,ne as Z,je as _,k as a,Fe as b,L as c,j as d,F as f,De as g,A as h,Y as i,me as j,he as k,Ge as l,M as m,Mt as n,Be as o,We as p,_ as q,jt as r,P as s,Q as t,it as u,Te as v,Ee as w,Me as x,Pe as y,p as z};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./panel-store-DmP16Fo0.js";function t(t,r){let i=e.getState(),a=i.getPanelForTab(t)?.tabs.find(e=>e.id===t)?.metadata;i.updateTab(t,{metadata:n(a,r)})}function n(e,t){return{...e,...t}}function r(t){return e.getState().getPanelForTab(t)?.tabs.find(e=>e.id===t)?.metadata}export{t as n,r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{Ot as r,gt as i,xn as a}from"./icons-JMA45Ifw.js";import{a as o,o as s}from"./api-client-OiA8Ida1.js";var c=e(t(),1),l=n();function u({filePath:e,projectName:t}){let n=(0,c.useRef)(null),[u,d]=(0,c.useState)(!1),[f,p]=(0,c.useState)(!1),m=(0,c.useMemo)(()=>{let n=/^(\/|[A-Za-z]:[/\\])/.test(e)?`/api/fs/raw?path=${encodeURIComponent(e)}`:`${s(t)}/files/raw?path=${encodeURIComponent(e)}`,r=o();return r?`${n}&token=${encodeURIComponent(r)}`:n},[e,t]);(0,c.useEffect)(()=>{let r=r=>{let i=r.detail;if(!(i.projectName!==t||i.path!==e))try{n.current?.contentWindow?.location.reload()}catch{}};return window.addEventListener(`file:changed`,r),()=>window.removeEventListener(`file:changed`,r)},[e,t]);let h=(0,c.useCallback)(()=>{window.open(m,`_blank`)},[m]);return f?(0,l.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,l.jsx)(r,{className:`size-10 text-text-subtle`}),(0,l.jsx)(`p`,{className:`text-sm`,children:`Failed to load PDF.`})]}):(0,l.jsxs)(`div`,{className:`flex flex-col h-full`,children:[!u&&(0,l.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,l.jsx)(a,{className:`size-5 animate-spin text-text-subtle`})}),(0,l.jsxs)(`div`,{className:`flex flex-col h-full ${u?``:`hidden`}`,children:[(0,l.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-1.5 border-b border-border bg-background shrink-0`,children:[(0,l.jsx)(`span`,{className:`text-xs text-text-secondary truncate`,children:e}),(0,l.jsxs)(`button`,{onClick:h,className:`flex items-center gap-1 text-xs text-text-secondary hover:text-text-primary transition-colors`,children:[(0,l.jsx)(i,{className:`size-3`}),` Open in new tab`]})]}),(0,l.jsx)(`iframe`,{ref:n,src:m,title:e,className:`flex-1 w-full border-none`,onLoad:()=>d(!0),onError:()=>p(!0)})]})]})}export{u as PdfPreview};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{I as r,L as i,Ln as a,Xt as o,ai as s,dn as c,dt as l,t as u}from"./icons-JMA45Ifw.js";import{r as d}from"./api-client-OiA8Ida1.js";import{_ as f,b as p,g as m,h,t as g,v as _,x as v,y}from"./settings-store-WeJyQVL8.js";import{n as b}from"./utils-Bslrbb-G.js";import"./portal-container-context-BXAsDqrB.js";import"./context-menu-BoQ6lxte.js";import{n as x}from"./use-is-mobile-BXHbkfs9.js";import"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import{a as S,c as C,i as w,l as T,n as E,o as ee,r as te,s as D,t as ne,u as re}from"./adaptive-context-menu-Cq7ynvIn.js";import{n as O,r as k,t as A}from"./format-bytes-B2kC4sbB.js";import{n as j,t as M}from"./metric-chart-canvas-LAMaVJTu.js";var N=e(t(),1),P={wired:`Ethernet`,wireless:`Wi-Fi`,bluetooth:`Bluetooth`,bridge:`Bridge`,docker:`Docker`,infiniband:`InfiniBand`,multipass:`Multipass`,virtual:`Virtual`,vpn:`VPN`,other:`Other`},F=1024,I=e=>Math.round(e);function L(e){return P[e?.kind??`other`]}function R(e,t,n){if(!n||n<=0)return null;let r=(e+t)*8/1e6;return Math.min(100,Math.max(0,r/n*100))}function z(e,t){return`${(e/F).toFixed(1)}/${(t/F).toFixed(1)} GB`}function B(e,t){let n=new Map((t?.disks??[]).map(e=>[e.id,e])),r=new Map((t?.nics??[]).map(e=>[e.id,e])),i=[{key:`cpu`,kind:`cpu`,label:`CPU`,sublabel:e.cpu.model,id:null,detail:`${I(e.cpu.total)}%`,percent:e.cpu.total},{key:`memory`,kind:`memory`,label:`Memory`,sublabel:z(e.mem.usedMB,e.mem.totalMB),id:null,detail:`${I(e.mem.percent)}%`,percent:e.mem.percent}];(e.disks??[]).forEach((e,t)=>{i.push({key:`disk:${e.id}`,kind:`disk`,label:`Disk ${t}`,sublabel:n.get(e.id)?.model??e.id,id:e.id,detail:e.available?`${I(e.busyPercent)}%`:`—`,percent:e.available?e.busyPercent:null})}),(e.nics??[]).forEach(e=>{let t=r.get(e.id);i.push({key:`nic:${e.id}`,kind:`nic`,label:L(t),sublabel:e.id,id:e.id,detail:e.available?A(e.rxBps+e.txBps):`—`,percent:e.available?R(e.rxBps,e.txBps,e.linkMbps):null})}),e.gpus.forEach((e,t)=>{i.push({key:`gpu:${e.id??t}`,kind:`gpu`,label:`GPU ${t}`,sublabel:e.name,id:e.id??null,detail:`${I(e.utilPercent)}%`,percent:e.utilPercent})});let a=e.fans??[];if(a.length>0){let e=Math.max(...a.map(e=>e.rpm));i.push({key:`fans`,kind:`fans`,label:`Fans`,sublabel:`${a.length} sensor${a.length===1?``:`s`}`,id:null,detail:`${e} RPM`,percent:null})}return i}function V(e,t){return t&&e.some(e=>e.key===t)?t:e[0]?.key??`cpu`}var H=3e4;function ie(e){let[t,n]=(0,N.useState)(null),r=(0,N.useRef)(!1),i=(0,N.useRef)(``),a=(0,N.useCallback)(async()=>{if(!r.current){r.current=!0;try{n(await d.get(`/api/system/hardware`))}catch{}finally{r.current=!1}}},[]);return(0,N.useEffect)(()=>{a()},[a]),(0,N.useEffect)(()=>{if(!t)return;let n=new Set([...t.disks.map(e=>e.id),...t.nics.map(e=>e.id),...t.gpus.map(e=>e.id)]),r=e.split(`,`).filter(e=>e&&!n.has(e)).join(`,`);if(!r){i.current=``;return}if(r!==i.current){i.current=r,a();return}let o=setTimeout(()=>void a(),H);return()=>clearTimeout(o)},[t,e,a]),t}var U=n();function W({title:e,subtitle:t,value:n,valueClassName:r}){return(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`h3`,{className:`text-base font-semibold truncate`,children:e}),t&&(0,U.jsx)(`p`,{className:`text-xs text-text-subtle truncate`,title:t,children:t})]}),n!==void 0&&(0,U.jsx)(`span`,{className:b(`text-2xl font-semibold tabular-nums shrink-0`,r),children:n})]})}function G({children:e}){return(0,U.jsx)(`dl`,{className:`grid grid-cols-2 @2xl:grid-cols-4 gap-x-4 gap-y-3`,children:e})}function K({label:e,value:t,title:n}){let r=t==null||t===``?`—`:String(t);return(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`dt`,{className:`text-[11px] text-text-subtle truncate`,children:e}),(0,U.jsx)(`dd`,{className:`text-sm tabular-nums truncate`,title:n??r,children:r})]})}function q({series:e,maxValue:t,height:n=120,legend:r,caption:i,ceiling:a,grid:o,stacked:s}){return(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(i||a)&&(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-[11px] text-text-subtle`,children:[(0,U.jsx)(`span`,{className:`truncate`,children:i}),(0,U.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:a})]}),(0,U.jsx)(M,{series:e,height:n,maxValue:t,grid:o,stacked:s}),r&&r.length>0&&(0,U.jsx)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1`,children:r.map((t,n)=>(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[11px] text-text-subtle`,children:[(0,U.jsx)(`span`,{className:`size-2 rounded-full`,style:{background:e[n]?.color}}),t]},t))})]})}function J(e,t,n=200){return(0,N.useMemo)(()=>e.slice(-n).map(e=>t(e)??0),[e,n])}function ae({segments:e}){let t=e.reduce((e,t)=>e+Math.max(0,t.value),0);return t<=0?null:(0,U.jsx)(`div`,{className:`flex h-3 w-full overflow-hidden rounded-sm bg-surface-hover`,role:`img`,"aria-label":e.map(e=>e.label).join(`, `),children:e.map(e=>(0,U.jsx)(`div`,{className:`h-full`,style:{width:`${Math.max(0,e.value)/t*100}%`,background:e.color},title:e.label},e.label))})}var Y={primary:`var(--color-primary)`,secondary:`var(--color-warning)`,success:`var(--color-success)`,error:`var(--color-error)`};function oe({cores:e,history:t,points:n=200,height:r=260}){let i=(0,N.useRef)(null),a=j(i),{cols:o,rows:s}=y(e.length,a),c=(0,N.useMemo)(()=>{let r=t.slice(-n),i=Array.from({length:e.length},()=>[]);for(let e of r){let t=e.system.cpu.cores;for(let e=0;e<i.length;e++)i[e].push(t[e]??0)}return i},[t,n,e.length]);if(e.length===0)return null;let l=Math.max(28,Math.floor(r/Math.max(1,s))-6);return(0,U.jsx)(`div`,{ref:i,className:`grid gap-1.5`,style:{gridTemplateColumns:`repeat(${Math.max(1,o)}, minmax(0, 1fr))`},"data-testid":`sysmon-core-grid`,"data-core-count":e.length,"data-cols":o,children:c.map((t,n)=>(0,U.jsx)(`div`,{className:`rounded-sm border border-border/70 overflow-hidden px-0.5`,title:`CPU ${n}: ${(e[n]??0).toFixed(0)}%`,children:(0,U.jsx)(M,{series:[{data:t,color:Y.primary}],height:l,maxValue:100})},n))})}function se(e){if(e===void 0)return;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t}d ${n}h ${r}m`:`${n}h ${r}m`}var X=e=>e===void 0?void 0:`${(e/1e3).toFixed(2)} GHz`;function ce(e){if(e===void 0)return;let{physicalCores:t,performanceCores:n,efficiencyCores:r}=e;return n!==void 0&&r!==void 0?`${t} (${n}P + ${r}E)`:String(t)}function le({cpu:e,info:t,history:n,processCount:r,platform:i}){let a=g(e=>e.sysmonTempUnit),o=g(e=>e.sysmonKernelTimes),s=g(e=>e.setSysmonKernelTimes),c=g(e=>e.sysmonCpuGraph),l=g(e=>e.setSysmonCpuGraph),u=g(e=>e.sysmonCpuBottomGraph),d=g(e=>e.setSysmonCpuBottomGraph),y=J(n,e=>e.system.cpu.total),b=J(n,e=>e.system.cpu.kernelPercent),x=J(n,e=>e.system.cpu.tempC),k=J(n,e=>e.system.cpu.powerW),A=J(n,e=>e.system.cpu.currentMHz),j=o&&e.kernelPercent!==void 0,M=p(n.map(e=>e.ts)),P=e=>M?`${e} ${M}`:e,F=i===`darwin`,I=e=>!F||e!==void 0,L=(0,N.useMemo)(()=>{let t=n.slice(-200),r=e.cores.length,i=Array.from({length:r},()=>[]);for(let e of t){let t=e.system.cpu.cores;for(let e=0;e<r;e++)i[e].push(t[e]??0)}return i},[n,e.cores.length]),R=L.map(e=>({data:e,color:Y.primary})),z=L.map(e=>({data:e.map(e=>e/Math.max(1,L.length)),color:Y.primary})),B=()=>u===`none`?null:u===`temperature`?e.tempC===void 0?null:(0,U.jsx)(q,{grid:!0,height:100,caption:P(`Temperature`),ceiling:v(Math.max(...x,1),a),series:[{data:x,color:Y.error}]}):u===`power`?e.powerW===void 0?null:(0,U.jsx)(q,{grid:!0,height:100,caption:P(`Power draw`),ceiling:`${Math.max(...k,1).toFixed(1)} W`,series:[{data:k,color:Y.secondary}]}):e.currentMHz===void 0?null:(0,U.jsx)(q,{grid:!0,height:100,caption:P(`Clock speed`),ceiling:X(t?.maxMHz??Math.max(...A,1)),maxValue:t?.maxMHz,series:[{data:A,color:Y.success}]});return(0,U.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-detail-cpu`,children:[(0,U.jsx)(W,{title:`CPU`,subtitle:t?.name??e.model,value:`${e.total.toFixed(1)}%`}),(0,U.jsxs)(ne,{children:[(0,U.jsx)(re,{children:(0,U.jsxs)(`div`,{className:`space-y-3 select-none`,"data-testid":`sysmon-cpu-graphs`,children:[c===`logical`?(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-[11px] text-text-subtle`,children:[(0,U.jsx)(`span`,{className:`truncate`,children:P(`Utilisation`)}),(0,U.jsx)(`span`,{className:`shrink-0 tabular-nums`,children:`100%`})]}),(0,U.jsx)(oe,{cores:e.cores,history:n})]}):(0,U.jsx)(q,{grid:!0,maxValue:100,caption:P(`Utilisation`),ceiling:`100%`,stacked:c===`threads-stacked`,legend:c===`overall`&&j?[`Utilisation`,`Kernel`]:void 0,series:c===`threads`?R:c===`threads-stacked`?z:j?[{data:y,color:Y.primary},{data:b,color:Y.secondary}]:[{data:y,color:Y.primary}]}),B()]})}),(0,U.jsxs)(E,{children:[(0,U.jsxs)(D,{children:[(0,U.jsx)(T,{children:`Change top graph to`}),(0,U.jsx)(C,{children:(0,U.jsx)(w,{value:c,onValueChange:e=>l(e),children:_.map(e=>(0,U.jsx)(S,{value:e,"data-testid":`sysmon-cpu-graph-${e}`,children:f[e]},e))})})]}),(0,U.jsxs)(D,{children:[(0,U.jsx)(T,{children:`Change bottom graph to`}),(0,U.jsx)(C,{children:(0,U.jsx)(w,{value:u,onValueChange:e=>d(e),children:h.map(e=>(0,U.jsx)(S,{value:e,"data-testid":`sysmon-cpu-bottom-${e}`,children:m[e]},e))})})]}),(0,U.jsx)(ee,{}),(0,U.jsx)(te,{onSelect:()=>s(!o),"data-testid":`sysmon-cpu-kernel-toggle`,children:o?`Hide kernel times`:`Show kernel times`})]})]}),(0,U.jsxs)(G,{children:[(0,U.jsx)(K,{label:`Speed`,value:X(e.currentMHz)}),I(t?.baseMHz)&&(0,U.jsx)(K,{label:`Base speed`,value:X(t?.baseMHz)}),(0,U.jsx)(K,{label:`Max speed`,value:X(t?.maxMHz)}),(0,U.jsx)(K,{label:`Temperature`,value:v(e.tempC,a)}),(0,U.jsx)(K,{label:`Power`,value:e.powerW===void 0?void 0:`${e.powerW.toFixed(1)} W`}),(0,U.jsx)(K,{label:`Processes`,value:r}),(0,U.jsx)(K,{label:`Threads running`,value:e.threadCount}),(0,U.jsx)(K,{label:`Open handles`,value:e.handleCount}),(0,U.jsx)(K,{label:`Up time`,value:se(e.uptimeSec)}),(0,U.jsx)(K,{label:`Sockets`,value:t?.sockets}),(0,U.jsx)(K,{label:`Cores`,value:ce(t)}),(0,U.jsx)(K,{label:`Logical processors`,value:t?.logicalCores??e.cores.length}),(0,U.jsx)(K,{label:`Virtualisation`,value:t?.isVirtualMachine?`Running in a VM`:t?.virtualization}),(0,U.jsx)(K,{label:`L1 cache`,value:t?.l1CacheBytes===void 0?void 0:O(t.l1CacheBytes)}),(0,U.jsx)(K,{label:`L2 cache`,value:t?.l2CacheBytes===void 0?void 0:O(t.l2CacheBytes)}),I(t?.l3CacheBytes)&&(0,U.jsx)(K,{label:`L3 cache`,value:t?.l3CacheBytes===void 0?void 0:O(t.l3CacheBytes)}),!F&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:`Cpufreq driver`,value:t?.freqDriver}),(0,U.jsx)(K,{label:`Governor`,value:t?.freqGovernor}),(0,U.jsx)(K,{label:`Power preference`,value:t?.powerPreference})]})]})]})}function ue({mem:e,info:t,history:n,platform:r}){let i=r===`darwin`,a=J(n,e=>e.system.mem.percent),o=J(n,e=>{let t=e.system.mem.swapTotalMB??0;return t>0?(e.system.mem.swapUsedMB??0)/t*100:0}),s=e.inUseBytes!==void 0,c=[{label:`In use`,value:e.inUseBytes,color:`var(--color-primary)`},{label:`Modified`,value:e.modifiedBytes,color:`var(--color-warning)`},{label:i?`Cached`:`Standby`,value:e.standbyBytes,color:`var(--color-success)`},{label:`Free`,value:e.freeBytes,color:`var(--color-border)`}].filter(e=>e.value!==void 0),l=p(n.map(e=>e.ts)),u=e=>l?`${e} ${l}`:e,d=(e.swapTotalMB??0)>0;return(0,U.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-detail-memory`,children:[(0,U.jsx)(W,{title:`Memory`,subtitle:`${k(e.usedMB)} of ${k(e.totalMB)} in use`,value:`${e.percent.toFixed(1)}%`}),(0,U.jsx)(q,{grid:!0,maxValue:100,caption:u(`Memory usage`),ceiling:k(e.totalMB),series:[{data:a,color:Y.primary}]}),d&&(0,U.jsx)(q,{grid:!0,height:90,maxValue:100,caption:u(`Swap usage`),ceiling:k(e.swapTotalMB??0),series:[{data:o,color:Y.success}]}),s&&(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(ae,{segments:c}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-x-4 gap-y-1 text-[11px] text-text-subtle`,children:c.map(e=>(0,U.jsxs)(`span`,{children:[e.label,` `,O(e.value)]},e.label))})]}),(0,U.jsxs)(G,{children:[(0,U.jsx)(K,{label:`Available`,value:k(e.availableMB)}),(0,U.jsx)(K,{label:`Cached`,value:e.cachedMB===void 0?void 0:k(e.cachedMB)}),!i&&(0,U.jsx)(K,{label:`Committed`,value:e.committedMB===void 0?void 0:`${k(e.committedMB)} / ${e.commitLimitMB===void 0?`?`:k(e.commitLimitMB)}`}),(0,U.jsx)(K,{label:`Swap`,value:e.swapTotalMB===void 0?void 0:`${k(e.swapUsedMB??0)} / ${k(e.swapTotalMB)}`}),(0,U.jsx)(K,{label:i?`Compressed`:`Compressed (zram)`,value:e.zramCompressedMB===void 0?void 0:k(e.zramCompressedMB)}),(0,U.jsx)(K,{label:i?`Compression savings`:`Savings (zram)`,value:e.zramSavingsMB===void 0?void 0:k(e.zramSavingsMB)}),!t?.unified&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:`Slots used`,value:t===void 0?void 0:`${t.devices.length}${t.slotsTotal?` of ${t.slotsTotal}`:``}`}),(0,U.jsx)(K,{label:`Maximum capacity`,value:t?.maxCapacityBytes===void 0?void 0:O(t.maxCapacityBytes)})]})]}),t&&t.devices.length>0&&(0,U.jsxs)(`div`,{className:`space-y-1`,children:[!t.unified&&(0,U.jsx)(`h4`,{className:`text-xs font-medium text-text-secondary`,children:`Slots`}),(0,U.jsx)(`div`,{className:`rounded-md border border-border divide-y divide-border`,children:t.devices.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-3 py-2 text-xs`,children:[(0,U.jsx)(`span`,{className:`font-medium shrink-0`,children:e.locator}),(0,U.jsx)(`span`,{className:`text-text-subtle truncate`,children:[e.manufacturer,e.ramType,e.formFactor,e.speedMts?`${e.speedMts} MT/s`:null].filter(Boolean).join(` · `)}),(0,U.jsx)(`span`,{className:`tabular-nums shrink-0`,children:O(e.sizeBytes)})]},e.locator))})]})]})}var de=90,fe=75;function pe(e){return e>=de?`bg-error`:e>=fe?`bg-warning`:`bg-primary`}function me({partitions:e}){return e.length===0?null:(0,U.jsxs)(`section`,{className:`space-y-2`,"data-testid":`sysmon-partitions`,children:[(0,U.jsx)(`h4`,{className:`text-sm font-medium`,children:`Partitions`}),(0,U.jsx)(`ul`,{className:`space-y-2`,children:e.map(e=>(0,U.jsx)(he,{part:e},e.id))})]})}function he({part:e}){let t=e.mounts.find(e=>e.usedBytes!==void 0&&e.totalBytes),n=t?Math.min(100,t.usedBytes/t.totalBytes*100):void 0;return(0,U.jsxs)(`li`,{className:`rounded-md border border-border px-3 py-2 space-y-1.5`,"data-testid":`sysmon-partition`,children:[(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,U.jsx)(`span`,{className:`text-sm font-medium truncate`,title:e.devicePath,children:e.devicePath}),(0,U.jsxs)(`span`,{className:`text-[11px] text-text-subtle shrink-0 tabular-nums`,children:[e.filesystem??`—`,` · `,O(e.sizeBytes)]})]}),e.mounts.length===0?(0,U.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Not mounted`}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`p`,{className:`text-[11px] text-text-subtle truncate`,title:e.mounts.map(e=>e.mountPoint).join(`, `),children:e.mounts.map(e=>e.mountPoint).join(`, `)}),n===void 0?(0,U.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Usage unavailable`}):(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`div`,{className:`h-1.5 w-full rounded-full bg-surface-hover overflow-hidden`,children:(0,U.jsx)(`div`,{className:b(`h-full rounded-full`,pe(n)),style:{width:`${n}%`}})}),(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-2 text-[11px] text-text-subtle tabular-nums`,children:[(0,U.jsxs)(`span`,{children:[O(t.usedBytes),` of `,O(t.totalBytes)]}),(0,U.jsxs)(`span`,{children:[n.toFixed(0),`%`]})]})]})]})]})}var ge={hdd:`Hard disk`,ssd:`SSD`,nvme:`NVMe`,emmc:`eMMC`,sd:`SD card`,optical:`Optical`,thumb:`Removable`,unknown:`Unknown`};function _e({disk:e,info:t,index:n,history:r}){let i=g(e=>e.sysmonTempUnit),a=t=>t.system.disks?.find(t=>t.id===e.id),o=J(r,e=>a(e)?.busyPercent),s=J(r,e=>a(e)?.readBps),c=J(r,e=>a(e)?.writeBps);return(0,U.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-detail-disk`,"data-disk-id":e.id,children:[(0,U.jsx)(W,{title:`Disk ${n}`,subtitle:t?.model??e.id,value:e.available?`${e.busyPercent.toFixed(0)}%`:`—`}),(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Active time`}),(0,U.jsx)(q,{maxValue:100,series:[{data:o,color:Y.primary}],height:90})]}),(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Transfer rate`}),(0,U.jsx)(q,{height:90,legend:[`Read`,`Write`],series:[{data:s,color:Y.success},{data:c,color:Y.secondary}]})]}),(0,U.jsxs)(G,{children:[(0,U.jsx)(K,{label:`Read speed`,value:e.available?A(e.readBps):void 0}),(0,U.jsx)(K,{label:`Write speed`,value:e.available?A(e.writeBps):void 0}),(0,U.jsx)(K,{label:`Avg. response time`,value:e.available?`${e.responseMs.toFixed(2)} ms`:void 0}),(0,U.jsx)(K,{label:`Temperature`,value:v(e.tempC,i)}),(0,U.jsx)(K,{label:`Total read`,value:O(e.readTotal)}),(0,U.jsx)(K,{label:`Total written`,value:O(e.writeTotal)}),(0,U.jsx)(K,{label:`Capacity`,value:t===void 0?void 0:O(t.capacityBytes)}),(0,U.jsx)(K,{label:`Type`,value:t===void 0?void 0:ge[t.kind]??t.kind}),(0,U.jsx)(K,{label:`System disk`,value:t===void 0?void 0:t.systemDisk?`Yes`:`No`}),(0,U.jsx)(K,{label:`Removable`,value:t===void 0?void 0:t.removable?`Yes`:`No`}),(0,U.jsx)(K,{label:`Rotation`,value:t?.rotationRpm===void 0?void 0:`${t.rotationRpm} RPM`}),(0,U.jsx)(K,{label:`Serial`,value:t?.serial})]}),(0,U.jsx)(me,{partitions:t?.partitions??[]})]})}var ve={connected:`Connected`,connecting:`Connecting`,disconnected:`Disconnected`,unavailable:`Unavailable`,unknown:`Unknown`};function ye({nic:e,info:t,history:n,platform:r}){let i=t=>t.system.nics?.find(t=>t.id===e.id),a=J(n,e=>i(e)?.rxBps),o=J(n,e=>i(e)?.txBps);return(0,U.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-detail-nic`,"data-nic-id":e.id,children:[(0,U.jsx)(W,{title:P[t?.kind??`other`],subtitle:[e.id,t?.deviceName].filter(Boolean).join(` · `),value:e.available?A(e.rxBps+e.txBps):`—`}),(0,U.jsx)(q,{legend:[`Receive`,`Send`],series:[{data:a,color:Y.primary},{data:o,color:Y.secondary}]}),(0,U.jsxs)(G,{children:[(0,U.jsx)(K,{label:`State`,value:ve[e.state]}),(0,U.jsx)(K,{label:`Receive`,value:e.available?A(e.rxBps):void 0}),(0,U.jsx)(K,{label:`Send`,value:e.available?A(e.txBps):void 0}),(0,U.jsx)(K,{label:`Maximum bitrate`,value:e.linkMbps===void 0?void 0:`${e.linkMbps} Mbps`}),(0,U.jsx)(K,{label:`Total received`,value:O(e.rxTotal)}),(0,U.jsx)(K,{label:`Total sent`,value:O(e.txTotal)}),(0,U.jsx)(K,{label:`Network name`,value:e.ssid}),(0,U.jsx)(K,{label:`Signal`,value:e.signalPercent===void 0?void 0:`${e.signalPercent}%`}),(0,U.jsx)(K,{label:`Frequency`,value:e.frequencyMHz===void 0?void 0:`${(e.frequencyMHz/1e3).toFixed(1)} GHz`}),r!==`darwin`&&(0,U.jsx)(K,{label:`Driver`,value:t?.driver}),(0,U.jsx)(K,{label:`Hardware address`,value:t?.mac}),(0,U.jsx)(K,{label:`IPv4`,value:t?.ipv4.join(`, `),title:t?.ipv4.join(`
|
|
2
|
-
`)}),(0,U.jsx)(K,{label:`IPv6`,value:t?.ipv6.join(`, `),title:t?.ipv6.join(`
|
|
3
|
-
`)})]})]})}function Z(e,t){if(!(e===void 0&&t===void 0))return`${e===void 0?`?`:`Gen ${e}`} x${t??`?`}`}function be({gpu:e,info:t,index:n,history:r,platform:i}){let a=g(e=>e.sysmonTempUnit),o=i===`darwin`,s=t=>t.system.gpus.find(t=>e.id?t.id===e.id:t.name===e.name),c=J(r,e=>s(e)?.utilPercent),l=J(r,e=>s(e)?.encodePercent),u=J(r,e=>s(e)?.decodePercent),d=e.vramTotalMB>0,f=!d&&e.sharedTotalMB!==void 0,m=J(r,e=>{let t=s(e);return d?t?.vramUsedMB:t?.sharedUsedMB}),h=d?e.vramTotalMB:e.sharedTotalMB??0,_=e.encodePercent!==void 0||e.decodePercent!==void 0,y=t?.encodeDecodeShared===!0,b=p(r.map(e=>e.ts)),x=e=>b?`${e} ${b}`:e;return(0,U.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-detail-gpu`,"data-gpu-id":e.id??n,children:[(0,U.jsx)(W,{title:`GPU ${n}`,subtitle:e.name,value:`${e.utilPercent.toFixed(0)}%`}),(0,U.jsx)(q,{grid:!0,maxValue:100,caption:x(`Utilisation`),ceiling:`100%`,series:[{data:c,color:Y.primary}]}),_&&(0,U.jsx)(q,{grid:!0,height:90,maxValue:100,caption:x(y?`Video encode/decode utilisation`:`Video encode and decode utilisation`),ceiling:`100%`,legend:y?void 0:[`Encode`,`Decode`],series:y?[{data:l,color:Y.secondary}]:[{data:l,color:Y.secondary},{data:u,color:Y.error}]}),(d||f)&&(0,U.jsx)(q,{grid:!0,height:90,maxValue:h,caption:x(d?`Video memory usage`:`Memory usage`),ceiling:k(h),series:[{data:m,color:Y.success}]}),(0,U.jsxs)(G,{children:[(!o||d)&&(0,U.jsx)(K,{label:`Video memory`,value:d?`${k(e.vramUsedMB)} / ${k(e.vramTotalMB)}`:void 0}),(0,U.jsx)(K,{label:d?`Shared memory`:`Memory usage`,value:e.sharedTotalMB===void 0?void 0:`${k(e.sharedUsedMB??0)} / ${k(e.sharedTotalMB)}`}),!o&&(0,U.jsx)(K,{label:y?`Video encode/decode`:`Video encode`,value:e.encodePercent===void 0?void 0:`${e.encodePercent.toFixed(0)}%`}),!o&&!y&&(0,U.jsx)(K,{label:`Video decode`,value:e.decodePercent===void 0?void 0:`${e.decodePercent.toFixed(0)}%`}),(0,U.jsx)(K,{label:`Clock`,value:e.clockMHz===void 0?void 0:`${e.clockMHz} MHz${e.clockMaxMHz?` / ${e.clockMaxMHz}`:``}`}),!o&&(0,U.jsx)(K,{label:`Memory clock`,value:e.memClockMHz===void 0?void 0:`${e.memClockMHz} MHz${e.memClockMaxMHz?` / ${e.memClockMaxMHz}`:``}`}),(0,U.jsx)(K,{label:`Power`,value:e.powerW===void 0?void 0:`${e.powerW.toFixed(1)} W${e.powerMaxW?` / ${e.powerMaxW}`:``}`}),(0,U.jsx)(K,{label:`Temperature`,value:v(e.tempC,a)}),o&&(0,U.jsx)(K,{label:`GPU cores`,value:t?.coreCount?.toString()}),(0,U.jsx)(K,{label:`Vendor`,value:t?.vendor}),(0,U.jsx)(K,{label:`Driver`,value:t?.driver===void 0?void 0:[t.driver,t.driverVersion].filter(Boolean).join(` `)}),o&&(0,U.jsx)(K,{label:`Metal`,value:t?.metalVersion}),!o&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:`OpenGL`,value:t?.openglVersion}),(0,U.jsx)(K,{label:`Vulkan`,value:t?.vulkanVersion}),(0,U.jsx)(K,{label:`PCI bus address`,value:e.id}),(0,U.jsx)(K,{label:`PCIe link`,value:Z(t?.pcieGen,t?.pcieLanes)}),(0,U.jsx)(K,{label:`PCIe maximum`,value:Z(t?.pcieMaxGen,t?.pcieMaxLanes)})]})]})]})}var Q=e=>e===void 0?void 0:`${e} RPM`;function xe({fans:e,platform:t}){let n=g(e=>e.sysmonTempUnit),r=t===`darwin`,i=e.length>0?Math.max(...e.map(e=>e.rpm)):0;return(0,U.jsxs)(`div`,{className:`space-y-4`,"data-testid":`sysmon-detail-fans`,"data-fan-count":e.length,children:[(0,U.jsx)(W,{title:`Fans`,subtitle:`${e.length} sensor${e.length===1?``:`s`}`,value:`${i} RPM`}),(0,U.jsx)(`div`,{className:`rounded-md border border-border divide-y divide-border`,children:e.map(e=>(0,U.jsxs)(`div`,{className:`px-3 py-2 space-y-2`,"data-testid":`sysmon-fan-row`,children:[(0,U.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,U.jsx)(`span`,{className:`text-sm font-medium truncate`,title:e.id,children:e.label}),(0,U.jsxs)(`span`,{className:`text-sm tabular-nums shrink-0`,children:[e.rpm,` RPM`]})]}),(0,U.jsx)(G,{children:r?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:`Minimum`,value:Q(e.minRpm)}),(0,U.jsx)(K,{label:`Maximum`,value:Q(e.maxRpm)})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{label:`Duty cycle`,value:e.pwmPercent===void 0?void 0:`${e.pwmPercent.toFixed(0)}%`}),(0,U.jsx)(K,{label:e.tempName??`Temperature`,value:v(e.tempC,n)})]})})]},e.id))})]})}var Se={cpu:l,memory:c,disk:o,nic:s,gpu:a,fans:u};function Ce(e){return e>80?`bg-error`:e>50?`bg-warning`:`bg-primary`}function we({entry:e,selected:t,showChevron:n,onSelect:r}){let a=Se[e.kind];return(0,U.jsxs)(`button`,{type:`button`,onClick:()=>r(e.key),"aria-current":t,"data-testid":`sysmon-device-row`,"data-device-key":e.key,className:b(`w-full min-h-11 px-3 py-2 flex items-center gap-3 text-left transition-colors`,t?`bg-primary/10 text-text-primary`:`hover:bg-surface-hover`),children:[(0,U.jsx)(a,{className:`size-4 shrink-0 text-text-subtle`}),(0,U.jsxs)(`span`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`span`,{className:`block text-sm truncate`,children:e.label}),(0,U.jsx)(`span`,{className:`block text-[11px] text-text-subtle truncate`,title:e.sublabel,children:e.sublabel}),e.percent!==null&&(0,U.jsx)(`span`,{className:`mt-1 block h-1 w-full rounded-full bg-surface-hover overflow-hidden`,children:(0,U.jsx)(`span`,{className:b(`block h-full transition-[width]`,Ce(e.percent)),style:{width:`${Math.max(1,Math.min(100,e.percent))}%`}})})]}),(0,U.jsx)(`span`,{className:`text-xs tabular-nums text-text-secondary shrink-0`,children:e.detail}),n&&(0,U.jsx)(i,{className:`size-4 shrink-0 text-text-subtle`})]})}function $({entry:e,system:t,inventory:n,history:r,platform:i}){switch(e.kind){case`cpu`:return(0,U.jsx)(le,{cpu:t.cpu,info:n?.cpu,history:r,processCount:t.processCount,platform:i});case`memory`:return(0,U.jsx)(ue,{mem:t.mem,info:n?.memory,history:r,platform:i});case`disk`:{let i=(t.disks??[]).findIndex(t=>t.id===e.id),a=i>=0?t.disks?.[i]:void 0;return a?(0,U.jsx)(_e,{disk:a,index:i,info:n?.disks.find(e=>e.id===a.id),history:r}):null}case`nic`:{let a=(t.nics??[]).find(t=>t.id===e.id);return a?(0,U.jsx)(ye,{nic:a,info:n?.nics.find(e=>e.id===a.id),history:r,platform:i}):null}case`gpu`:{let a=t.gpus.findIndex(t=>e.id?t.id===e.id:!0),o=a>=0?t.gpus[a]:void 0;return o?(0,U.jsx)(be,{gpu:o,index:a,info:n?.gpus.find(e=>e.id===o.id),history:r,platform:i}):null}case`fans`:return(0,U.jsx)(xe,{fans:t.fans??[],platform:i});default:return null}}function Te({system:e,history:t,device:n,onDeviceChange:i,platform:a}){let o=x(),s=ie((0,N.useMemo)(()=>[...(e.disks??[]).map(e=>e.id),...(e.nics??[]).map(e=>e.id),...e.gpus.map(e=>e.id).filter(e=>!!e)].join(`,`),[e.disks,e.nics,e.gpus])),c=(0,N.useMemo)(()=>B(e,s),[e,s]),l=V(c,n),u=c.find(e=>e.key===l),d=(0,U.jsx)(`div`,{className:`divide-y divide-border`,role:`list`,"data-testid":`sysmon-device-list`,children:c.map(e=>(0,U.jsx)(we,{entry:e,selected:!o&&e.key===l,showChevron:o,onSelect:i},e.key))});return o?n===null||!u||l!==n?(0,U.jsx)(`div`,{className:`h-full overflow-y-auto`,"data-testid":`sysmon-performance`,children:d}):(0,U.jsxs)(`div`,{className:`h-full flex flex-col`,"data-testid":`sysmon-performance`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>i(null),className:`shrink-0 min-h-11 px-3 flex items-center gap-2 text-sm border-b border-border`,children:[(0,U.jsx)(r,{className:`size-4`}),`Devices`]}),(0,U.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto p-4 @container`,children:(0,U.jsx)($,{entry:u,system:e,inventory:s,history:t,platform:a})})]}):(0,U.jsxs)(`div`,{className:`h-full flex min-h-0`,"data-testid":`sysmon-performance`,children:[(0,U.jsx)(`div`,{className:`w-56 shrink-0 border-r border-border overflow-y-auto`,children:d}),(0,U.jsx)(`div`,{className:`flex-1 min-w-0 overflow-y-auto p-4 @container`,children:u&&(0,U.jsx)($,{entry:u,system:e,inventory:s,history:t,platform:a})})]})}export{Te as PerformancePanel};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";var r=e(t(),1),i=n(),a=(0,r.createContext)(void 0);function o({container:e,children:t}){return(0,i.jsx)(a.Provider,{value:e,children:t})}function s(){return(0,r.useContext)(a)}export{s as n,o as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import{E as r,Kr as i,Sr as a,hr as o,qr as s,xn as c}from"./icons-JMA45Ifw.js";import{k as l,r as u}from"./api-client-OiA8Ida1.js";import{t as d}from"./button-Br60hGkw.js";import{t as f}from"./input-CKGoVpYv.js";import{Hn as p}from"./index-ItT-dTPV.js";import{t as m}from"./separator-BOYUIPkH.js";import{i as h,n as g,o as _,r as v,s as y,t as b}from"./telegram-bot-token-field-BiqKbXwE.js";var x=e(t(),1),S=n(),C=e=>e instanceof Error?e.message:String(e);function w(e){return e.running?e.botUsername?`Answering as @${e.botUsername}`:`Running`:e.enabled?`Turned on, but not running — check the bot token`:`Off`}function T(){let[e,t]=(0,x.useState)(null),[n,r]=(0,x.useState)(null),[i,o]=(0,x.useState)(!1),f=(0,x.useCallback)(async()=>{try{let e=await u.get(`/api/settings/clawbot/telegram`);return t(e),r(null),e}catch(e){return r(C(e)),null}},[]);(0,x.useEffect)(()=>{f()},[f]);let{link:p,starting:m,connect:T,cancel:E}=h(`/api/settings/clawbot/telegram/connect`,e,f),D=async e=>{o(!0),t(t=>t&&{...t,enabled:e});try{await u.put(`/api/settings/clawbot`,{enabled:e})}catch(t){l.error(e?`Could not turn PPMBot on`:`Could not turn PPMBot off`,{description:C(t)})}finally{o(!1),await f()}},O=async e=>{try{await u.del(`/api/settings/clawbot/paired/${encodeURIComponent(e.chatId)}`),l.success(`Disconnected ${e.name}`,{description:`It can no longer use PPMBot.`})}catch(e){l.error(`Could not disconnect`,{description:C(e)})}finally{await f()}},k=e?.chats??[];return(0,S.jsxs)(`section`,{className:`space-y-3`,children:[(0,S.jsx)(_,{title:`Telegram`,children:`Chat with PPMBot through a Telegram bot of its own. A chat connected here can run tasks on this machine, so connect only your own.`}),n&&(0,S.jsx)(`p`,{className:`text-xs text-error`,children:n}),e?.configured&&(0,S.jsxs)(S.Fragment,{children:[e.sharedWithNotifications&&(0,S.jsxs)(`p`,{className:`flex gap-2 rounded-lg border border-warning/40 px-3 py-2 text-xs leading-relaxed`,children:[(0,S.jsx)(s,{className:`mt-0.5 size-3.5 shrink-0 text-warning`}),(0,S.jsx)(`span`,{children:`Notifications use this bot too, so alerts arrive in your PPMBot chats. Paste a new bot's token below to give PPMBot its own.`})]}),(0,S.jsx)(`div`,{className:`rounded-lg border border-border`,children:(0,S.jsx)(y,{label:`Turn on PPMBot`,note:w(e),checked:e.enabled,disabled:i,onChange:e=>void D(e)})}),k.length>0&&(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Chats that can use PPMBot`}),(0,S.jsx)(v,{chats:k,onDisconnect:e=>void O(e)})]}),p?(0,S.jsx)(g,{link:p,botUsername:e.botUsername,error:e.connect.error,onCancel:()=>void E()}):(0,S.jsxs)(d,{onClick:()=>void T(),disabled:m,className:`min-h-11 w-full cursor-pointer gap-2 sm:w-auto md:min-h-9`,children:[m?(0,S.jsx)(c,{className:`size-4 animate-spin`}):(0,S.jsx)(a,{className:`size-4`}),k.length===0?`Connect Telegram`:`Connect another chat`]})]}),e&&!e.configured&&(0,S.jsx)(`p`,{className:`text-xs leading-relaxed text-muted-foreground`,children:`Create a new bot for PPMBot rather than reusing the one in Settings → Notifications, so alerts stay out of your PPMBot chats.`}),e&&(0,S.jsx)(b,{endpoint:`/api/settings/clawbot/telegram`,usernameExample:`my_ppm_assistant_bot`,configured:e.configured,botUsername:e.botUsername,onSaved:()=>void f()})]})}function E(){let[e,t]=(0,x.useState)(null),[n,a]=(0,x.useState)(!1),[s,c]=(0,x.useState)(null),[l,h]=(0,x.useState)(``),[g,_]=(0,x.useState)(!0),[v,y]=(0,x.useState)(!1),[b,C]=(0,x.useState)(2e3),[w,E]=(0,x.useState)([]),[D,O]=(0,x.useState)(`_global`),[k,A]=(0,x.useState)([]),j=(0,x.useRef)(void 0),M=(0,x.useCallback)(async(e=D)=>{try{E(await u.get(`/api/settings/clawbot/memories?project=${encodeURIComponent(e)}`))}catch{}},[D]),N=(0,x.useCallback)(async()=>{try{A(await u.get(`/api/settings/clawbot/tasks?limit=20`))}catch{}},[]),P=async e=>{try{await u.del(`/api/settings/clawbot/memories/${e}`),E(t=>t.filter(t=>t.id!==e))}catch{}};(0,x.useEffect)(()=>(u.get(`/api/settings/clawbot`).then(e=>{t(e),h(e.system_prompt),_(e.show_tool_calls),y(e.show_thinking),C(e.debounce_ms)}).catch(()=>{}),M(`_global`),N(),j.current=setInterval(N,1e4),()=>{j.current&&clearInterval(j.current)}),[M,N]);let F=async()=>{a(!0),c(null);try{let e={system_prompt:l,show_tool_calls:g,show_thinking:v,debounce_ms:b};t(await u.put(`/api/settings/clawbot`,e)),c({type:`ok`,msg:`Saved`})}catch(e){c({type:`err`,msg:e.message})}finally{a(!1)}};if(!e)return(0,S.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`});let I={pending:`⏳`,running:`🔄`,completed:`✅`,failed:`❌`,timeout:`⏱`},L={running:`text-primary`,completed:`text-success`,failed:`text-destructive`,timeout:`text-warning`};return(0,S.jsxs)(`div`,{className:`space-y-4`,children:[(0,S.jsx)(T,{}),(0,S.jsx)(m,{}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsx)(`p`,{className:`text-xs font-medium`,children:`Delegated Tasks`}),(0,S.jsx)(d,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:N,children:(0,S.jsx)(o,{className:`size-3`})})]}),k.length===0?(0,S.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No delegated tasks yet. The coordinator will create tasks when you ask it to work on a project.`}):(0,S.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:k.map(e=>{let t=e.completed_at?`${Math.round((e.completed_at-e.created_at)/60)}m`:`${Math.round((Date.now()/1e3-e.created_at)/60)}m`;return(0,S.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border p-2 text-[11px]`,children:[(0,S.jsx)(`span`,{className:L[e.status]??``,children:I[e.status]??`?`}),(0,S.jsx)(`span`,{className:`font-medium shrink-0`,children:e.project_name}),(0,S.jsx)(`span`,{className:`truncate text-muted-foreground flex-1`,children:e.prompt.slice(0,60)}),(0,S.jsx)(`span`,{className:`text-[10px] text-muted-foreground shrink-0`,children:t})]},e.id)})})]}),(0,S.jsx)(m,{}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,S.jsx)(r,{className:`size-3.5 text-muted-foreground`}),(0,S.jsx)(`p`,{className:`text-xs font-medium`,children:`Memory & Identity`})]}),(0,S.jsx)(d,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:()=>M(D),children:(0,S.jsx)(o,{className:`size-3`})})]}),(0,S.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Facts the bot remembers across sessions. Use /remember on Telegram to add, or delete here.`}),w.length===0?(0,S.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No memories stored yet. Send /start on Telegram and introduce yourself.`}):(0,S.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:w.map(e=>(0,S.jsxs)(`div`,{className:`flex items-start justify-between rounded-md border p-2 gap-1`,children:[(0,S.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`p`,{className:`text-[11px] break-words`,children:e.content}),(0,S.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[e.category,` · `,e.project]})]}),(0,S.jsx)(d,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 text-destructive hover:text-destructive cursor-pointer shrink-0`,onClick:()=>P(e.id),children:(0,S.jsx)(i,{className:`size-3`})})]},e.id))})]}),(0,S.jsx)(m,{}),(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Custom Instructions`}),(0,S.jsx)(`textarea`,{placeholder:`Additional instructions for the coordinator (optional)...`,value:l,onChange:e=>h(e.target.value),className:`flex w-full rounded-md border border-input bg-background px-3 py-2 text-xs min-h-[60px] resize-y ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,rows:3}),(0,S.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Extra instructions added to the coordinator identity. Leave empty to use defaults from coordinator.md.`})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsx)(`p`,{className:`text-xs`,children:`Show tool calls`}),(0,S.jsx)(p,{checked:g,onCheckedChange:_})]}),(0,S.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,S.jsx)(`p`,{className:`text-xs`,children:`Show thinking`}),(0,S.jsx)(p,{checked:v,onCheckedChange:y})]})]}),(0,S.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,S.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Debounce (ms)`}),(0,S.jsx)(f,{type:`number`,min:0,max:3e4,step:500,value:b,onChange:e=>C(Number(e.target.value)),className:`h-7 text-xs w-24`}),(0,S.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Merge rapid messages within this window. 0 = no debounce.`})]}),(0,S.jsx)(d,{variant:`default`,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,disabled:n,onClick:F,children:n?`Saving...`:`Save`}),s&&(0,S.jsx)(`p`,{className:`text-[11px] ${s.type===`ok`?`text-success`:`text-destructive`}`,children:s.msg})]})}export{E as PPMBotSettingsSection};
|
|
Binary file
|
|
Binary file
|