@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
|
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";import{n as r}from"./utils-Bslrbb-G.js";e(t(),1);var i=n();function a({className:e,type:t,...n}){return(0,i.jsx)(`input`,{type:t,"data-slot":`input`,className:r(`h-9 w-full min-w-0 rounded-lg border border-border bg-surface px-3 py-2 text-base md:text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50`,`selection:bg-primary selection:text-primary-foreground`,`file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground`,`aria-invalid:border-destructive`,e),...n})}export{a as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import"./api-client-OiA8Ida1.js";import{t}from"./settings-store-WeJyQVL8.js";import{Hn as n,ni as r}from"./index-ItT-dTPV.js";var i=e();function a(){let{jiraEnabled:e,setJiraEnabled:a}=t(r(e=>({jiraEnabled:e.jiraEnabled,setJiraEnabled:e.setJiraEnabled})));return(0,i.jsxs)(`div`,{className:`space-y-4`,children:[(0,i.jsxs)(`section`,{className:`flex items-center justify-between gap-4`,children:[(0,i.jsxs)(`div`,{className:`min-w-0`,children:[(0,i.jsx)(`p`,{className:`text-sm font-medium`,children:`Jira Watcher`}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Auto-debug Jira tickets`})]}),(0,i.jsx)(n,{checked:e,onCheckedChange:a})]}),(0,i.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e?`Configure projects, watchers, and results in the Jira tab on the sidebar.`:`Enable to add a Jira tab to the sidebar, where projects and watchers are configured.`})]})}export{a as JiraWatcherSection};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import"./api-client-OiA8Ida1.js";import{xi as e}from"./index-ItT-dTPV.js";export{e as useKeybindingsStore};
|
|
@@ -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{Cn as r,fr as i,gr as a,r as o}from"./icons-JMA45Ifw.js";import"./api-client-OiA8Ida1.js";import{t as s}from"./button-Br60hGkw.js";import{gi as c,hi as l,mi as u,vi as d,xi as f}from"./index-ItT-dTPV.js";var p=e(t(),1),m=n(),h=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],g=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function _({actionId:e,combo:t,locked:n}){let[i,a]=(0,p.useState)(!1),o=f(e=>e.setBinding),s=(0,p.useRef)(null),l=(0,p.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){a(!1);return}let n=c(t);n&&(o(e,n),a(!1))},[e,o]);return(0,p.useEffect)(()=>{if(i)return document.addEventListener(`keydown`,l,!0),()=>document.removeEventListener(`keydown`,l,!0)},[i,l]),(0,p.useEffect)(()=>{if(!i)return;let e=e=>{s.current&&!s.current.contains(e.target)&&a(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[i]),n?(0,m.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded border border-border bg-muted px-2 py-0.5 text-[11px] font-mono text-muted-foreground`,children:[(0,m.jsx)(r,{className:`size-2.5`}),d(t)]}):i?(0,m.jsx)(`button`,{ref:s,className:`inline-flex items-center rounded border-2 border-primary bg-primary/10 px-2 py-0.5 text-[11px] font-mono text-primary animate-pulse`,children:`Press keys...`}):(0,m.jsx)(`button`,{ref:s,onClick:()=>a(!0),className:`inline-flex items-center rounded border border-border bg-surface px-2 py-0.5 text-[11px] font-mono text-foreground hover:border-primary hover:bg-primary/5 transition-colors cursor-pointer`,title:`Click to change shortcut`,children:d(t)})}function v(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:r}=f(),c=u(e=>e.contributions),d=c?.keybindings??[],p=c?.commands??[];return(0,m.jsxs)(`div`,{className:`space-y-3`,children:[(0,m.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,m.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(r).length>0&&(0,m.jsxs)(s,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,m.jsx)(a,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,m.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-warning/30 bg-warning/5 px-2.5 py-2`,children:[(0,m.jsx)(o,{className:`size-3.5 text-warning shrink-0 mt-0.5`}),(0,m.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,g.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),h.map(n=>{let i=l.filter(e=>e.category===n.key);return i.length===0?null:(0,m.jsxs)(`div`,{className:`space-y-1`,children:[(0,m.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,m.jsx)(`div`,{className:`space-y-0.5`,children:i.map(n=>{let i=e(n.id),o=n.id in r;return(0,m.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,m.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,m.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,m.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,m.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,m.jsx)(_,{actionId:n.id,combo:i,locked:n.locked}),o&&!n.locked&&(0,m.jsx)(`button`,{onClick:()=>t(n.id),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,m.jsx)(a,{className:`size-3`})})]})]},n.id)})})]},n.key)}),d.length>0&&(0,m.jsxs)(`div`,{className:`space-y-1`,children:[(0,m.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Extensions`}),(0,m.jsx)(`div`,{className:`space-y-0.5`,children:d.map(n=>{let o=p.find(e=>e.command===n.command)?.title??n.command,s=`ext:${n.command}`,c=e(s)||n.key,l=s in r;return(0,m.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,m.jsx)(i,{className:`size-3 text-muted-foreground shrink-0`}),(0,m.jsx)(`span`,{className:`text-xs text-foreground`,children:o})]}),(0,m.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,m.jsx)(_,{actionId:s,combo:c}),l&&(0,m.jsx)(`button`,{onClick:()=>t(s),className:`flex items-center justify-center size-5 rounded text-muted-foreground hover:text-foreground hover:bg-surface-elevated transition-colors`,title:`Reset to default`,children:(0,m.jsx)(a,{className:`size-3`})})]})]},s)})})]})]})}export{v as KeyboardShortcutsSection};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/lsp-client-LnKiMWeG.js","assets/rolldown-runtime-C5c2KzVm.js","assets/index-ItT-dTPV.js","assets/preload-helper-CM8YhcCa.js","assets/vendor-ui-CS1GvlOm.js","assets/vendor-markdown-QKPNiWEd.js","assets/button-Br60hGkw.js","assets/utils-Bslrbb-G.js","assets/createLucideIcon-DBXq3G0e.js","assets/file-diff-lX1a7RLF.js","assets/git-commit-horizontal-BVihXafd.js","assets/api-client-OiA8Ida1.js","assets/react-PkBxFcos.js","assets/open-db-tabs-CkQe49j_.js","assets/panel-store-DmP16Fo0.js","assets/session-list-sync-triggers-DitiR5h1.js","assets/project-store-CEGoLMOl.js","assets/project-framework-store-Bi5dyHdx.js","assets/window-store-zJczRsv4.js","assets/explorer-model-BmgFEsj1.js","assets/db-types-9ac-eYxf.js","assets/settings-store-WeJyQVL8.js","assets/use-is-mobile-BXHbkfs9.js","assets/tab-store-nNzRNfVV.js","assets/use-db-driver-installed-BscdI-wS.js","assets/impexp-state-BWKOuRGj.js","assets/file-store-Bk1WYfdy.js","assets/sql-identifiers-DDISwQor.js","assets/db-explorer-store-BcLxq-X0.js","assets/window-pip-registry-DSoB7T3k.js","assets/onboarding-quick-orientation-DZYQekRt.js","assets/dialog-DOaEX6AK.js","assets/portal-container-context-BXAsDqrB.js","assets/icons-JMA45Ifw.js","assets/format-file-meta-C0LKHE3e.js","assets/fs-api-BQrIEcvo.js","assets/open-settings-DsGBn73g.js","assets/settings-categories-CcR9eL3x.js","assets/adaptive-context-menu-Cq7ynvIn.js","assets/context-menu-BoQ6lxte.js","assets/mobile-bottom-sheet-CGmmdp_5.js","assets/use-visual-viewport-CQ6-A0Dt.js","assets/dropdown-menu-DB3yyoVz.js","assets/input-CKGoVpYv.js","assets/scroll-area-6Am1KMiB.js","assets/start-ellipsis-rBh37k0n.js","assets/chat-preparation-cache-CRX9WAK5.js","assets/clipboard-D3XnL7CB.js","assets/file-icons-DpwcJLL4.js","assets/format-date-CSHaU2wN.js","assets/git-repo-store-BOYLnV67.js","assets/patch-tab-metadata-B-jH5svY.js","assets/ws-auth-cWeQ7_61.js","assets/apply-theme-ORrEdHKT.js","assets/resolve-theme-BqoL27BW.js","assets/index-DyYGWFVa.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
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{A as r,Kr as i,fi as a,ht as o,ut 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"./settings-store-WeJyQVL8.js";import{t as f}from"./preload-helper-CM8YhcCa.js";import"./portal-container-context-BXAsDqrB.js";import{n as p}from"./use-is-mobile-BXHbkfs9.js";import{t as m}from"./button-Br60hGkw.js";import{a as h,n as g,o as _,t as v}from"./dialog-DOaEX6AK.js";import{t as y}from"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import{Hn as b,L as x}from"./index-ItT-dTPV.js";import{t as S}from"./separator-BOYUIPkH.js";var C=e(t(),1),w=n();function T(){let[e,t]=(0,C.useState)(null),[n,r]=(0,C.useState)(!0),[i,o]=(0,C.useState)(null),[s,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(null),_=d(e=>e.lspEnabled),v=d(e=>e.setLspEnabled),y=p(),T=x(),D=(0,C.useCallback)(async()=>{try{t(await u.get(`/api/lsp/servers`))}catch(e){console.error(`Failed to load language servers:`,e)}finally{r(!1)}},[]);(0,C.useEffect)(()=>{D()},[D]);let k=async e=>{o(e.id);try{await u.post(`/api/lsp/install`,{serverId:e.id}),l.success(`Installed ${e.displayName}`),await D(),(await f(()=>import(`./lsp-client-LnKiMWeG.js`).then(e=>e.n),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55]))).retryUnavailableLspDocuments()}catch(t){l.error(t instanceof Error?t.message:`Could not install ${e.displayName}`)}finally{o(null)}},A=async e=>{g(null),m(e.id);try{await u.post(`/api/lsp/uninstall`,{serverId:e.id}),l.success(`Removed ${[e.displayName,...e.alsoRemoves??[]].join(`, `)}`),await D()}catch(t){l.error(t instanceof Error?t.message:`Could not remove ${e.displayName}`)}finally{m(null)}};if(n)return(0,w.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,w.jsx)(c,{className:`size-4 animate-spin text-muted-foreground`})});let j=e?.servers??[],M=new Set((e?.running??[]).map(e=>e.serverId)),N=i!==null||s!==null,P=j.filter(e=>e.installed).length;return(0,w.jsxs)(`div`,{className:`space-y-4`,children:[(0,w.jsxs)(`section`,{className:`flex items-center justify-between gap-4`,children:[(0,w.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0`,children:[(0,w.jsx)(a,{className:`size-4 text-muted-foreground shrink-0`}),(0,w.jsxs)(`div`,{className:`min-w-0`,children:[(0,w.jsx)(`p`,{className:`text-sm font-medium`,children:`Language Server`}),(0,w.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:T?`Off on a touch device — it runs a server process per project`:`Completions, hover, F12, rename and quick fix (this device)`})]})]}),(0,w.jsx)(b,{checked:_&&!T,disabled:T,onCheckedChange:v})]}),(0,w.jsx)(S,{}),(0,w.jsxs)(`section`,{className:`space-y-2`,children:[(0,w.jsxs)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:[`Servers (`,P,` of `,j.length,` installed)`]}),(0,w.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`PPM installs into `,(0,w.jsx)(`span`,{className:`font-mono`,children:e?.installDir}),`, so nothing you installed yourself changes — and Remove undoes exactly that, which is why a server PPM did not put there has no Remove. rust-analyzer is the exception: it is a rustup component, added to and removed from this machine's default toolchain. A server only starts when a file it serves is open.`]}),(0,w.jsx)(`div`,{className:`space-y-1`,children:j.map(e=>(0,w.jsx)(E,{server:e,running:M.has(e.id),installing:i===e.id,removing:s===e.id,busy:N,isMobile:y,onInstall:()=>k(e),onRemove:()=>g(e)},e.id))})]}),h&&(0,w.jsx)(O,{server:h,onConfirm:()=>A(h),onCancel:()=>g(null)})]})}function E({server:e,running:t,installing:n,removing:a,busy:s,isMobile:l,onInstall:u,onRemove:d}){return(0,w.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 py-2 rounded-lg bg-muted/50`,children:[(0,w.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,w.jsxs)(`p`,{className:`text-xs font-medium truncate`,children:[e.displayName,t&&(0,w.jsx)(`span`,{className:`ml-1.5 text-[11px] text-success`,children:`running`})]}),(0,w.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:e.languages.join(`, `)})]}),e.installed?(0,w.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,w.jsxs)(`span`,{className:`flex items-center gap-1 text-[11px] text-muted-foreground`,children:[(0,w.jsx)(r,{className:`size-3.5 text-success`}),D(e.origin)]}),e.removable&&(0,w.jsx)(m,{variant:`ghost`,size:`icon`,disabled:s,onClick:d,title:`Remove ${e.displayName}`,"aria-label":`Remove ${e.displayName}`,className:`text-error cursor-pointer ${l?`size-11`:`size-8`}`,children:a?(0,w.jsx)(c,{className:`size-3.5 animate-spin`}):(0,w.jsx)(i,{className:`size-3.5`})})]}):e.installable?(0,w.jsxs)(m,{variant:`outline`,size:`sm`,disabled:s,onClick:u,className:`text-xs px-3 gap-1 cursor-pointer shrink-0 ${l?`min-h-11`:`h-8`}`,children:[n?(0,w.jsx)(c,{className:`size-3 animate-spin`}):(0,w.jsx)(o,{className:`size-3`}),`Install`]}):(0,w.jsx)(A,{hint:e.installHint,isMobile:l})]})}function D(e){switch(e){case`project`:return`In project`;case`path`:return`On PATH`;case`bundled`:return`Bundled`;default:return`Installed`}}function O({server:e,onConfirm:t,onCancel:n}){let r=p(),i=e.alsoRemoves??[],a=(0,w.jsxs)(`div`,{className:`space-y-4`,"data-testid":`lsp-remove-confirm`,children:[(0,w.jsxs)(`p`,{className:`text-sm`,children:[`Remove `,(0,w.jsx)(`span`,{className:`font-medium`,children:e.displayName}),`?`]}),i.length>0&&(0,w.jsxs)(`p`,{className:`text-xs text-error`,children:[i.join(` and `),` `,i.length>1?`come`:`comes`,` from the same npm package, so`,` `,i.length>1?`they go`:`it goes`,` too.`]}),(0,w.jsx)(`p`,{className:`text-xs text-text-subtle`,children:k(e.installWith)}),(0,w.jsxs)(`div`,{className:`flex flex-col-reverse md:flex-row gap-2 md:justify-end pt-2`,children:[(0,w.jsx)(m,{variant:`outline`,onClick:n,className:`min-h-11 cursor-pointer`,children:`Cancel`}),(0,w.jsx)(m,{variant:`destructive`,autoFocus:!1,onClick:t,className:`min-h-11 cursor-pointer`,children:`Remove`})]})]});return r?(0,w.jsx)(y,{open:!0,onClose:n,children:(0,w.jsxs)(`div`,{className:`px-4 pb-4`,children:[(0,w.jsxs)(`h2`,{className:`text-base font-semibold mb-3`,children:[`Remove `,e.displayName]}),a]})}):(0,w.jsx)(v,{open:!0,onOpenChange:e=>{e||n()},children:(0,w.jsxs)(g,{className:`sm:max-w-sm`,children:[(0,w.jsx)(h,{children:(0,w.jsxs)(_,{className:`text-sm`,children:[`Remove `,e.displayName]})}),a]})})}function k(e){switch(e){case`rustup`:return`Runs rustup component remove, so it leaves this machine's default toolchain rather than a folder of PPM's. Installing it again is one press of the button.`;case`go`:return`Deletes the binary PPM built in its own folder. Anything in your own GOBIN is untouched.`;case`download`:return`Deletes the release PPM downloaded into its own folder. A copy you installed yourself is untouched.`;case`gem`:return`Deletes the gems PPM installed into its own folder. Your own Ruby and its gems are untouched.`;default:return`Runs bun remove in PPM's own folder. Nothing you installed yourself changes, and a server already running keeps running until its last editor closes.`}}function A({hint:e,isMobile:t}){let[n,i]=(0,C.useState)(!1);return(0,w.jsxs)(`button`,{type:`button`,title:e,onClick:()=>{navigator.clipboard?.writeText(e).then(()=>{i(!0),setTimeout(()=>i(!1),1500)})},className:`flex items-center gap-1.5 max-w-40 sm:max-w-64 rounded border border-border px-2 font-mono text-[11px] text-muted-foreground hover:bg-muted active:scale-[0.99] transition cursor-pointer shrink-0 ${t?`min-h-11`:`py-1`}`,children:[(0,w.jsx)(`span`,{className:`truncate`,children:e}),n?(0,w.jsx)(r,{className:`size-3 shrink-0 text-success`}):(0,w.jsx)(s,{className:`size-3 shrink-0 opacity-60`})]})}export{T as LanguageServersSection};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,13 +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{$ as r,A as i,An as a,Cn as o,Cr as s,D as c,Dr as l,Ft as u,Gt as d,Hr as f,M as p,O as m,P as h,Vn as g,ai as _,br as v,c as ee,ci as y,cr as b,dn as x,er as S,fr as te,gt as C,hr as w,ht as T,jn as E,jr as D,kr as O,m as k,nt as A,o as j,on as M,or as ne,qr as re,si as ie,t as N,tt as P,ut as ae,vt as F,w as oe,xn as se,xr as I}from"./icons-JMA45Ifw.js";import{k as L}from"./api-client-OiA8Ida1.js";import{t as R}from"./react-PkBxFcos.js";import{t as z}from"./settings-store-WeJyQVL8.js";import{n as B}from"./utils-Bslrbb-G.js";import{r as ce,t as le}from"./panel-store-DmP16Fo0.js";import{i as V}from"./project-store-CEGoLMOl.js";import{r as H}from"./clipboard-D3XnL7CB.js";import{t as U}from"./button-Br60hGkw.js";import{a as W,i as G,l as ue,m as de,r as fe,t as pe}from"./dropdown-menu-DB3yyoVz.js";import{t as K}from"./mobile-bottom-sheet-CGmmdp_5.js";import{$t as me,At as he,Bt as ge,Ct as _e,Dt as q,Et as ve,F as ye,Ft as be,Gt as xe,Hi as Se,Hn as J,Ht as Ce,It as we,Jt as Te,Kt as Ee,Lt as De,Mt as Y,Nt as Oe,Ot as ke,P as Ae,Pt as je,Qt as Me,Rt as Ne,St as Pe,Tt as Fe,Ui as X,Ut as Ie,Vt as Le,Wi as Re,Wt as ze,Xt as Be,Yt as Ve,Zt as He,_t as Ue,bt as We,en as Ge,gt as Ke,ht as qe,in as Je,jt as Ye,kt as Xe,mt as Ze,qt as Qe,rt as $e,ti as et,tn as tt,vt as nt,wt as rt,xt as it,yt as at,zt as ot}from"./index-ItT-dTPV.js";import{i as st,r as ct}from"./send-to-chat-Bcm_Lcog.js";import{t as lt}from"./code-fence-vHZyBehL.js";var ut=/\b[a-z0-9]+(?:-[a-z0-9]+)+\.trycloudflare\.com\b/gi,dt=[/()\b(?:sk-[\w-]{20,}|gh[pousr]_[A-Za-z0-9]{30,}|github_pat_\w{30,}|eyJ[\w-]{8,}\.eyJ[\w-]{8,}\.[\w-]*)/g,/(\d{6,}:)[\w-]{30,}/g,/(:\/\/[^/\s:@]*:)[^@\s/\u0001]+(?=@)/g,/([?&#][\w.-]*(?:token|key|secret|passw|auth|code|state|ticket|sig|credential)[\w.-]*=)[^&#\s"'<>[\]\u0001]+/gi,/(\b(?:proxy-)?authorization["']?\s*[:=]\s*["']?)(?:(?:basic|bearer|digest|token)\s+)?[^\s"',;\u0001]+/gi,/(\b(?:set-)?cookie["']?\s*[:=]\s*["']?)(?=[^\s=;"']+=)[^\r\n"'\u0001]+/gi,/(\bbearer\s+)[^\s"',;[\]\u0001]+/gi,/((?:token|secret|passw(?:or)?d|api[_-]?key|access[_-]?key|private[_-]?key)["']?\s*[:=]\s*["']?)[^\s"'&,;)}[\]\u0001]+/gi],ft=/(?:\/home\/|\/Users\/)[^/\s"'`]+|[A-Za-z]:(?:\\{1,2}|\/)Users(?:\\{1,2}|\/)[^\\/\s"'`]+/gi,pt=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/g,mt=/\b([0-9a-f]{8})-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi;function ht(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function gt(e,t,n=!1){let r=e=>n?`\u0001${e}\u0002`:e,i=e.replace(ut,()=>r(`<tunnel>.trycloudflare.com`));for(let e of dt)i=i.replace(e,(e,t)=>`${t}${r(`[REDACTED]`)}`);t.home&&(i=i.replace(ft,()=>r(`~`))),t.email&&(i=i.replace(pt,()=>r(`<email>`))),t.chats&&(i=i.replace(mt,(e,t)=>r(t)));let a=(t.projects??[]).filter(e=>e.trim().length>=3);if(a.length){let e=RegExp(`(?<![\\w-])(?:${a.map(ht).sort((e,t)=>t.length-e.length).join(`|`)})(?![\\w-])`,`gi`);i=i.replace(e,()=>r(`<project>`))}return i}function _t(e){return[`secrets`,e.home&&`home paths`,e.email&&`emails`,e.chats&&`chat ids`,e.projects?.length&&`project names`].filter(e=>!!e)}var vt=8192,yt=[0,5,20];function bt(e){let t=e.ctx&&e.around?q(e.around.before.slice(-e.ctx)):[],n=e.ctx&&e.around?q(e.around.after.slice(0,e.ctx)):[];return[...t.map(e=>({row:e,ctx:!0})),...e.rows.map(e=>({row:e,ctx:!1})),...n.map(e=>({row:e,ctx:!0}))]}function xt(e){return e.rows.reduce((e,t)=>e+t.count,0)}function St(e){let t=new Set(e.map(e=>e.src));return t.size===1?[...t][0]:`all`}var Ct=e=>new Date(e).toISOString().slice(11,19);function wt(e){let t=e.rows[0],n=e.rows[e.rows.length-1],r=t&&n?` · ${Ct(t.entry.ts)}–${Ct(n.lastTs)} UTC`:``;return`${Ee(e.src)}${r}`}function Tt(e){return bt(e).map(e=>Te(e.row.entry,e.row.count))}function Et({fields:e,snippets:t,environment:n,redact:r,mark:i=!1}){let a=e=>gt(e,r,i),o=[`### What happened`,a(e.what.trim())||`_Not filled in_`,``,`### Steps to reproduce`,a(e.steps.trim())||`_Not filled in_`,``];if(e.expected.trim()&&o.push(`### Expected`,a(e.expected.trim()),``),t.length){o.push(`### Log lines`);for(let e of t){let t=Tt(e).map(a),n=lt(t.join(`
|
|
2
|
-
`)),r=xt(e);o.push(``,`<details><summary>${wt(e)} · ${Y(r,`line`)}${e.ctx?` and ${e.ctx} around`:``}</summary>`,``,n,...t,n,`</details>`)}o.push(``)}return n.length&&o.push(`### Environment`,...n.map(([e,t])=>`- ${e}: ${a(t)}`),``),o.push(`<sub>Sent from PPM → Logs. Removed before sending: ${_t(r).join(`, `)}.</sub>`),o.join(`
|
|
3
|
-
`)}function Dt(e,t,n){let r=[`title=${encodeURIComponent(e)}`];return t.length&&r.push(`labels=${encodeURIComponent(t.join(`,`))}`),n!==null&&r.push(`body=${encodeURIComponent(n)}`),`https://github.com/${He}/issues/new?${r.join(`&`)}`}function Ot(e,t){return`# ${e.trim()||`Bug report`}\n\n${t}`}var Z=e(t(),1),kt=500,At=2e4,jt=4e3,Mt=0,Nt=null,Pt=()=>ye(JSON.stringify({type:Me}));function Ft(){return Mt++===0&&(Pt(),Nt=Ae(Pt)),()=>{--Mt>0||(Nt?.(),Nt=null,ye(JSON.stringify({type:me})))}}function It(e,t){return JSON.stringify([e.src,e.levels,e.tagsOff,e.q,e.regex,e.caseSensitive,e.chat,t])}function Lt(e){let t={};for(let[n,r]of Object.entries(e))t[n]={...r,tags:r.tags.map(e=>[e[0],e[1]])};return t}function Rt(e,t,n,r){let i=e.meta;if(!i||!t.length)return e;let a={...i.titles,...n},o=new Set(e.entries.slice(-jt).map(e=>e.id)),s=t.filter(e=>e.ts>=i.fromTs&&!o.has(e.id));if(!s.length)return e;let c=Lt(i.stats);Ie(c,s);let l=ze(r),u=s.filter(e=>Qe(e,r,l,a)),d=i.chats.map(e=>({...e}));for(let e of s){if(!e.sid)continue;let t=d.find(t=>t.sid===e.sid);t?(t.count++,t.last=e.ts):d.unshift({sid:e.sid,title:a[e.sid]??null,count:1,last:e.ts})}let f=u.length?e.entries.concat(u):e.entries,p=i.hasMore;return f.length>At&&(f=f.slice(-At),p=!0),{...e,entries:f,meta:{...i,stats:c,chats:d,titles:a,matched:i.matched+u.length,inRange:i.inRange+s.filter(e=>r.src===`all`||e.src===r.src).length,hasMore:p},batch:u.length?{seq:(e.batch?.seq??0)+1,count:u.length}:e.batch}}function zt(e,t,n){let r=It(e,t),[i,a]=(0,Z.useState)({key:r,entries:[],meta:null,loading:!0,loadingEarlier:!1,error:null,batch:null}),[o,s]=(0,Z.useState)(0),[c,l]=(0,Z.useState)(0),u=(0,Z.useRef)(e);u.current=e;let d=(0,Z.useRef)(i);d.current=i;let f=(0,Z.useRef)(n);f.current=n;let p=(0,Z.useRef)(e.q),m=(0,Z.useRef)(null),h=(0,Z.useRef)({entries:[],titles:{}});(0,Z.useEffect)(()=>Ft(),[]),(0,Z.useEffect)(()=>Ae(()=>s(e=>e+1)),[]),(0,Z.useEffect)(()=>{let n=new AbortController;m.current={entries:[],titles:{}},h.current={entries:[],titles:{}},l(0),a(e=>({...e,key:r,loading:!0,error:null}));let i=e.q===p.current?0:250;p.current=e.q;let o=setTimeout(()=>{We({...e,range:t,from:je(t,Date.now()),limit:kt},n.signal).then(t=>{if(n.signal.aborted)return;let{entries:i,...o}=t,s=m.current??{entries:[],titles:{}};m.current=null,a(Rt({key:r,entries:i,meta:o,loading:!1,loadingEarlier:!1,error:null,batch:null},s.entries,s.titles,e))}).catch(e=>{n.signal.aborted||(m.current=null,a(t=>({...t,key:r,loading:!1,error:e instanceof Error?e.message:String(e)})))})},i);return()=>{clearTimeout(o),n.abort()}},[r,o]),(0,Z.useEffect)(()=>{let e=e=>{let t=e.detail;if(t?.entries?.length){if(m.current){m.current.entries.push(...t.entries),Object.assign(m.current.titles,t.titles);return}if(f.current){h.current.entries.push(...t.entries),Object.assign(h.current.titles,t.titles);let e=u.current,n=ze(e),r={...d.current.meta?.titles,...h.current.titles};l(i=>i+t.entries.filter(t=>Qe(t,e,n,r)).length);return}a(e=>Rt(e,t.entries,t.titles??{},u.current))}};return window.addEventListener(`logs:lines`,e),()=>window.removeEventListener(`logs:lines`,e)},[]),(0,Z.useEffect)(()=>{if(n)return;let{entries:e,titles:t}=h.current;h.current={entries:[],titles:{}},l(0),e.length&&a(n=>Rt(n,e,t,u.current))},[n]);let g=(0,Z.useCallback)(async e=>{let n=d.current;if(!n.meta?.hasMore||n.loadingEarlier||n.loading||!n.entries.length)return!1;let r=n.key;a(e=>({...e,loadingEarlier:!0}));try{let i=await We({...u.current,range:t,from:n.meta.fromTs,before:n.entries[0].id,limit:kt,...e?{reach:e}:{}}),o=d.current;if(o.key!==r||!o.meta)return a(e=>({...e,loadingEarlier:!1})),!1;let s=new Set(o.entries.slice(0,jt).map(e=>e.id)),c=i.entries.filter(e=>!s.has(e.id));return a(e=>e.key!==r||!e.meta?{...e,loadingEarlier:!1}:{...e,entries:c.concat(e.entries),meta:{...e.meta,hasMore:i.hasMore,titles:{...i.titles,...e.meta.titles},reachMissed:i.reachMissed},loadingEarlier:!1}),c.length>0}catch{return a(e=>({...e,loadingEarlier:!1})),!1}},[t]),_=(0,Z.useCallback)(()=>s(e=>e+1),[]);return(0,Z.useMemo)(()=>({...i,pausedCount:c,loadEarlier:g,reload:_}),[i,c,g,_])}function Bt(){let[e,t]=(0,Z.useState)(null),[n,r]=(0,Z.useState)(null),i=(0,Z.useCallback)(async()=>{try{t(await at()),r(null)}catch(e){r(e instanceof Error?e.message:String(e))}},[]);return(0,Z.useEffect)(()=>{i();let e=()=>void i();return window.addEventListener(Be,e),()=>window.removeEventListener(Be,e)},[i]),{data:e,error:n,analyze:(0,Z.useCallback)(async e=>{t(e=>e&&{...e,running:!0,error:null}),await Ze(e)},[]),setAuto:(0,Z.useCallback)(async e=>{t(t=>t&&{...t,auto:e}),await _e(e),await i()},[i]),setDismissed:(0,Z.useCallback)(async(e,n)=>{t(t=>t&&{...t,issues:t.issues.map(t=>t.id===e?{...t,dismissed:n}:t)}),await qe(e,n)},[]),undismissAll:(0,Z.useCallback)(async()=>{t(e=>e&&{...e,issues:e.issues.map(e=>({...e,dismissed:!1}))}),await rt()},[])}}var Vt=null;function Ht(){return Vt??=nt().then(e=>[...e,[`Browser`,$e(navigator.userAgent)]]).catch(e=>{throw Vt=null,e}),Vt}var Ut=0,Wt={title:``,labels:[],what:``,steps:``,expected:``},Gt=(e,t)=>e.length===t.length&&e.every((e,n)=>e.key===t[n].key&&e.count===t[n].count),Kt=R((e,t)=>({snippets:[],fields:Wt,status:`none`,stale:!1,fresh:!1,error:null,model:null,basis:0,view:`write`,envOff:[],priv:{home:!0,email:!0,chats:!0,projects:!1},add:n=>{if(!n.length||t().snippets.some(e=>Gt(e.rows,n)))return!1;let r=n.map(e=>e.entry),i={id:`s${++Ut}`,src:St(r),rows:n,ctx:0,around:null};return e(e=>({snippets:[...e.snippets,i],stale:e.status===`done`})),!0},remove:n=>{let r=t().snippets.findIndex(e=>e.id===n);if(r<0)return null;let i=t().snippets[r];return e(e=>({snippets:e.snippets.filter(e=>e.id!==n),stale:e.status===`done`})),{snippet:i,index:r}},restore:(t,n)=>{e(e=>{let r=e.snippets.slice();return r.splice(Math.min(n,r.length),0,t),{snippets:r}})},setContext:async(n,r)=>{e(e=>({snippets:e.snippets.map(e=>e.id===n?{...e,ctx:r}:e)}));let i=t().snippets.find(e=>e.id===n);if(!r||!i||i.around)return;let a=i.rows.flatMap(e=>e.ids);try{let t=await Ue([a[0],a[a.length-1]],20,i.src);e(e=>({snippets:e.snippets.map(e=>e.id===n?{...e,around:t}:e)}))}catch{}},setFields:t=>e(e=>({fields:{...e.fields,...t}})),setView:t=>e({view:t}),toggleEnv:t=>e(e=>({envOff:e.envOff.includes(t)?e.envOff.filter(e=>e!==t):[...e.envOff,t]})),togglePriv:t=>e(e=>({priv:{...e.priv,[t]:!e.priv[t]}})),draft:async()=>{let{snippets:n,status:r}=t();if(!(!n.length||r===`drafting`)){e({status:`drafting`,view:`write`,error:null});try{let r=(await Ht().catch(()=>[])).filter(([e])=>!t().envOff.includes(e)),i=await Ke({snippets:n.map(e=>({label:wt(e),lines:Tt(e)})),environment:r});e({status:`done`,fields:{title:i.title,labels:i.labels,what:i.what,steps:i.steps,expected:i.expected},model:i.model,basis:n.reduce((e,t)=>e+xt(t),0),stale:!1,fresh:!0}),setTimeout(()=>e({fresh:!1}),900)}catch(t){e(e=>({status:e.model?`done`:`none`,error:t instanceof Error?t.message:String(t)}))}}}})),Q=n(),qt={all:x,ai:oe,shell:f,server:N,ext:te,files:u,auto:m,tunnel:A,browser:d},Jt={debug:`DEBUG`,info:`INFO`,warn:`WARN`,error:`ERROR`,fatal:`FATAL`};function Yt({text:e,re:t}){return t?(0,Q.jsx)(Q.Fragment,{children:De(e,t).map((e,t)=>e.hit?(0,Q.jsx)(`mark`,{className:`lg-hit`,children:e.text},t):(0,Q.jsx)(Z.Fragment,{children:e.text},t))}):(0,Q.jsx)(Q.Fragment,{children:e})}function Xt({msg:e,re:t,titles:n,onChat:r}){return(0,Q.jsx)(Q.Fragment,{children:Ye(e).map((e,i)=>{if(e.kind===`chat`){let t=n[e.sid]??e.sid.slice(0,8);return r?(0,Q.jsx)(`button`,{type:`button`,className:`lg-sess`,title:`Show only this chat · ${e.sid}`,onClick:()=>r(e.sid),children:t},i):(0,Q.jsx)(`span`,{className:`lg-sess`,children:t},i)}return e.kind===`quote`?(0,Q.jsx)(`span`,{className:`q`,children:(0,Q.jsx)(Yt,{text:e.text,re:t})},i):e.kind===`key`?(0,Q.jsx)(`span`,{className:`k`,children:(0,Q.jsx)(Yt,{text:e.text,re:t})},i):(0,Q.jsx)(Yt,{text:e.text,re:t},i)})})}var Zt=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g;function Qt({row:e,utc:t,ctx:n,trim:r}){let i=e.entry,a=i.msg.replace(Zt,e=>e.slice(0,8)),o=r&&a.length>150?`${a.slice(0,149)}…`:a;return(0,Q.jsxs)(`div`,{className:n?`r ctx`:`r`,children:[(0,Q.jsx)(`span`,{className:`t`,children:ve(i.ts,t)}),` `,(0,Q.jsx)(`span`,{className:i.lv,children:Jt[i.lv].padEnd(5,` `)}),` `,(0,Q.jsx)(`span`,{className:`g`,children:i.tag}),` `,o,e.count>1&&(0,Q.jsx)(`span`,{className:`t`,children:` ×${e.count}`}),!!i.more?.length&&(0,Q.jsx)(`span`,{className:`t`,children:` +${i.more.length} lines`})]})}function $t({paused:e,pending:t}){return(0,Q.jsxs)(`span`,{className:`flex items-center gap-1.5 whitespace-nowrap text-[10px] text-text-subtle`,"data-testid":`logs-live`,children:[e?(0,Q.jsx)(S,{className:`size-3 text-warning`}):(0,Q.jsx)(_,{className:`size-3 text-success`}),(0,Q.jsx)(`span`,{children:e?`Paused${t?` · ${t.toLocaleString(`en-US`)} new`:``}`:`Live`})]})}function en({title:e,children:t}){return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`lg-sheet-sec`,children:e}),(0,Q.jsx)(`div`,{className:`lg-sheet-chips`,children:t})]})}var $={keys:new Set,anchor:null,cursor:null};function tn(e){return{keys:new Set([e]),anchor:e,cursor:e}}function nn(e,t,n,r=!1){let i=e.anchor??n,a=Xe(t,i,n);return{keys:new Set(r?[...e.keys,...a]:a),anchor:i,cursor:n}}function rn(e,t){let n=new Set(e.keys);return n.has(t)?n.delete(t):n.add(t),{keys:n,anchor:t,cursor:t}}function an(e,t){return t.keys.size?e.filter(e=>t.keys.has(e.key)):[]}function on(e,t){let n=e.levels;return!n.error||!n.warn||!n.info||n.debug||!!e.chat||!!e.q||e.tagsOff.length>0||t!==`1h`}var sn=e=>e.reduce((e,t)=>e+t.count,0),cn=e=>e.map(e=>Te(e.entry,e.count)).join(`
|
|
4
|
-
`);async function ln(e){e.length&&(await H(cn(e))?L.success(`Copied ${Y(sn(e),`line`)}`):L.error(`Could not copy the lines`))}function un(){let e=ct();if(e)return Object.values(le.getState().panels).flatMap(e=>e.tabs).find(t=>t.id===e)}function dn(e,t){if(!e.length)return;let n=[...new Set(e.map(e=>Ee(e.entry.src)))].join(`, `),r=cn(e),i=lt(r);st({text:`Selected lines from the PPM logs (${n})\n${i}\n${r}\n${i}`,label:`Log selection`,newTab:t,asContext:!0})}function fn(e,t,n=!1){return e.length?Kt.getState().add([...e])?(n||L.success(`Added ${Y(sn(e),`line`)} to the report`,t?{action:{label:`Open`,onClick:t}}:void 0),!0):(n||L(`These lines are already in the report`),!1):!1}var pn=e=>String(e).padStart(2,`0`);function mn(e){if(!e.length)return;let t=new Date,n=`ppm-logs-${t.getFullYear()}${pn(t.getMonth()+1)}${pn(t.getDate())}-${pn(t.getHours())}${pn(t.getMinutes())}.log`,r=URL.createObjectURL(new Blob([`${cn(e)}\n`],{type:`application/octet-stream`})),i=document.createElement(`a`);i.href=r,i.download=n,i.rel=`noopener`,i.style.display=`none`,document.body.appendChild(i),i.click(),i.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e4),L.success(`Saved ${n} with ${Y(sn(e),`line`)}`)}var hn=24,gn=200;function _n(e,{follow:t,setFollow:n,feed:r,size:i,virtualizer:a,keep:o}){let s=(0,Z.useRef)(0),[c,l]=(0,Z.useState)(0),u=(0,Z.useCallback)((e=gn)=>{s.current=performance.now()+e},[]),d=(0,Z.useCallback)(()=>{let t=e.current;t&&(u(),t.scrollTop=t.scrollHeight)},[e,u]);(0,Z.useLayoutEffect)(()=>{let e=o.current;if(e!=null&&!t){let{count:t,getItemKey:n}=a.options;for(let r=0;r<t;r++)if(n(r)===e){u(),a.scrollToIndex(r,{align:`start`});break}}return()=>{let e=a.getVirtualItemForOffset(a.scrollOffset??0);o.current=e?String(e.key):null}},[]),(0,Z.useLayoutEffect)(()=>{t&&d()},[t,i,d]),(0,Z.useEffect)(()=>l(0),[r.key]),(0,Z.useEffect)(()=>{t&&l(0)},[t]);let f=r.batch;return(0,Z.useEffect)(()=>{f&&!t&&l(e=>e+f.count)},[f?.seq]),{newCount:c,onScroll:(0,Z.useCallback)(()=>{let r=e.current;if(!r||performance.now()<s.current)return;let i=r.scrollHeight-r.scrollTop-r.clientHeight<hn;i!==t&&n(i)},[e,t,n]),ownScroll:u}}var vn=`flex items-center gap-1 whitespace-nowrap rounded bg-surface-elevated text-text-primary transition-colors hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground px-2 py-0.5 text-xs`,yn=5,bn={ai:`sdk, chat, usage, accounts`,shell:`bash-spy, bg-shell, terminal`,server:`supervisor, startup, stderr`,ext:`extensions, language servers`,files:`file-watcher, file-index, git`,auto:`scheduler, ppmbot, jira`,tunnel:`cloudflared.log`,browser:`Console`};function xn(e,t){return e?t===`all`?Object.values(e).reduce((e,t)=>({total:e.total+t.total,err:e.err+t.err,warn:e.warn+t.warn}),{total:0,err:0,warn:0}):e[t]:{total:0,err:0,warn:0}}function Sn(e,t,n){if(e===`tunnel`)return`cloudflared.log`;if(e===`browser`)return n?`Console · ${Y(n.browserDevices,`device`)}`:bn.browser;let r=t?.[e]?.tags.slice(0,3).map(e=>e[0]);return r?.length?r.join(`, `):bn[e]}function Cn(e,t){return t?e===`all`?`ppm.log, cloudflared.log, ${Y(t.browserDevices,`browser`)}`:e===`tunnel`?t.cloudflaredPath?`cloudflared.log · ${Fe(t.cloudflaredBytes)}`:`no cloudflared.log yet`:e===`browser`?`browser consoles · ${Y(t.browserDevices,`device`)}`:`ppm.log · ${Fe(t.ppmLogBytes)}`:``}function wn({src:e,files:t}){return e===`tunnel`?t.cloudflaredPath?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:t.cloudflaredPath}),(0,Q.jsx)(`br`,{}),`Written by cloudflared itself, to the second.`]}):(0,Q.jsx)(Q.Fragment,{children:`No cloudflared.log yet. It appears once a tunnel has run.`}):e===`browser`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:`Browser consoles`}),(0,Q.jsx)(`br`,{}),`Sent by every open PPM tab and kept `,Y(t.browserRetentionDays,`day`),`.`]}):e===`all`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:t.ppmLogPath}),` and its `,Y(t.rotatedFiles,`older file`),`, `,(0,Q.jsx)(`b`,{children:`cloudflared.log`}),` and `,Y(t.browserDevices,`browser`),`, merged by time.`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`b`,{children:t.ppmLogPath}),(0,Q.jsx)(`br`,{}),Fe(t.ppmLogBytes),` of `,Fe(t.capBytes),`. When full it becomes ppm.log.1; `,t.generations,` files are kept.`]})}var Tn=(0,Z.memo)(function({row:e,index:t,selected:n,cursor:r,flash:i,open:a,utc:o,re:s,titles:c,onChat:l,onToggleMore:u,measure:d}){let f=e.entry,p=f.more?.length??0;return(0,Q.jsxs)(`div`,{ref:d,"data-index":t,"data-key":e.key,role:`option`,"aria-selected":n,className:B(`lg-row`,xe(f.lv)===`error`&&`err`,n&&`sel`,r&&`cur`,i&&`flash`),children:[(0,Q.jsx)(`span`,{className:`lg-mark`}),(0,Q.jsx)(`span`,{className:`lg-t`,children:ve(f.ts,o)}),(0,Q.jsx)(`span`,{className:`lg-lv ${f.lv}`,children:Jt[f.lv]}),(0,Q.jsx)(`span`,{className:`lg-tg`,title:f.tag,children:f.tag}),(0,Q.jsxs)(`span`,{className:`lg-m`,children:[(0,Q.jsx)(Xt,{msg:f.msg,re:s,titles:c,onChat:l}),e.count>1&&(0,Q.jsxs)(`span`,{className:`lg-x`,title:`The same line ${e.count} times in a row`,children:[`×`,e.count.toLocaleString(`en-US`)]}),p>0&&(0,Q.jsx)(`button`,{type:`button`,className:`lg-pchip`,onClick:()=>u(e.key),children:a?`Hide lines`:`+${Y(p,`line`)}`})]}),a&&p>0&&(0,Q.jsx)(`div`,{className:`lg-more`,children:(0,Q.jsx)(Yt,{text:f.more.join(`
|
|
5
|
-
`),re:s})})]})});function En({lv:e,cls:t,label:n,n:r,filter:i,setFilter:a}){return(0,Q.jsxs)(`button`,{type:`button`,className:B(`lg-chip`,t),"aria-pressed":i.levels[e],onClick:()=>a({levels:{...i.levels,[e]:!i.levels[e]}}),children:[(0,Q.jsx)(`span`,{className:`dot`}),n,r!=null&&(0,Q.jsx)(`span`,{className:`n`,children:we(r)})]})}function Dn(e){let{feed:t,rows:n,filter:o,setFilter:c,range:l,setRange:u,sel:d,setSel:f,follow:p,setFollow:m,paused:_,setPaused:v,utc:y,wrap:b}=e,x=t.meta,te=z(e=>e.setLogsWrap),C=(0,Z.useRef)(null),D=(0,Z.useRef)(null),O=(0,Z.useRef)(null),k=(0,Z.useRef)(null),[A,M]=(0,Z.useState)(()=>new Set),[re,N]=(0,Z.useState)(!1),[F,oe]=(0,Z.useState)(()=>new Set),L=(0,Z.useMemo)(()=>ze(o),[o]),R=(0,Z.useMemo)(()=>ke(L),[L]),ce=(0,Z.useMemo)(()=>x?.titles??{},[x?.titles]),le=x?.restarts,V=(0,Z.useMemo)(()=>{let e=be(n,le??[]),t=[];for(let r of n){let n=e.get(r.key);n!=null&&t.push({kind:`div`,key:`restart-${n}`,at:n}),t.push({kind:`row`,key:r.key,row:r})}return t},[n,le]),H=(0,Z.useMemo)(()=>new Map(V.map((e,t)=>[e.key,t])),[V]),U=(0,Z.useMemo)(()=>n.map(e=>e.key),[n]),W=(0,Z.useMemo)(()=>an(n,d),[n,d]),K=et({count:V.length,getScrollElement:()=>C.current,estimateSize:e=>V[e]?.kind===`div`?32:20,getItemKey:e=>V[e]?.key??e,overscan:24,paddingStart:4,paddingEnd:64}),me=K.getVirtualItems(),_e=K.getTotalSize(),{newCount:q,onScroll:ye,ownScroll:xe}=_n(C,{follow:p,setFollow:m,feed:t,size:_e+V.length,virtualizer:K,keep:e.listTop});(0,Z.useEffect)(()=>M(new Set),[t.key]);let J=t.batch;(0,Z.useEffect)(()=>{if(!J||J.count>yn)return;let e=new Set(t.entries.slice(-J.count).map(e=>e.id)),r=new Set;for(let t=n.length-1;t>=0&&r.size<J.count;t--)if(n[t].ids.some(t=>e.has(t)))r.add(n[t].key);else if(r.size)break;oe(r);let i=setTimeout(()=>oe(new Set),1200);return()=>clearTimeout(i)},[J?.seq]);let Te=e.reveal;(0,Z.useLayoutEffect)(()=>{if(!Te)return;let e=H.get(Te.key);e!=null&&(xe(600),K.scrollToIndex(e,{align:`center`}),C.current?.focus({preventScroll:!0}))},[Te?.seq]),(0,Z.useLayoutEffect)(()=>{let e=k.current;if(!e)return;let t=H.get(e);t==null||t===0||(k.current=null,xe(),K.scrollToIndex(t,{align:`start`}))},[H,K,xe]);let De=(0,Z.useCallback)(async()=>{m(!1),k.current=U[0]??null,await t.loadEarlier()||(k.current=null)},[t,U,m]),Oe=(0,Z.useCallback)(()=>{let e=O.current,t=C.current,n=D.current;if(!e||!t||!n||!W.length)return;let r=H.get(W[0].key),i=H.get(W[W.length-1].key),a=K.measurementsCache,o=r==null?void 0:a[r],s=i==null?void 0:a[i];if(!o||!s)return;let c=e.offsetHeight,l=e.offsetWidth,u=s.end+4;u+c>t.scrollTop+t.clientHeight&&o.start-c-4>=t.scrollTop&&(u=o.start-c-4);let d=n.querySelector(`.lg-m`),f=d?d.getBoundingClientRect().left-n.getBoundingClientRect().left:0,p=Math.max(t.scrollLeft+6,Math.min(f,t.scrollLeft+t.clientWidth-l-6));e.style.transform=`translate(${Math.round(Math.max(0,p))}px, ${Math.round(u)}px)`},[W,H,K]);(0,Z.useLayoutEffect)(()=>{Oe()}),(0,Z.useEffect)(()=>{let e=C.current;if(!e)return;let t=new ResizeObserver(()=>Oe());return t.observe(e),()=>t.disconnect()},[Oe]);let Ae=()=>{Oe(),ye()},je=e=>{if(e.button!==0)return;let t=e.target,n=t.closest(`.lg-row`);if(!n||t.closest(`button, a`))return;let r=n.dataset.key;r&&(e.preventDefault(),C.current?.focus({preventScroll:!0}),e.shiftKey&&d.anchor?f(nn(d,U,r,e.ctrlKey||e.metaKey)):e.ctrlKey||e.metaKey?f(rn(d,r)):d.keys.size===1&&d.keys.has(r)?f({keys:new Set,anchor:r,cursor:r}):(f(tn(r)),N(!0)))},Me=e=>{if(!re)return;let t=e.target.closest(`.lg-row`)?.dataset.key;t&&t!==d.cursor&&f(nn(d,U,t))};(0,Z.useEffect)(()=>{if(!re)return;let e=C.current?.ownerDocument??document,t=()=>N(!1);return e.addEventListener(`mouseup`,t),()=>e.removeEventListener(`mouseup`,t)},[re]);let Ne=(0,Z.useCallback)(e=>{M(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Pe=(0,Z.useCallback)(e=>c({chat:e}),[c]),Fe=e=>{if(e.key===`Escape`){d.keys.size&&(e.stopPropagation(),f($));return}if(!U.length)return;let t=e.ctrlKey||e.metaKey;if(e.key===`ArrowDown`||e.key===`ArrowUp`){e.preventDefault();let t=d.cursor?U.indexOf(d.cursor):-1;t=t<0?e.key===`ArrowDown`?0:U.length-1:Math.max(0,Math.min(U.length-1,t+(e.key===`ArrowDown`?1:-1)));let n=U[t];e.shiftKey?f(nn(d.anchor?d:{...d,anchor:d.cursor??n},U,n)):f({keys:d.keys,anchor:d.keys.size?d.anchor:n,cursor:n});let r=H.get(n);r!=null&&K.scrollToIndex(r,{align:`auto`})}else if(e.key===` `&&d.cursor)e.preventDefault(),f(rn(d,d.cursor));else if(t&&e.key.toLowerCase()===`a`)e.preventDefault(),f({keys:new Set(U),anchor:U[0],cursor:U[U.length-1]});else if(t&&e.key.toLowerCase()===`c`&&W.length)e.preventDefault(),ln(W);else if(e.key===`Enter`&&d.cursor){let e=n.find(e=>e.key===d.cursor);e?.entry.more?.length&&Ne(e.key)}},X=()=>f($),Ie=xn(x?.stats,o.src),Be=me[0],Ve=W.length>0&&!re,He=L===void 0||!!x?.badRegex,Ue=o.chat?ce[o.chat]??o.chat.slice(0,8):`All chats`,We=o.src===`all`?[]:x?.stats[o.src].tags??[],Ge=new Set(o.tagsOff),Ke=l===`restart`?x?.fromTs:x?.restarts.at(-1);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`nav`,{className:`lg-side`,"aria-label":`Log sources`,children:[(0,Q.jsx)(On,{id:`all`,label:`All sources`,sub:`ppm.log, cloudflared.log, browsers`,stats:xn(x?.stats,`all`),current:o.src===`all`,onPick:()=>c({src:`all`,tagsOff:[]})}),(0,Q.jsx)(`div`,{className:`lg-group`,children:`Server · ppm.log`}),Ce.filter(e=>e.group===`ppm`).map(e=>(0,Q.jsx)(On,{id:e.id,label:e.label,sub:Sn(e.id,x?.stats,x?.files),stats:x?.stats[e.id],current:o.src===e.id,onPick:()=>c({src:e.id,tagsOff:[]})},e.id)),(0,Q.jsx)(`div`,{className:`lg-group`,children:`Elsewhere`}),Ce.filter(e=>e.group===`elsewhere`).map(e=>(0,Q.jsx)(On,{id:e.id,label:e.label,sub:Sn(e.id,x?.stats,x?.files),stats:x?.stats[e.id],current:o.src===e.id,onPick:()=>c({src:e.id,tagsOff:[]})},e.id)),x&&(0,Q.jsx)(`div`,{className:`lg-side-file`,children:(0,Q.jsx)(wn,{src:o.src,files:x.files})})]}),(0,Q.jsxs)(`section`,{className:`lg-view`,"aria-label":Ee(o.src),children:[(0,Q.jsxs)(`div`,{className:`lg-tools`,children:[(0,Q.jsxs)(`div`,{className:`lg-search`,children:[(0,Q.jsx)(I,{}),(0,Q.jsx)(`input`,{type:`search`,value:o.q,onChange:e=>c({q:e.target.value}),placeholder:o.src===`all`?`Search all logs`:`Search ${Ee(o.src)}`,"aria-label":`Search logs`,"aria-invalid":!!o.q&&He,title:o.q&&He?`This regular expression does not compile`:void 0}),(0,Q.jsxs)(`span`,{className:`lg-inl`,children:[(0,Q.jsx)(`button`,{type:`button`,title:`Match case`,"aria-pressed":o.caseSensitive,onClick:()=>c({caseSensitive:!o.caseSensitive}),children:(0,Q.jsx)(Re,{})}),(0,Q.jsx)(`button`,{type:`button`,title:`Regular expression`,"aria-pressed":o.regex,onClick:()=>c({regex:!o.regex}),children:(0,Q.jsx)(Se,{})})]})]}),(0,Q.jsx)(`span`,{className:`lg-sep`}),(0,Q.jsx)(En,{lv:`error`,cls:`e`,label:`Errors`,n:Ie.err,filter:o,setFilter:c}),(0,Q.jsx)(En,{lv:`warn`,cls:`w`,label:`Warnings`,n:Ie.warn,filter:o,setFilter:c}),(0,Q.jsx)(En,{lv:`info`,label:`Info`,filter:o,setFilter:c}),(0,Q.jsx)(En,{lv:`debug`,label:`Debug`,filter:o,setFilter:c}),(0,Q.jsx)(`span`,{className:`lg-sep lg-hide-narrow`}),(0,Q.jsxs)(pe,{children:[(0,Q.jsx)(de,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:B(`lg-ghost`,o.chat&&`on`),title:o.chat?`Only lines naming ${Ue}`:`Lines from every chat`,children:[(0,Q.jsx)(a,{}),(0,Q.jsx)(`span`,{className:`max-w-[140px] truncate`,children:Ue}),(0,Q.jsx)(h,{className:`chev`})]})}),(0,Q.jsx)(kn,{filter:o,setFilter:c,chats:x?.chats??[],titles:ce})]}),(0,Q.jsxs)(pe,{children:[(0,Q.jsx)(de,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`lg-ghost`,children:[(0,Q.jsx)(P,{}),Le[l],(0,Q.jsx)(h,{className:`chev`})]})}),(0,Q.jsx)(fe,{align:`start`,className:`min-w-52`,children:ge.map(e=>(0,Q.jsxs)(G,{onSelect:()=>u(e),children:[(0,Q.jsx)(`span`,{children:Le[e]}),l===e?(0,Q.jsx)(i,{className:`ml-auto`}):e===`restart`&&Ke?(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:ve(Ke,y).slice(0,5)}):e===`all`&&x?(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:Y(1+x.files.rotatedFiles,`file`)}):null]},e))})]}),(0,Q.jsx)(`span`,{className:`lg-fill`}),(t.loading||t.loadingEarlier)&&(0,Q.jsx)(`span`,{className:`lg-busy`,"aria-label":`Reading the logs`,children:(0,Q.jsx)(se,{className:`animate-spin`})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:`Wrap long lines`,"aria-pressed":b,onClick:()=>te(!b),children:(0,Q.jsx)(ie,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:`Follow new lines`,"aria-pressed":p,onClick:()=>m(!p),children:(0,Q.jsx)(ee,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:_?`Resume live lines`:`Pause live lines`,"aria-pressed":_,onClick:()=>v(!_),children:_?(0,Q.jsx)(ne,{}):(0,Q.jsx)(S,{})}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn lg-hide-narrow`,title:`Download these lines`,onClick:()=>mn(n),disabled:!n.length,children:(0,Q.jsx)(T,{})}),(0,Q.jsxs)(pe,{children:[(0,Q.jsx)(de,{asChild:!0,children:(0,Q.jsx)(`button`,{type:`button`,className:`lg-ibtn`,title:`More`,"aria-label":`More`,children:(0,Q.jsx)(g,{})})}),(0,Q.jsxs)(fe,{align:`end`,className:`min-w-52`,children:[(0,Q.jsxs)(G,{disabled:!n.length,onSelect:()=>void ln(n),children:[(0,Q.jsx)(ae,{}),`Copy visible lines`,(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:sn(n).toLocaleString(`en-US`)})]}),(0,Q.jsxs)(G,{disabled:!n.length,onSelect:()=>mn(n),children:[(0,Q.jsx)(T,{}),`Download as .log`]}),(0,Q.jsxs)(G,{onSelect:()=>t.reload(),children:[(0,Q.jsx)(w,{}),`Read again`]}),(0,Q.jsx)(ue,{}),(0,Q.jsxs)(G,{onSelect:e.togglePrefs,children:[(0,Q.jsx)(s,{}),`Preferences`]})]})]})]}),We.length>0&&(0,Q.jsxs)(`div`,{className:`lg-tagbar`,children:[(0,Q.jsx)(`span`,{className:`lg-tagbar-lbl`,children:`Tags`}),We.map(([e,t])=>{let n=`${o.src}:${e}`;return(0,Q.jsxs)(`button`,{type:`button`,className:`lg-tag`,"aria-pressed":!Ge.has(n),onClick:()=>c({tagsOff:Ge.has(n)?o.tagsOff.filter(e=>e!==n):[...o.tagsOff,n]}),children:[e,(0,Q.jsx)(`span`,{className:`n`,children:we(t)})]},e)})]}),(0,Q.jsx)(`div`,{ref:C,className:B(`lg-list`,b&&`wrap`),tabIndex:0,role:`listbox`,"aria-multiselectable":`true`,"aria-label":`Log lines`,"aria-busy":t.loading,onScroll:Ae,onMouseDown:je,onMouseOver:Me,onKeyDown:Fe,"data-testid":`logs-list`,children:n.length>0?(0,Q.jsxs)(`div`,{ref:D,className:`lg-rows`,style:{height:_e,padding:0},children:[(0,Q.jsx)(`div`,{style:{transform:`translateY(${Be?.start??0}px)`},children:me.map(e=>{let t=V[e.index];return t.kind===`div`?(0,Q.jsxs)(`div`,{ref:K.measureElement,"data-index":e.index,className:`lg-div`,children:[(0,Q.jsx)(w,{}),`PPM restarted at `,ve(t.at,y).slice(0,8)]},t.key):(0,Q.jsx)(Tn,{row:t.row,index:e.index,selected:d.keys.has(t.key),cursor:d.cursor===t.key,flash:F.has(t.key),open:A.has(t.key),utc:y,re:R,titles:ce,onChat:Pe,onToggleMore:Ne,measure:K.measureElement},t.key)})}),Ve&&(0,Q.jsxs)(`div`,{ref:O,className:`lg-selbar absolute left-0 top-0 z-10 flex max-w-full flex-wrap gap-1 rounded-md border border-border bg-surface p-0.5 shadow-md`,role:`group`,"aria-label":`Selected lines`,"data-testid":`logs-selbar`,children:[(0,Q.jsx)(`span`,{className:`lg-selcount`,children:Y(sn(W),`line`)}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>{dn(W,!1),X()},children:[(0,Q.jsx)(a,{}),`Add to current chat`]}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>{dn(W,!0),X()},children:[(0,Q.jsx)(E,{}),`Add to new chat`]}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>{fn(W,()=>e.goTo(`report`)),X()},children:[(0,Q.jsx)(r,{}),`Add to report`]}),(0,Q.jsxs)(`button`,{type:`button`,className:vn,onClick:()=>void ln(W),children:[(0,Q.jsx)(ae,{}),`Copy`]})]})]}):(0,Q.jsx)(An,{...e})}),q>0&&!p&&(0,Q.jsxs)(`button`,{type:`button`,className:`lg-newpill`,onClick:()=>m(!0),children:[(0,Q.jsx)(j,{}),Y(q,`new line`)]}),(0,Q.jsxs)(`div`,{className:`lg-foot`,children:[(0,Q.jsx)(`span`,{className:`src`,children:Cn(o.src,x?.files)}),x&&(0,Q.jsx)(`span`,{children:x.hasMore?`${sn(n).toLocaleString(`en-US`)} of ${Y(x.matched,`line`)}`:Y(x.matched,`line`)}),(0,Q.jsx)(`button`,{type:`button`,disabled:!x?.hasMore||t.loadingEarlier||t.loading,onClick:()=>void De(),children:t.loadingEarlier?`Loading…`:`Load earlier`}),(0,Q.jsx)(`span`,{className:`sp`}),(0,Q.jsx)(`span`,{className:`tz`,children:y?`UTC`:`Local time (${he()})`})]})]})]})}function On({id:e,label:t,sub:n,stats:r,current:i,onPick:a}){let o=qt[e],s=r?.err??0,c=r?.warn??0;return(0,Q.jsxs)(`button`,{type:`button`,"aria-current":i,title:t,onClick:a,className:B(`lg-src flex min-h-11 w-full items-center gap-3 px-3 py-2 text-left transition-colors`,s?`has-e`:c?`has-w`:``,i?`bg-primary/10 text-text-primary`:`hover:bg-surface-hover`),children:[(0,Q.jsx)(o,{className:`lg-src-ic size-4 shrink-0`}),(0,Q.jsxs)(`span`,{className:`lg-src-txt`,children:[(0,Q.jsx)(`b`,{children:t}),(0,Q.jsx)(`small`,{children:n})]}),(0,Q.jsxs)(`span`,{className:`lg-cnts`,children:[(s>0||c>0)&&(0,Q.jsxs)(`span`,{className:`flex gap-1`,children:[s>0&&(0,Q.jsx)(`span`,{className:`lg-pill e`,title:Y(s,`error`),children:we(s)}),c>0&&(0,Q.jsx)(`span`,{className:`lg-pill w`,title:Y(c,`warning`),children:we(c)})]}),(0,Q.jsx)(`span`,{className:`lg-total`,title:`Lines in this range`,children:we(r?.total??0)})]})]})}function kn({filter:e,setFilter:t,chats:n,titles:r}){let o=ce(un());return(0,Q.jsxs)(fe,{align:`start`,className:`max-h-80 min-w-60 max-w-80`,children:[(0,Q.jsx)(W,{className:`text-xs font-normal text-text-subtle`,children:`Show lines from`}),(0,Q.jsxs)(G,{onSelect:()=>t({chat:null}),children:[(0,Q.jsx)(x,{}),`All chats`,!e.chat&&(0,Q.jsx)(i,{className:`ml-auto`})]}),(0,Q.jsx)(ue,{}),n.length===0&&(0,Q.jsx)(W,{className:`text-xs font-normal text-text-subtle`,children:`No chat named in this range`}),n.slice(0,40).map(n=>(0,Q.jsxs)(G,{onSelect:()=>t({chat:n.sid}),children:[(0,Q.jsx)(a,{}),(0,Q.jsx)(`span`,{className:`min-w-0 truncate`,children:n.title??r[n.sid]??n.sid.slice(0,8)}),e.chat===n.sid?(0,Q.jsx)(i,{className:`ml-auto`}):(0,Q.jsx)(`span`,{className:`lg-mi-sub`,children:n.sid===o?`this tab`:n.sid.slice(0,8)})]},n.sid))]})}function An(e){let{feed:t,filter:n,range:r}=e;return t.error&&!t.loading?(0,Q.jsxs)(`div`,{className:`lg-empty`,children:[`Could not read the logs: `,t.error,`. `,(0,Q.jsx)(`button`,{type:`button`,onClick:()=>t.reload(),children:`Try again`})]}):t.loading||!t.meta?(0,Q.jsx)(`div`,{className:`lg-empty`,children:`Reading the logs…`}):on(n,r)?(0,Q.jsxs)(`div`,{className:`lg-empty`,children:[`No lines match these filters. `,(0,Q.jsx)(`button`,{type:`button`,onClick:e.clearFilters,children:`Clear filters`})]}):(0,Q.jsxs)(`div`,{className:`lg-empty`,children:[`Nothing in `,Le[r].toLowerCase(),`. `,(0,Q.jsx)(`button`,{type:`button`,onClick:()=>e.setRange(`all`),children:`Show everything kept`})]})}var jn=450,Mn=8,Nn=[[`error`,`e`,`Errors`],[`warn`,`w`,`Warnings`],[`info`,``,`Info`],[`debug`,``,`Debug`]];function Pn(e){let{feed:t,rows:n,filter:i,setFilter:o,range:s,setRange:c,sel:l,setSel:u,follow:d,setFollow:f,utc:p}=e,m=t.meta,h=(0,Z.useRef)(null),g=(0,Z.useRef)(null),[_,v]=(0,Z.useState)(!1),[ee,b]=(0,Z.useState)(()=>new Set),[x,S]=(0,Z.useState)(null),te=z(e=>e.setLogsUtc),C=(0,Z.useMemo)(()=>ze(i),[i]),w=(0,Z.useMemo)(()=>ke(C),[C]),T=(0,Z.useMemo)(()=>m?.titles??{},[m?.titles]),D=(0,Z.useMemo)(()=>n.map(e=>e.key),[n]),k=(0,Z.useMemo)(()=>an(n,l),[n,l]),A=_||l.keys.size>0,M=et({count:n.length,getScrollElement:()=>h.current,estimateSize:()=>64,getItemKey:e=>n[e]?.key??e,overscan:10}),ne=M.getTotalSize(),{newCount:re,onScroll:ie}=_n(h,{follow:d,setFollow:f,feed:t,size:ne+n.length,virtualizer:M,keep:e.listTop}),N=(0,Z.useCallback)(()=>{v(!1),u($)},[u]),P=e=>{if(A){l.anchor===e&&l.keys.size===1?u({keys:new Set,anchor:null,cursor:null}):l.anchor?u(nn(l,D,e)):u(tn(e));return}b(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},F=()=>{g.current&&clearTimeout(g.current.timer),g.current=null},oe=e=>{if(e.pointerType===`mouse`&&e.button!==0)return;let t=e.target,n=t.closest(`.lg-prow`)?.dataset.key;if(!n||t.closest(`button, a`))return;F();let r=setTimeout(()=>{g.current&&(g.current.fired=!0,v(!0),u(tn(n)),navigator.vibrate?.(10))},jn);g.current={key:n,x:e.clientX,y:e.clientY,timer:r,fired:!1}},se=e=>{let t=g.current;t&&Math.hypot(e.clientX-t.x,e.clientY-t.y)>Mn&&F()},L=()=>{let e=g.current;e&&(clearTimeout(e.timer),g.current=null,e.fired||P(e.key))},R=sn(k),ce=k[0],le=k[k.length-1],V=ce&&le?Ne(ce.entry.ts,le.lastTs,p):``,H=x===`chat`?un():void 0,W=m?Object.values(m.stats):[],G=e=>{dn(k,e),S(null),N()};return(0,Q.jsxs)(`div`,{className:`lg-view`,children:[(0,Q.jsxs)(`div`,{className:`lg-pchips`,"aria-label":`Sources`,children:[(0,Q.jsx)(Fn,{id:`all`,label:`All`,err:W.reduce((e,t)=>e+t.err,0),warn:W.reduce((e,t)=>e+t.warn,0),current:i.src===`all`,onPick:()=>o({src:`all`,tagsOff:[]})}),Ce.map(e=>(0,Q.jsx)(Fn,{id:e.id,label:e.label,err:m?.stats[e.id].err??0,warn:m?.stats[e.id].warn??0,current:i.src===e.id,onPick:()=>o({src:e.id,tagsOff:[]})},e.id))]}),(0,Q.jsxs)(`div`,{className:`lg-psearch`,children:[(0,Q.jsxs)(`div`,{className:`lg-search`,children:[(0,Q.jsx)(I,{}),(0,Q.jsx)(`input`,{type:`search`,value:i.q,onChange:e=>o({q:e.target.value}),placeholder:`Search logs`,"aria-label":`Search logs`,"aria-invalid":!!i.q&&(C===void 0||!!m?.badRegex),enterKeyHint:`search`})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-pfilter`,"aria-label":`Filters`,onClick:()=>S(`filter`),children:[(0,Q.jsx)(O,{}),on(i,s)&&(0,Q.jsx)(`span`,{className:`dotn`})]})]}),!A&&n.length>0&&(0,Q.jsx)(`div`,{className:`lg-phint`,children:`Long-press a line to select it, then tap the last line you need.`}),(0,Q.jsxs)(`div`,{className:`relative flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(`div`,{ref:h,className:`lg-plist`,onScroll:ie,onPointerDown:oe,onPointerMove:se,onPointerUp:L,onPointerCancel:F,onPointerLeave:F,onContextMenu:e=>{e.target.closest(`.lg-prow`)&&e.preventDefault()},"data-testid":`logs-plist`,children:n.length>0?(0,Q.jsx)(`div`,{style:{height:ne,position:`relative`},children:(0,Q.jsx)(`div`,{style:{transform:`translateY(${M.getVirtualItems()[0]?.start??0}px)`},children:M.getVirtualItems().map(e=>{let t=n[e.index];return(0,Q.jsx)(In,{row:t,index:e.index,selecting:A,selected:l.keys.has(t.key),open:ee.has(t.key),utc:p,re:w,titles:T,onChat:e=>o({chat:e}),measure:M.measureElement},t.key)})})}):(0,Q.jsx)(An,{...e})}),re>0&&!d&&(0,Q.jsxs)(`button`,{type:`button`,className:`lg-newpill`,style:{bottom:12},onClick:()=>f(!0),children:[(0,Q.jsx)(j,{}),Y(re,`new line`)]})]}),A&&(0,Q.jsxs)(`div`,{className:`lg-pbar`,"data-testid":`logs-pbar`,children:[(0,Q.jsx)(U,{variant:`ghost`,size:`icon`,className:`size-11`,"aria-label":`Stop selecting`,onClick:N,children:(0,Q.jsx)(y,{className:`size-5`})}),(0,Q.jsxs)(`span`,{className:`cnt`,children:[R?`${Y(R,`line`)} selected`:`Nothing selected`,(0,Q.jsx)(`small`,{children:R?V:`Tap lines to select them`})]}),(0,Q.jsxs)(U,{variant:`outline`,className:`min-h-11 px-3`,disabled:!R,onClick:()=>S(`chat`),children:[(0,Q.jsx)(a,{className:`size-4`}),`Ask AI`]}),(0,Q.jsxs)(U,{className:`min-h-11 px-3`,disabled:!R,onClick:()=>{fn(k,()=>e.goTo(`report`)),N()},children:[(0,Q.jsx)(r,{className:`size-4`}),`Report`]})]}),(0,Q.jsxs)(K,{open:x===`chat`,onClose:()=>S(null),children:[(0,Q.jsxs)(`div`,{className:`lg-sheet-title`,children:[`Ask AI about `,Y(R,`line`),(0,Q.jsx)(`small`,{children:V})]}),(0,Q.jsxs)(`div`,{className:`lg-sheet-list`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:`lg-sheet-row`,onClick:()=>G(!1),children:[(0,Q.jsx)(a,{}),(0,Q.jsxs)(`span`,{children:[`Add to current chat`,(0,Q.jsx)(`small`,{children:H?H.title:`Opens a new chat`})]})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-sheet-row`,onClick:()=>G(!0),children:[(0,Q.jsx)(E,{}),(0,Q.jsxs)(`span`,{children:[`Add to new chat`,(0,Q.jsx)(`small`,{children:`Starts a chat with these lines attached`})]})]}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-sheet-row`,onClick:()=>{ln(k),S(null)},children:[(0,Q.jsx)(ae,{}),(0,Q.jsx)(`span`,{children:`Copy lines`})]})]})]}),(0,Q.jsxs)(K,{open:x===`filter`,onClose:()=>S(null),className:`flex max-h-[calc(var(--sheet-vh,100dvh)*0.85)] flex-col`,children:[(0,Q.jsx)(`div`,{className:`lg-sheet-title`,children:`Filters`}),(0,Q.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[(0,Q.jsx)(en,{title:`Levels`,children:Nn.map(([e,t,n])=>(0,Q.jsxs)(`button`,{type:`button`,className:B(`lg-chip`,t),"aria-pressed":i.levels[e],onClick:()=>o({levels:{...i.levels,[e]:!i.levels[e]}}),children:[(0,Q.jsx)(`span`,{className:`dot`}),n]},e))}),(0,Q.jsxs)(en,{title:`Chat`,children:[(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":!i.chat,onClick:()=>o({chat:null}),children:`All chats`}),i.chat&&!m?.chats.slice(0,4).some(e=>e.sid===i.chat)&&(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":!0,children:(0,Q.jsx)(`span`,{className:`t`,children:T[i.chat]??i.chat.slice(0,8)})}),(m?.chats??[]).slice(0,4).map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":i.chat===e.sid,onClick:()=>o({chat:e.sid}),children:(0,Q.jsx)(`span`,{className:`t`,children:e.title??T[e.sid]??e.sid.slice(0,8)})},e.sid))]}),(0,Q.jsx)(en,{title:`Time`,children:ge.map(e=>(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":s===e,onClick:()=>c(e),children:Le[e]},e))}),(0,Q.jsx)(`div`,{className:`lg-sheet-list`,children:(0,Q.jsxs)(`label`,{className:`lg-sheet-row`,children:[(0,Q.jsx)(J,{checked:p,onCheckedChange:te}),(0,Q.jsx)(`span`,{children:`Show times in UTC`})]})})]}),(0,Q.jsxs)(`div`,{className:`lg-sheet-foot`,children:[(0,Q.jsx)(U,{variant:`outline`,className:`min-h-11 flex-1`,onClick:e.clearFilters,children:`Reset`}),(0,Q.jsx)(U,{className:`min-h-11 flex-1`,onClick:()=>S(null),children:t.loading?`Reading…`:`Show ${Y(m?.matched??0,`line`)}`})]})]})]})}function Fn({id:e,label:t,err:n,warn:r,current:i,onPick:a}){let o=qt[e];return(0,Q.jsxs)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":i,onClick:a,children:[(0,Q.jsx)(o,{}),t,n>0?(0,Q.jsx)(`span`,{className:`lg-pill e`,children:n}):r>0?(0,Q.jsx)(`span`,{className:`lg-pill w`,children:r}):null]})}function In({row:e,index:t,selecting:n,selected:r,open:a,utc:o,re:s,titles:c,onChat:l,measure:u}){let d=e.entry,f=d.more?.length??0;return(0,Q.jsxs)(`div`,{ref:u,"data-index":t,"data-key":e.key,"aria-selected":n?r:void 0,className:B(`lg-prow`,xe(d.lv)===`error`&&`err`,r&&`sel`,a&&`open`),children:[(0,Q.jsx)(`div`,{className:`lg-prow-g`,children:n?(0,Q.jsx)(`span`,{className:`lg-pcheck`,children:r&&(0,Q.jsx)(i,{})}):(0,Q.jsx)(`span`,{className:`lv ${d.lv}`})}),(0,Q.jsxs)(`div`,{className:`min-w-0`,children:[(0,Q.jsxs)(`div`,{className:`lg-prow-meta`,children:[(0,Q.jsx)(`span`,{children:ve(d.ts,o)}),(0,Q.jsx)(`span`,{className:`lv ${d.lv}`,children:Jt[d.lv]}),(0,Q.jsx)(`span`,{className:`tg`,children:d.tag}),e.count>1&&(0,Q.jsxs)(`span`,{children:[`×`,e.count]}),f>0&&(0,Q.jsxs)(`span`,{children:[`+`,Y(f,`line`)]})]}),(0,Q.jsxs)(`div`,{className:`lg-prow-msg`,children:[(0,Q.jsx)(Xt,{msg:d.msg,re:s,titles:c,onChat:l}),a&&f>0&&(0,Q.jsxs)(Q.Fragment,{children:[`
|
|
6
|
-
`,(0,Q.jsx)(Yt,{text:d.more.join(`
|
|
7
|
-
`),re:s})]})]})]})]})}var Ln={bug:{label:`Likely PPM bug`,icon:c,chip:`e`},setup:{label:`Your setup`,icon:s,chip:`w`},upstream:{label:`Upstream`,icon:C},expected:{label:`Expected`,icon:i}},Rn=3;function zn(e){let t=[e.errors>0&&Y(e.errors,`error`),e.warnings>0&&Y(e.warnings,`warning`)].filter(Boolean);return t.length?t.join(` · `):Y(e.count,`time`)}function Bn({utc:e,phone:t,issues:n,goTo:r,showInLogs:i}){let{data:a,error:s}=n,[c,l]=(0,Z.useState)(`all`);if(!a)return(0,Q.jsx)(`div`,{className:`lg-pane`,children:(0,Q.jsx)(`div`,{className:`lg-pane-in`,children:(0,Q.jsx)(`div`,{className:`lg-empty`,children:s?(0,Q.jsxs)(Q.Fragment,{children:[`Could not read what AI found: `,s]}):`Reading what AI found…`})})});let u=a.issues.filter(e=>!e.dismissed),d=e=>u.filter(t=>t.cls===e).length,f=d(`bug`),p=d(`setup`)+d(`upstream`),m=d(`expected`),h=a.issues.length-u.length,g=u.filter(e=>c===`all`||e.cls===c).sort((e,t)=>Ve.indexOf(e.cls)-Ve.indexOf(t.cls)||t.last-e.last),_=Math.max(1,Math.round((Date.now()-a.windowFrom)/36e5)),v=a.analyzedAt===null,ee=v?`Not sorted yet`:[f&&Y(f,`likely bug`),p&&`${p} to check`,m&&`${m} expected`].filter(Boolean).join(`, `)||`Nothing left to look at`,y=e=>{fn(q(e.lines),void 0,!0),r(`report`),Kt.getState().draft()},b=e=>{n.setDismissed(e.id,!0),L(e.cls===`expected`?`Hidden. The lines stay in Logs.`:`Dismissed`,{action:{label:`Undo`,onClick:()=>void n.setDismissed(e.id,!1)}})};return(0,Q.jsx)(`div`,{className:`lg-pane`,"data-testid":`logs-issues`,children:(0,Q.jsxs)(`div`,{className:`lg-pane-in`,children:[(0,Q.jsxs)(`div`,{className:`lg-ai-head`,children:[(0,Q.jsx)(`span`,{className:`lg-ai-ic`,children:(0,Q.jsx)(D,{})}),(0,Q.jsxs)(`div`,{className:`lg-ai-txt`,children:[a.running?(0,Q.jsxs)(`h3`,{className:`lg-analyzing`,children:[(0,Q.jsx)(se,{className:`animate-spin`}),a.unsorted?`Reading ${Y(a.unsorted,`error and warning`,`errors and warnings`)}…`:`Reading the errors and warnings…`]}):(0,Q.jsx)(`h3`,{children:ee}),(0,Q.jsxs)(`p`,{children:[v?`Claude can group`:`Claude grouped`,` the last `,Y(_,`hour`),` of errors and warnings by cause. Info lines are not sent.`]}),a.error&&!a.running&&(0,Q.jsxs)(`p`,{className:`err`,children:[`The last run failed: `,a.error]}),(0,Q.jsxs)(`div`,{className:`lg-ai-meta`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(D,{}),a.model]}),a.analyzedAt&&(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(P,{}),`Updated `,ve(a.analyzedAt,e).slice(0,5)]}),a.lastRun&&(0,Q.jsxs)(`span`,{children:[Y(a.lastRun.lines,`line`),` → `,Y(a.lastRun.patterns,`pattern`),` · `,we(a.lastRun.tokens),` tokens`]}),!v&&a.unsorted>0&&!a.running&&(0,Q.jsxs)(`span`,{children:[Y(a.unsorted,`new line`),` not sorted yet`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(o,{}),`Secrets removed first`]})]})]}),(0,Q.jsxs)(`div`,{className:`lg-ai-act`,children:[(0,Q.jsxs)(U,{variant:`outline`,size:`sm`,disabled:a.running,onClick:()=>void n.analyze(!v),className:t?`min-h-11`:void 0,children:[(0,Q.jsx)(w,{}),v?`Analyze`:`Re-analyze`]}),(0,Q.jsxs)(`label`,{className:`lg-autoline`,children:[(0,Q.jsx)(J,{checked:a.auto,onCheckedChange:e=>void n.setAuto(e)}),`Auto`]})]})]}),(0,Q.jsxs)(`div`,{className:`lg-filters`,children:[(0,Q.jsx)(Vn,{id:`all`,label:`All`,n:u.length,cur:c,set:l}),Ve.map(e=>(0,Q.jsx)(Vn,{id:e,label:Ln[e].label,chip:Ln[e].chip,n:d(e),cur:c,set:l},e))]}),g.map(t=>(0,Q.jsx)(Hn,{it:t,utc:e,onDraft:()=>y(t),onChat:()=>dn(q(t.lines),!1),onShow:()=>i(t.lines),onDismiss:()=>b(t)},t.id)),!g.length&&(0,Q.jsx)(`div`,{className:`lg-empty`,children:v?`Press Analyze to sort the errors and warnings.`:u.length?`Nothing in this group.`:`No errors or warnings worth a look in the last ${Y(_,`hour`)}.`}),(0,Q.jsxs)(`div`,{className:`lg-muted`,children:[(0,Q.jsx)(M,{}),(0,Q.jsx)(`span`,{children:`Nothing goes to GitHub from here: a report opens for you to read first.`}),h>0&&(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`span`,{children:[Y(h,`issue`),` hidden`]}),(0,Q.jsx)(`button`,{type:`button`,onClick:()=>void n.undismissAll(),children:`Show again`})]})]})]})})}function Vn({id:e,label:t,chip:n,n:r,cur:i,set:a}){return(0,Q.jsxs)(`button`,{type:`button`,className:B(`lg-chip`,n),"aria-pressed":i===e,onClick:()=>a(e),children:[t,` `,(0,Q.jsx)(`span`,{className:`n`,children:r})]})}function Hn({it:e,utc:t,onDraft:n,onChat:r,onShow:i,onDismiss:o}){let s=Ln[e.cls],c=s.icon,l=qt[e.src],u=q(e.lines);return(0,Q.jsxs)(`article`,{className:B(`lg-issue`,e.cls===`bug`&&`bug`),"data-testid":`logs-issue`,children:[(0,Q.jsxs)(`div`,{className:`lg-issue-top`,children:[(0,Q.jsxs)(`span`,{className:`lg-cls ${e.cls}`,children:[(0,Q.jsx)(c,{}),s.label]}),(0,Q.jsxs)(`span`,{className:`lg-area`,children:[(0,Q.jsx)(l,{}),e.area]}),(0,Q.jsxs)(`span`,{className:`lg-occ`,children:[zn(e),` · last `,ve(e.last,t).slice(0,5)]})]}),(0,Q.jsx)(`h4`,{children:e.title}),(0,Q.jsx)(`p`,{className:`lg-why`,children:e.why}),e.fix&&(0,Q.jsxs)(`div`,{className:`lg-fix`,children:[(0,Q.jsx)(M,{}),(0,Q.jsx)(`span`,{children:e.fix})]}),u.length>0&&(0,Q.jsxs)(`div`,{className:`lg-evid`,children:[u.slice(0,Rn).map(e=>(0,Q.jsx)(Qt,{row:e,utc:t,trim:!0},e.key)),u.length>Rn&&(0,Q.jsx)(`div`,{className:`r`,children:(0,Q.jsxs)(`span`,{className:`t`,children:[`+ `,Y(u.length-Rn,`more line`)]})})]}),(0,Q.jsxs)(`div`,{className:`lg-issue-act`,children:[e.cls===`bug`&&(0,Q.jsxs)(U,{size:`sm`,onClick:n,children:[(0,Q.jsx)(X,{}),`Draft report`]}),(0,Q.jsxs)(U,{variant:`outline`,size:`sm`,onClick:r,children:[(0,Q.jsx)(a,{}),`Ask in chat`]}),(0,Q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:i,disabled:!e.lines.length,children:[(0,Q.jsx)(k,{}),`Show in Logs`]}),e.cls!==`bug`&&(0,Q.jsxs)(U,{variant:`ghost`,size:`sm`,onClick:n,children:[(0,Q.jsx)(X,{}),`Report anyway`]}),(0,Q.jsxs)(U,{variant:`ghost`,size:`sm`,className:`ml-auto`,onClick:o,children:[(0,Q.jsx)(F,{}),e.cls===`expected`?`Hide`:`Dismiss`]})]})]})}var Un=[[`home`,`Home folder`,`/home/you → ~`],[`email`,`Email addresses`,`you@example.com → <email>`],[`chats`,`Chat ids`,`53952680-0b07-… → 53952680`],[`projects`,`Project names`,`my-app → <project>`]],Wn=700,Gn=null;function Kn(){return Gn??=it().catch(()=>(Gn=null,[])),Gn}var qn=e=>e.replace(/^Claude\s+/i,``);function Jn(e){return e.split(/(\u0001[^\u0002]*\u0002)/).map((e,t)=>e.startsWith(``)?(0,Q.jsx)(`mark`,{children:e.slice(1,-1)},t):(0,Q.jsx)(Z.Fragment,{children:e},t))}function Yn(e){return e.startsWith(`### `)?(0,Q.jsx)(`span`,{className:`h`,children:Jn(e)}):/^(<\/?(details|summary|sub)\b|`{3,}|~{3,})/.test(e)?(0,Q.jsx)(`span`,{className:`c`,children:Jn(e)}):Jn(e)}function Xn({utc:e,phone:t,issues:n,goTo:r,showInLogs:a}){let s=Kt(),{snippets:c,fields:u,status:d,stale:f,fresh:m,error:h,model:g,basis:_,view:ee,envOff:x,priv:S}=s,te=V(e=>e.projects).map(e=>e.name),[C,T]=(0,Z.useState)(null),[E,O]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{let e=!0;return Ht().then(t=>{e&&T(t)},()=>{e&&T([])}),Kn().then(t=>{e&&O(t)}),()=>{e=!1}},[]);let j=(0,Z.useMemo)(()=>({home:S.home,email:S.email,chats:S.chats,projects:S.projects?te:[]}),[S.home,S.email,S.chats,S.projects,te.join(`
|
|
8
|
-
`)]),ne=(0,Z.useMemo)(()=>(C??[]).filter(([e])=>!x.includes(e)),[C,x]),ie=gt(u.title.trim(),j),N=(0,Z.useMemo)(()=>Et({fields:u,snippets:c,environment:ne,redact:j}),[u,c,ne,j]),P=Dt(ie,u.labels,N),F=P.length>vt,oe=F?Dt(ie,u.labels,null):P,I=c.reduce((e,t)=>e+xt(t),0),R=d===`drafting`,z=u.title.trim();if((0,Z.useEffect)(()=>{if(A(null),z.length<8)return;let e=!0,t=setTimeout(()=>{Pe(gt(z,j)).then(t=>{e&&A(t)},()=>{})},Wn);return()=>{e=!1,clearTimeout(t)}},[z,j]),!c.length&&d===`none`)return(0,Q.jsx)(`div`,{className:`lg-pane`,children:(0,Q.jsxs)(`div`,{className:`lg-rep-empty`,"data-testid":`logs-report-empty`,children:[(0,Q.jsx)(`div`,{className:`lg-ai-ic`,children:(0,Q.jsx)(X,{})}),(0,Q.jsx)(`h3`,{children:`Nothing in the report yet`}),(0,Q.jsxs)(`p`,{children:[`Select lines in Logs and choose `,(0,Q.jsx)(`b`,{children:`Add to report`}),`. Or open Issues: AI may already have found something worth reporting.`]}),(0,Q.jsxs)(`div`,{className:`row`,children:[(0,Q.jsxs)(U,{variant:`outline`,size:`sm`,className:B(t&&`min-h-11`),onClick:()=>r(`logs`),children:[(0,Q.jsx)(v,{}),`Go to Logs`]}),(0,Q.jsxs)(U,{size:`sm`,className:B(t&&`min-h-11`),onClick:()=>r(`issues`),children:[(0,Q.jsx)(D,{}),`See what AI found`]})]})]})});let ce=()=>{F?H(N).then(e=>{e?L.success(`Body copied. Paste it into the issue that just opened.`):L.error(`Could not copy the body. Use Copy as Markdown, then paste it into the issue.`)}):L.success(`Opened the new issue on GitHub. Check it there, then press Submit.`)},le=async()=>{await H(Ot(ie,N))?L.success(`Copied the issue as Markdown`):L.error(`Could not copy the issue`)},ue=e=>{let t=s.remove(e.id);t&&L(`Removed ${Y(xt(e),`line`)} from the report`,{action:{label:`Undo`,onClick:()=>Kt.getState().restore(t.snippet,t.index)}})},K=()=>void s.draft(),me=g??n.data?.model??`Claude Haiku 4.5`,he=d===`done`?(0,Q.jsx)(D,{className:`ai`}):null,ge=Math.min(100,P.length/vt*100),_e=(e,t)=>(0,Q.jsx)(U,{asChild:!0,className:t,children:(0,Q.jsxs)(`a`,{href:oe,target:`_blank`,rel:`noopener noreferrer`,onClick:ce,children:[(0,Q.jsx)(X,{}),e]})});return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`div`,{className:`lg-pane`,"data-testid":`logs-report`,children:(0,Q.jsxs)(`div`,{className:`lg-rep`,children:[(0,Q.jsxs)(`div`,{className:`lg-rep-main`,children:[(0,Q.jsxs)(`div`,{className:`lg-rep-top`,children:[(0,Q.jsxs)(`h3`,{children:[(0,Q.jsx)(X,{}),`New issue for `,He]}),(0,Q.jsxs)(`div`,{className:`lg-seg`,role:`tablist`,"aria-label":`Write or preview`,children:[(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":ee===`write`,onClick:()=>s.setView(`write`),children:`Write`}),(0,Q.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":ee===`preview`,onClick:()=>s.setView(`preview`),children:`Preview`})]}),(0,Q.jsx)(`p`,{children:`Nothing is sent from here. GitHub opens with this filled in, and you submit it there.`})]}),ee===`preview`?(0,Q.jsxs)(`pre`,{className:`lg-md`,"data-testid":`logs-report-preview`,children:[(0,Q.jsx)(`span`,{className:`c`,children:`Title: `}),u.title.trim()?Jn(gt(u.title.trim(),j,!0)):(0,Q.jsx)(`span`,{className:`c`,children:`(no title yet)`}),`
|
|
9
|
-
`,(0,Q.jsxs)(`span`,{className:`c`,children:[`Labels: `,u.labels.join(`, `)||`none`]}),`
|
|
10
|
-
|
|
11
|
-
`,Et({fields:u,snippets:c,environment:ne,redact:j,mark:!0}).split(`
|
|
12
|
-
`).map((e,t)=>(0,Q.jsxs)(Z.Fragment,{children:[Yn(e),`
|
|
13
|
-
`]},t))]}):(0,Q.jsxs)(Q.Fragment,{children:[d===`done`?(0,Q.jsxs)(`div`,{className:`lg-aidone`,children:[(0,Q.jsx)(p,{}),(0,Q.jsx)(`span`,{children:h?(0,Q.jsxs)(`span`,{className:`text-error`,children:[`Could not write it again: `,h]}):f?`You changed the lines after Claude wrote this.`:(0,Q.jsxs)(Q.Fragment,{children:[`Drafted by `,(0,Q.jsx)(`b`,{children:me}),` from `,Y(_,`line`),`. Read it over before sending.`]})}),(0,Q.jsxs)(U,{variant:`ghost`,size:`xs`,className:`ml-auto`,onClick:K,children:[(0,Q.jsx)(w,{}),f?`Write again`:`Redo`]})]}):(0,Q.jsxs)(`div`,{className:`lg-aibox`,children:[(0,Q.jsx)(`span`,{className:`lg-ai-ic`,children:(0,Q.jsx)(D,{})}),(0,Q.jsxs)(`div`,{className:`lg-aibox-txt`,children:[(0,Q.jsx)(`b`,{children:R?`Writing the report…`:`Let AI write it up`}),(0,Q.jsx)(`span`,{children:R?`Reading ${Y(I,`line`)} and the environment.`:`Claude reads the ${Y(I,`line`)} below and fills in the title, what happened, the steps and what you expected.`}),h&&!R&&(0,Q.jsxs)(`span`,{className:`err`,children:[`Could not write it: `,h]})]}),(0,Q.jsx)(`div`,{className:`lg-aibox-act`,children:R?(0,Q.jsxs)(`span`,{className:`lg-analyzing`,children:[(0,Q.jsx)(se,{className:`animate-spin`}),`Drafting`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`span`,{className:`lg-modelchip`,children:[(0,Q.jsx)(D,{}),qn(me)]}),(0,Q.jsxs)(U,{size:`sm`,className:B(t&&`min-h-11`),disabled:!I,onClick:K,children:[(0,Q.jsx)(D,{}),`Draft with AI`]})]})})]}),(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsxs)(`label`,{htmlFor:`lg-rep-title`,children:[`Title`,he]}),R?(0,Q.jsx)(`div`,{className:`lg-skel`}):(0,Q.jsx)(`input`,{id:`lg-rep-title`,className:B(`lg-input`,m&&`lg-filled`),value:u.title,onChange:e=>s.setFields({title:e.target.value}),placeholder:`What went wrong, in one line`})]}),(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsx)(`span`,{className:`lbl`,children:`Labels`}),(0,Q.jsxs)(`div`,{className:`lg-labels`,children:[u.labels.map(e=>(0,Q.jsxs)(`span`,{className:`lg-label`,children:[e,(0,Q.jsx)(`button`,{type:`button`,className:`x`,"aria-label":`Remove ${e}`,onClick:()=>s.setFields({labels:u.labels.filter(t=>t!==e)}),children:(0,Q.jsx)(y,{})})]},e)),(0,Q.jsxs)(pe,{children:[(0,Q.jsx)(de,{asChild:!0,children:(0,Q.jsxs)(`button`,{type:`button`,className:`lg-label add`,children:[(0,Q.jsx)(b,{}),`Add label`]})}),(0,Q.jsxs)(fe,{align:`start`,className:`max-h-72 min-w-48`,children:[(0,Q.jsx)(W,{className:`text-xs font-normal text-text-subtle`,children:`Add a label`}),E===null&&(0,Q.jsx)(W,{className:`text-xs font-normal`,children:`Reading the labels…`}),E?.filter(e=>!u.labels.includes(e)).map(e=>(0,Q.jsx)(G,{onSelect:()=>s.setFields({labels:[...u.labels,e]}),children:e},e)),E&&!E.some(e=>!u.labels.includes(e))&&(0,Q.jsx)(W,{className:`text-xs font-normal`,children:E.length?`No more labels`:`Could not read the labels`})]})]})]})]}),(0,Q.jsx)(Zn,{id:`lg-rep-what`,label:`What happened`,mark:he,busy:R,fresh:m,rows:3,value:u.what,placeholder:`What you were doing and what went wrong`,onChange:e=>s.setFields({what:e})}),(0,Q.jsxs)(`div`,{className:`lg-grid2`,children:[(0,Q.jsx)(Zn,{id:`lg-rep-steps`,label:`Steps to reproduce`,mark:he,busy:R,fresh:m,rows:4,value:u.steps,placeholder:`1. …`,onChange:e=>s.setFields({steps:e})}),(0,Q.jsx)(Zn,{id:`lg-rep-expected`,label:`Expected`,mark:he,busy:R,fresh:m,rows:4,value:u.expected,placeholder:`What should have happened`,onChange:e=>s.setFields({expected:e})})]}),(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsxs)(`span`,{className:`lbl`,children:[`Log lines `,(0,Q.jsxs)(`span`,{className:`font-normal text-text-subtle`,children:[Y(I,`line`),` from `,Y(c.length,`place`)]})]}),(0,Q.jsx)(`div`,{className:`lg-snips`,children:c.map(t=>(0,Q.jsx)(Qn,{s:t,utc:e,onContext:e=>void s.setContext(t.id,e),onShow:()=>a(t.rows.map(e=>e.entry)),onRemove:()=>ue(t)},t.id))}),(0,Q.jsxs)(`button`,{type:`button`,className:`lg-addmore`,onClick:()=>{r(`logs`),L(`Select lines, then choose Add to report`)},children:[(0,Q.jsx)(b,{}),`Add lines from Logs`]})]})]})]}),(0,Q.jsxs)(`aside`,{className:`lg-rep-side`,children:[(0,Q.jsx)(`div`,{className:`lg-card`,children:(0,Q.jsxs)(`div`,{className:`lg-send`,children:[(0,Q.jsxs)(`div`,{children:[(0,Q.jsxs)(`div`,{className:`lg-meter-l`,children:[(0,Q.jsx)(`span`,{children:F?`Too long for a link`:`Fits in a GitHub link`}),(0,Q.jsxs)(`span`,{children:[(P.length/1024).toFixed(1),` / `,vt/1024,` KB`]})]}),(0,Q.jsx)(`div`,{className:B(`lg-meter`,ge>85&&`warn`),children:(0,Q.jsx)(`i`,{style:{width:`${ge.toFixed(1)}%`}})})]}),!t&&(0,Q.jsxs)(Q.Fragment,{children:[_e(F?`Copy body and open GitHub`:`Open GitHub issue`,`w-full`),(0,Q.jsxs)(U,{variant:`outline`,size:`sm`,className:`w-full`,onClick:()=>void le(),children:[(0,Q.jsx)(ae,{}),`Copy as Markdown`]})]}),(0,Q.jsx)(`div`,{className:`lg-send-note`,children:F?`The body is copied for you to paste. The title and labels still go in the link.`:`Opens github.com/${He}/issues/new in your browser, signed in as you. Labels stick only if you can triage that repository.`}),k&&(0,Q.jsxs)(`div`,{className:B(`lg-dupe`,k.issues.length>0&&`found`),children:[k.issues.length?(0,Q.jsx)(re,{}):(0,Q.jsx)(p,{}),(0,Q.jsx)(`span`,{children:k.issues.length?(0,Q.jsxs)(Q.Fragment,{children:[`Open issues that look like this one:`,(0,Q.jsx)(`ul`,{children:k.issues.slice(0,3).map(e=>(0,Q.jsx)(`li`,{children:(0,Q.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:[`#`,e.number,` `,e.title]})},e.number))})]}):(0,Q.jsxs)(Q.Fragment,{children:[`No open issue looks like this one. Searched `,`hienlh/ppm`,` for “`,k.query,`”.`]})})]})]})}),(0,Q.jsxs)(`div`,{className:`lg-card`,children:[(0,Q.jsxs)(`div`,{className:`lg-card-h`,children:[(0,Q.jsx)(l,{}),`Removed before sending`,(0,Q.jsx)(`span`,{className:`sub`,children:`see Preview`})]}),(0,Q.jsxs)(`div`,{className:`lg-priv`,children:[(0,Q.jsxs)(`div`,{className:`lg-priv-row`,children:[(0,Q.jsxs)(`span`,{className:`t`,children:[(0,Q.jsx)(`b`,{children:`Secrets and tokens`}),(0,Q.jsx)(`small`,{children:`API keys, OAuth tokens, tunnel addresses`})]}),(0,Q.jsx)(`span`,{className:`inline-flex`,title:`Always removed`,children:(0,Q.jsx)(o,{className:`lock`})})]}),Un.map(([e,t,n])=>(0,Q.jsxs)(`label`,{className:`lg-priv-row`,children:[(0,Q.jsxs)(`span`,{className:`t`,children:[(0,Q.jsx)(`b`,{children:t}),(0,Q.jsx)(`small`,{children:n})]}),(0,Q.jsx)(J,{checked:S[e],onCheckedChange:()=>s.togglePriv(e)})]},e))]})]}),(0,Q.jsxs)(`div`,{className:`lg-card`,children:[(0,Q.jsxs)(`div`,{className:`lg-card-h`,children:[(0,Q.jsx)(M,{}),`Environment`,(0,Q.jsx)(`span`,{className:`sub`,children:`untick to leave out`})]}),(0,Q.jsxs)(`div`,{className:`lg-card-b lg-env`,children:[C===null&&(0,Q.jsx)(`span`,{className:`text-xs text-text-subtle`,children:`Reading…`}),C?.map(([e,t])=>{let n=!x.includes(e);return(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(`input`,{type:`checkbox`,className:`sr-only`,checked:n,onChange:()=>s.toggleEnv(e)}),(0,Q.jsx)(`span`,{className:`lg-check`,"aria-hidden":`true`,"data-on":n,children:n&&(0,Q.jsx)(i,{})}),(0,Q.jsx)(`b`,{children:e}),(0,Q.jsx)(`span`,{className:`v`,children:t})]},e)})]})]})]})]})}),t&&(0,Q.jsxs)(`div`,{className:`lg-pfoot`,children:[(0,Q.jsxs)(U,{variant:`outline`,className:`min-h-11 flex-1`,onClick:()=>void le(),children:[(0,Q.jsx)(ae,{}),`Copy`]}),_e(`Open on GitHub`,`min-h-11 flex-1`)]})]})}function Zn({id:e,label:t,mark:n,busy:r,fresh:i,rows:a,value:o,placeholder:s,onChange:c}){return(0,Q.jsxs)(`div`,{className:`lg-field`,children:[(0,Q.jsxs)(`label`,{htmlFor:e,children:[t,n]}),r?(0,Q.jsx)(`div`,{className:`lg-skel tall`}):(0,Q.jsx)(`textarea`,{id:e,className:B(`lg-textarea`,i&&`lg-filled`),rows:a,value:o,placeholder:s,onChange:e=>c(e.target.value)})]})}function Qn({s:e,utc:t,onContext:n,onShow:r,onRemove:i}){let a=qt[e.src],o=e.rows[0],s=e.rows[e.rows.length-1];return(0,Q.jsxs)(`div`,{className:`lg-snip`,children:[(0,Q.jsxs)(`div`,{className:`lg-snip-h`,children:[(0,Q.jsxs)(`span`,{className:`src`,children:[(0,Q.jsx)(a,{}),Ee(e.src)]}),(0,Q.jsxs)(`span`,{className:`rng`,children:[o&&s?Ne(o.entry.ts,s.lastTs,t):``,` · `,Y(xt(e),`line`)]}),(0,Q.jsxs)(`span`,{className:`lg-ctxsel`,children:[`Context`,yt.map(t=>(0,Q.jsx)(`button`,{type:`button`,"aria-pressed":e.ctx===t,onClick:()=>n(t),children:t?`±${t}`:`none`},t))]}),(0,Q.jsxs)(`span`,{className:`end`,children:[(0,Q.jsx)(U,{variant:`ghost`,size:`icon-xs`,title:`Show in Logs`,"aria-label":`Show in Logs`,onClick:r,children:(0,Q.jsx)(k,{})}),(0,Q.jsx)(U,{variant:`ghost`,size:`icon-xs`,title:`Take out of the report`,"aria-label":`Take out of the report`,onClick:i,children:(0,Q.jsx)(y,{})})]})]}),(0,Q.jsx)(`div`,{className:`lg-snip-b`,children:bt(e).map((e,n)=>(0,Q.jsx)(Qt,{row:e.row,utc:t,ctx:e.ctx},n))})]})}var $n={logs:`Logs`,issues:`Issues`,report:`Report`};function er({mode:e,initialView:t=`logs`,onViewChange:n}){let r=e===`phone`,[i,a]=(0,Z.useState)(t),[o,c]=(0,Z.useState)(ot),[l,u]=(0,Z.useState)(`1h`),[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!0),[h,g]=(0,Z.useState)($),[_,v]=(0,Z.useState)(!1),[ee,y]=(0,Z.useState)(null),[b,x]=(0,Z.useState)(null),S=(0,Z.useRef)(null),te=z(e=>e.logsUtc),C=z(e=>e.logsWrap),w=zt(o,l,d),T=(0,Z.useMemo)(()=>q(w.entries),[w.entries]),E=Bt(),O=Kt(e=>e.snippets.reduce((e,t)=>e+xt(t),0)),k=(0,Z.useRef)(n);k.current=n;let A=(0,Z.useCallback)(e=>{a(e),k.current?.(e)},[]),j=(0,Z.useCallback)(e=>{c(t=>({...t,...e})),g($)},[]),M=(0,Z.useCallback)(e=>{u(e),g($)},[]),ne=(0,Z.useCallback)(()=>{c(e=>({...ot,src:e.src})),u(`1h`),g($)},[]),re=(0,Z.useCallback)(e=>{g(e),e.keys.size&&m(!1)},[]),ie=(0,Z.useCallback)(e=>{e&&((e.chat||e.src)&&(c({...ot,src:e.src??`all`,chat:e.chat??null}),e.chat&&u(`all`),g($),m(!0)),e.view?A(e.view):(e.chat||e.src)&&A(`logs`))},[A]);(0,Z.useEffect)(()=>{ie(Je());let e=()=>ie(Je());return window.addEventListener(Ge,e),()=>window.removeEventListener(Ge,e)},[ie]);let N=(0,Z.useCallback)(e=>{if(!e.length)return;let t=e.reduce((e,t)=>t.ts<e.ts?t:e),n={...ot,src:St(e),levels:{...ot.levels,debug:e.some(e=>e.lv===`debug`)}},r=Oe(t.ts,Date.now());c(n),u(r),g($),m(!1),x({ids:e.map(e=>e.id),key:It(n,r),reach:t.id,reached:!1}),A(`logs`)},[A]);(0,Z.useEffect)(()=>{if(!b||w.key!==b.key||w.loading||w.loadingEarlier||!w.meta)return;let e=new Set(b.ids),t=T.filter(t=>t.ids.some(t=>e.has(t)));if(t.reduce((t,n)=>t+n.ids.filter(t=>e.has(t)).length,0)<e.size&&w.meta.hasMore&&!b.reached){x({...b,reached:!0}),w.loadEarlier(b.reach);return}if(x(null),!t.length){L(w.meta.reachMissed===`far`?`Those lines are too far back to show here`:`Those lines are no longer kept`);return}g({keys:new Set(t.map(e=>e.key)),anchor:t[0].key,cursor:t[t.length-1].key}),y({key:t[0].key,seq:Date.now()})},[b,w,T]);let[P,ae]=(0,Z.useState)(!1),F=(0,Z.useRef)(O);(0,Z.useEffect)(()=>{let e=O>F.current;if(F.current=O,!e)return;ae(!0);let t=setTimeout(()=>ae(!1),1200);return()=>clearTimeout(t)},[O]);let oe=E.data?.issues.filter(e=>e.cls!==`expected`&&!e.dismissed).length??0,se={feed:w,rows:T,filter:o,setFilter:j,clearFilters:ne,range:l,setRange:M,paused:d,setPaused:f,follow:p,setFollow:m,sel:h,setSel:re,utc:te,wrap:r||C,reveal:ee,listTop:S,goTo:A,togglePrefs:()=>v(e=>!e)},I={utc:te,phone:r,issues:E,goTo:A,showInLogs:N};return(0,Q.jsxs)(`div`,{className:`lg-app`,"data-mode":r?`phone`:`window`,"data-testid":`logs-app`,children:[r&&(0,Q.jsxs)(`div`,{className:`lg-head`,children:[(0,Q.jsx)(`h2`,{children:`Logs`}),(0,Q.jsx)($t,{paused:d,pending:w.pausedCount})]}),(0,Q.jsxs)(`div`,{className:`lg-tabs`,role:`tablist`,"aria-label":`Logs`,children:[tt.map(e=>(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":i===e,onClick:()=>A(e),"data-testid":`logs-tab-${e}`,className:B(`inline-flex min-h-11 shrink-0 items-center px-4 text-sm font-medium transition-colors`,i===e?`-mb-px border-b-2 border-primary text-text-primary`:`text-text-subtle hover:text-text-secondary`),children:[e===`issues`&&(0,Q.jsx)(D,{className:`lg-tab-ai`}),$n[e],e===`issues`&&oe>0&&(0,Q.jsx)(`span`,{className:`lg-tabn`,children:oe}),e===`report`&&O>0&&(0,Q.jsx)(`span`,{className:B(`lg-tabn acc`,P&&`pulse`),children:O.toLocaleString(`en-US`)})]},e)),!r&&(0,Q.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-2 pl-3 pr-1`,children:[(0,Q.jsx)($t,{paused:d,pending:w.pausedCount}),(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Logs preferences`,"aria-expanded":_,onClick:()=>v(e=>!e),className:B(`flex size-11 items-center justify-center rounded transition-colors md:size-8`,_?`bg-primary/10 text-primary`:`text-text-subtle hover:bg-surface-hover hover:text-text-secondary`),children:(0,Q.jsx)(s,{className:`size-4`})})]})]}),_&&!r&&(0,Q.jsx)(tr,{auto:E.data?.auto,setAuto:E.setAuto,files:w.meta?.files}),(0,Q.jsx)(`div`,{className:`lg-body`,children:i===`logs`?r?(0,Q.jsx)(Pn,{...se}):(0,Q.jsx)(Dn,{...se}):i===`issues`?(0,Q.jsx)(Bn,{...I}):(0,Q.jsx)(Xn,{...I})})]})}function tr({auto:e,setAuto:t,files:n}){let r=z(e=>e.logsUtc),i=z(e=>e.setLogsUtc),a=z(e=>e.logsBadge),o=z(e=>e.setLogsBadge);return(0,Q.jsxs)(`div`,{className:`lg-prefs`,"data-testid":`logs-prefs`,children:[(0,Q.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[`Times`,(0,Q.jsxs)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":!r,onClick:()=>i(!1),children:[`Local (`,he(),`)`]}),(0,Q.jsx)(`button`,{type:`button`,className:`lg-chip`,"aria-pressed":r,onClick:()=>i(!0),children:`UTC`})]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(J,{checked:a,onCheckedChange:o}),`Red dot on the Logs button for a likely bug`]}),(0,Q.jsxs)(`label`,{children:[(0,Q.jsx)(J,{checked:!!e,disabled:e===void 0,onCheckedChange:e=>void t(e)}),`Let AI sort new errors and warnings`]}),n&&(0,Q.jsxs)(`span`,{children:[`Keeps `,(0,Q.jsxs)(`b`,{children:[n.generations,` × `,Fe(n.capBytes)]}),` of ppm.log and `,(0,Q.jsx)(`b`,{children:Y(n.browserRetentionDays,`day`)}),` of browser logs`]})]})}export{er as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import"./icons-JMA45Ifw.js";import"./api-client-OiA8Ida1.js";import"./settings-store-WeJyQVL8.js";import"./portal-container-context-BXAsDqrB.js";import"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import"./tab-store-nNzRNfVV.js";import"./use-is-mobile-BXHbkfs9.js";import"./button-Br60hGkw.js";import"./dropdown-menu-DB3yyoVz.js";import"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import"./send-to-chat-Bcm_Lcog.js";import{t}from"./logs-app-CJlNqOdc.js";var n=e(),r=()=>(0,n.jsx)(t,{mode:`phone`});export{r as LogsTab};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import"./icons-JMA45Ifw.js";import"./api-client-OiA8Ida1.js";import"./settings-store-WeJyQVL8.js";import"./portal-container-context-BXAsDqrB.js";import"./panel-store-DmP16Fo0.js";import{t}from"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import"./tab-store-nNzRNfVV.js";import"./use-is-mobile-BXHbkfs9.js";import"./button-Br60hGkw.js";import"./dropdown-menu-DB3yyoVz.js";import"./mobile-bottom-sheet-CGmmdp_5.js";import"./use-visual-viewport-CQ6-A0Dt.js";import{rn as n}from"./index-ItT-dTPV.js";import"./send-to-chat-Bcm_Lcog.js";import{t as r}from"./logs-app-CJlNqOdc.js";var i=e();function a({id:e,payload:a}){let o=t(e=>e.setPayload);return(0,i.jsx)(r,{mode:`window`,initialView:n(a?.view),onViewChange:t=>o(e,{view:t})})}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-C5c2KzVm.js";import{I as t}from"./index-ItT-dTPV.js";var n=e({LspConnection:()=>a,acquireLspConnection:()=>s,releaseLspConnection:()=>l,retryUnavailableLspDocuments:()=>c}),r=15e3;function i(e){clearTimeout(e.timer),e.detach?.()}var a=class{ws;docs=new Map;pending=new Map;notificationListeners=new Set;statusListeners=new Set;nextId=1;constructor(e){this.projectName=e,this.ws=new t(`/ws/project/${encodeURIComponent(e)}/lsp`),this.ws.onMessage(e=>this.receive(e)),this.ws.connect()}open(e,t){this.docs.set(e,{source:t,status:{state:`opening`}}),this.setStatus(e,{state:`opening`}),this.sendOpen(e)}sendOpen(e){let t=this.docs.get(e);t&&this.send({t:`open`,path:e,version:t.source.getVersion(),text:t.source.getText(),clientUri:t.source.clientUri})}close(e){this.docs.delete(e)&&this.send({t:`close`,path:e})}change(e,t,n){this.docs.has(e)&&this.send({t:`change`,path:e,version:t,changes:n})}save(e,t){this.docs.has(e)&&this.send({t:`save`,path:e,text:t})}statusOf(e){return this.docs.get(e)?.status}retryUnavailable(){for(let[e,t]of this.docs)t.status.state===`unavailable`&&(this.setStatus(e,{state:`opening`}),this.sendOpen(e))}request(e,t,n,i={}){let a=this.docs.get(e);if(!a||a.status.state!==`ready`)return Promise.reject(Error(`No language server is ready for ${e}`));let{timeoutMs:o=r,signal:s}=i;if(s?.aborted)return Promise.reject(Error(`${t} was cancelled`));let c=this.nextId++;return new Promise((r,i)=>{let a=setTimeout(()=>{this.pending.delete(c),this.send({t:`cancel`,id:c}),i(Error(`${t} timed out`))},o),l=()=>{this.pending.delete(c)&&(clearTimeout(a),this.send({t:`cancel`,id:c}),i(Error(`${t} was cancelled`)))};s?.addEventListener(`abort`,l,{once:!0}),this.pending.set(c,{resolve:r,reject:i,timer:a,detach:s?()=>s.removeEventListener(`abort`,l):void 0}),this.send({t:`request`,id:c,path:e,method:t,params:n})})}onNotification(e){return this.notificationListeners.add(e),()=>this.notificationListeners.delete(e)}onStatus(e){return this.statusListeners.add(e),()=>this.statusListeners.delete(e)}send(e){this.ws.send(JSON.stringify(e))}receive(e){let t;try{t=JSON.parse(typeof e.data==`string`?e.data:``)}catch{return}switch(t.t){case`hello`:for(let e of this.docs.keys())this.sendOpen(e);break;case`ready`:this.setStatus(String(t.path),{state:`ready`,languageId:String(t.languageId),server:t.server,projectPath:String(t.projectPath??``),capabilities:t.capabilities??{}});break;case`unavailable`:this.setStatus(String(t.path),{state:`unavailable`,reason:String(t.reason),server:t.server??null,message:String(t.message)});break;case`resync`:{let e=String(t.path),n=this.docs.get(e);n&&this.send({t:`change`,path:e,version:n.source.getVersion(),text:n.source.getText()});break}case`response`:{let e=this.pending.get(Number(t.id));if(!e)return;i(e),this.pending.delete(Number(t.id)),e.resolve(t.result);break}case`error`:{let e=this.pending.get(Number(t.id));if(!e)return;i(e),this.pending.delete(Number(t.id)),e.reject(Error(String(t.message)));break}case`notification`:for(let e of this.notificationListeners)e(String(t.method),t.params);break}}setStatus(e,t){let n=this.docs.get(e);n&&(n.status=t);for(let n of this.statusListeners)n(e,t)}dispose(){for(let e of this.pending.values())i(e),e.reject(Error(`The language server connection was closed`));this.pending.clear(),this.docs.clear(),this.notificationListeners.clear(),this.statusListeners.clear(),this.ws.disconnect()}},o=new Map;function s(e){let t=o.get(e);if(t)return t.holders++,t.connection;let n=new a(e);return o.set(e,{connection:n,holders:1}),n}function c(){for(let e of o.values())e.connection.retryUnavailable()}function l(e){let t=o.get(e);return!t||(t.holders--,t.holders>0)?!1:(o.delete(e),t.connection.dispose(),!0)}export{c as i,n,l as r,s as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-CS1GvlOm.js";import"./icons-JMA45Ifw.js";import"./api-client-OiA8Ida1.js";import"./settings-store-WeJyQVL8.js";import"./panel-store-DmP16Fo0.js";import"./window-store-zJczRsv4.js";import"./project-store-CEGoLMOl.js";import"./project-framework-store-Bi5dyHdx.js";import"./session-list-sync-triggers-DitiR5h1.js";import"./tab-store-nNzRNfVV.js";import"./file-store-Bk1WYfdy.js";import"./use-is-mobile-BXHbkfs9.js";import"./settings-categories-CcR9eL3x.js";import"./open-settings-DsGBn73g.js";import"./git-repo-store-BOYLnV67.js";import"./fs-api-BQrIEcvo.js";import{t as e}from"./markdown-renderer-BH_CFPJw.js";import"./run-in-terminal-Bk9Bw7G1.js";export{e as MarkdownRenderer};
|