@hienlh/ppm 0.18.13 → 0.18.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/.rdtest2-cf.out +0 -0
- package/CHANGELOG.md +23 -0
- package/CLAUDE.md +3 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +18 -0
- package/assets/skills/ppm/references/http-api.md +8 -1
- package/dist/web/assets/{adaptive-context-menu-CbgPYQmj.js → adaptive-context-menu-ChBZWLLq.js} +1 -1
- package/dist/web/assets/{ai-resource-editor-unM2HNmg.js → ai-resource-editor-C8aAY8Po.js} +1 -1
- package/dist/web/assets/{ai-settings-section-CdktdrwF.js → ai-settings-section-ERu1WiZc.js} +1 -1
- package/dist/web/assets/{angular-html-DcpbdcNG.js → angular-html-CXgHIQ2U.js} +1 -1
- package/dist/web/assets/{angular-ts-Bv_WIk34.js → angular-ts-C8renMV9.js} +1 -1
- package/dist/web/assets/api-client-WpZ2FDHg.js +1 -0
- package/dist/web/assets/api-settings-BgSEE6et.js +1 -0
- package/dist/web/assets/{api-settings-BdCtex9i.js → api-settings-R59c66DE.js} +1 -1
- package/dist/web/assets/{api-themes-pRRoLvgD.js → api-themes-DKxrwJda.js} +1 -1
- package/dist/web/assets/{apl-D5_lLszu.js → apl-DkGH8laI.js} +1 -1
- package/dist/web/assets/architecture-PBZL5I3N-CCalSKAt.js +1 -0
- package/dist/web/assets/{astro-CBHwddYL.js → astro-tHUd8Zlg.js} +1 -1
- package/dist/web/assets/{audio-preview-BD1iDovf.js → audio-preview-B_C6Dpvz.js} +1 -1
- package/dist/web/assets/{blade-DGe1d2Pq.js → blade-BbKpjIYK.js} +1 -1
- package/dist/web/assets/{bsl-2lyAzRJA.js → bsl-DA0UYto0.js} +1 -1
- package/dist/web/assets/{button-2WCAS8dI.js → button-DBSpDPS0.js} +1 -1
- package/dist/web/assets/{cairo-DjzZeJrq.js → cairo-79ayucbB.js} +1 -1
- package/dist/web/assets/chat-tab-BraiJsYG.js +15 -0
- package/dist/web/assets/{cobol-cC3XIuAJ.js → cobol-DSS2EOYo.js} +1 -1
- package/dist/web/assets/code-editor-lhmLNhXu.js +10 -0
- package/dist/web/assets/{coffee-4eGboVoU.js → coffee-DvSxq2iD.js} +1 -1
- package/dist/web/assets/{conflict-editor-DdJag4QK.js → conflict-editor-C4VCv51R.js} +1 -1
- package/dist/web/assets/{context-menu-BO1c9jKy.js → context-menu-BpwUny-o.js} +1 -1
- package/dist/web/assets/{cpp-DF9_G-OU.js → cpp-BhWZ-FSn.js} +1 -1
- package/dist/web/assets/{crystal-OavZlzcm.js → crystal-yP2OeF-f.js} +1 -1
- package/dist/web/assets/{csv-preview-DnXwouF3.js → csv-preview-D46W_icb.js} +1 -1
- package/dist/web/assets/{data-grid-overlay-editor-B9Gpjm3l.js → data-grid-overlay-editor-DeGkPYtA.js} +1 -1
- package/dist/web/assets/{database-viewer-Dk8oGyZx.js → database-viewer-DFI4YtrH.js} +1 -1
- package/dist/web/assets/{dialog-B-l2ZxVm.js → dialog-RIpeb87v.js} +1 -1
- package/dist/web/assets/diff-viewer-eaNOLcBL.js +4 -0
- package/dist/web/assets/{docx-preview-DAdHPlhZ.js → docx-preview-Cbj-pOK3.js} +1 -1
- package/dist/web/assets/{edge-TzYh8OlN.js → edge-D3K9cd-p.js} +1 -1
- package/dist/web/assets/{edit-diff-preview-DlwP3UIU.js → edit-diff-preview-DDqy3KLA.js} +1 -1
- package/dist/web/assets/{elixir-Cy3RhKKH.js → elixir-D4PBmsLp.js} +1 -1
- package/dist/web/assets/{elm-BTBZdweK.js → elm-DSpXjuaH.js} +1 -1
- package/dist/web/assets/{erb-dv1mI0y4.js → erb-CaYZMTJW.js} +1 -1
- package/dist/web/assets/{erlang-DjeiDrkl.js → erlang-DX5BFqJj.js} +1 -1
- package/dist/web/assets/{esm-FRwvcesu.js → esm-Cv7HsFnk.js} +1 -1
- package/dist/web/assets/explorer-body-BxbSttfl.js +2 -0
- package/dist/web/assets/explorer-window-content-DUqQCC7A.js +1 -0
- package/dist/web/assets/{extension-store-DUaZINyC.js → extension-store-B1EClUAr.js} +1 -1
- package/dist/web/assets/{extension-webview-W0qRfaAU.js → extension-webview-BaGvDk8v.js} +1 -1
- package/dist/web/assets/{file-store-yReVbR8q.js → file-store-m9crh6uq.js} +1 -1
- package/dist/web/assets/{fortran-fixed-form-BCH9DAIJ.js → fortran-fixed-form-B0bAufUe.js} +1 -1
- package/dist/web/assets/{fsharp-C93NYKYD.js → fsharp-C2AL2b1M.js} +1 -1
- package/dist/web/assets/{gdresource-BcIEE2eX.js → gdresource-DRQsDMNI.js} +1 -1
- package/dist/web/assets/{git-commit-BVjlXEy8.js → git-commit-GtBdnrzk.js} +1 -1
- package/dist/web/assets/{git-log-panel-2_4HuP47.js → git-log-panel-hwV1flSO.js} +1 -1
- package/dist/web/assets/{git-rebase-Bj_21B1V.js → git-rebase-h_0CGA6F.js} +1 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-DAUrJCqi.js +1 -0
- package/dist/web/assets/glide-data-grid-YsN-xm6x.js +138 -0
- package/dist/web/assets/{glimmer-js-C20yj4Zv.js → glimmer-js-Bxwu93bS.js} +1 -1
- package/dist/web/assets/{glimmer-ts-ipbYC7kh.js → glimmer-ts-CIUYdR4E.js} +1 -1
- package/dist/web/assets/{glsl-Dovazu3t.js → glsl-CfxLI5jn.js} +1 -1
- package/dist/web/assets/{graphql-DpMlM7hC.js → graphql-CstqDPde.js} +1 -1
- package/dist/web/assets/group-chat-tab-B7mJO1gG.js +1 -0
- package/dist/web/assets/{hack-gc7LCBuV.js → hack-Bjqnssb5.js} +1 -1
- package/dist/web/assets/{haml-vtlFm9gm.js → haml-lVc-DfbM.js} +1 -1
- package/dist/web/assets/hand-x0ejq3fS.js +1 -0
- package/dist/web/assets/{handlebars-DGKhpCji.js → handlebars-Yy6fPQI_.js} +1 -1
- package/dist/web/assets/{html-derivative-C3oTSSCN.js → html-derivative-CchzCY1z.js} +1 -1
- package/dist/web/assets/{html-DvfhQbXb.js → html-lqtcy6-2.js} +1 -1
- package/dist/web/assets/{http-SG6zLTo7.js → http-ChclRrko.js} +1 -1
- package/dist/web/assets/{hurl-BWXsYlqW.js → hurl-CoOK7sXa.js} +1 -1
- package/dist/web/assets/{hxml-DUdMzaoh.js → hxml-fZSZ7Iyt.js} +1 -1
- package/dist/web/assets/{image-preview-DxgFOV1T.js → image-preview-ClAcqDlL.js} +1 -1
- package/dist/web/assets/index-CtJbMNNI.css +2 -0
- package/dist/web/assets/index-H_gScEOk.js +52 -0
- package/dist/web/assets/info-3K5VOQVL-Cx1ZfJbp.js +1 -0
- package/dist/web/assets/{input-DuAF-Stj.js → input-DXPgUtxi.js} +1 -1
- package/dist/web/assets/{jinja-955w9RKM.js → jinja-Y0w_KBdE.js} +1 -1
- package/dist/web/assets/{jison-WWfqPo50.js → jison-BILj3F2e.js} +1 -1
- package/dist/web/assets/{julia-BFrfnaNl.js → julia-DRfOPDts.js} +1 -1
- package/dist/web/assets/{just-BrZdyR_I.js → just-n3U_oODO.js} +1 -1
- package/dist/web/assets/keybindings-store-BqctreaI.js +1 -0
- package/dist/web/assets/{keybindings-store-0Wqfa7Qp.js → keybindings-store-D-CHdq-G.js} +1 -1
- package/dist/web/assets/keyboard-DBBaoQSu.js +1 -0
- package/dist/web/assets/{latex-CwtPPASD.js → latex-D6gztEOL.js} +1 -1
- package/dist/web/assets/{liquid-CYZuvDDd.js → liquid-DPqCEVb9.js} +1 -1
- package/dist/web/assets/{lua-BV095ZyY.js → lua-I40KPUm-.js} +1 -1
- package/dist/web/assets/markdown-renderer-BwOkiZC1.js +1 -0
- package/dist/web/assets/{markdown-renderer-CnRcKK3d.js → markdown-renderer-oJ9jPdQ2.js} +3 -3
- package/dist/web/assets/{marko-CNeljZ1C.js → marko-DMjsThSW.js} +1 -1
- package/dist/web/assets/{mdc-JfGapShy.js → mdc-CN2alsbo.js} +1 -1
- package/dist/web/assets/{media-url-Bm4PsduE.js → media-url-COUvasjn.js} +1 -1
- package/dist/web/assets/mobile-bottom-sheet-Cj1YBq-c.js +1 -0
- package/dist/web/assets/mobile-explorer-sheet-D1nM0Ik1.js +1 -0
- package/dist/web/assets/{nextflow-DD5C8nqX.js → nextflow-CGa4JeZ6.js} +1 -1
- package/dist/web/assets/{nginx-Ca7B__x_.js → nginx-CmqrIj84.js} +1 -1
- package/dist/web/assets/{nim-B8FogsDw.js → nim-CqhmTeMa.js} +1 -1
- package/dist/web/assets/notification-store-n-XEQ5pH.js +1 -0
- package/dist/web/assets/{number-overlay-editor-DG9xJwEG.js → number-overlay-editor-BEzJ1YeD.js} +1 -1
- package/dist/web/assets/{overview-panel-s53bnl0q.js → overview-panel-Bf9Gn8qV.js} +1 -1
- package/dist/web/assets/packet-RMMSAZCW-Bqwiy7dz.js +1 -0
- package/dist/web/assets/{panel-store-B4rijFKN.js → panel-store-UWCH6B-_.js} +1 -1
- package/dist/web/assets/{pdf-preview-DYt3aBzM.js → pdf-preview-BMHM5cR2.js} +1 -1
- package/dist/web/assets/{perl-BR78hS8R.js → perl-BOwpb6Tb.js} +1 -1
- package/dist/web/assets/{php-DXBOMC9z.js → php-wT9fVxxu.js} +1 -1
- package/dist/web/assets/pie-UPGHQEXC-BXSJ2God.js +1 -0
- package/dist/web/assets/{postgres-viewer-BvoWSuoZ.js → postgres-viewer-D8rfEY5b.js} +3 -3
- package/dist/web/assets/process-table-CsQ-hDJr.js +1 -0
- package/dist/web/assets/{project-store-BuY7rxn_.js → project-store-CKAOr23O.js} +1 -1
- package/dist/web/assets/{pug-CvTwVVKV.js → pug-DdlNnj-p.js} +1 -1
- package/dist/web/assets/{qml-CPSoZ1-B.js → qml-C5zBdydf.js} +1 -1
- package/dist/web/assets/radar-KQ55EAFF-D6XrM7HH.js +1 -0
- package/dist/web/assets/{razor-BUA1YKtF.js → razor-DqcJX4iq.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-sheet-CTiipn4k.js +2 -0
- package/dist/web/assets/remote-desktop-mobile-view-Cf5B0dKo.js +1 -0
- package/dist/web/assets/remote-desktop-stats-overlay-vhJBIW7s.js +1 -0
- package/dist/web/assets/remote-desktop-window-content-wCJUfI6G.js +1 -0
- package/dist/web/assets/{rst-BJsq7ISz.js → rst-DiMiMYUO.js} +1 -1
- package/dist/web/assets/{ruby-DSDMeYf5.js → ruby-DK62iflA.js} +1 -1
- package/dist/web/assets/{run-in-terminal-C9xpskFn.js → run-in-terminal-DJSL6nwZ.js} +1 -1
- package/dist/web/assets/{sas-B1nJOjbN.js → sas-6QPGJRa5.js} +1 -1
- package/dist/web/assets/{scroll-area-DBcG1fQo.js → scroll-area-DXGXeiRz.js} +1 -1
- package/dist/web/assets/{scss-BZFyRiQn.js → scss-DmUqh48_.js} +1 -1
- package/dist/web/assets/{send-to-chat-BIg70MUZ.js → send-to-chat-BOony0sO.js} +1 -1
- package/dist/web/assets/settings-store-BpcY5aYE.js +2 -0
- package/dist/web/assets/settings-tab-BVqRO01j.js +1 -0
- package/dist/web/assets/settings-tab-FH581A_i.js +3 -0
- package/dist/web/assets/{shaderlab-laINRXBo.js → shaderlab-DopFR1mi.js} +1 -1
- package/dist/web/assets/{shellsession-BpOOvWVR.js → shellsession-Bp_TGuXb.js} +1 -1
- package/dist/web/assets/{soy-BW4d91Sa.js → soy-DEB9KEFb.js} +1 -1
- package/dist/web/assets/{sparql-BsvvyoHn.js → sparql-C8lEwO1p.js} +1 -1
- package/dist/web/assets/{sql-query-editor-qQce5QJ6.js → sql-query-editor-MMfk0Kbz.js} +1 -1
- package/dist/web/assets/{sqlite-viewer-yhc0YNvu.js → sqlite-viewer-vglzrgnZ.js} +1 -1
- package/dist/web/assets/{stata-K-dZInUt.js → stata-DVep4apN.js} +1 -1
- package/dist/web/assets/{surrealql-CpNp2sgf.js → surrealql-fSlJApOA.js} +1 -1
- package/dist/web/assets/{svelte-BG6iBA8R.js → svelte-DezWBEDi.js} +1 -1
- package/dist/web/assets/{switch-_NcrktLe.js → switch-DqL_ZjB_.js} +1 -1
- package/dist/web/assets/system-monitor-body-BYUfyF8f.js +2 -0
- package/dist/web/assets/system-monitor-tab-CKGXB8lH.js +1 -0
- package/dist/web/assets/{system-monitor-window-content-CaOhD0AU.js → system-monitor-window-content-CiJ2yIsr.js} +1 -1
- package/dist/web/assets/tab-host-window-content-DYlXR0cg.js +1 -0
- package/dist/web/assets/{tab-store-tFnyPmm4.js → tab-store-D2thn4Vv.js} +1 -1
- package/dist/web/assets/team-member-sheet-Bnygu7Xw.js +2 -0
- package/dist/web/assets/{team-member-window-content-B1jkKkDi.js → team-member-window-content-qrgFTC96.js} +1 -1
- package/dist/web/assets/{templ-gxNKXmt3.js → templ-D0zB42a9.js} +1 -1
- package/dist/web/assets/{terminal-tab-UvwM0sty.js → terminal-tab-D_-R5rGm.js} +3 -3
- package/dist/web/assets/{tex-C0ON27g5.js → tex-BJiPijcH.js} +1 -1
- package/dist/web/assets/{tool-cards-jB7GT-wj.js → tool-cards-BW7Xc20J.js} +4 -4
- package/dist/web/assets/treemap-KZPCXAKY-BobWhcHN.js +1 -0
- package/dist/web/assets/{ts-tags-BX_CTVgQ.js → ts-tags-Dcr4u6y5.js} +1 -1
- package/dist/web/assets/{twig-CwL7XnU0.js → twig-B-SQU0bg.js} +1 -1
- package/dist/web/assets/{use-blob-url-DcRcjNTE.js → use-blob-url-BtPlqwLr.js} +1 -1
- package/dist/web/assets/use-monaco-theme-DQY1ZSaf.js +1 -0
- package/dist/web/assets/{use-open-team-member-1hRsHLKg.js → use-open-team-member-C5LQ_TCM.js} +1 -1
- package/dist/web/assets/use-visual-viewport-pVxLfE5B.js +1 -0
- package/dist/web/assets/{use-websocket-rxJLbFqy.js → use-websocket-l39Odhlp.js} +1 -1
- package/dist/web/assets/{vendor-mermaid-CHTa6D69.js → vendor-mermaid-CtDsSxbM.js} +1 -1
- package/dist/web/assets/{video-preview-DMhnf2Gi.js → video-preview-C5AhkIDl.js} +1 -1
- package/dist/web/assets/{vue-Bykm6wSS.js → vue-Cw10Sfbh.js} +1 -1
- package/dist/web/assets/{vue-html-CETdK_iV.js → vue-html-Cc5C_Z_w.js} +1 -1
- package/dist/web/assets/{vue-vine-DiJb6fO5.js → vue-vine-BuNMlnvu.js} +1 -1
- package/dist/web/assets/window-pip-registry-C7oz3Dfy.js +1 -0
- package/dist/web/assets/window-store-B5ZswdYg.js +1 -0
- package/dist/web/assets/{xml-BNw8J5YW.js → xml-DqT1wkky.js} +1 -1
- package/dist/web/assets/{xsl-CsG9L31b.js → xsl-DLkge3A2.js} +1 -1
- package/dist/web/index.html +45 -42
- package/dist/web/sw.js +1 -1
- package/docs/architecture/ai-chat-and-providers.md +3 -0
- package/docs/architecture/workspace-and-ui.md +8 -0
- package/docs/design-guidelines.md +3 -2
- package/package.json +1 -1
- package/src/cli/commands/backup-cmd.ts +119 -0
- package/src/index.ts +3 -0
- package/src/providers/claude-agent-sdk.ts +29 -1
- package/src/server/index.ts +42 -15
- package/src/server/routes/accounts.ts +30 -2
- package/src/server/routes/chat.ts +8 -1
- package/src/server/routes/named-tunnel.ts +5 -2
- package/src/server/routes/remote-desktop.ts +64 -0
- package/src/server/routes/settings.ts +1 -0
- package/src/server/ws/chat.ts +126 -7
- package/src/server/ws/remote-desktop.ts +86 -0
- package/src/services/account.service.ts +106 -23
- package/src/services/db-backup/db-backup-paths.ts +66 -0
- package/src/services/db-backup/db-backup-restore.ts +105 -0
- package/src/services/db-backup/db-backup-retention.ts +96 -0
- package/src/services/db-backup/db-backup-sync.ts +113 -0
- package/src/services/db-backup/db-backup.service.ts +61 -0
- package/src/services/db.service.ts +29 -1
- package/src/services/fs-credential-path-guard.ts +19 -1
- package/src/services/named-tunnel/cloudflared-login.service.ts +2 -2
- package/src/services/nested-subagent-spy.ts +206 -0
- package/src/services/remote-desktop/access-unit-assembler.ts +90 -0
- package/src/services/remote-desktop/avc1-codec-string.ts +18 -0
- package/src/services/remote-desktop/nal-splitter.ts +100 -0
- package/src/services/remote-desktop/remote-desktop-capture.ts +120 -0
- package/src/services/remote-desktop/remote-desktop-encoder-args.ts +42 -0
- package/src/services/remote-desktop/remote-desktop-flag.ts +10 -0
- package/src/services/remote-desktop/remote-desktop-input.ts +217 -0
- package/src/services/remote-desktop/remote-desktop-nonce.ts +38 -0
- package/src/services/remote-desktop/remote-desktop-session.ts +189 -0
- package/src/services/remote-desktop/remote-desktop-vk-map.ts +41 -0
- package/src/services/subagent-transcript-merger.ts +92 -75
- package/src/services/subprocess-retention.ts +29 -6
- package/src/services/supervisor.ts +58 -0
- package/src/services/team-member-activity/subagent-transcript-index.ts +56 -0
- package/src/types/chat.ts +2 -0
- package/src/web/app.tsx +8 -0
- package/src/web/components/chat/account-dialogs.tsx +11 -4
- package/src/web/components/chat/question-card.tsx +9 -2
- package/src/web/components/chat/usage-badge.tsx +17 -3
- package/src/web/components/floating-window/floating-window.tsx +8 -1
- package/src/web/components/floating-window/open-tab-in-pip.ts +78 -0
- package/src/web/components/floating-window/window-content-registry.ts +2 -0
- package/src/web/components/floating-window/window-pip-registry.ts +46 -0
- package/src/web/components/floating-window/window-store-types.ts +1 -1
- package/src/web/components/layout/mobile-drawer.tsx +38 -27
- package/src/web/components/layout/nav-section-rail.tsx +10 -2
- package/src/web/components/layout/tab-pop-out-menu-item.tsx +25 -2
- package/src/web/components/remote-desktop/open-remote-desktop.ts +26 -0
- package/src/web/components/remote-desktop/remote-desktop-coords.ts +98 -0
- package/src/web/components/remote-desktop/remote-desktop-frame-timestamp.ts +21 -0
- package/src/web/components/remote-desktop/remote-desktop-gesture-classifiers.ts +56 -0
- package/src/web/components/remote-desktop/remote-desktop-mobile-key-bar.tsx +131 -0
- package/src/web/components/remote-desktop/remote-desktop-mobile-sheet.tsx +43 -0
- package/src/web/components/remote-desktop/remote-desktop-mobile-toolbar.tsx +79 -0
- package/src/web/components/remote-desktop/remote-desktop-mobile-view.tsx +190 -0
- package/src/web/components/remote-desktop/remote-desktop-stats-overlay.tsx +54 -0
- package/src/web/components/remote-desktop/remote-desktop-stats.ts +37 -0
- package/src/web/components/remote-desktop/remote-desktop-touch-gesture-tracker.ts +195 -0
- package/src/web/components/remote-desktop/remote-desktop-window-content.tsx +72 -0
- package/src/web/components/remote-desktop/remote-desktop-ws-url.ts +22 -0
- package/src/web/components/remote-desktop/use-h264-canvas-decoder.ts +175 -0
- package/src/web/components/remote-desktop/use-remote-desktop-available.ts +29 -0
- package/src/web/components/remote-desktop/use-remote-desktop-connection.ts +147 -0
- package/src/web/components/remote-desktop/use-remote-desktop-mobile-open-state.ts +18 -0
- package/src/web/components/remote-desktop/use-remote-desktop-touch.ts +224 -0
- package/src/web/components/remote-desktop/use-remote-desktop-virtual-keyboard.ts +50 -0
- package/src/web/components/remote-desktop/use-remote-input-capture.ts +92 -0
- package/src/web/components/tunnels/named-tunnel/named-tunnel-copy.ts +59 -59
- package/src/web/components/tunnels/named-tunnel/named-tunnel-section.tsx +2 -2
- package/src/web/hooks/use-notification-badge.ts +19 -11
- package/src/web/lib/feature-badges.ts +2 -0
- package/src/web/stores/settings-store.ts +13 -0
- package/src/web/stores/streaming-store.ts +21 -2
- package/dist/web/assets/api-client-BogqsFna.js +0 -1
- package/dist/web/assets/api-settings-DfXViPKz.js +0 -1
- package/dist/web/assets/architecture-PBZL5I3N-BzFm9ELu.js +0 -1
- package/dist/web/assets/chat-tab-DzK8LGti.js +0 -15
- package/dist/web/assets/code-editor-CuMfPN9X.js +0 -10
- package/dist/web/assets/diff-viewer-eaUBjLCH.js +0 -4
- package/dist/web/assets/explorer-body-DkCkSVrN.js +0 -2
- package/dist/web/assets/explorer-window-content-MsnTVngu.js +0 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-B72vcb2r.js +0 -1
- package/dist/web/assets/glide-data-grid-B0IY6n_Q.js +0 -138
- package/dist/web/assets/group-chat-tab-DRLDHOp6.js +0 -1
- package/dist/web/assets/index-CBn4SOoT.js +0 -52
- package/dist/web/assets/index-DWpNR3nB.css +0 -2
- package/dist/web/assets/info-3K5VOQVL-3irPxRK_.js +0 -1
- package/dist/web/assets/keybindings-store-d54pv2NK.js +0 -1
- package/dist/web/assets/markdown-renderer-BTS8ifdu.js +0 -1
- package/dist/web/assets/mobile-bottom-sheet-M5iZDX7y.js +0 -1
- package/dist/web/assets/mobile-explorer-sheet-BqK2-WuN.js +0 -1
- package/dist/web/assets/notification-store-Yvy1I8gd.js +0 -1
- package/dist/web/assets/packet-RMMSAZCW-Z5jWjFCV.js +0 -1
- package/dist/web/assets/pie-UPGHQEXC-Bq7UMi8P.js +0 -1
- package/dist/web/assets/process-table-BYwKigiD.js +0 -1
- package/dist/web/assets/radar-KQ55EAFF-BLo4BOTD.js +0 -1
- package/dist/web/assets/settings-store-GV5pkkke.js +0 -2
- package/dist/web/assets/settings-tab-BePvIcjd.js +0 -3
- package/dist/web/assets/settings-tab-Br-lJSPa.js +0 -1
- package/dist/web/assets/system-monitor-body-D8Z5QXBB.js +0 -2
- package/dist/web/assets/system-monitor-tab-BclYXFTe.js +0 -1
- package/dist/web/assets/tab-host-window-content-f_Rc5rJK.js +0 -1
- package/dist/web/assets/team-member-sheet-QDHoYCs0.js +0 -2
- package/dist/web/assets/treemap-KZPCXAKY-dyrE6SW2.js +0 -1
- package/dist/web/assets/use-monaco-theme--9tOOkDA.js +0 -1
- package/dist/web/assets/window-store-CQ1lghvv.js +0 -1
- /package/dist/web/assets/{abap-DGlrX_8G.js → abap-CKgBNk5K.js} +0 -0
- /package/dist/web/assets/{actionscript-3-CUqRtUJE.js → actionscript-3-oARhAY6c.js} +0 -0
- /package/dist/web/assets/{ada-CY3Spa33.js → ada-2vi8ASy3.js} +0 -0
- /package/dist/web/assets/{andromeeda-Lxs2TJn7.js → andromeeda-B3vMjPKd.js} +0 -0
- /package/dist/web/assets/{apache-DfxgGdgM.js → apache-DnIEr338.js} +0 -0
- /package/dist/web/assets/{apex-QVDF1dnI.js → apex-B7Qs5AY5.js} +0 -0
- /package/dist/web/assets/{api-client-oY1tC3tM.js → api-client-BkGKTjsq.js} +0 -0
- /package/dist/web/assets/{applescript-pwJ8QXh-.js → applescript-EbQNUCWb.js} +0 -0
- /package/dist/web/assets/{apply-theme-B_bMVL6a.js → apply-theme-Dd_cqGa-.js} +0 -0
- /package/dist/web/assets/{ara-mPjeX5YX.js → ara-CtHdhFRw.js} +0 -0
- /package/dist/web/assets/{asciidoc-Bf7LsDkI.js → asciidoc-BH6qin_O.js} +0 -0
- /package/dist/web/assets/{asm-rRKC1OUx.js → asm-D1XU1ACk.js} +0 -0
- /package/dist/web/assets/{aurora-x-DwQr0DkG.js → aurora-x-BkhcxkuS.js} +0 -0
- /package/dist/web/assets/{awk-Bpt768fN.js → awk-DijzB6o7.js} +0 -0
- /package/dist/web/assets/{ayu-dark-D9lwQHMs.js → ayu-dark-tysG77WC.js} +0 -0
- /package/dist/web/assets/{ayu-light-B4-ptrU5.js → ayu-light-Dg0WMETC.js} +0 -0
- /package/dist/web/assets/{ayu-mirage-DAyRzH5Q.js → ayu-mirage--RsJCjC4.js} +0 -0
- /package/dist/web/assets/{ballerina-Cgdpj1HC.js → ballerina-DT_5-l82.js} +0 -0
- /package/dist/web/assets/{bat-4FrN36S2.js → bat-BRpDlkv0.js} +0 -0
- /package/dist/web/assets/{beancount-DkcxQER3.js → beancount--8Df-WGG.js} +0 -0
- /package/dist/web/assets/{berry-Dnuut-Ml.js → berry-Bc9fo35J.js} +0 -0
- /package/dist/web/assets/{bibtex-CCDwmbuA.js → bibtex-CwyBpp9X.js} +0 -0
- /package/dist/web/assets/{bicep-BC0ryoGM.js → bicep-DiyH2Bs7.js} +0 -0
- /package/dist/web/assets/{bird2-C50V_A-0.js → bird2-CHgK4a2A.js} +0 -0
- /package/dist/web/assets/{c-Ddorhq0U.js → c-BM1qL6-f.js} +0 -0
- /package/dist/web/assets/{c3-DdIf5r9E.js → c3-D2oOjrP7.js} +0 -0
- /package/dist/web/assets/{cadence-s9pd1Wng.js → cadence-nS45wqF6.js} +0 -0
- /package/dist/web/assets/{can-open-in-ppm-C6hZV1OP.js → can-open-in-ppm-DwP9KU8o.js} +0 -0
- /package/dist/web/assets/{catppuccin-frappe-CzJNTyu-.js → catppuccin-frappe-BpnJHiCj.js} +0 -0
- /package/dist/web/assets/{catppuccin-latte-BNpt-m7s.js → catppuccin-latte-Bb95Wj3h.js} +0 -0
- /package/dist/web/assets/{catppuccin-macchiato-FYGkfsJ5.js → catppuccin-macchiato-Btx8c17W.js} +0 -0
- /package/dist/web/assets/{catppuccin-mocha-it2g5D1q.js → catppuccin-mocha-B4DZOUGI.js} +0 -0
- /package/dist/web/assets/{clarity-BVFBTjMe.js → clarity-1ps69jU6.js} +0 -0
- /package/dist/web/assets/{clipboard-BWznymz7.js → clipboard-CrHX8AYw.js} +0 -0
- /package/dist/web/assets/{clojure-BSYvXMI8.js → clojure-BklC0hKV.js} +0 -0
- /package/dist/web/assets/{cmake-DGEqH-Np.js → cmake-B573LYAQ.js} +0 -0
- /package/dist/web/assets/{codeowners-D8FCOxWg.js → codeowners-BoYeX89M.js} +0 -0
- /package/dist/web/assets/{codeql-COV0eluG.js → codeql-7Dhf5Udk.js} +0 -0
- /package/dist/web/assets/{common-lisp-xHnZUlgt.js → common-lisp-m1nxlthv.js} +0 -0
- /package/dist/web/assets/{coq-Cs_2i3Xg.js → coq-DNhGmd4a.js} +0 -0
- /package/dist/web/assets/{csharp-B1ONB4PT.js → csharp-P-nAurtS.js} +0 -0
- /package/dist/web/assets/{css-BgGQbvrZ.js → css-LYbSeh3-.js} +0 -0
- /package/dist/web/assets/{csv-CNHmQBzs.js → csv-DHZZZm7X.js} +0 -0
- /package/dist/web/assets/{csv-parser-DWR24J17.js → csv-parser-CY9Ggtg5.js} +0 -0
- /package/dist/web/assets/{cue-ZXAKzwIy.js → cue-D8yLUOle.js} +0 -0
- /package/dist/web/assets/{cypher-4PL5bmT5.js → cypher-9cbW8RYA.js} +0 -0
- /package/dist/web/assets/{d-CEsV3RT2.js → d-ZihzhxqI.js} +0 -0
- /package/dist/web/assets/{dark-plus-NtFnYSDz.js → dark-plus-C8xIA1u3.js} +0 -0
- /package/dist/web/assets/{dart-CKHn4mDf.js → dart-CBm6jKc7.js} +0 -0
- /package/dist/web/assets/{data-grid-types-CxU8oo-j.js → data-grid-types-DkEQ-Na9.js} +0 -0
- /package/dist/web/assets/{dax-Cmkj1I_M.js → dax-B3cx6YeV.js} +0 -0
- /package/dist/web/assets/{desktop-DJLalvPQ.js → desktop-C03SpXth.js} +0 -0
- /package/dist/web/assets/{diff-BnS2wpj6.js → diff-D8LnnvFY.js} +0 -0
- /package/dist/web/assets/{dist-uYjs3Wv6.js → dist-C4XoS_zo.js} +0 -0
- /package/dist/web/assets/{dist-CuIdRyUB.js → dist-Do3fljss.js} +0 -0
- /package/dist/web/assets/{docker-CovNy7ml.js → docker-DwFiOQWW.js} +0 -0
- /package/dist/web/assets/{dotenv-Gh4w3I6B.js → dotenv-CVJ_vFSQ.js} +0 -0
- /package/dist/web/assets/{dracula-NF0tAHXl.js → dracula-DMw8UACY.js} +0 -0
- /package/dist/web/assets/{dracula-soft-Cj_qBurK.js → dracula-soft-BnB3nDrA.js} +0 -0
- /package/dist/web/assets/{dream-maker-CRuZPcl7.js → dream-maker-2riXUQXo.js} +0 -0
- /package/dist/web/assets/{emacs-lisp-BACmC9qj.js → emacs-lisp-BQdYaiB5.js} +0 -0
- /package/dist/web/assets/{everforest-dark-Dd9av4QG.js → everforest-dark-C2FPIWdj.js} +0 -0
- /package/dist/web/assets/{everforest-light-C-jsss-B.js → everforest-light-DMOWf9sD.js} +0 -0
- /package/dist/web/assets/{fennel-BJA9XnL8.js → fennel-JtSHp0vW.js} +0 -0
- /package/dist/web/assets/{fish-CKlhNSc2.js → fish-CflDcRfe.js} +0 -0
- /package/dist/web/assets/{fluent-wfglRk5D.js → fluent-D4eu6Vac.js} +0 -0
- /package/dist/web/assets/{format-bytes-utwHMTry.js → format-bytes-DR3228bu.js} +0 -0
- /package/dist/web/assets/{fortran-free-form-BlXCdid3.js → fortran-free-form-hO4RuC9Z.js} +0 -0
- /package/dist/web/assets/{gdscript-BwAVG6Et.js → gdscript-D7n3a8VM.js} +0 -0
- /package/dist/web/assets/{gdshader-DPc_T7ib.js → gdshader-BhUmrlzG.js} +0 -0
- /package/dist/web/assets/{genie-B-zZSLCX.js → genie-VbyftqBp.js} +0 -0
- /package/dist/web/assets/{gherkin-CJ0ajpGs.js → gherkin-BZzhvUUb.js} +0 -0
- /package/dist/web/assets/{github-dark-Dz8ZkzSP.js → github-dark-C4q41woW.js} +0 -0
- /package/dist/web/assets/{github-dark-default-CNUYo_kp.js → github-dark-default-CMNi7dQX.js} +0 -0
- /package/dist/web/assets/{github-dark-dimmed-241z_Ycx.js → github-dark-dimmed-BRf_-LlY.js} +0 -0
- /package/dist/web/assets/{github-dark-high-contrast-7r6yZZYH.js → github-dark-high-contrast-xanKBsRI.js} +0 -0
- /package/dist/web/assets/{github-light-C8gmZn-D.js → github-light-BEQeNQCs.js} +0 -0
- /package/dist/web/assets/{github-light-default-GAEgq1eA.js → github-light-default-ceQrtdXg.js} +0 -0
- /package/dist/web/assets/{github-light-high-contrast-3z91352E.js → github-light-high-contrast-doKbXzgW.js} +0 -0
- /package/dist/web/assets/{gleam-C7vxW5zd.js → gleam-Chzqf4fT.js} +0 -0
- /package/dist/web/assets/{gn-CyJIXwHP.js → gn-CCN_-6fp.js} +0 -0
- /package/dist/web/assets/{gnuplot-CqLbGgPd.js → gnuplot-CIplgwwP.js} +0 -0
- /package/dist/web/assets/{go-DdDcK9aX.js → go-Cjj-9dRs.js} +0 -0
- /package/dist/web/assets/{groovy-UYHggEqH.js → groovy-PqD4K7X1.js} +0 -0
- /package/dist/web/assets/{gruvbox-dark-hard-B4ierkJn.js → gruvbox-dark-hard-BAbpUSF-.js} +0 -0
- /package/dist/web/assets/{gruvbox-dark-medium-DYwkDSZ6.js → gruvbox-dark-medium-BWcWXDBB.js} +0 -0
- /package/dist/web/assets/{gruvbox-dark-soft-CVL4P-Lz.js → gruvbox-dark-soft-Dkx1okkk.js} +0 -0
- /package/dist/web/assets/{gruvbox-light-hard-BJ0LewUZ.js → gruvbox-light-hard-WVsDK0MM.js} +0 -0
- /package/dist/web/assets/{gruvbox-light-medium-CaqqjeGJ.js → gruvbox-light-medium-tiR9t7gr.js} +0 -0
- /package/dist/web/assets/{gruvbox-light-soft-ByKMoVNr.js → gruvbox-light-soft-HzHohaX6.js} +0 -0
- /package/dist/web/assets/{haskell-BilYRVPp.js → haskell-B1eIZfr6.js} +0 -0
- /package/dist/web/assets/{haxe-Brs9Bj1s.js → haxe-BcDdi5xr.js} +0 -0
- /package/dist/web/assets/{hcl-ClrZpol-.js → hcl-Dq-HKVni.js} +0 -0
- /package/dist/web/assets/{hjson-9PvHnYMX.js → hjson-Dr9D9WVU.js} +0 -0
- /package/dist/web/assets/{hlsl-BbBk4vqV.js → hlsl-Bo8t2FuZ.js} +0 -0
- /package/dist/web/assets/{horizon-E5Py0cny.js → horizon-DWG5IXc-.js} +0 -0
- /package/dist/web/assets/{horizon-bright-DVCsNGEk.js → horizon-bright-DFr9wTTx.js} +0 -0
- /package/dist/web/assets/{houston-JdFEax9Y.js → houston-NAVNhkup.js} +0 -0
- /package/dist/web/assets/{hy-W_W3tLKT.js → hy-DnyvUk3B.js} +0 -0
- /package/dist/web/assets/{image-gallery-5IURd6db.js → image-gallery-DoFdNF9i.js} +0 -0
- /package/dist/web/assets/{imba-CfAqJz7T.js → imba-CPbR5W_A.js} +0 -0
- /package/dist/web/assets/{ini-C_3gvKWs.js → ini-lc8_Lt0y.js} +0 -0
- /package/dist/web/assets/{java-CKqtXZ-j.js → java-B0KCo2vK.js} +0 -0
- /package/dist/web/assets/{javascript-C7gSEfae.js → javascript-YqEbNRpd.js} +0 -0
- /package/dist/web/assets/{json-BoN6e11T.js → json-Co0WtOlh.js} +0 -0
- /package/dist/web/assets/{json5-CgE7C8HW.js → json5-2Jhb0QUN.js} +0 -0
- /package/dist/web/assets/{jsonc-DjyoattY.js → jsonc-e72F11nU.js} +0 -0
- /package/dist/web/assets/{jsonl-lI82wGSw.js → jsonl-Bff8IPye.js} +0 -0
- /package/dist/web/assets/{jsonnet-CszEI8va.js → jsonnet-DRCkb-_H.js} +0 -0
- /package/dist/web/assets/{jssm-CZXDlszb.js → jssm-C6UiwVEm.js} +0 -0
- /package/dist/web/assets/{jsx-BeRz0eEz.js → jsx-u1aZlnfA.js} +0 -0
- /package/dist/web/assets/{kanagawa-dragon-BOmnUiyd.js → kanagawa-dragon-De-RQFV3.js} +0 -0
- /package/dist/web/assets/{kanagawa-lotus-ffU_P5w-.js → kanagawa-lotus-K8elE4QU.js} +0 -0
- /package/dist/web/assets/{kanagawa-wave-DKTJZrMu.js → kanagawa-wave-BrStl_zx.js} +0 -0
- /package/dist/web/assets/{kdl-BWECJveH.js → kdl-CLCfMeZy.js} +0 -0
- /package/dist/web/assets/{kotlin-DpVwBCSt.js → kotlin-DEEC3pNh.js} +0 -0
- /package/dist/web/assets/{kusto-BgVqjUZA.js → kusto-DTqRhCup.js} +0 -0
- /package/dist/web/assets/{laserwave-CEVCi8em.js → laserwave-DsgpUSbA.js} +0 -0
- /package/dist/web/assets/{lean-CGyfRhLJ.js → lean-Dl9MI0Y3.js} +0 -0
- /package/dist/web/assets/{less-B0_H10Ku.js → less-Bg21rao6.js} +0 -0
- /package/dist/web/assets/{lib-hrC3bruJ.js → lib-CXUwxw1M.js} +0 -0
- /package/dist/web/assets/{libesm-DVpFmwJu.js → libesm-CVkncAQz.js} +0 -0
- /package/dist/web/assets/{light-plus-DqzMqPID.js → light-plus-DGNbbK1V.js} +0 -0
- /package/dist/web/assets/{llvm-9ucnfNiF.js → llvm-91_ZX3p-.js} +0 -0
- /package/dist/web/assets/{loader-circle-Dpqcv0eS.js → loader-circle-DouKgIXy.js} +0 -0
- /package/dist/web/assets/{lock-DldbT31x.js → lock-CNxUGpTk.js} +0 -0
- /package/dist/web/assets/{log-m6A2dOSj.js → log-DSXzbq8u.js} +0 -0
- /package/dist/web/assets/{logo-ByPcsC9P.js → logo-BQRNd4tc.js} +0 -0
- /package/dist/web/assets/{luau-DFCo8nBn.js → luau-BE-TMpiZ.js} +0 -0
- /package/dist/web/assets/{make-C90w3MeA.js → make-ePYGKTpc.js} +0 -0
- /package/dist/web/assets/{markdown-DT0uywZG.js → markdown-Cst3wgMW.js} +0 -0
- /package/dist/web/assets/{material-theme-BVUO93tJ.js → material-theme-9XyvnNLb.js} +0 -0
- /package/dist/web/assets/{material-theme-darker-xXgGDwnF.js → material-theme-darker-H1VN4MTS.js} +0 -0
- /package/dist/web/assets/{material-theme-lighter-BjStPzWB.js → material-theme-lighter-DAreBbuF.js} +0 -0
- /package/dist/web/assets/{material-theme-ocean-wFmSiKjy.js → material-theme-ocean-BpTR-3II.js} +0 -0
- /package/dist/web/assets/{material-theme-palenight-e-0CtRoe.js → material-theme-palenight-DUNzX711.js} +0 -0
- /package/dist/web/assets/{matlab-BNaNQAUH.js → matlab-BpYNufBU.js} +0 -0
- /package/dist/web/assets/{mdx-DfpVWAqO.js → mdx-BYjfe1DK.js} +0 -0
- /package/dist/web/assets/{mermaid-Bpq7wFCP.js → mermaid-DPCcIW9B.js} +0 -0
- /package/dist/web/assets/{min-dark-CL2Y0WH6.js → min-dark-DnGOAGCo.js} +0 -0
- /package/dist/web/assets/{min-light-DOgr_IdP.js → min-light-CwV-o31y.js} +0 -0
- /package/dist/web/assets/{mipsasm-C9ie2zlB.js → mipsasm-DdeCPC97.js} +0 -0
- /package/dist/web/assets/{mojo-Md2A2sJy.js → mojo-BmxxZ3iM.js} +0 -0
- /package/dist/web/assets/{monitor-4vWfqzuN.js → monitor-C835ucWH.js} +0 -0
- /package/dist/web/assets/{monokai-nbXIEySB.js → monokai-Cx6cQ-MA.js} +0 -0
- /package/dist/web/assets/{moonbit-CJ-T-s4A.js → moonbit-D2-Gj5vj.js} +0 -0
- /package/dist/web/assets/{move-DwEehLIK.js → move-DSWGoQa8.js} +0 -0
- /package/dist/web/assets/{narrat-CuF4sIKr.js → narrat-D9TnZSSu.js} +0 -0
- /package/dist/web/assets/{nextflow-groovy-1dYhfPfq.js → nextflow-groovy-BbL-8PwD.js} +0 -0
- /package/dist/web/assets/{night-owl-gZS5mfzY.js → night-owl-CZitKm5d.js} +0 -0
- /package/dist/web/assets/{night-owl-light-DDAster5.js → night-owl-light-DJVX1Pno.js} +0 -0
- /package/dist/web/assets/{nix-BlbEYs2c.js → nix-R6hr3oln.js} +0 -0
- /package/dist/web/assets/{nord-BRiPb8Vy.js → nord-ChGHya3l.js} +0 -0
- /package/dist/web/assets/{nushell-DgWicB1i.js → nushell-QQWB-GWx.js} +0 -0
- /package/dist/web/assets/{objective-c-D8mPZ42Y.js → objective-c-C0pZ6y73.js} +0 -0
- /package/dist/web/assets/{objective-cpp-B0pNXzuj.js → objective-cpp-BdzVM31a.js} +0 -0
- /package/dist/web/assets/{ocaml-lQd7aK5d.js → ocaml-D4KktNlS.js} +0 -0
- /package/dist/web/assets/{odin-CxtIOBjm.js → odin-Y-fypmGT.js} +0 -0
- /package/dist/web/assets/{one-dark-pro-T_UFnWfe.js → one-dark-pro-BwecIxQL.js} +0 -0
- /package/dist/web/assets/{one-light-LBVqwyV-.js → one-light-Cz7UVzLU.js} +0 -0
- /package/dist/web/assets/{openscad-C5dnS6J7.js → openscad-DtRe3qYD.js} +0 -0
- /package/dist/web/assets/{pascal-CmWCWQML.js → pascal-Ck6I1fGG.js} +0 -0
- /package/dist/web/assets/{pkl-BWWOtDQk.js → pkl-DdFK94VW.js} +0 -0
- /package/dist/web/assets/{plastic-ekhupckF.js → plastic-BQSAzZwR.js} +0 -0
- /package/dist/web/assets/{play-CpCAoQRZ.js → play-CJlWpVMw.js} +0 -0
- /package/dist/web/assets/{plsql-BPsDHXx4.js → plsql-DjXg_CP0.js} +0 -0
- /package/dist/web/assets/{po-BX2FiuW2.js → po-Bw2SuM4r.js} +0 -0
- /package/dist/web/assets/{poimandres-DzXOdZcN.js → poimandres-YMK6c5VN.js} +0 -0
- /package/dist/web/assets/{polar-DDRXgJzG.js → polar-BMu17-O0.js} +0 -0
- /package/dist/web/assets/{portal-container-context-a399Hd9F.js → portal-container-context-DSGdlXrJ.js} +0 -0
- /package/dist/web/assets/{postcss-BHW6XBhx.js → postcss-DWib10RZ.js} +0 -0
- /package/dist/web/assets/{powerquery-B89c2NBb.js → powerquery-Dht4CK0b.js} +0 -0
- /package/dist/web/assets/{powershell-Dvxrd3Tu.js → powershell-DvrCg8ji.js} +0 -0
- /package/dist/web/assets/{prisma-lMK8EFLU.js → prisma-DbodYvCM.js} +0 -0
- /package/dist/web/assets/{prolog-D0YrtMG4.js → prolog-DZ-m6ysB.js} +0 -0
- /package/dist/web/assets/{proto-J0mM25aw.js → proto-HHpG3tGO.js} +0 -0
- /package/dist/web/assets/{puppet-CUT0xkhh.js → puppet-BljHe_75.js} +0 -0
- /package/dist/web/assets/{purescript-CoJWSGRp.js → purescript-DzCiFR0B.js} +0 -0
- /package/dist/web/assets/{python-BBrmuz6P.js → python-B5BQ27cC.js} +0 -0
- /package/dist/web/assets/{qmldir-CUtzs4Q7.js → qmldir-CYlcXrnn.js} +0 -0
- /package/dist/web/assets/{qss-Dm1RZ8aL.js → qss-Ce7T_TEg.js} +0 -0
- /package/dist/web/assets/{r-BGP7qZTe.js → r-Bku-2Jp_.js} +0 -0
- /package/dist/web/assets/{racket-K_6U1lqJ.js → racket-DtfSL3WR.js} +0 -0
- /package/dist/web/assets/{raku-bNSiZeW_.js → raku-CnDLsBJr.js} +0 -0
- /package/dist/web/assets/{react-X4jUntEf.js → react-Dfio3PfK.js} +0 -0
- /package/dist/web/assets/{red-uVeIEF0f.js → red-vbqcE9b-.js} +0 -0
- /package/dist/web/assets/{refresh-cw-B9iv7csb.js → refresh-cw-84mz8aOE.js} +0 -0
- /package/dist/web/assets/{reg-DSm9GWjh.js → reg-DIDLT8-A.js} +0 -0
- /package/dist/web/assets/{regexp-CljRm_j_.js → regexp-CB4h-VPu.js} +0 -0
- /package/dist/web/assets/{rel-d3JcopZg.js → rel-CiQEnWXa.js} +0 -0
- /package/dist/web/assets/{resolve-theme-DLKmm-lE.js → resolve-theme-DPTQHAy1.js} +0 -0
- /package/dist/web/assets/{riscv-CJmaELjT.js → riscv-R78iq5Rf.js} +0 -0
- /package/dist/web/assets/{ron-D0g9B1rW.js → ron-DhYENxc4.js} +0 -0
- /package/dist/web/assets/{rose-pine-DOrD2BSH.js → rose-pine-5wBeyjfJ.js} +0 -0
- /package/dist/web/assets/{rose-pine-dawn-CzZQ-LCF.js → rose-pine-dawn-FpKtPCuH.js} +0 -0
- /package/dist/web/assets/{rose-pine-moon-CdmsYp7C.js → rose-pine-moon-BwcIYc7C.js} +0 -0
- /package/dist/web/assets/{rosmsg-CmDth6pO.js → rosmsg-DWIGAYMl.js} +0 -0
- /package/dist/web/assets/{rotate-ccw-DnuPzJRE.js → rotate-ccw-CNTk2J7l.js} +0 -0
- /package/dist/web/assets/{rust-DGdP6jiR.js → rust-DU_ofKgt.js} +0 -0
- /package/dist/web/assets/{sass-Dkgt2FKZ.js → sass-U9SUuYEy.js} +0 -0
- /package/dist/web/assets/{save-DxonD4y1.js → save-CtW9ojKk.js} +0 -0
- /package/dist/web/assets/{scala-BQLTON6C.js → scala-op4gjA6j.js} +0 -0
- /package/dist/web/assets/{scheme-DKlxUGCi.js → scheme-tEjkR8rL.js} +0 -0
- /package/dist/web/assets/{sdbl-C3iZJQeZ.js → sdbl-C6SSRmZg.js} +0 -0
- /package/dist/web/assets/{send-B-t5Mz26.js → send-C_sLFt56.js} +0 -0
- /package/dist/web/assets/{shallow-jwPzEunk.js → shallow-C1YoJQA-.js} +0 -0
- /package/dist/web/assets/{shellscript-BRu-ZQAx.js → shellscript-Bf2KiwQj.js} +0 -0
- /package/dist/web/assets/{shield-check-CdTiK1j2.js → shield-check-Du6HKYn9.js} +0 -0
- /package/dist/web/assets/{shield-off-DuetkXKM.js → shield-off-CWKb1MQL.js} +0 -0
- /package/dist/web/assets/{slack-dark-qkm_u2zz.js → slack-dark-oGgCey8r.js} +0 -0
- /package/dist/web/assets/{slack-ochin-BP8_8e4m.js → slack-ochin-CemlB8cE.js} +0 -0
- /package/dist/web/assets/{smalltalk-Bnz4gt07.js → smalltalk-CTE-6jrZ.js} +0 -0
- /package/dist/web/assets/{snazzy-light-fbPZg5io.js → snazzy-light-DoEIGnmz.js} +0 -0
- /package/dist/web/assets/{solarized-dark-CM0vTRoi.js → solarized-dark-CStiJyBg.js} +0 -0
- /package/dist/web/assets/{solarized-light-C4_W9mvs.js → solarized-light-CfuNycS9.js} +0 -0
- /package/dist/web/assets/{solidity-Bz6v1PoD.js → solidity-DL6sO5rd.js} +0 -0
- /package/dist/web/assets/{splunk-DyNxu-0i.js → splunk-yK4ZUFBB.js} +0 -0
- /package/dist/web/assets/{sql-DXRL1gw1.js → sql-Lw03eoN8.js} +0 -0
- /package/dist/web/assets/{ssh-config-2z1QHuOG.js → ssh-config-DeRp25TR.js} +0 -0
- /package/dist/web/assets/{stylus-D4I-VaeY.js → stylus-D8OMsPh-.js} +0 -0
- /package/dist/web/assets/{swift-C_2G-tIc.js → swift-nsl9stPV.js} +0 -0
- /package/dist/web/assets/{synthwave-84-osBjChRP.js → synthwave-84-exAgsgpf.js} +0 -0
- /package/dist/web/assets/{system-verilog-zQP2qPNU.js → system-verilog-DBWf00T6.js} +0 -0
- /package/dist/web/assets/{systemd-UGfjRSBM.js → systemd-nhu27Dw5.js} +0 -0
- /package/dist/web/assets/{table-FLU8ei8b.js → table-GAR4upb6.js} +0 -0
- /package/dist/web/assets/{talonscript-C1XrFPwo.js → talonscript-CNOEcGDc.js} +0 -0
- /package/dist/web/assets/{tasl-B5raVn43.js → tasl-CjYZenSH.js} +0 -0
- /package/dist/web/assets/{tcl-3-vbeMIc.js → tcl-BVA09RDz.js} +0 -0
- /package/dist/web/assets/{terraform-a8VXZDm9.js → terraform-C5EloH1q.js} +0 -0
- /package/dist/web/assets/{text-wrap-B05VGRa-.js → text-wrap-D71Jqz5U.js} +0 -0
- /package/dist/web/assets/{tokyo-night-4SRhf-Hz.js → tokyo-night-D764DdhO.js} +0 -0
- /package/dist/web/assets/{toml-B4N0i8wT.js → toml-CCDYblSB.js} +0 -0
- /package/dist/web/assets/{trash-2-CTXlTflF.js → trash-2-C08fhIg1.js} +0 -0
- /package/dist/web/assets/{triangle-alert-BRq0VAfd.js → triangle-alert-85BQgs3T.js} +0 -0
- /package/dist/web/assets/{tsv-DA5k9Lvw.js → tsv-BZ4sA05e.js} +0 -0
- /package/dist/web/assets/{tsx-D9SZ8owC.js → tsx-DPLBzAt5.js} +0 -0
- /package/dist/web/assets/{turtle-BTHTvyY_.js → turtle-CwGHCq40.js} +0 -0
- /package/dist/web/assets/{typescript-DYzV9p5L.js → typescript-CUH0vBAl.js} +0 -0
- /package/dist/web/assets/{typespec-BC15eh7F.js → typespec-Bq31Vq4u.js} +0 -0
- /package/dist/web/assets/{typst-BJUqzA6D.js → typst-MD9BR9W5.js} +0 -0
- /package/dist/web/assets/{use-is-mobile-DFWViA4S.js → use-is-mobile-DUuki97q.js} +0 -0
- /package/dist/web/assets/{utils-C9OjCrou.js → utils-u2fbYPrY.js} +0 -0
- /package/dist/web/assets/{v-50Lps6oA.js → v-DZV7IxIT.js} +0 -0
- /package/dist/web/assets/{vala-8wiUvvrD.js → vala-urd1zi9S.js} +0 -0
- /package/dist/web/assets/{vb-BlgPLt6B.js → vb-DIZU3zbJ.js} +0 -0
- /package/dist/web/assets/{vendor-xterm-BZOrwF_F.js → vendor-xterm-DCj0zgSC.js} +0 -0
- /package/dist/web/assets/{verilog-CD9pVW5p.js → verilog-Ndz_ciTA.js} +0 -0
- /package/dist/web/assets/{vesper-BrivW4PT.js → vesper-C86M7LJp.js} +0 -0
- /package/dist/web/assets/{vhdl-Bunxfa7N.js → vhdl-_klwDUjd.js} +0 -0
- /package/dist/web/assets/{viml-DndUb2qM.js → viml-DzRXWoQh.js} +0 -0
- /package/dist/web/assets/{vitesse-black-BurZSkxW.js → vitesse-black-TWZ20_3U.js} +0 -0
- /package/dist/web/assets/{vitesse-dark-8UShspzC.js → vitesse-dark-Dl7R6fy9.js} +0 -0
- /package/dist/web/assets/{vitesse-light-DghCAZ90.js → vitesse-light-Cs0Dt2_n.js} +0 -0
- /package/dist/web/assets/{vyper-b-Clr-8u.js → vyper-qnCVj8ia.js} +0 -0
- /package/dist/web/assets/{wasm-CpcKStkw.js → wasm-Ckx9jBPe.js} +0 -0
- /package/dist/web/assets/{wasm-C5v2T06Y.js → wasm-Dy-SJ3W9.js} +0 -0
- /package/dist/web/assets/{wenyan-Dz2srLZR.js → wenyan-DTEy2Lx-.js} +0 -0
- /package/dist/web/assets/{wgsl-CeD1-dRb.js → wgsl-DC7n63Sy.js} +0 -0
- /package/dist/web/assets/{wikitext-CyeS-9FH.js → wikitext-1zFoZiW6.js} +0 -0
- /package/dist/web/assets/{wit-Kr-q-qBQ.js → wit-DtTfCRph.js} +0 -0
- /package/dist/web/assets/{wolfram-BKm8bmln.js → wolfram-B2Bgu1KL.js} +0 -0
- /package/dist/web/assets/{x-YDu4m2Iq.js → x-CeN0Qybc.js} +0 -0
- /package/dist/web/assets/{yaml-2XSxomjM.js → yaml-B-Jxk0IQ.js} +0 -0
- /package/dist/web/assets/{zenscript-CKIS34vf.js → zenscript-BWRfvNER.js} +0 -0
- /package/dist/web/assets/{zig-DdHGNllX.js → zig-CkwuvETm.js} +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import{c as r,l as i,p as a,s as o,u as s}from"./vendor-ui-CaeeFO0B.js";import{t as c}from"./createLucideIcon-D8pyde1A.js";import{n as l,t as u}from"./eye-off-CUdzgmX8.js";import{t as d}from"./bot-D6sx11y0.js";import{n as f,t as p}from"./pencil-BlIIg6RH.js";import{a as m,c as h,d as g,i as _,l as v,o as y,s as b,t as x,u as S}from"./ai-settings-section-CdktdrwF.js";import{d as C}from"./context-menu-BO1c9jKy.js";import{t as w}from"./chevron-down-Dp0rpHb8.js";import{t as T}from"./chevron-right-De-Wz5Lz.js";import{t as ee}from"./clock-C1CQUQPZ.js";import{t as E}from"./copy-BewHj66E.js";import{n as D,t as O}from"./plus-BR0qewJI.js";import{t as te}from"./folder-symlink-Dx1hOk8X.js";import{n as ne,t as re}from"./send-B-t5Mz26.js";import{t as k}from"./loader-circle-Dpqcv0eS.js";import{t as ie}from"./lock-DldbT31x.js";import{t as A}from"./monitor-4vWfqzuN.js";import{t as ae}from"./play-CpCAoQRZ.js";import{t as oe}from"./refresh-cw-B9iv7csb.js";import{t as j}from"./rotate-ccw-DnuPzJRE.js";import{t as se}from"./text-wrap-B05VGRa-.js";import{t as M}from"./trash-2-CTXlTflF.js";import{t as N}from"./triangle-alert-BRq0VAfd.js";import{t as P}from"./x-YDu4m2Iq.js";import{a as F,n as I,s as L}from"./api-client-oY1tC3tM.js";import{t as R}from"./settings-store-GV5pkkke.js";import{n as z}from"./utils-C9OjCrou.js";import{i as ce}from"./project-store-BuY7rxn_.js";import{o as le}from"./file-store-yReVbR8q.js";import{i as ue,n as de,o as fe,t as pe}from"./keybindings-store-0Wqfa7Qp.js";import{t as me}from"./extension-store-DUaZINyC.js";import{n as he}from"./use-is-mobile-DFWViA4S.js";import{r as ge}from"./clipboard-BWznymz7.js";import{n as _e,t as B}from"./button-2WCAS8dI.js";import{a as ve,i as ye,n as be,o as xe,r as Se,s as Ce,t as we}from"./dialog-B-l2ZxVm.js";import{t as Te}from"./shallow-jwPzEunk.js";import{t as Ee}from"./mobile-bottom-sheet-M5iZDX7y.js";import{n as De,o as Oe,r as V,t as ke,u as Ae}from"./adaptive-context-menu-CbgPYQmj.js";import{t as H}from"./input-DuAF-Stj.js";import{t as je}from"./scroll-area-DBcG1fQo.js";import{t as U}from"./switch-_NcrktLe.js";import{b as Me,d as Ne,f as Pe,n as Fe,y as Ie}from"./api-settings-BdCtex9i.js";import{n as Le,r as Re,t as ze}from"./resolve-theme-DLKmm-lE.js";var Be=c(`bell-ring`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]),Ve=c(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),He=c(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5`,key:`1osxxc`}],[`path`,{d:`M3 10h5`,key:`r794hk`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),Ue=c(`circle-check-big`,[[`path`,{d:`M21.801 10A10 10 0 1 1 17 3.335`,key:`yps3ct`}],[`path`,{d:`m9 11 3 3L22 4`,key:`1pflzl`}]]),We=c(`database-zap`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 15 21.84`,key:`14ibmq`}],[`path`,{d:`M21 5V8`,key:`1marbg`}],[`path`,{d:`M21 12L18 17H22L19 22`,key:`zafso`}],[`path`,{d:`M3 12A9 3 0 0 0 14.59 14.87`,key:`1y4wr8`}]]),Ge=c(`flask-conical`,[[`path`,{d:`M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2`,key:`18mbvz`}],[`path`,{d:`M6.453 15h11.094`,key:`3shlmq`}],[`path`,{d:`M8.5 2h7`,key:`csnxdl`}]]),Ke=c(`folder-search`,[[`path`,{d:`M10.7 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v4.1`,key:`1bw5m7`}],[`path`,{d:`m21 21-1.9-1.9`,key:`1g2n9r`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}]]),qe=c(`keyboard`,[[`path`,{d:`M10 8h.01`,key:`1r9ogq`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M14 8h.01`,key:`1primd`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}],[`path`,{d:`M18 8h.01`,key:`emo2bl`}],[`path`,{d:`M6 8h.01`,key:`x9i8wu`}],[`path`,{d:`M7 16h10`,key:`wp8him`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}]]),Je=c(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Ye=c(`power-off`,[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Xe=c(`power`,[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]),W=c(`puzzle`,[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]),Ze=c(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),G=e(t(),1),K=n();function q({className:e,orientation:t=`horizontal`,decorative:n=!0,...r}){return(0,K.jsx)(a,{"data-slot":`separator`,decorative:n,orientation:t,className:z(`shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px`,e),...r})}var Qe=[{key:`general`,label:`General`},{key:`tabs`,label:`Tabs`},{key:`projects`,label:`Projects`}],$e=[`Ctrl+T`,`Ctrl+W`,`Ctrl+N`,`Ctrl+Tab`,`Ctrl+L`,`Ctrl+H`,`Ctrl+J`,`F5`,`Ctrl+R`,`Ctrl+Shift+I`,`Ctrl+Shift+J`];function et({actionId:e,combo:t,locked:n}){let[r,i]=(0,G.useState)(!1),a=fe(e=>e.setBinding),o=(0,G.useRef)(null),s=(0,G.useCallback)(t=>{if(t.preventDefault(),t.stopPropagation(),t.key===`Escape`){i(!1);return}let n=de(t);n&&(a(e,n),i(!1))},[e,a]);return(0,G.useEffect)(()=>{if(r)return document.addEventListener(`keydown`,s,!0),()=>document.removeEventListener(`keydown`,s,!0)},[r,s]),(0,G.useEffect)(()=>{if(!r)return;let e=e=>{o.current&&!o.current.contains(e.target)&&i(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[r]),n?(0,K.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,K.jsx)(ie,{className:`size-2.5`}),ue(t)]}):r?(0,K.jsx)(`button`,{ref:o,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,K.jsx)(`button`,{ref:o,onClick:()=>i(!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:ue(t)})}function tt(){let{getBinding:e,resetBinding:t,resetAll:n,overrides:r}=fe(),i=me(e=>e.contributions),a=i?.keybindings??[],o=i?.commands??[];return(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`Keyboard Shortcuts`}),Object.keys(r).length>0&&(0,K.jsxs)(B,{variant:`ghost`,size:`sm`,className:`h-6 text-[10px] text-muted-foreground`,onClick:n,children:[(0,K.jsx)(j,{className:`size-3 mr-1`}),`Reset all`]})]}),(0,K.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border border-warning/30 bg-warning/5 px-2.5 py-2`,children:[(0,K.jsx)(N,{className:`size-3.5 text-warning shrink-0 mt-0.5`}),(0,K.jsxs)(`p`,{className:`text-[10px] text-muted-foreground leading-relaxed`,children:[`Some shortcuts (`,$e.slice(0,4).join(`, `),`...) are reserved by the browser and cannot be overridden.`]})]}),Qe.map(n=>{let i=pe.filter(e=>e.category===n.key);return i.length===0?null:(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:n.label}),(0,K.jsx)(`div`,{className:`space-y-0.5`,children:i.map(n=>{let i=e(n.id),a=n.id in r;return(0,K.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,K.jsxs)(`div`,{className:`flex flex-col min-w-0`,children:[(0,K.jsx)(`span`,{className:`text-xs text-foreground`,children:n.label}),n.note&&(0,K.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:n.note})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,K.jsx)(et,{actionId:n.id,combo:i,locked:n.locked}),a&&!n.locked&&(0,K.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,K.jsx)(j,{className:`size-3`})})]})]},n.id)})})]},n.key)}),a.length>0&&(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(`span`,{className:`text-[10px] font-medium text-muted-foreground uppercase tracking-wide`,children:`Extensions`}),(0,K.jsx)(`div`,{className:`space-y-0.5`,children:a.map(n=>{let i=o.find(e=>e.command===n.command)?.title??n.command,a=`ext:${n.command}`,s=e(a)||n.key,c=a in r;return(0,K.jsxs)(`div`,{className:`flex items-center justify-between py-1 px-1 rounded hover:bg-surface-elevated/50 transition-colors`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,K.jsx)(W,{className:`size-3 text-muted-foreground shrink-0`}),(0,K.jsx)(`span`,{className:`text-xs text-foreground`,children:i})]}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0 ml-2`,children:[(0,K.jsx)(et,{actionId:a,combo:s}),c&&(0,K.jsx)(`button`,{onClick:()=>t(a),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,K.jsx)(j,{className:`size-3`})})]})]},a)})})]})]})}var nt=[{value:`claude-opus-5`,label:`Claude Opus 5`,hint:`most powerful`},{value:`claude-fable-5-1`,label:`Claude Fable 5.1`,hint:`flagship`},{value:`claude-fable-5`,label:`Claude Fable 5`,hint:`flagship`},{value:`claude-opus-4-8`,label:`Claude Opus 4.8`,hint:`powerful`},{value:`claude-opus-4-7`,label:`Claude Opus 4.7`,hint:`powerful`},{value:`claude-opus-4-6`,label:`Claude Opus 4.6`,hint:`powerful`},{value:`claude-sonnet-5`,label:`Claude Sonnet 5`,hint:`fast`},{value:`claude-sonnet-4-6`,label:`Claude Sonnet 4.6`,hint:`fast`},{value:`claude-haiku-4-5`,label:`Claude Haiku 4.5`,hint:`cheap`}];nt.map(e=>e.value);var rt=`Hello! Reply briefly.`,it=`claude-opus-5`;function at(e){let[t,n]=(0,G.useState)(!1);return(0,K.jsxs)(we,{open:t,onOpenChange:n,children:[(0,K.jsx)(Ce,{asChild:!0,children:(0,K.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-7 text-[11px] gap-1.5 cursor-pointer`,children:[(0,K.jsx)(Ge,{className:`size-3`}),`Test`]})}),(0,K.jsxs)(be,{className:`sm:max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,K.jsxs)(ve,{children:[(0,K.jsx)(xe,{className:`text-sm`,children:`Test Proxy`}),(0,K.jsx)(Se,{className:`text-[11px]`,children:`Send a test request and inspect the raw response.`})]}),t&&(0,K.jsx)(ot,{...e})]})]})}function ot({authKey:e,baseUrl:t}){let[n,r]=(0,G.useState)(`anthropic`),[i,a]=(0,G.useState)(rt),[o,s]=(0,G.useState)(it),[c,l]=(0,G.useState)(!0),[u,d]=(0,G.useState)(!1),[f,p]=(0,G.useState)(null),[m,h]=(0,G.useState)(null),[g,_]=(0,G.useState)(null),y=(0,G.useRef)(null),b=(0,G.useRef)(null);(0,G.useEffect)(()=>{y.current?.select()},[]),(0,G.useEffect)(()=>{b.current&&(b.current.scrollTop=b.current.scrollHeight)},[f]);let x=e=>{r(e),p(null),h(null),_(null)},S=async()=>{d(!0),p(null),h(null),_(null);let r=Date.now(),a=n===`openai`,s=a?`${t}/proxy/v1/chat/completions`:`${t}/proxy/v1/messages`,l=JSON.stringify({model:o,max_tokens:256,stream:c,messages:[{role:`user`,content:i}]}),u={"Content-Type":`application/json`};a?u.Authorization=`Bearer ${e}`:(u[`x-api-key`]=e,u[`anthropic-version`]=`2023-06-01`);try{let e=await fetch(s,{method:`POST`,headers:u,body:l});if(!e.ok){let t=await e.text();h(`HTTP ${e.status}: ${t}`),d(!1),_(Date.now()-r);return}if(c){let t=e.body?.getReader();if(!t){h(`No response body`),d(!1);return}let n=new TextDecoder,i=``;for(;;){let{done:e,value:r}=await t.read();if(e)break;i+=n.decode(r,{stream:!0}),p(i)}_(Date.now()-r)}else{let t=await e.text();try{p(JSON.stringify(JSON.parse(t),null,2))}catch{p(t)}_(Date.now()-r)}}catch(e){h(e.message)}finally{d(!1),_(e=>e??Date.now()-r)}};return(0,K.jsxs)(`div`,{className:`space-y-3 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`space-y-1.5 min-w-0`,children:[(0,K.jsx)(v,{className:`text-[11px]`,children:`Auth Style`}),(0,K.jsx)(`div`,{className:`flex gap-1`,children:[`anthropic`,`openai`].map(e=>(0,K.jsx)(`button`,{onClick:()=>x(e),className:`flex-1 h-8 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${n===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e===`anthropic`?`Anthropic`:`OpenAI`},e))}),(0,K.jsx)(`p`,{className:`text-[9px] text-muted-foreground`,children:n===`anthropic`?`x-api-key header`:`Authorization: Bearer header`})]}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(v,{className:`text-[11px]`,children:`Model`}),(0,K.jsx)(`select`,{value:o,onChange:e=>s(e.target.value),className:`h-8 w-full rounded-md border bg-background px-2 text-[11px]`,children:nt.map(e=>(0,K.jsx)(`option`,{value:e.value,children:e.value},e.value))})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(v,{className:`text-[11px]`,children:`Streaming`}),(0,K.jsx)(`div`,{className:`flex gap-1`,children:[!0,!1].map(e=>(0,K.jsx)(`button`,{onClick:()=>l(e),className:`h-7 px-3 rounded-md text-[11px] font-medium border transition-colors cursor-pointer ${c===e?`bg-primary text-primary-foreground border-primary`:`bg-muted text-muted-foreground border-transparent hover:bg-muted/80`}`,children:e?`Stream`:`JSON`},String(e)))})]}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(v,{className:`text-[11px]`,children:`Message`}),(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(H,{ref:y,value:i,onChange:e=>a(e.target.value),placeholder:`Type a test message...`,className:`h-9 text-[11px] flex-1 min-w-0`,onKeyDown:e=>{e.key===`Enter`&&!u&&S()}}),(0,K.jsxs)(B,{size:`sm`,className:`h-9 px-3 cursor-pointer shrink-0`,onClick:S,disabled:u||!i.trim(),children:[u?(0,K.jsx)(k,{className:`size-3.5 animate-spin`}):(0,K.jsx)(ae,{className:`size-3.5`}),(0,K.jsx)(`span`,{className:`ml-1 text-[11px]`,children:u?`...`:`Send`})]})]})]}),(f||m)&&(0,K.jsxs)(`div`,{className:`space-y-1 min-w-0`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Raw Response`}),g!=null&&(0,K.jsxs)(`span`,{className:`text-[9px] font-mono text-muted-foreground`,children:[(g/1e3).toFixed(1),`s`]})]}),m?(0,K.jsx)(`pre`,{className:`text-[9px] font-mono bg-error/10 text-error p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:m}):(0,K.jsx)(`pre`,{ref:b,className:`text-[9px] font-mono bg-muted p-2 rounded overflow-auto max-h-52 whitespace-pre-wrap break-all`,children:f})]})]})}function st(){let[e,t]=(0,G.useState)(null),[n,r]=(0,G.useState)(!0),[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(null),[c,l]=(0,G.useState)(null);(0,G.useEffect)(()=>{r(!0),Ne().then(t).catch(e=>s(e.message)).finally(()=>r(!1))},[]);let u=async e=>{a(!0),s(null);try{t(await Ie(e))}catch(e){s(e.message)}finally{a(!1)}},d=(e,t)=>{ge(e),l(t),setTimeout(()=>l(null),2e3)};if(n||!e)return(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-text-secondary`,children:`API Proxy`}),(0,K.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:o?`Error: ${o}`:`Loading...`})]});let f=!!e.authKey,p=!!e.tunnelUrl,m=e.localEndpoint,h=m.replace(/\/proxy\/v1\/messages$/,``);return(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsx)(`div`,{className:`space-y-1.5`,children:(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Expose your Claude accounts as an Anthropic-compatible API endpoint. External tools (OpenCode, Cursor, etc.) can use your accounts via this proxy.`})}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,K.jsx)(v,{className:`text-xs`,children:`Enable Proxy`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Accept API requests on /proxy/v1/messages`})]}),(0,K.jsx)(U,{checked:e.enabled,onCheckedChange:e=>u({enabled:e}),disabled:i})]}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(v,{className:`text-[11px]`,children:`Auth Key`}),f?(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(H,{readOnly:!0,value:e.authKey,className:`h-7 text-[11px] font-mono flex-1`}),(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>d(e.authKey,`key`),children:c===`key`?`Copied!`:(0,K.jsx)(E,{className:`size-3`})}),(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`h-7 px-2 cursor-pointer shrink-0`,onClick:()=>u({generateKey:!0}),disabled:i,children:(0,K.jsx)(oe,{className:`size-3`})})]}):(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`h-7 text-xs cursor-pointer`,onClick:()=>u({generateKey:!0}),disabled:i,children:`Generate Auth Key`}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Use as Bearer token or x-api-key when calling the proxy.`})]}),e.enabled&&f&&(0,K.jsxs)(`div`,{className:`space-y-2 rounded-md border p-3 bg-muted/30`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`h4`,{className:`text-[11px] font-medium`,children:`Connection Info`}),(0,K.jsx)(at,{authKey:e.authKey,baseUrl:window.location.origin})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Endpoint`}),(0,K.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,K.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:p?e.proxyEndpoint:m}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>d(p?e.proxyEndpoint:m,`anthropic`),children:c===`anthropic`?`Copied!`:(0,K.jsx)(E,{className:`size-3`})})]})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI-Compatible Endpoint`}),(0,K.jsxs)(`div`,{className:`flex gap-1.5 items-center`,children:[(0,K.jsx)(`code`,{className:`text-[10px] font-mono bg-muted px-1.5 py-0.5 rounded flex-1 truncate`,children:p?e.openAiEndpoint:e.localOpenAiEndpoint}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 px-1.5 cursor-pointer shrink-0`,onClick:()=>d(p?e.openAiEndpoint:e.localOpenAiEndpoint,`openai`),children:c===`openai`?`Copied!`:(0,K.jsx)(E,{className:`size-3`})})]})]}),!p&&(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Start a Cloudflare tunnel (Share) to get a public URL.`}),(0,K.jsxs)(`div`,{className:`space-y-1 pt-1`,children:[(0,K.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`Anthropic Format`}),(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:`ANTHROPIC_BASE_URL=${p?e.tunnelUrl+`/proxy`:h+`/proxy`}
|
|
2
|
-
ANTHROPIC_API_KEY=${e.authKey}`}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>d(`ANTHROPIC_BASE_URL=${p?e.tunnelUrl+`/proxy`:h+`/proxy`}\nANTHROPIC_API_KEY=${e.authKey}`,`anthropic-env`),children:c===`anthropic-env`?`Copied!`:(0,K.jsx)(E,{className:`size-2.5`})})]})]}),(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(v,{className:`text-[10px] text-muted-foreground`,children:`OpenAI Format`}),(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(`pre`,{className:`text-[9px] font-mono bg-muted p-2 rounded overflow-x-auto whitespace-pre`,children:`OPENAI_BASE_URL=${p?e.tunnelUrl+`/proxy/v1`:h+`/proxy/v1`}
|
|
3
|
-
OPENAI_API_KEY=${e.authKey}`}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`absolute top-1 right-1 h-5 px-1 cursor-pointer`,onClick:()=>d(`OPENAI_BASE_URL=${p?e.tunnelUrl+`/proxy/v1`:h+`/proxy/v1`}\nOPENAI_API_KEY=${e.authKey}`,`openai-env`),children:c===`openai-env`?`Copied!`:(0,K.jsx)(E,{className:`size-2.5`})})]})]}),(0,K.jsx)(`div`,{className:`flex items-center gap-3 pt-1`,children:(0,K.jsxs)(`span`,{className:`text-[10px] text-muted-foreground`,children:[`Requests served: `,(0,K.jsx)(`span`,{className:`font-mono`,children:e.requestCount})]})})]}),i&&(0,K.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:`Saving...`}),o&&(0,K.jsx)(`p`,{className:`text-[11px] text-error`,children:o})]})}function ct(){let[e,t]=(0,G.useState)([]),[n,r]=(0,G.useState)(!0),[i,a]=(0,G.useState)(``),[o,s]=(0,G.useState)(!1),[c,l]=(0,G.useState)(``),[u,d]=(0,G.useState)(!1),[f,p]=(0,G.useState)(null),[m,h]=(0,G.useState)(null),g=(0,G.useCallback)(async()=>{try{t(await I.get(`/api/extensions`))}catch(e){console.error(`Failed to load extensions:`,e)}finally{r(!1)}},[]);(0,G.useEffect)(()=>{g()},[g]);let _=async()=>{let e=i.trim();if(e){s(!0);try{await I.post(`/api/extensions/install`,{name:e}),L.success(`Installed ${e}`),a(``),g()}catch(e){L.error(e.message||`Install failed`)}finally{s(!1)}}},v=async e=>{p(e.id);try{await I.patch(`/api/extensions/${e.id}`,{enabled:!e.enabled}),g()}catch(e){L.error(e.message||`Toggle failed`)}finally{p(null)}},y=async e=>{h(e);try{await I.del(`/api/extensions/${e}`),L.success(`Removed ${e}`),g()}catch(e){L.error(e.message||`Remove failed`)}finally{h(null)}};return n?(0,K.jsx)(`div`,{className:`flex items-center justify-center py-8`,children:(0,K.jsx)(k,{className:`size-4 animate-spin text-muted-foreground`})}):(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Install Extension`}),(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(H,{value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&_()},placeholder:`npm package name (e.g. @ppm/ext-myext)`,className:`h-8 text-xs flex-1`}),(0,K.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-8 text-xs px-3 gap-1 cursor-pointer`,disabled:!i.trim()||o,onClick:_,children:[o?(0,K.jsx)(k,{className:`size-3 animate-spin`}):(0,K.jsx)(O,{className:`size-3`}),`Install`]})]}),(0,K.jsx)(`button`,{onClick:()=>d(!u),className:`text-[11px] text-muted-foreground hover:text-foreground transition-colors cursor-pointer`,children:u?`Hide`:`Dev link local extension...`}),u&&(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(H,{value:c,onChange:e=>l(e.target.value),placeholder:`Local path (e.g. ./packages/ext-myext)`,className:`h-8 text-xs flex-1`}),(0,K.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-8 text-xs px-3 gap-1 cursor-pointer`,disabled:!c.trim(),onClick:async()=>{try{await I.post(`/api/extensions/dev-link`,{path:c.trim()}),L.success(`Dev-linked successfully`),l(``),g()}catch(e){L.error(e.message||`Dev link failed`)}},children:[(0,K.jsx)(te,{className:`size-3`}),`Link`]})]})]}),(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsxs)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:[`Installed (`,e.length,`)`]}),e.length===0?(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-4 text-center`,children:`No extensions installed`}):(0,K.jsx)(`div`,{className:`space-y-1`,children:e.map(e=>(0,K.jsxs)(`div`,{className:`flex items-center gap-2 px-2.5 py-2 rounded-lg bg-muted/50 hover:bg-muted transition-colors`,children:[(0,K.jsx)(`div`,{className:`size-8 rounded-md bg-background flex items-center justify-center shrink-0`,children:(0,K.jsx)(W,{className:`size-4 text-muted-foreground`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium truncate`,children:e.displayName||e.id}),(0,K.jsxs)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:[e.id,` v`,e.version,e.activated&&(0,K.jsx)(`span`,{className:`ml-1 text-success`,children:`active`})]})]}),(0,K.jsx)(B,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0 cursor-pointer`,title:e.enabled?`Disable`:`Enable`,disabled:f===e.id,onClick:()=>v(e),children:f===e.id?(0,K.jsx)(k,{className:`size-3.5 animate-spin`}):e.enabled?(0,K.jsx)(Xe,{className:`size-3.5 text-success`}):(0,K.jsx)(Ye,{className:`size-3.5 text-muted-foreground`})}),(0,K.jsx)(B,{variant:`ghost`,size:`icon`,className:`size-7 shrink-0 cursor-pointer text-destructive hover:text-destructive`,title:`Remove`,disabled:m===e.id,onClick:()=>y(e.id),children:m===e.id?(0,K.jsx)(k,{className:`size-3.5 animate-spin`}):(0,K.jsx)(M,{className:`size-3.5`})})]},e.id))})]})]})}function lt(){let[e,t]=(0,G.useState)(null),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(null),[o,s]=(0,G.useState)(``),[c,l]=(0,G.useState)(!1),[u,d]=(0,G.useState)(!1),[p,m]=(0,G.useState)(!1),[h,g]=(0,G.useState)(``),[_,v]=(0,G.useState)(!0),[y,b]=(0,G.useState)(!1),[x,S]=(0,G.useState)(2e3),[C,w]=(0,G.useState)([]),[T,E]=(0,G.useState)(``),[D,O]=(0,G.useState)(!1),[te,ne]=(0,G.useState)(!1),[k,ie]=(0,G.useState)([]),[A,ae]=(0,G.useState)(`_global`),[j,se]=(0,G.useState)([]),N=(0,G.useRef)(void 0),P=(0,G.useCallback)(async()=>{try{w(await I.get(`/api/settings/clawbot/paired`))}catch{}},[]),F=(0,G.useCallback)(async(e=A)=>{try{ie(await I.get(`/api/settings/clawbot/memories?project=${encodeURIComponent(e)}`))}catch{}},[A]),L=(0,G.useCallback)(async()=>{try{se(await I.get(`/api/settings/clawbot/tasks?limit=20`))}catch{}},[]),R=async e=>{try{await I.del(`/api/settings/clawbot/memories/${e}`),ie(t=>t.filter(t=>t.id!==e))}catch{}};(0,G.useEffect)(()=>(I.get(`/api/settings/clawbot`).then(e=>{t(e),m(e.enabled),g(e.system_prompt),v(e.show_tool_calls),b(e.show_thinking),S(e.debounce_ms)}).catch(()=>{}),I.get(`/api/settings/telegram`).then(e=>{l(!!e.bot_token)}).catch(()=>{}),P(),F(`_global`),L(),N.current=setInterval(L,1e4),()=>{N.current&&clearInterval(N.current)}),[P,F,L]);let z=async()=>{if(o.trim()){d(!0),a(null);try{await I.put(`/api/settings/telegram`,{bot_token:o}),l(!0),s(``),a({type:`ok`,msg:`Bot token saved`})}catch(e){a({type:`err`,msg:e.message})}finally{d(!1)}}},ce=async()=>{r(!0),a(null);try{let e={enabled:p,system_prompt:h,show_tool_calls:_,show_thinking:y,debounce_ms:x};t(await I.put(`/api/settings/clawbot`,e)),a({type:`ok`,msg:p?`Saved — bot started`:`Saved — bot stopped`})}catch(e){a({type:`err`,msg:e.message})}finally{r(!1)}},le=async()=>{if(T.trim()){O(!0);try{await I.post(`/api/settings/clawbot/paired/approve`,{code:T.trim().toUpperCase()}),E(``),await P(),a({type:`ok`,msg:`Device approved`})}catch(e){a({type:`err`,msg:e.message})}finally{O(!1)}}},ue=async e=>{try{await I.del(`/api/settings/clawbot/paired/${e}`),await P(),a({type:`ok`,msg:`Device revoked`})}catch(e){a({type:`err`,msg:e.message})}},de=async()=>{ne(!0),a(null);try{await I.post(`/api/settings/telegram/test`,{}),a({type:`ok`,msg:`Test notification sent to all paired devices!`})}catch(e){a({type:`err`,msg:e.message})}finally{ne(!1)}};if(!e)return(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`});let fe=C.filter(e=>e.status===`approved`).length,pe={pending:`⏳`,running:`🔄`,completed:`✅`,failed:`❌`,timeout:`⏱`},me={running:`text-primary`,completed:`text-success`,failed:`text-destructive`,timeout:`text-warning`};return(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Telegram Bot Token`}),(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(H,{type:`password`,placeholder:c?`•••••• (saved)`:`123456:ABC-DEF...`,value:o,onChange:e=>s(e.target.value),className:`h-7 text-xs flex-1`}),(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`h-7 text-xs shrink-0 cursor-pointer`,disabled:u||!o.trim(),onClick:z,children:u?`...`:`Save`})]}),(0,K.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[`Create a bot via `,(0,K.jsx)(`b`,{children:`@BotFather`}),` on Telegram. Used for both chat and notifications.`]})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Enable PPMBot`}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`AI coordinator on Telegram — delegates tasks to your projects`})]}),(0,K.jsx)(U,{checked:p,onCheckedChange:m})]}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Paired Devices`}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Send any message to the bot on Telegram to get a pairing code. Enter it below to approve. Notifications are sent to all approved devices.`}),(0,K.jsxs)(`div`,{className:`flex gap-2`,children:[(0,K.jsx)(H,{placeholder:`Enter pairing code (e.g. A3K7WR)`,value:T,onChange:e=>E(e.target.value.toUpperCase()),className:`h-8 text-xs font-mono tracking-wider uppercase`,maxLength:6}),(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`h-8 text-xs shrink-0 cursor-pointer`,disabled:D||T.length<6,onClick:le,children:D?`...`:`Approve`})]}),C.length===0?(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No paired devices yet.`}):(0,K.jsx)(`div`,{className:`space-y-1`,children:C.map(e=>(0,K.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border p-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[e.status===`approved`?(0,K.jsx)(Ue,{className:`size-3.5 text-success shrink-0`}):(0,K.jsx)(ee,{className:`size-3.5 text-warning shrink-0`}),(0,K.jsxs)(`div`,{className:`min-w-0`,children:[(0,K.jsx)(`p`,{className:`text-xs truncate`,children:e.display_name||`Chat ${e.telegram_chat_id}`}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:e.status===`pending`&&e.pairing_code?`Code: ${e.pairing_code}`:e.status})]})]}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-7 w-7 p-0 text-destructive hover:text-destructive cursor-pointer`,onClick:()=>ue(e.telegram_chat_id),children:(0,K.jsx)(M,{className:`size-3.5`})})]},e.id))}),c&&fe>0&&(0,K.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-7 text-xs gap-1 w-full cursor-pointer`,disabled:te,onClick:de,children:[(0,K.jsx)(re,{className:`size-3`}),te?`Sending...`:`Test Notification`]})]}),(0,K.jsx)(q,{}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Delegated Tasks`}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:L,children:(0,K.jsx)(oe,{className:`size-3`})})]}),j.length===0?(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No delegated tasks yet. The coordinator will create tasks when you ask it to work on a project.`}):(0,K.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:j.map(e=>{let t=e.completed_at?`${Math.round((e.completed_at-e.created_at)/60)}m`:`${Math.round((Date.now()/1e3-e.created_at)/60)}m`;return(0,K.jsxs)(`div`,{className:`flex items-center gap-2 rounded-md border p-2 text-[11px]`,children:[(0,K.jsx)(`span`,{className:me[e.status]??``,children:pe[e.status]??`?`}),(0,K.jsx)(`span`,{className:`font-medium shrink-0`,children:e.project_name}),(0,K.jsx)(`span`,{className:`truncate text-muted-foreground flex-1`,children:e.prompt.slice(0,60)}),(0,K.jsx)(`span`,{className:`text-[10px] text-muted-foreground shrink-0`,children:t})]},e.id)})})]}),(0,K.jsx)(q,{}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(f,{className:`size-3.5 text-muted-foreground`}),(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Memory & Identity`})]}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 cursor-pointer`,onClick:()=>F(A),children:(0,K.jsx)(oe,{className:`size-3`})})]}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Facts the bot remembers across sessions. Use /remember on Telegram to add, or delete here.`}),k.length===0?(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground italic`,children:`No memories stored yet. Send /start on Telegram and introduce yourself.`}):(0,K.jsx)(`div`,{className:`space-y-1 max-h-[200px] overflow-y-auto`,children:k.map(e=>(0,K.jsxs)(`div`,{className:`flex items-start justify-between rounded-md border p-2 gap-1`,children:[(0,K.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`p`,{className:`text-[11px] break-words`,children:e.content}),(0,K.jsxs)(`p`,{className:`text-[10px] text-muted-foreground`,children:[e.category,` · `,e.project]})]}),(0,K.jsx)(B,{variant:`ghost`,size:`sm`,className:`h-6 w-6 p-0 text-destructive hover:text-destructive cursor-pointer shrink-0`,onClick:()=>R(e.id),children:(0,K.jsx)(M,{className:`size-3`})})]},e.id))})]}),(0,K.jsx)(q,{}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Custom Instructions`}),(0,K.jsx)(`textarea`,{placeholder:`Additional instructions for the coordinator (optional)...`,value:h,onChange:e=>g(e.target.value),className:`flex w-full rounded-md border border-input bg-background px-3 py-2 text-xs min-h-[60px] resize-y ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2`,rows:3}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Extra instructions added to the coordinator identity. Leave empty to use defaults from coordinator.md.`})]}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`p`,{className:`text-xs`,children:`Show tool calls`}),(0,K.jsx)(U,{checked:_,onCheckedChange:v})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`p`,{className:`text-xs`,children:`Show thinking`}),(0,K.jsx)(U,{checked:y,onCheckedChange:b})]})]}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,children:`Debounce (ms)`}),(0,K.jsx)(H,{type:`number`,min:0,max:3e4,step:500,value:x,onChange:e=>S(Number(e.target.value)),className:`h-7 text-xs w-24`}),(0,K.jsx)(`p`,{className:`text-[10px] text-muted-foreground`,children:`Merge rapid messages within this window. 0 = no debounce.`})]}),(0,K.jsx)(B,{variant:`default`,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,disabled:n,onClick:ce,children:n?`Saving...`:`Save`}),i&&(0,K.jsx)(`p`,{className:`text-[11px] ${i.type===`ok`?`text-success`:`text-destructive`}`,children:i.msg})]})}function ut(){let[e,t]=(0,G.useState)(!1),[n,r]=(0,G.useState)(``),[i,a]=(0,G.useState)(``),[o,s]=(0,G.useState)(!1),[c,l]=(0,G.useState)(!1),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)(null),h=i.length>0&&n!==i,g=n.trim().length>=4&&n===i&&!c,_=(0,G.useCallback)(async()=>{if(g){l(!0),m(null);try{let{token:e}=await I.put(`/api/settings/auth/password`,{password:n.trim(),confirm:i.trim()});F(e),f(!0),r(``),a(``),setTimeout(()=>{f(!1),t(!1)},1500)}catch(e){m(e instanceof Error?e.message:`Failed to change password`)}finally{l(!1)}}},[g,n,i]);return e?(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Change Password`}),(0,K.jsxs)(`div`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`relative`,children:[(0,K.jsx)(H,{type:o?`text`:`password`,placeholder:`New password`,value:n,onChange:e=>r(e.target.value),className:`h-8 text-xs pr-8`,autoFocus:!0}),(0,K.jsx)(`button`,{type:`button`,className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground cursor-pointer`,onClick:()=>s(!o),tabIndex:-1,children:o?(0,K.jsx)(u,{className:`size-3.5`}):(0,K.jsx)(D,{className:`size-3.5`})})]}),(0,K.jsx)(H,{type:o?`text`:`password`,placeholder:`Confirm password`,value:i,onChange:e=>a(e.target.value),onKeyDown:e=>{e.key===`Enter`&&_()},className:`h-8 text-xs`}),h&&(0,K.jsx)(`p`,{className:`text-[11px] text-destructive`,children:`Passwords do not match`}),p&&(0,K.jsx)(`p`,{className:`text-[11px] text-destructive`,children:p}),(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(B,{variant:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,onClick:()=>{t(!1),r(``),a(``),m(null)},children:`Cancel`}),(0,K.jsx)(B,{variant:d?`default`:`outline`,size:`sm`,className:`h-8 text-xs flex-1 cursor-pointer`,disabled:!g,onClick:_,children:c?`...`:d?(0,K.jsx)(C,{className:`size-3.5`}):`Save`})]}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Min 4 characters. You'll stay logged in on this device.`})]})]}):(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Security`}),(0,K.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-8 text-xs gap-1.5 cursor-pointer`,onClick:()=>t(!0),children:[(0,K.jsx)(S,{className:`size-3.5`}),`Change Password`]})]})}function dt(){return I.get(`/api/settings/files`)}function ft(e){return I.patch(`/api/settings/files`,e)}function pt(e){return I.get(`/api/projects/${encodeURIComponent(e)}/settings`)}function mt(e,t){return I.patch(`/api/projects/${encodeURIComponent(e)}/settings`,t)}function ht({value:e,onChange:t,placeholder:n=`e.g. **/*.log`,disabled:r=!1}){let i=(0,G.useRef)([]);function a(n,r){let i=[...e];i[n]=r,t(i)}function o(n){t(e.filter((e,t)=>t!==n)),setTimeout(()=>{let e=Math.max(n-1,0);i.current[e]?.focus()},0)}function s(){t([...e,``]),setTimeout(()=>{i.current[e.length]?.focus()},0)}function c(t,n){n.key===`Enter`?(n.preventDefault(),e[t]?.trim()&&s()):n.key===`Backspace`&&e[t]===``&&(n.preventDefault(),o(t))}return(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[e.length===0&&(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`No patterns. Click "Add pattern" to start.`}),e.map((e,t)=>(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(H,{ref:e=>{i.current[t]=e},value:e,onChange:e=>a(t,e.target.value),onKeyDown:e=>c(t,e),placeholder:n,disabled:r,className:`h-8 text-xs flex-1 font-mono`,"aria-label":`Pattern ${t+1}`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>o(t),disabled:r,"aria-label":`Remove pattern ${t+1}`,className:`shrink-0 flex items-center justify-center p-2.5 rounded-md text-muted-foreground hover:text-destructive hover:bg-destructive/10 transition-colors disabled:opacity-40 disabled:pointer-events-none`,children:(0,K.jsx)(P,{className:`size-3.5`})})]},t)),(0,K.jsxs)(B,{type:`button`,variant:`outline`,size:`sm`,onClick:s,disabled:r,className:`h-8 text-xs gap-1.5 w-full cursor-pointer`,children:[(0,K.jsx)(O,{className:`size-3.5`}),`Add pattern`]})]})}var gt={filesExclude:[],searchExclude:[],useIgnoreFiles:!0};function _t(){let e=ce(e=>e.activeProject),[t,n]=(0,G.useState)(`global`),[r,i]=(0,G.useState)([]),[a,o]=(0,G.useState)([]),[s,c]=(0,G.useState)(!0),[l,u]=(0,G.useState)(!1),[d,f]=(0,G.useState)(!1),[p,m]=(0,G.useState)(null),[h,g]=(0,G.useState)(!1),_=(0,G.useRef)(null);(0,G.useEffect)(()=>{_.current?.abort();let n=new AbortController;return _.current=n,g(!0),m(null),(async()=>{try{if(t===`global`){let e=await dt();if(n.signal.aborted)return;i(e.filesExclude),o(e.searchExclude),c(e.useIgnoreFiles)}else{if(!e)return;let t=await pt(e.name);if(n.signal.aborted)return;let r=t.files??{};i(r.filesExclude??gt.filesExclude),o(r.searchExclude??gt.searchExclude),c(r.useIgnoreFiles??gt.useIgnoreFiles)}}catch(e){if(n.signal.aborted)return;m(e.message)}finally{n.signal.aborted||g(!1)}})(),()=>n.abort()},[t,e?.name]);let y=async()=>{u(!0),f(!1),m(null);try{let n={filesExclude:r.filter(e=>e.trim()!==``),searchExclude:a.filter(e=>e.trim()!==``),useIgnoreFiles:s};if(t===`global`)await ft(n);else{if(!e)throw Error(`No active project`);await mt(e.name,{files:n})}let i=le.getState();i.invalidateIndex(),e&&i.loadIndex(e.name),f(!0),setTimeout(()=>f(!1),2e3)}catch(e){m(e.message)}finally{u(!1)}},b=!!e;return(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`File Filters`}),(0,K.jsxs)(`div`,{className:`flex gap-1`,children:[(0,K.jsx)(`button`,{type:`button`,onClick:()=>n(`global`),className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer ${t===`global`?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:`Global`}),(0,K.jsx)(`button`,{type:`button`,onClick:()=>b&&n(`project`),disabled:!b,title:b?void 0:`Open a project to edit per-project overrides`,className:`flex-1 py-1.5 rounded-md text-xs font-medium transition-colors cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed ${t===`project`?`bg-primary text-primary-foreground`:`bg-muted text-muted-foreground hover:bg-accent`}`,children:e?e.name:`Per-project`})]}),t===`project`&&e&&(0,K.jsxs)(`p`,{className:`text-[11px] text-muted-foreground -mt-2`,children:[`Overrides for `,(0,K.jsx)(`span`,{className:`font-medium`,children:e.name}),`. Leave empty to use global settings.`]}),h?(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Loading...`}):(0,K.jsxs)(K.Fragment,{children:[(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(v,{className:`text-xs`,children:`Files to Exclude`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Glob patterns hidden from the file tree and palette.`}),(0,K.jsx)(ht,{value:r,onChange:i,placeholder:`e.g. **/*.log or node_modules/**`,disabled:l})]}),(0,K.jsx)(q,{}),(0,K.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,K.jsx)(v,{className:`text-xs`,children:`Search to Exclude`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Glob patterns excluded from file index / palette search.`}),(0,K.jsx)(ht,{value:a,onChange:o,placeholder:`e.g. dist/** or **/*.min.js`,disabled:l})]}),(0,K.jsx)(q,{}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`div`,{children:[(0,K.jsx)(v,{className:`text-xs`,children:`Use .gitignore rules`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Respect .gitignore when filtering the file tree and index.`})]}),(0,K.jsx)(U,{checked:s,onCheckedChange:c,disabled:l})]}),p&&(0,K.jsx)(`p`,{className:`text-[11px] text-destructive`,children:p}),(0,K.jsx)(B,{onClick:y,disabled:l||h,size:`sm`,className:`h-8 text-xs w-full cursor-pointer`,children:l?`Saving...`:d?`Saved`:`Save`})]})]})}var vt=1e4;function yt(){let[e,t]=(0,G.useState)([]),[n,r]=(0,G.useState)(!0),i=(0,G.useCallback)(async()=>{try{t(await I.get(`/api/schedules`))}catch{}finally{r(!1)}},[]);return(0,G.useEffect)(()=>{i();let e=setInterval(()=>{document.visibilityState===`visible`&&i()},vt);return()=>clearInterval(e)},[i]),{schedules:e,loading:n,refetch:i}}function bt(e){let[t,n]=(0,G.useState)([]),[r,i]=(0,G.useState)(!1),a=(0,G.useCallback)(async()=>{if(e!=null){i(!0);try{n(await I.get(`/api/schedules/${e}/runs?limit=20`))}catch{n([])}finally{i(!1)}}},[e]);return(0,G.useEffect)(()=>{a()},[a]),{runs:t,loading:r,refetch:a}}var xt={done:`bg-success/10 text-success`,error:`bg-error/10 text-error`,running:`bg-warning/10 text-warning`,skipped:`bg-muted text-muted-foreground`};function St({scheduleId:e}){let{runs:t,loading:n}=bt(e);return n&&t.length===0?(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`Loading runs…`}):t.length===0?(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground py-1`,children:`No runs yet.`}):(0,K.jsx)(`div`,{className:`space-y-1`,children:t.map(e=>(0,K.jsx)(wt,{run:e},e.id))})}function Ct(e){return new Date(e.includes(`T`)?e:e.replace(` `,`T`)+`Z`)}function wt({run:e}){let[t,n]=(0,G.useState)(!1),r=!!(e.output_truncated||e.error),i=e.ended_at?`${Math.round((Ct(e.ended_at).getTime()-Ct(e.started_at).getTime())/1e3)}s`:`…`;return(0,K.jsxs)(`div`,{className:`rounded border border-border text-[11px]`,children:[(0,K.jsxs)(`button`,{type:`button`,onClick:()=>r&&n(!t),className:z(`w-full flex items-center gap-2 px-2 py-2 min-h-11 text-left`,r&&`cursor-pointer hover:bg-accent/30`),children:[(0,K.jsx)(`span`,{className:z(`rounded px-1.5 py-0.5 font-medium shrink-0`,xt[e.status]),children:e.status}),(0,K.jsxs)(`span`,{className:`text-muted-foreground truncate flex-1`,children:[Ct(e.started_at).toLocaleString(),` · `,i,e.cost_usd!=null&&` · $${e.cost_usd.toFixed(4)}`,e.context_window_pct!=null&&` · ctx ${e.context_window_pct}%`]})]}),t&&(0,K.jsxs)(`div`,{className:`px-2 pb-2 space-y-1`,children:[e.error&&(0,K.jsx)(`p`,{className:`text-error break-all`,children:e.error}),e.output_truncated&&(0,K.jsx)(`pre`,{className:`overflow-auto max-h-96 whitespace-pre-wrap break-all text-muted-foreground font-mono text-[10px]`,children:e.output_truncated})]})]})}function Tt({schedule:e,onEdit:t,onChanged:n}){let[r,i]=(0,G.useState)(!1),[a,o]=(0,G.useState)(0);return(0,K.jsxs)(`div`,{className:`rounded-lg border border-border`,children:[(0,K.jsxs)(ke,{children:[(0,K.jsx)(Ae,{asChild:!0,children:(0,K.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`w-full flex items-center gap-2 px-2.5 py-2.5 min-h-11 text-left cursor-pointer hover:bg-accent/30`,children:[r?(0,K.jsx)(w,{className:`size-3.5 shrink-0 text-muted-foreground`}):(0,K.jsx)(T,{className:`size-3.5 shrink-0 text-muted-foreground`}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium truncate`,children:e.name}),(0,K.jsxs)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:[(0,K.jsx)(`span`,{className:`font-mono`,children:e.cron_expr}),` · `,e.next_fire_at&&e.enabled?`next ${new Date(e.next_fire_at).toLocaleString()}`:`—`]})]}),(0,K.jsx)(`span`,{className:z(`rounded px-1.5 py-0.5 text-[10px] font-medium shrink-0`,e.enabled?`bg-success/10 text-success`:`bg-muted text-muted-foreground`),children:e.enabled?`Enabled`:`Disabled`})]})}),(0,K.jsxs)(De,{children:[(0,K.jsxs)(V,{onClick:async()=>{try{let t=await I.post(`/api/schedules/${e.id}/run-now`);L.success(`Run #${t.runId} started${t.wasRunning?` (previous run still active)`:``}`),i(!0),o(e=>e+1)}catch(e){L.error(e instanceof Error?e.message:`Run failed`)}},children:[(0,K.jsx)(ae,{className:`size-3.5`}),` Run now`]}),(0,K.jsxs)(V,{onClick:async()=>{try{await I.patch(`/api/schedules/${e.id}`,{enabled:!e.enabled}),n()}catch(e){L.error(e instanceof Error?e.message:`Update failed`)}},children:[(0,K.jsx)(Xe,{className:`size-3.5`}),` `,e.enabled?`Disable`:`Enable`]}),(0,K.jsxs)(V,{onClick:t,children:[(0,K.jsx)(p,{className:`size-3.5`}),` Edit`]}),(0,K.jsx)(Oe,{}),(0,K.jsxs)(V,{variant:`destructive`,onClick:async()=>{try{await I.del(`/api/schedules/${e.id}`),L.success(`Schedule deleted`),n()}catch(e){L.error(e instanceof Error?e.message:`Delete failed`)}},children:[(0,K.jsx)(M,{className:`size-3.5`}),` Delete`]})]})]}),r&&(0,K.jsxs)(`div`,{className:`px-2.5 pb-2.5 space-y-1.5`,children:[(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground break-all line-clamp-3`,children:e.prompt}),(0,K.jsx)(St,{scheduleId:e.id},a)]})]})}function J(e,t,n,r,i,a,o,s){return J.fromTZ(J.tp(e,t,n,r,i,a,o),s)}J.fromTZISO=(e,t,n)=>J.fromTZ(Dt(e,t),n),J.fromTZ=function(e,t){let n=new Date(Date.UTC(e.y,e.m-1,e.d,e.h,e.i,e.s)),r=Et(e.tz,n),i=new Date(n.getTime()-r),a=Et(e.tz,i);if(a-r===0)return i;{let r=new Date(n.getTime()-a),o=Et(e.tz,r);if(o-a===0||!t&&o-a>0)return r;if(t)throw Error(`Invalid date passed to fromTZ()`);return i}},J.toTZ=function(e,t){let n=e.toLocaleString(`en-US`,{timeZone:t}).replace(/[\u202f]/,` `),r=new Date(n);return{y:r.getFullYear(),m:r.getMonth()+1,d:r.getDate(),h:r.getHours(),i:r.getMinutes(),s:r.getSeconds(),tz:t}},J.tp=(e,t,n,r,i,a,o)=>({y:e,m:t,d:n,h:r,i,s:a,tz:o});function Et(e,t=new Date){let n=t.toLocaleString(`en-US`,{timeZone:e,timeZoneName:`shortOffset`}).split(` `).slice(-1)[0],r=t.toLocaleString(`en-US`).replace(/[\u202f]/,` `);return Date.parse(`${r} GMT`)-Date.parse(`${r} ${n}`)}function Dt(e,t){let n=new Date(Date.parse(e));if(isNaN(n))throw Error(`minitz: Invalid ISO8601 passed to parser.`);let r=e.substring(9);return e.includes(`Z`)||r.includes(`-`)||r.includes(`+`)?J.tp(n.getUTCFullYear(),n.getUTCMonth()+1,n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),`Etc/UTC`):J.tp(n.getFullYear(),n.getMonth()+1,n.getDate(),n.getHours(),n.getMinutes(),n.getSeconds(),t)}J.minitz=J;var Ot=32,Y=31|Ot,kt=[1,2,4,8,16],At=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(e,t){this.pattern=e,this.timezone=t,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern==`string`||this.pattern instanceof String))throw TypeError(`CronPattern: Pattern has to be of type string.`);this.pattern.indexOf(`@`)>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let e=this.pattern.replace(/\s+/g,` `).split(` `);if(e.length<5||e.length>6)throw TypeError(`CronPattern: invalid configuration format ('`+this.pattern+`'), exactly five or six space separated parts are required.`);if(e.length===5&&e.unshift(`0`),e[3].indexOf(`L`)>=0&&(e[3]=e[3].replace(`L`,``),this.lastDayOfMonth=!0),e[3]==`*`&&(this.starDOM=!0),e[4].length>=3&&(e[4]=this.replaceAlphaMonths(e[4])),e[5].length>=3&&(e[5]=this.replaceAlphaDays(e[5])),e[5]==`*`&&(this.starDOW=!0),this.pattern.indexOf(`?`)>=0){let t=new Z(new Date,this.timezone).getDate(!0);e[0]=e[0].replace(`?`,t.getSeconds().toString()),e[1]=e[1].replace(`?`,t.getMinutes().toString()),e[2]=e[2].replace(`?`,t.getHours().toString()),this.starDOM||(e[3]=e[3].replace(`?`,t.getDate().toString())),e[4]=e[4].replace(`?`,(t.getMonth()+1).toString()),this.starDOW||(e[5]=e[5].replace(`?`,t.getDay().toString()))}this.throwAtIllegalCharacters(e),this.partToArray(`second`,e[0],0,1),this.partToArray(`minute`,e[1],0,1),this.partToArray(`hour`,e[2],0,1),this.partToArray(`day`,e[3],-1,1),this.partToArray(`month`,e[4],-1,1),this.partToArray(`dayOfWeek`,e[5],0,Y),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(e,t,n,r){let i=this[e],a=e===`day`&&this.lastDayOfMonth;if(t===``&&!a)throw TypeError(`CronPattern: configuration entry `+e+` (`+t+`) is empty, check for trailing spaces.`);if(t===`*`)return i.fill(r);let o=t.split(`,`);if(o.length>1)for(let t=0;t<o.length;t++)this.partToArray(e,o[t],n,r);else t.indexOf(`-`)!==-1&&t.indexOf(`/`)!==-1?this.handleRangeWithStepping(t,e,n,r):t.indexOf(`-`)===-1?t.indexOf(`/`)===-1?t!==``&&this.handleNumber(t,e,n,r):this.handleStepping(t,e,n,r):this.handleRange(t,e,n,r)}throwAtIllegalCharacters(e){for(let t=0;t<e.length;t++)if((t===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(e[t]))throw TypeError(`CronPattern: configuration entry `+t+` (`+e[t]+`) contains illegal characters.`)}handleNumber(e,t,n,r){let i=this.extractNth(e,t),a=parseInt(i[0],10)+n;if(isNaN(a))throw TypeError(`CronPattern: `+t+` is not a number: '`+e+`'`);this.setPart(t,a,i[1]||r)}setPart(e,t,n){if(!Object.prototype.hasOwnProperty.call(this,e))throw TypeError(`CronPattern: Invalid part specified: `+e);if(e===`dayOfWeek`){if(t===7&&(t=0),t<0||t>6)throw RangeError(`CronPattern: Invalid value for dayOfWeek: `+t);this.setNthWeekdayOfMonth(t,n);return}if(e===`second`||e===`minute`){if(t<0||t>=60)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`hour`){if(t<0||t>=24)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`day`){if(t<0||t>=31)throw RangeError(`CronPattern: Invalid value for `+e+`: `+t)}else if(e===`month`&&(t<0||t>=12))throw RangeError(`CronPattern: Invalid value for `+e+`: `+t);this[e][t]=n}handleRangeWithStepping(e,t,n,r){let i=this.extractNth(e,t),a=i[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(a===null)throw TypeError(`CronPattern: Syntax error, illegal range with stepping: '`+e+`'`);let[,o,s,c]=a,l=parseInt(o,10)+n,u=parseInt(s,10)+n,d=parseInt(c,10);if(isNaN(l))throw TypeError(`CronPattern: Syntax error, illegal lower range (NaN)`);if(isNaN(u))throw TypeError(`CronPattern: Syntax error, illegal upper range (NaN)`);if(isNaN(d))throw TypeError(`CronPattern: Syntax error, illegal stepping: (NaN)`);if(d===0)throw TypeError(`CronPattern: Syntax error, illegal stepping: 0`);if(d>this[t].length)throw TypeError(`CronPattern: Syntax error, steps cannot be greater than maximum value of part (`+this[t].length+`)`);if(l>u)throw TypeError(`CronPattern: From value is larger than to value: '`+e+`'`);for(let e=l;e<=u;e+=d)this.setPart(t,e,i[1]||r)}extractNth(e,t){let n=e,r;if(n.includes(`#`)){if(t!==`dayOfWeek`)throw Error(`CronPattern: nth (#) only allowed in day-of-week field`);r=n.split(`#`)[1],n=n.split(`#`)[0]}return[n,r]}handleRange(e,t,n,r){let i=this.extractNth(e,t),a=i[0].split(`-`);if(a.length!==2)throw TypeError(`CronPattern: Syntax error, illegal range: '`+e+`'`);let o=parseInt(a[0],10)+n,s=parseInt(a[1],10)+n;if(isNaN(o))throw TypeError(`CronPattern: Syntax error, illegal lower range (NaN)`);if(isNaN(s))throw TypeError(`CronPattern: Syntax error, illegal upper range (NaN)`);if(o>s)throw TypeError(`CronPattern: From value is larger than to value: '`+e+`'`);for(let e=o;e<=s;e++)this.setPart(t,e,i[1]||r)}handleStepping(e,t,n,r){let i=this.extractNth(e,t),a=i[0].split(`/`);if(a.length!==2)throw TypeError(`CronPattern: Syntax error, illegal stepping: '`+e+`'`);a[0]===``&&(a[0]=`*`);let o=0;a[0]!==`*`&&(o=parseInt(a[0],10)+n);let s=parseInt(a[1],10);if(isNaN(s))throw TypeError(`CronPattern: Syntax error, illegal stepping: (NaN)`);if(s===0)throw TypeError(`CronPattern: Syntax error, illegal stepping: 0`);if(s>this[t].length)throw TypeError(`CronPattern: Syntax error, max steps for part is (`+this[t].length+`)`);for(let e=o;e<this[t].length;e+=s)this.setPart(t,e,i[1]||r)}replaceAlphaDays(e){return e.replace(/-sun/gi,`-7`).replace(/sun/gi,`0`).replace(/mon/gi,`1`).replace(/tue/gi,`2`).replace(/wed/gi,`3`).replace(/thu/gi,`4`).replace(/fri/gi,`5`).replace(/sat/gi,`6`)}replaceAlphaMonths(e){return e.replace(/jan/gi,`1`).replace(/feb/gi,`2`).replace(/mar/gi,`3`).replace(/apr/gi,`4`).replace(/may/gi,`5`).replace(/jun/gi,`6`).replace(/jul/gi,`7`).replace(/aug/gi,`8`).replace(/sep/gi,`9`).replace(/oct/gi,`10`).replace(/nov/gi,`11`).replace(/dec/gi,`12`)}handleNicknames(e){let t=e.trim().toLowerCase();return t===`@yearly`||t===`@annually`?`0 0 1 1 *`:t===`@monthly`?`0 0 1 * *`:t===`@weekly`?`0 0 * * 0`:t===`@daily`?`0 0 * * *`:t===`@hourly`?`0 * * * *`:e}setNthWeekdayOfMonth(e,t){if(typeof t!=`number`&&t===`L`)this.dayOfWeek[e]=this.dayOfWeek[e]|Ot;else if(t===Y)this.dayOfWeek[e]=Y;else if(t<6&&t>0)this.dayOfWeek[e]=this.dayOfWeek[e]|kt[t-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${t}, Type: ${typeof t}`)}},jt=[31,28,31,30,31,30,31,31,30,31,30,31],X=[[`month`,`year`,0],[`day`,`month`,-1],[`hour`,`day`,0],[`minute`,`hour`,0],[`second`,`minute`,0]],Z=class e{tz;ms;second;minute;hour;day;month;year;constructor(t,n){if(this.tz=n,t&&t instanceof Date)if(!isNaN(t))this.fromDate(t);else throw TypeError(`CronDate: Invalid date passed to CronDate constructor`);else if(t===void 0)this.fromDate(new Date);else if(t&&typeof t==`string`)this.fromString(t);else if(t instanceof e)this.fromCronDate(t);else throw TypeError(`CronDate: Invalid type (`+typeof t+`) passed to CronDate constructor`)}isNthWeekdayOfMonth(e,t,n,r){let i=new Date(Date.UTC(e,t,n)).getUTCDay(),a=0;for(let r=1;r<=n;r++)new Date(Date.UTC(e,t,r)).getUTCDay()===i&&a++;if(r&Y&&kt[a-1]&r)return!0;if(r&Ot){let r=new Date(Date.UTC(e,t+1,0)).getUTCDate();for(let a=n+1;a<=r;a++)if(new Date(Date.UTC(e,t,a)).getUTCDay()===i)return!1;return!0}return!1}fromDate(e){if(this.tz!==void 0)if(typeof this.tz==`number`)this.ms=e.getUTCMilliseconds(),this.second=e.getUTCSeconds(),this.minute=e.getUTCMinutes()+this.tz,this.hour=e.getUTCHours(),this.day=e.getUTCDate(),this.month=e.getUTCMonth(),this.year=e.getUTCFullYear(),this.apply();else{let t=J.toTZ(e,this.tz);this.ms=e.getMilliseconds(),this.second=t.s,this.minute=t.i,this.hour=t.h,this.day=t.d,this.month=t.m-1,this.year=t.y}else this.ms=e.getMilliseconds(),this.second=e.getSeconds(),this.minute=e.getMinutes(),this.hour=e.getHours(),this.day=e.getDate(),this.month=e.getMonth(),this.year=e.getFullYear()}fromCronDate(e){this.tz=e.tz,this.year=e.year,this.month=e.month,this.day=e.day,this.hour=e.hour,this.minute=e.minute,this.second=e.second,this.ms=e.ms}apply(){if(this.month>11||this.day>jt[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let e=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=e.getUTCMilliseconds(),this.second=e.getUTCSeconds(),this.minute=e.getUTCMinutes(),this.hour=e.getUTCHours(),this.day=e.getUTCDate(),this.month=e.getUTCMonth(),this.year=e.getUTCFullYear(),!0}else return!1}fromString(e){if(typeof this.tz==`number`){let t=J.fromTZISO(e);this.ms=t.getUTCMilliseconds(),this.second=t.getUTCSeconds(),this.minute=t.getUTCMinutes(),this.hour=t.getUTCHours(),this.day=t.getUTCDate(),this.month=t.getUTCMonth(),this.year=t.getUTCFullYear(),this.apply()}else return this.fromDate(J.fromTZISO(e,this.tz))}findNext(e,t,n,r){let i=this[t],a;n.lastDayOfMonth&&(a=this.month===1?new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate():jt[this.month]);let o=!n.starDOW&&t==`day`?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let s=this[t]+r;s<n[t].length;s++){let c=n[t][s];if(t===`day`&&n.lastDayOfMonth&&s-r==a&&(c=1),t===`day`&&!n.starDOW){let t=n.dayOfWeek[(o+(s-r-1))%7];if(t&&t&Y)t=this.isNthWeekdayOfMonth(this.year,this.month,s-r,t)?1:0;else if(t)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${t}`);e.legacyMode&&!n.starDOM?c||=t:c&&=t}if(c)return this[t]=s-r,i===this[t]?1:2}return 3}recurse(e,t,n){let r=this.findNext(t,X[n][0],e,X[n][2]);if(r>1){let i=n+1;for(;i<X.length;)this[X[i][0]]=-X[i][2],i++;if(r===3)return this[X[n][1]]++,this[X[n][0]]=-X[n][2],this.apply(),this.recurse(e,t,0);if(this.apply())return this.recurse(e,t,n-1)}return n+=1,n>=X.length?this:this.year>=3e3?null:this.recurse(e,t,n)}increment(e,t,n){return this.second+=t.interval!==void 0&&t.interval>1&&n?t.interval:1,this.ms=0,this.apply(),this.recurse(e,t,0)}getDate(e){return e||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz==`number`?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):J.fromTZ(J.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function Mt(e){if(e===void 0&&(e={}),delete e.name,e.legacyMode=e.legacyMode===void 0?!0:e.legacyMode,e.paused=e.paused===void 0?!1:e.paused,e.maxRuns=e.maxRuns===void 0?1/0:e.maxRuns,e.catch=e.catch===void 0?!1:e.catch,e.interval=e.interval===void 0?0:parseInt(e.interval.toString(),10),e.utcOffset=e.utcOffset===void 0?void 0:parseInt(e.utcOffset.toString(),10),e.unref=e.unref===void 0?!1:e.unref,e.startAt&&=new Z(e.startAt,e.timezone),e.stopAt&&=new Z(e.stopAt,e.timezone),e.interval!==null){if(isNaN(e.interval))throw Error(`CronOptions: Supplied value for interval is not a number`);if(e.interval<0)throw Error(`CronOptions: Supplied value for interval can not be negative`)}if(e.utcOffset!==void 0){if(isNaN(e.utcOffset))throw Error(`CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.`);if(e.utcOffset<-870||e.utcOffset>870)throw Error(`CronOptions: utcOffset out of bounds.`);if(e.utcOffset!==void 0&&e.timezone)throw Error(`CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.`)}if(e.unref!==!0&&e.unref!==!1)throw Error(`CronOptions: Unref should be either true, false or undefined(false).`);return e}function Q(e){return Object.prototype.toString.call(e)===`[object Function]`||typeof e==`function`||e instanceof Function}function Nt(e){return Q(e)}function Pt(e){typeof Deno<`u`&&typeof Deno.unrefTimer<`u`?Deno.unrefTimer(e):e&&typeof e.unref<`u`&&e.unref()}var Ft=30*1e3,It=[],Lt=class{name;options;_states;fn;constructor(e,t,n){let r,i;if(Q(t))i=t;else if(typeof t==`object`)r=t;else if(t!==void 0)throw Error(`Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).`);if(Q(n))i=n;else if(typeof n==`object`)r=n;else if(n!==void 0)throw Error(`Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).`);if(this.name=r?.name,this.options=Mt(r),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:r?r.maxRuns:void 0,paused:r?r.paused:!1,pattern:new At(`* * * * *`)},e&&(e instanceof Date||typeof e==`string`&&e.indexOf(`:`)>0)?this._states.once=new Z(e,this.options.timezone||this.options.utcOffset):this._states.pattern=new At(e,this.options.timezone),this.name){if(It.find(e=>e.name===this.name))throw Error(`Cron: Tried to initialize new named job '`+this.name+`', but name already taken.`);It.push(this)}return i!==void 0&&Nt(i)&&(this.fn=i,this.schedule()),this}nextRun(e){let t=this._next(e);return t?t.getDate(!1):null}nextRuns(e,t){this._states.maxRuns!==void 0&&e>this._states.maxRuns&&(e=this._states.maxRuns);let n=[],r=t||this._states.currentRun||void 0;for(;e--&&(r=this.nextRun(r));)n.push(r);return n}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let e=this.nextRun(this._states.currentRun),t=!this._states.paused,n=this.fn!==void 0,r=!this._states.kill;return t&&n&&r&&e!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(e){let t=this._next(e);return t?e instanceof Z||e instanceof Date?t.getTime()-e.getTime():t.getTime()-new Z(e).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let e=It.indexOf(this);e>=0&&It.splice(e,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(e){if(e&&this.fn)throw Error(`Cron: It is not allowed to schedule two functions using the same Croner instance.`);e&&(this.fn=e);let t=this.msToNext(),n=this.nextRun(this._states.currentRun);return t==null||isNaN(t)||n===null?this:(t>Ft&&(t=Ft),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(n),t),this._states.currentTimeout&&this.options.unref&&Pt(this._states.currentTimeout),this)}async _trigger(e){if(this._states.blocking=!0,this._states.currentRun=new Z(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(e){Q(this.options.catch)&&this.options.catch(e,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new Z(e,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(e){let t=new Date,n=!this._states.paused&&t.getTime()>=e.getTime(),r=this._states.blocking&&this.options.protect;n&&!r?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):n&&r&&Q(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(e){let t=!!(e||this._states.currentRun),n=!1;!e&&this.options.startAt&&this.options.interval&&([e,t]=this._calculatePreviousRun(e,t),n=!e),e=new Z(e,this.options.timezone||this.options.utcOffset),this.options.startAt&&e&&e.getTime()<this.options.startAt.getTime()&&(e=this.options.startAt);let r=this._states.once||new Z(e,this.options.timezone||this.options.utcOffset);return!n&&r!==this._states.once&&(r=r.increment(this._states.pattern,this.options,t)),this._states.once&&this._states.once.getTime()<=e.getTime()||r===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&r.getTime()>=this.options.stopAt.getTime()?null:r}_calculatePreviousRun(e,t){let n=new Z(void 0,this.options.timezone||this.options.utcOffset),r=e;if(this.options.startAt.getTime()<=n.getTime()){r=this.options.startAt;let e=r.getTime()+this.options.interval*1e3;for(;e<=n.getTime();)r=new Z(r,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),e=r.getTime()+this.options.interval*1e3;t=!0}return r===null&&(r=void 0),[r,t]}},Rt=[`bypassPermissions`,`acceptEdits`,`default`,`plan`];function zt({open:e,schedule:t,onClose:n,onSaved:r}){let i=he(),[a,o]=(0,G.useState)(()=>Bt(t)),[s,c]=(0,G.useState)([]),[l,u]=(0,G.useState)(!1),[d,f]=(0,G.useState)(null);(0,G.useEffect)(()=>{e&&(o(Bt(t)),f(null),I.get(`/api/projects`).then(c).catch(()=>c([])))},[e,t]);let p=(0,G.useMemo)(()=>{try{return new Lt(a.cron_expr).nextRuns(3).map(e=>e.toLocaleString())}catch{return null}},[a.cron_expr]),g=(e,t)=>o(n=>({...n,[e]:t})),v=(0,K.jsxs)(`div`,{className:`space-y-3 px-1`,children:[(0,K.jsx)($,{label:`Name`,children:(0,K.jsx)(H,{value:a.name,onChange:e=>g(`name`,e.target.value),placeholder:`Morning PR review`,className:`h-11 md:h-9 text-xs`})}),(0,K.jsxs)($,{label:`Cron expression (local timezone)`,children:[(0,K.jsx)(H,{value:a.cron_expr,onChange:e=>g(`cron_expr`,e.target.value),placeholder:`0 7 * * *`,className:`h-11 md:h-9 text-xs font-mono`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:p?`Next: ${p.join(` · `)}`:`—`})]}),(0,K.jsx)($,{label:`Project`,children:(0,K.jsxs)(_,{value:a.project_path,onValueChange:e=>g(`project_path`,e),children:[(0,K.jsx)(b,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,K.jsx)(h,{placeholder:`Select project`})}),(0,K.jsx)(m,{children:s.map(e=>(0,K.jsx)(y,{value:e.path,children:e.name},e.path))})]})}),(0,K.jsx)($,{label:`Prompt (do not embed secrets)`,children:(0,K.jsx)(`textarea`,{value:a.prompt,onChange:e=>g(`prompt`,e.target.value),placeholder:`Check open PRs and summarize. If nothing to do, finish immediately.`,rows:4,className:`w-full rounded-md border border-input bg-transparent px-3 py-2 text-xs outline-none focus-visible:ring-2 focus-visible:ring-ring/50 resize-y`})}),(0,K.jsxs)($,{label:`Permission mode`,children:[(0,K.jsxs)(_,{value:a.permission_mode,onValueChange:e=>g(`permission_mode`,e),children:[(0,K.jsx)(b,{className:`w-full min-h-11 md:min-h-9 text-xs`,children:(0,K.jsx)(h,{})}),(0,K.jsx)(m,{children:Rt.map(e=>(0,K.jsx)(y,{value:e,children:e},e))})]}),a.permission_mode===`bypassPermissions`&&(0,K.jsx)(`p`,{className:`text-[11px] text-warning`,children:`⚠ Unattended writes — agent can modify code and run commands`})]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,K.jsx)($,{label:`Max turns (optional)`,children:(0,K.jsx)(H,{type:`number`,min:1,value:a.max_turns,onChange:e=>g(`max_turns`,e.target.value),placeholder:`∞`,className:`h-11 md:h-9 text-xs`})}),(0,K.jsx)($,{label:`Timeout (ms)`,children:(0,K.jsx)(H,{type:`number`,min:1e4,value:a.timeout_ms,onChange:e=>g(`timeout_ms`,e.target.value),className:`h-11 md:h-9 text-xs`})})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between min-h-11`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium`,children:`Enabled`}),(0,K.jsx)(U,{checked:a.enabled,onCheckedChange:e=>g(`enabled`,e)})]}),d&&(0,K.jsx)(`p`,{className:`text-[11px] text-error`,children:d}),(0,K.jsx)(B,{onClick:async()=>{if(!a.name.trim()||!a.project_path||!a.prompt.trim()){f(`Name, project, and prompt are required`);return}if(!p){f(`Invalid cron expression`);return}u(!0),f(null);try{let e={name:a.name.trim(),cron_expr:a.cron_expr,project_path:a.project_path,prompt:a.prompt,permission_mode:a.permission_mode,max_turns:a.max_turns===``?null:Number(a.max_turns),timeout_ms:Number(a.timeout_ms)||18e5,enabled:a.enabled};t?await I.patch(`/api/schedules/${t.id}`,e):await I.post(`/api/schedules`,e),r(),n()}catch(e){f(e instanceof Error?e.message:String(e))}finally{u(!1)}},disabled:l,className:`w-full min-h-11 cursor-pointer`,children:l?`Saving…`:t?`Save changes`:`Create schedule`})]}),x=t?`Edit: ${t.name}`:`New schedule`;return i?(0,K.jsxs)(Ee,{open:e,onClose:n,className:`max-h-[85vh] flex flex-col`,children:[(0,K.jsx)(`p`,{className:`text-sm font-semibold text-center pb-2`,children:x}),(0,K.jsx)(je,{className:`flex-1 min-h-0 px-3 pb-3`,children:v})]}):(0,K.jsx)(we,{open:e,onOpenChange:e=>!e&&n(),children:(0,K.jsxs)(be,{className:`max-w-md max-h-[85vh] overflow-y-auto`,children:[(0,K.jsx)(ve,{children:(0,K.jsx)(xe,{className:`text-sm`,children:x})}),v]})})}function $({label:e,children:t}){return(0,K.jsxs)(`div`,{className:`space-y-1`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-muted-foreground`,children:e}),t]})}function Bt(e){return{name:e?.name??``,cron_expr:e?.cron_expr??`0 7 * * *`,project_path:e?.project_path??``,prompt:e?.prompt??``,permission_mode:e?.permission_mode??`bypassPermissions`,max_turns:e?.max_turns==null?``:String(e.max_turns),timeout_ms:String(e?.timeout_ms??18e5),enabled:e?!!e.enabled:!0}}function Vt(){let{schedules:e,loading:t,refetch:n}=yt(),[r,i]=(0,G.useState)(!1),[a,o]=(0,G.useState)(null),s=()=>{o(null),i(!0)},c=e=>{o(e),i(!0)};return(0,K.jsxs)(`div`,{className:`space-y-3`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Periodically wake Claude to work on a project unattended.`}),(0,K.jsxs)(B,{size:`sm`,onClick:s,className:`min-h-11 md:min-h-8 text-xs gap-1 cursor-pointer shrink-0`,children:[(0,K.jsx)(O,{className:`size-3.5`}),` Add`]})]}),t&&e.length===0?(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground py-4 text-center`,children:`Loading…`}):e.length===0?(0,K.jsxs)(`div`,{className:`flex flex-col items-center gap-2 py-8 text-center`,children:[(0,K.jsx)(He,{className:`size-8 text-muted-foreground/50`}),(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No schedules yet. Add one to run Claude periodically.`}),(0,K.jsxs)(B,{size:`sm`,onClick:s,className:`min-h-11 text-xs gap-1 cursor-pointer`,children:[(0,K.jsx)(O,{className:`size-3.5`}),` Add schedule`]})]}):(0,K.jsx)(`div`,{className:`space-y-2`,children:e.map(e=>(0,K.jsx)(Tt,{schedule:e,onEdit:()=>c(e),onChanged:n},e.id))}),(0,K.jsx)(zt,{open:r,schedule:a,onClose:()=>i(!1),onSaved:n})]})}function Ht({swatch:e,className:t}){return(0,K.jsx)(`span`,{className:z(`inline-flex overflow-hidden rounded-md border border-border shrink-0`,t),"aria-hidden":!0,children:e.map((e,t)=>(0,K.jsx)(`span`,{className:`w-3 h-6`,style:{background:e}},t))})}function Ut({className:e,orientation:t=`horizontal`,...n}){return(0,K.jsx)(i,{"data-slot":`tabs`,"data-orientation":t,orientation:t,className:z(`group/tabs flex gap-2 data-[orientation=horizontal]:flex-col`,e),...n})}var Wt=_e(`group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-9 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none`,{variants:{variant:{default:`bg-muted`,line:`gap-1 bg-transparent`}},defaultVariants:{variant:`default`}});function Gt({className:e,variant:t=`default`,...n}){return(0,K.jsx)(r,{"data-slot":`tabs-list`,"data-variant":t,className:z(Wt({variant:t}),e),...n})}function Kt({className:e,...t}){return(0,K.jsx)(s,{"data-slot":`tabs-trigger`,className:z(`relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground/60 transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,`group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent`,`data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground`,`after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-right-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100`,e),...t})}function qt({className:e,...t}){return(0,K.jsx)(o,{"data-slot":`tabs-content`,className:z(`flex-1 outline-none`,e),...t})}function Jt({open:e,onOpenChange:t}){let n=R(e=>e.importThemeFrom),r=R(e=>e.setCustomTheme),[i,a]=(0,G.useState)(`url`),[o,s]=(0,G.useState)(``),[c,l]=(0,G.useState)(``),[u,d]=(0,G.useState)(``),[f,p]=(0,G.useState)(!1),m=()=>{s(``),l(``),d(``),a(`url`)},h=async()=>{let e=i===`url`?o.trim():c.trim();if(!e){L.error(`Nothing to import`);return}p(!0);try{let a=await n({source:i===`url`?`url`:i===`upload`?`upload`:`json`,value:e,name:u.trim()||void 0});L.success(a.length>1?`Imported ${a.length} themes`:`Imported "${a[0]?.name}"`),a[0]&&r(a[0].id),m(),t(!1)}catch(e){L.error(e.message||`Import failed`)}finally{p(!1)}},g=async e=>{if(e)try{l(await e.text()),d(e.name.replace(/\.json$/i,``))}catch{L.error(`Could not read file`)}};return(0,K.jsx)(we,{open:e,onOpenChange:t,children:(0,K.jsxs)(be,{className:`max-w-md`,children:[(0,K.jsxs)(ve,{children:[(0,K.jsx)(xe,{children:`Import theme`}),(0,K.jsx)(Se,{className:`text-text-3`,children:`Import a VSCode color theme. Single-mode themes apply to both dark and light.`})]}),(0,K.jsxs)(Ut,{value:i,onValueChange:e=>a(e),children:[(0,K.jsxs)(Gt,{className:`w-full`,children:[(0,K.jsx)(Kt,{value:`url`,className:`flex-1`,children:`URL`}),(0,K.jsx)(Kt,{value:`json`,className:`flex-1`,children:`Paste JSON`}),(0,K.jsx)(Kt,{value:`upload`,className:`flex-1`,children:`Upload`})]}),(0,K.jsxs)(qt,{value:`url`,className:`space-y-2 pt-2`,children:[(0,K.jsx)(H,{placeholder:`https://…/theme.json or Marketplace .vsix URL`,value:o,onChange:e=>s(e.target.value)}),(0,K.jsx)(`p`,{className:`text-[11px] text-text-3`,children:`Only https URLs; private/internal addresses are blocked.`})]}),(0,K.jsx)(qt,{value:`json`,className:`pt-2`,children:(0,K.jsx)(`textarea`,{className:`w-full h-40 rounded-md border border-border bg-surface p-2 text-xs font-mono text-text focus:outline-none focus:border-ring`,placeholder:`{ "name": "My Theme", "type": "dark", "colors": { … }, "tokenColors": [ … ] }`,value:c,onChange:e=>l(e.target.value)})}),(0,K.jsxs)(qt,{value:`upload`,className:`space-y-2 pt-2`,children:[(0,K.jsx)(`input`,{type:`file`,accept:`.json,application/json`,onChange:e=>g(e.target.files?.[0]),className:`block w-full text-xs text-text-2 file:mr-3 file:rounded file:border file:border-border file:bg-panel-2 file:px-2 file:py-1 file:text-text`}),c&&(0,K.jsxs)(`p`,{className:`text-[11px] text-success`,children:[`File loaded (`,c.length,` chars)`]})]})]}),(0,K.jsx)(H,{placeholder:`Optional name`,value:u,onChange:e=>d(e.target.value)}),(0,K.jsxs)(ye,{children:[(0,K.jsx)(B,{variant:`outline`,onClick:()=>t(!1),disabled:f,children:`Cancel`}),(0,K.jsx)(B,{onClick:h,disabled:f,children:f?`Importing…`:`Import`})]})]})})}function Yt(){let e=R(e=>e.customThemes),t=R(e=>e.themeStyle),n=R(e=>e.customThemeId),r=R(e=>e.setCustomTheme),i=R(e=>e.deleteCustomTheme),[a,o]=(0,G.useState)(!1);return(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Imported themes`}),(0,K.jsxs)(B,{size:`sm`,variant:`outline`,className:`h-7 gap-1 text-xs`,onClick:()=>o(!0),children:[(0,K.jsx)(O,{className:`size-3.5`}),` Import`]})]}),e.length===0?(0,K.jsx)(`p`,{className:`text-[11px] text-text-3`,children:`No imported themes yet. Import a VSCode theme from a URL, .vsix, or JSON.`}):(0,K.jsx)(`ul`,{className:`space-y-1`,children:e.map(e=>{let a=t===`custom`&&n===e.id;return(0,K.jsxs)(`li`,{className:z(`flex items-center gap-2 rounded-md border px-2 py-1.5`,a?`border-primary bg-primary/10`:`border-border`),children:[(0,K.jsx)(Ht,{swatch:e.swatch}),(0,K.jsxs)(`button`,{className:`flex-1 min-w-0 text-left`,onClick:()=>r(e.id),children:[(0,K.jsx)(`span`,{className:`block truncate text-xs text-text`,children:e.name}),(0,K.jsx)(`span`,{className:`block text-[10px] text-text-3`,children:e.mode})]}),a&&(0,K.jsx)(C,{className:`size-4 text-primary shrink-0`}),(0,K.jsx)(`button`,{className:`text-text-3 hover:text-error transition-colors shrink-0`,title:`Delete`,onClick:()=>void i(e.id),children:(0,K.jsx)(M,{className:`size-3.5`})})]},e.id)})}),(0,K.jsx)(Jt,{open:a,onOpenChange:o})]})}function Xt(e){return e<1024*1024?`${(e/1024).toFixed(0)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function Zt(){let[e,t]=(0,G.useState)(null),[n,r]=(0,G.useState)(``),[i,a]=(0,G.useState)(``),[o,s]=(0,G.useState)(!1),[c,l]=(0,G.useState)(!1);function u(e){t(e),r(String(e.retention_days)),a(String(e.max_size_mb))}(0,G.useEffect)(()=>{Pe().then(u).catch(e=>L.error(`Could not load audit settings`,{description:e.message}))},[]);async function d(){s(!0);try{u(await Me({retention_days:Number(n),max_size_mb:Number(i)})),L.success(`Audit retention updated`)}catch(e){L.error(`Could not save`,{description:e.message})}finally{s(!1)}}async function f(){if(confirm(`Delete every recorded query? This cannot be undone.`)){l(!0);try{await Fe(),u(await Pe()),L.success(`Query audit log cleared`)}catch(e){L.error(`Could not clear the log`,{description:e.message})}finally{l(!1)}}}if(!e)return(0,K.jsx)(`div`,{className:`flex items-center justify-center py-8 text-muted-foreground`,children:(0,K.jsx)(k,{className:`size-4 animate-spin`})});let p=n!==String(e.retention_days)||i!==String(e.max_size_mb);return(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`p`,{className:`text-[11px] text-muted-foreground`,children:[`Every statement run from the SQL editor, the data grid and the `,(0,K.jsx)(`code`,{children:`ppm db`}),` CLI is recorded, together with a sample of the result. Entries are pruned once they pass either limit below — whichever comes first.`]}),(0,K.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,K.jsxs)(`label`,{className:`space-y-1`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium`,children:`Keep for (days)`}),(0,K.jsx)(H,{type:`number`,min:1,value:n,onChange:e=>r(e.target.value),className:`h-8 text-xs`})]}),(0,K.jsxs)(`label`,{className:`space-y-1`,children:[(0,K.jsx)(`span`,{className:`text-xs font-medium`,children:`Max size (MB)`}),(0,K.jsx)(H,{type:`number`,min:10,value:i,onChange:e=>a(e.target.value),className:`h-8 text-xs`})]})]}),(0,K.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,K.jsxs)(`span`,{className:`text-[11px] text-muted-foreground`,children:[e.entry_count.toLocaleString(),` entries · `,Xt(e.size_bytes),` on disk`]}),(0,K.jsx)(B,{size:`sm`,className:`h-8 text-xs`,disabled:!p||o,onClick:d,children:o?(0,K.jsx)(k,{className:`size-3.5 animate-spin`}):`Save`})]}),(0,K.jsxs)(B,{variant:`outline`,size:`sm`,className:`h-8 w-full gap-1.5 text-xs text-destructive`,disabled:c||e.entry_count===0,onClick:f,children:[c?(0,K.jsx)(k,{className:`size-3.5 animate-spin`}):(0,K.jsx)(M,{className:`size-3.5`}),`Clear all recorded queries`]})]})}function Qt(){let e=R(e=>e.themeStyle),t=R(e=>e.themeMode),n=R(e=>e.customThemeId),r=R(e=>e.customThemes),i=R(e=>e.setThemeStyle),a=R(e=>e.setThemeMode),o=ze(e,t,r,n);return(0,K.jsx)(`div`,{className:`grid grid-cols-2 gap-2`,children:Le.map(e=>{let t=Re[e];if(!t)return null;let n=o.id===e;return(0,K.jsxs)(`button`,{onClick:()=>{i(t.style),a(t.mode)},className:z(`relative flex items-center gap-2 rounded-lg border p-2 text-left transition-colors min-h-11`,n?`border-primary ring-[3px] ring-accent-wash`:`border-border hover:bg-accent/40`),children:[(0,K.jsx)(Ht,{swatch:t.swatch}),(0,K.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,K.jsx)(`span`,{className:`block truncate text-xs font-medium text-text`,children:t.name.replace(/ (Dark|Light)$/,``)}),(0,K.jsx)(`span`,{className:`block text-[10px] text-text-3 capitalize`,children:t.mode})]}),n&&(0,K.jsx)(C,{className:`absolute top-1 right-1 size-3.5 text-primary`})]},e)})})}var $t=[{value:`light`,label:`Light`,icon:Ze},{value:`dark`,label:`Dark`,icon:Je},{value:`system`,label:`System`,icon:A}],en=[{value:`default`,label:`Default`},{value:`boxed`,label:`Boxed`},{value:`pill`,label:`Pill`}],tn=[{value:`auto`,label:`Auto`},{value:`windows`,label:`Windows`},{value:`macos`,label:`macOS`}],nn=[{value:`ai`,label:`AI Provider`,subtitle:`Model, execution mode, limits`,icon:d},{value:`notifications`,label:`Notifications`,subtitle:`Push & Telegram alerts`,icon:Be},{value:`clawbot`,label:`PPMBot`,subtitle:`Telegram AI bot`,icon:d},{value:`schedules`,label:`Scheduled Agents`,subtitle:`Run Claude on a cron schedule`,icon:He},{value:`proxy`,label:`API Proxy`,subtitle:`Expose accounts as Anthropic API`,icon:ne},{value:`shortcuts`,label:`Keyboard Shortcuts`,subtitle:`Customize key bindings`,icon:qe},{value:`extensions`,label:`Extensions`,subtitle:`Install and manage extensions`,icon:W},{value:`files`,label:`File Filters`,subtitle:`Exclude patterns, ignore files`,icon:Ke},{value:`queryAudit`,label:`Query Audit Log`,subtitle:`SQL history retention and size`,icon:We}];function rn(){let{theme:e,setTheme:t,deviceName:n,setDeviceName:r,version:i,jiraEnabled:a,setJiraEnabled:o,tabWrap:s,toggleTabWrap:c,editorTabStyle:u,setEditorTabStyle:d,explorerSkin:f,setExplorerSkin:p}=R(Te(e=>({theme:e.themeMode,setTheme:e.setThemeMode,deviceName:e.deviceName,setDeviceName:e.setDeviceName,version:e.version,jiraEnabled:e.jiraEnabled,setJiraEnabled:e.setJiraEnabled,tabWrap:e.tabWrap,toggleTabWrap:e.toggleTabWrap,editorTabStyle:e.editorTabStyle,setEditorTabStyle:e.setEditorTabStyle,explorerSkin:e.explorerSkin,setExplorerSkin:e.setExplorerSkin}))),[m,h]=(0,G.useState)(null),[_,v]=(0,G.useState)(n??``),[y,b]=(0,G.useState)(!1),[S,w]=(0,G.useState)(!1),ee=(0,G.useRef)(void 0),E=_.trim()!==(n??``),D=(0,G.useCallback)(async()=>{if(E){b(!0);try{await r(_),w(!0),clearTimeout(ee.current),ee.current=setTimeout(()=>w(!1),2e3)}finally{b(!1)}}},[_,E,r]);if(m){let e=nn.find(e=>e.value===m),t=e.icon;return(0,K.jsxs)(`div`,{className:`h-full w-full flex flex-col`,children:[(0,K.jsxs)(`div`,{className:`shrink-0 px-2 pt-3 pb-1 flex items-center gap-1`,children:[(0,K.jsx)(B,{variant:`ghost`,size:`icon`,className:`size-8 cursor-pointer shrink-0`,onClick:()=>h(null),children:(0,K.jsx)(l,{className:`size-4`})}),(0,K.jsx)(t,{className:`size-4 text-muted-foreground shrink-0`}),(0,K.jsx)(`h2`,{className:`text-sm font-semibold truncate`,children:e.label})]}),(0,K.jsx)(q,{}),(0,K.jsx)(je,{className:`flex-1 min-h-0`,children:(0,K.jsxs)(`div`,{className:`p-3`,children:[m===`ai`&&(0,K.jsx)(x,{compact:!0}),m===`notifications`&&(0,K.jsx)(an,{}),m===`clawbot`&&(0,K.jsx)(lt,{}),m===`schedules`&&(0,K.jsx)(Vt,{}),m===`proxy`&&(0,K.jsx)(st,{}),m===`shortcuts`&&(0,K.jsx)(tt,{}),m===`extensions`&&(0,K.jsx)(ct,{}),m===`files`&&(0,K.jsx)(_t,{}),m===`queryAudit`&&(0,K.jsx)(Zt,{})]})})]})}return(0,K.jsxs)(`div`,{className:`h-full w-full flex flex-col`,children:[(0,K.jsx)(`div`,{className:`shrink-0 px-3 pt-3 pb-1`,children:(0,K.jsx)(`h2`,{className:`text-sm font-semibold`,children:`Settings`})}),(0,K.jsx)(je,{className:`flex-1 min-h-0`,children:(0,K.jsxs)(`div`,{className:`p-3 space-y-4`,children:[(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Device Name`}),(0,K.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,K.jsx)(H,{value:_,onChange:e=>v(e.target.value),onKeyDown:e=>{e.key===`Enter`&&D()},placeholder:`My Device`,className:`h-8 text-xs flex-1`,maxLength:100}),(0,K.jsx)(B,{variant:S?`default`:`outline`,size:`sm`,className:`h-8 text-xs px-3 cursor-pointer`,disabled:!E||y,onClick:D,children:y?`...`:S?(0,K.jsx)(C,{className:`size-3.5`}):`Save`})]}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Shown in page title and synced to PPM Cloud.`})]}),(0,K.jsx)(ut,{}),(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Theme`}),(0,K.jsx)(Qt,{}),(0,K.jsx)(`div`,{className:`flex gap-1.5 pt-1`,children:$t.map(n=>{let r=n.icon;return(0,K.jsxs)(B,{variant:e===n.value?`default`:`outline`,size:`sm`,onClick:()=>t(n.value),className:z(`flex-1 gap-1.5 text-xs h-8 cursor-pointer`,e===n.value&&`ring-2 ring-primary`),children:[(0,K.jsx)(r,{className:`size-3.5`}),n.label]},n.value)})})]}),(0,K.jsx)(Yt,{}),(0,K.jsx)(`section`,{className:`space-y-1`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(g,{className:`size-4 text-muted-foreground`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Jira Watcher`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Auto-debug Jira tickets`})]})]}),(0,K.jsx)(U,{checked:a,onCheckedChange:o})]})}),(0,K.jsx)(`section`,{className:`space-y-1`,children:(0,K.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,K.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,K.jsx)(se,{className:`size-4 text-muted-foreground`}),(0,K.jsxs)(`div`,{children:[(0,K.jsx)(`p`,{className:`text-xs font-medium`,children:`Wrap Tabs`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Stack tabs in rows instead of scrolling`})]})]}),(0,K.jsx)(U,{checked:s,onCheckedChange:c})]})}),(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Tab Style`}),(0,K.jsx)(`div`,{className:`flex gap-1.5`,children:en.map(e=>(0,K.jsx)(B,{variant:u===e.value?`default`:`outline`,size:`sm`,onClick:()=>d(e.value),className:z(`flex-1 text-xs h-8 cursor-pointer`,u===e.value&&`ring-2 ring-primary`),children:e.label},e.value))})]}),(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Explorer Skin`}),(0,K.jsx)(`div`,{className:`flex gap-1.5`,children:tn.map(e=>(0,K.jsx)(B,{variant:f===e.value?`default`:`outline`,size:`sm`,onClick:()=>p(e.value),className:z(`flex-1 text-xs h-8 cursor-pointer`,f===e.value&&`ring-2 ring-primary`),children:e.label},e.value))})]}),(0,K.jsx)(q,{}),(0,K.jsx)(`nav`,{className:`space-y-1`,"aria-label":`Settings categories`,children:nn.map(e=>{let t=e.icon;return(0,K.jsxs)(`button`,{onClick:()=>h(e.value),className:`w-full flex items-center gap-3 px-2.5 py-2.5 rounded-lg hover:bg-accent/50 active:bg-accent transition-colors cursor-pointer text-left group`,children:[(0,K.jsx)(`div`,{className:`size-8 rounded-md bg-muted flex items-center justify-center shrink-0 group-hover:bg-accent`,children:(0,K.jsx)(t,{className:`size-4 text-muted-foreground`})}),(0,K.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,K.jsx)(`p`,{className:`text-xs font-medium text-foreground truncate`,children:e.label}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground truncate`,children:e.subtitle})]}),(0,K.jsx)(T,{className:`size-4 text-muted-foreground shrink-0`})]},e.value)})}),(0,K.jsx)(q,{}),(0,K.jsxs)(`section`,{className:`space-y-1 pb-2`,children:[(0,K.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`PPM — Personal Project Manager`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`A mobile-first web IDE for managing your projects.`}),i&&(0,K.jsxs)(`p`,{className:`text-[11px] text-muted-foreground tabular-nums`,children:[`Version `,i]})]})]})})]})}function an(){return(0,K.jsxs)(`div`,{className:`space-y-4`,children:[(0,K.jsxs)(`section`,{className:`space-y-2`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Push Notifications`}),(0,K.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,K.jsx)(Ve,{className:`size-3.5 text-muted-foreground`}),(0,K.jsx)(`span`,{className:`text-xs`,children:`Not available yet`})]}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Browser push does not deliver right now. Use Telegram below to get alerted when a session finishes or needs approval.`})]}),(0,K.jsx)(q,{}),(0,K.jsxs)(`section`,{className:`space-y-1`,children:[(0,K.jsx)(`h3`,{className:`text-xs font-medium text-muted-foreground`,children:`Telegram`}),(0,K.jsx)(`p`,{className:`text-[11px] text-muted-foreground`,children:`Telegram notifications are sent to all approved devices in PPMBot settings. Configure your bot token and pair devices there.`})]})]})}export{Ue as a,W as i,$t as n,Ve as o,Ht as r,rn as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as e}from"./settings-tab-BePvIcjd.js";import"./ai-settings-section-CdktdrwF.js";import"./context-menu-BO1c9jKy.js";import"./api-client-oY1tC3tM.js";import"./vendor-mermaid-CHTa6D69.js";import"./settings-store-GV5pkkke.js";import"./portal-container-context-a399Hd9F.js";import"./project-store-BuY7rxn_.js";import"./file-store-yReVbR8q.js";import"./keybindings-store-0Wqfa7Qp.js";import"./extension-store-DUaZINyC.js";import"./use-is-mobile-DFWViA4S.js";import"./button-2WCAS8dI.js";import"./dialog-B-l2ZxVm.js";import"./mobile-bottom-sheet-M5iZDX7y.js";import"./adaptive-context-menu-CbgPYQmj.js";import"./input-DuAF-Stj.js";import"./scroll-area-DBcG1fQo.js";import"./switch-_NcrktLe.js";import"./api-settings-BdCtex9i.js";export{e as SettingsTab};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/overview-panel-s53bnl0q.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-markdown-Ls5AcU91.js","assets/utils-C9OjCrou.js","assets/format-bytes-utwHMTry.js","assets/process-table-BYwKigiD.js","assets/index-CBn4SOoT.js","assets/vendor-mermaid-CHTa6D69.js","assets/vendor-ui-CaeeFO0B.js","assets/button-2WCAS8dI.js","assets/settings-tab-BePvIcjd.js","assets/createLucideIcon-D8pyde1A.js","assets/eye-off-CUdzgmX8.js","assets/bot-D6sx11y0.js","assets/pencil-BlIIg6RH.js","assets/ai-settings-section-CdktdrwF.js","assets/context-menu-BO1c9jKy.js","assets/chevron-right-De-Wz5Lz.js","assets/circle-BCy0AUCo.js","assets/portal-container-context-a399Hd9F.js","assets/chevron-down-Dp0rpHb8.js","assets/upload-BNlX8D07.js","assets/download-DG3_9xXy.js","assets/external-link-B6Hl0U4X.js","assets/loader-circle-Dpqcv0eS.js","assets/refresh-cw-B9iv7csb.js","assets/trash-2-CTXlTflF.js","assets/api-client-oY1tC3tM.js","assets/input-DuAF-Stj.js","assets/switch-_NcrktLe.js","assets/api-settings-BdCtex9i.js","assets/clock-C1CQUQPZ.js","assets/copy-BewHj66E.js","assets/plus-BR0qewJI.js","assets/folder-symlink-Dx1hOk8X.js","assets/send-B-t5Mz26.js","assets/lock-DldbT31x.js","assets/monitor-4vWfqzuN.js","assets/play-CpCAoQRZ.js","assets/rotate-ccw-DnuPzJRE.js","assets/text-wrap-B05VGRa-.js","assets/triangle-alert-BRq0VAfd.js","assets/x-YDu4m2Iq.js","assets/shallow-jwPzEunk.js","assets/file-store-yReVbR8q.js","assets/react-X4jUntEf.js","assets/adaptive-context-menu-CbgPYQmj.js","assets/mobile-bottom-sheet-M5iZDX7y.js","assets/use-is-mobile-DFWViA4S.js","assets/dialog-B-l2ZxVm.js","assets/scroll-area-DBcG1fQo.js","assets/clipboard-BWznymz7.js","assets/project-store-BuY7rxn_.js","assets/extension-store-DUaZINyC.js","assets/keybindings-store-0Wqfa7Qp.js","assets/settings-store-GV5pkkke.js","assets/resolve-theme-DLKmm-lE.js","assets/sparkles-Dh-_J2Rd.js","assets/database-Y3ESDK4-.js","assets/use-coarse-long-press-BmI_GVW5.js","assets/window-store-CQ1lghvv.js","assets/panel-store-B4rijFKN.js","assets/tab-store-tFnyPmm4.js","assets/apply-theme-B_bMVL6a.js","assets/index-DWpNR3nB.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import{t as r}from"./createLucideIcon-D8pyde1A.js";import{q as i}from"./vendor-mermaid-CHTa6D69.js";import{n as a}from"./utils-C9OjCrou.js";import{Bt as o,g as s}from"./index-CBn4SOoT.js";var c=r(`wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]),l=e(t(),1),u=n(),d=(0,l.lazy)(()=>i(()=>import(`./overview-panel-s53bnl0q.js`).then(e=>({default:e.OverviewPanel})),__vite__mapDeps([0,1,2,3,4]))),f=(0,l.lazy)(()=>i(()=>import(`./process-table-BYwKigiD.js`).then(e=>({default:e.ProcessTable})),__vite__mapDeps([5,1,6,7,8,2,9,3,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,4])));function p({isConnected:e,elapsed:t,tickCount:n}){return(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-text-subtle`,"data-testid":`sysmon-connection`,"data-tick-count":n,children:[e?(0,u.jsx)(c,{className:`size-3 text-success`}):(0,u.jsx)(o,{className:`size-3 text-error`}),(0,u.jsx)(`span`,{children:e?`Updated ${t}s ago`:`Disconnected`})]})}var m=(0,l.memo)(function({initialTab:e=`overview`,onTabChange:t,variant:n=`tab`}){let{latest:r,history:i,isConnected:o,tickCount:c}=s({processes:!0}),[m,h]=(0,l.useState)(e),g=e=>{h(e),t?.(e)},_=r?Math.round((Date.now()-r.ts)/1e3):0,v=r?.warnings??[];return(0,u.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,"data-testid":`system-monitor-window`,children:[n===`tab`&&(0,u.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,u.jsx)(`h2`,{className:`text-sm font-medium`,children:`System Monitor`}),(0,u.jsx)(p,{isConnected:o,elapsed:_,tickCount:c})]}),v.length>0&&(0,u.jsx)(`div`,{className:`px-3 py-1.5 text-[11px] text-warning bg-warning/10 border-b border-border shrink-0 space-y-0.5`,"data-testid":`sysmon-warnings`,children:v.map((e,t)=>(0,u.jsx)(`div`,{children:e},t))}),(0,u.jsxs)(`div`,{className:`flex items-center border-b border-border shrink-0`,role:`tablist`,children:[(0,u.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`overview`,"data-testid":`sysmon-tab-overview`,onClick:()=>g(`overview`),className:a(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`overview`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Overview`}),(0,u.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":m===`processes`,"data-testid":`sysmon-tab-processes`,onClick:()=>g(`processes`),className:a(`flex-1 md:flex-none min-h-11 px-4 text-sm font-medium transition-colors`,m===`processes`?`text-text-primary border-b-2 border-primary -mb-px`:`text-text-subtle hover:text-text-secondary`),children:`Processes`}),n===`window`&&(0,u.jsx)(`div`,{className:`ml-auto pr-3`,children:(0,u.jsx)(p,{isConnected:o,elapsed:_,tickCount:c})})]}),(0,u.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto`,children:(0,u.jsx)(l.Suspense,{fallback:(0,u.jsx)(`div`,{className:`p-4 text-xs text-text-subtle`,children:`Loading…`}),children:r?m===`overview`?(0,u.jsx)(d,{system:r.system,history:i}):(0,u.jsx)(f,{snapshot:r}):(0,u.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-subtle text-sm p-4`,children:o?`Waiting for data…`:`Connecting to resource monitor…`})})})]})});export{m as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{x as e}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t}from"./system-monitor-body-D8Z5QXBB.js";import"./api-client-oY1tC3tM.js";import"./vendor-mermaid-CHTa6D69.js";var n=e(),r=()=>(0,n.jsx)(t,{});export{r as SystemMonitorTab};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./vendor-mermaid-CHTa6D69.js";import"./portal-container-context-a399Hd9F.js";import{f as r,t as i}from"./panel-store-B4rijFKN.js";import"./window-store-CQ1lghvv.js";import"./use-is-mobile-DFWViA4S.js";import{Ct as a}from"./index-CBn4SOoT.js";var o=e(t(),1),s=n();function c({id:e,payload:t}){let n=r(e),c=(i(e=>e.panels[n])?.tabs.length??0)>0,l=(0,o.useRef)(!1);c&&(l.current=!0);let u=typeof t?.originPanelId==`string`?t.originPanelId:null,d=(0,o.useRef)(u);d.current=u;let f=(0,o.useCallback)(e=>a(n,e),[n]),p=(0,o.useRef)(null);return(0,o.useLayoutEffect)(()=>(p.current=null,()=>{let t={};p.current=t,queueMicrotask(()=>{p.current===t&&(p.current=null,i.getState().redockFromWindow(e,d.current))})}),[e]),(0,s.jsxs)(`div`,{className:`relative h-full w-full`,children:[(0,s.jsx)(`div`,{ref:f,className:`absolute inset-0`}),!c&&!l.current&&(0,s.jsx)(`div`,{className:`absolute inset-0 flex items-center justify-center text-xs text-text-2 pointer-events-none`,children:`Loading…`})]})}export{c as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/team-member-window-content-B1jkKkDi.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-mermaid-CHTa6D69.js","assets/vendor-ui-CaeeFO0B.js","assets/vendor-markdown-Ls5AcU91.js","assets/utils-C9OjCrou.js","assets/tool-cards-jB7GT-wj.js","assets/index-CBn4SOoT.js","assets/button-2WCAS8dI.js","assets/settings-tab-BePvIcjd.js","assets/createLucideIcon-D8pyde1A.js","assets/eye-off-CUdzgmX8.js","assets/bot-D6sx11y0.js","assets/pencil-BlIIg6RH.js","assets/ai-settings-section-CdktdrwF.js","assets/context-menu-BO1c9jKy.js","assets/chevron-right-De-Wz5Lz.js","assets/circle-BCy0AUCo.js","assets/portal-container-context-a399Hd9F.js","assets/chevron-down-Dp0rpHb8.js","assets/upload-BNlX8D07.js","assets/download-DG3_9xXy.js","assets/external-link-B6Hl0U4X.js","assets/loader-circle-Dpqcv0eS.js","assets/refresh-cw-B9iv7csb.js","assets/trash-2-CTXlTflF.js","assets/api-client-oY1tC3tM.js","assets/input-DuAF-Stj.js","assets/switch-_NcrktLe.js","assets/api-settings-BdCtex9i.js","assets/clock-C1CQUQPZ.js","assets/copy-BewHj66E.js","assets/plus-BR0qewJI.js","assets/folder-symlink-Dx1hOk8X.js","assets/send-B-t5Mz26.js","assets/lock-DldbT31x.js","assets/monitor-4vWfqzuN.js","assets/play-CpCAoQRZ.js","assets/rotate-ccw-DnuPzJRE.js","assets/text-wrap-B05VGRa-.js","assets/triangle-alert-BRq0VAfd.js","assets/x-YDu4m2Iq.js","assets/shallow-jwPzEunk.js","assets/file-store-yReVbR8q.js","assets/react-X4jUntEf.js","assets/adaptive-context-menu-CbgPYQmj.js","assets/mobile-bottom-sheet-M5iZDX7y.js","assets/use-is-mobile-DFWViA4S.js","assets/dialog-B-l2ZxVm.js","assets/scroll-area-DBcG1fQo.js","assets/clipboard-BWznymz7.js","assets/project-store-BuY7rxn_.js","assets/extension-store-DUaZINyC.js","assets/keybindings-store-0Wqfa7Qp.js","assets/settings-store-GV5pkkke.js","assets/resolve-theme-DLKmm-lE.js","assets/sparkles-Dh-_J2Rd.js","assets/database-Y3ESDK4-.js","assets/use-coarse-long-press-BmI_GVW5.js","assets/window-store-CQ1lghvv.js","assets/panel-store-B4rijFKN.js","assets/tab-store-tFnyPmm4.js","assets/apply-theme-B_bMVL6a.js","assets/index-DWpNR3nB.css","assets/circle-question-mark-CzR7YRc-.js","assets/code-DJgYrFzm.js","assets/use-blob-url-DcRcjNTE.js","assets/image-gallery-5IURd6db.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./x-YDu4m2Iq.js";import{q as i}from"./vendor-mermaid-CHTa6D69.js";import"./portal-container-context-a399Hd9F.js";import"./window-store-CQ1lghvv.js";import"./use-is-mobile-DFWViA4S.js";import{t as a}from"./mobile-bottom-sheet-M5iZDX7y.js";import{n as o}from"./use-open-team-member-1hRsHLKg.js";var s=e(t(),1),c=n(),l=(0,s.lazy)(()=>i(()=>import(`./team-member-window-content-B1jkKkDi.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67])));function u(){let e=o(e=>e.payload),t=o(e=>e.close);return e?(0,c.jsxs)(a,{open:!0,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,c.jsxs)(`span`,{className:`truncate text-sm font-medium text-text-primary`,children:[`Session — `,e.memberName]}),(0,c.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto flex size-11 items-center justify-center rounded text-text-secondary hover:text-text-primary`,"aria-label":`Close`,children:(0,c.jsx)(r,{className:`size-5`})})]}),(0,c.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,c.jsx)(s.Suspense,{fallback:(0,c.jsx)(`div`,{className:`p-4 text-sm text-text-2`,children:`Loading…`}),children:(0,c.jsx)(l,{id:`sheet-${e.memberName}`,payload:e})})})]}):null}export{u as TeamMemberSheet};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as e}from"./vendor-mermaid-CHTa6D69.js";export{e as createTreemapServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t}from"./vendor-markdown-Ls5AcU91.js";import{t as n}from"./settings-store-GV5pkkke.js";import{t as r}from"./resolve-theme-DLKmm-lE.js";import{r as i,t as a}from"./apply-theme-B_bMVL6a.js";import{o}from"./index-CBn4SOoT.js";var s=e(t(),1);function c(){let e=n(e=>e.themeStyle),t=n(e=>e.themeMode),c=n(e=>e.customThemeId),l=n(e=>e.customThemes),u=()=>o(i()??r(e,t,l,c)),[d,f]=(0,s.useState)(u);return(0,s.useEffect)(()=>{f(u());let e=()=>f(u());return window.addEventListener(a,e),()=>window.removeEventListener(a,e)},[e,t,c,l]),d}export{c as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./react-X4jUntEf.js";var t=[`n`,`s`,`e`,`w`,`ne`,`nw`,`se`,`sw`],n={w:360,h:240},r={w:880,h:560},i=48,a=(e,t,n)=>Math.min(n,Math.max(t,e));function o(e){return 30+a(Math.trunc(e),0,8)}function s(e,t){let r=Math.max(n.w,Math.min(e.w,Math.max(t.w,n.w))),i=Math.max(n.h,Math.min(e.h,Math.max(t.h,n.h))),o=a(e.x,48-r,Math.max(48-r,t.w-48)),s=a(e.y,0,Math.max(0,t.h-48));return{x:Math.round(o),y:Math.round(s),w:Math.round(r),h:Math.round(i)}}function c(e,t,r,i,a=n){let{x:o,y:s,w:c,h:l}=e;if(t.includes(`e`))c=Math.max(a.w,e.w+r);else if(t.includes(`w`)){let t=e.x+e.w;c=Math.max(a.w,e.w-r),o=t-c}if(t.includes(`s`))l=Math.max(a.h,e.h+i);else if(t.includes(`n`)){let t=e.y+e.h;l=Math.max(a.h,e.h-i),s=t-l}return{x:o,y:s,w:c,h:l}}function l(e,t){let a=Math.min(r.w,Math.max(n.w,t.w-i*2)),o=Math.min(r.h,Math.max(n.h,t.h-i*2)),c=e.length%8;return s({x:i+c*24,y:i+c*24,w:a,h:o},t)}function u(e,t,n,r){return s({...e,x:e.x+t,y:e.y+n},r)}var d=[`explorer`,`team-member`,`system-monitor`,`tab-host`],f=`ppm-windows`,p=d.filter(e=>e!==`team-member`),m=[`normal`,`maximized`,`minimized`];function h(e){if(!e||typeof e!=`object`)return!1;let t=e;return[`x`,`y`,`w`,`h`].every(e=>typeof t[e]==`number`&&Number.isFinite(t[e]))}function g(e){if(e===void 0)return!0;if(!e||typeof e!=`object`||Array.isArray(e))return!1;try{return JSON.stringify(e),!0}catch{return!1}}function _(e){return g(e.payload)?{id:e.id,kind:e.kind,rect:e.rect,state:e.state,payload:e.payload}:null}function v(e){try{let t=[...e].sort((e,t)=>e.rank-t.rank).map(_).filter(e=>e!==null);t.length===0?localStorage.removeItem(f):localStorage.setItem(f,JSON.stringify(t))}catch{}}function y(e){let t=null;try{t=localStorage.getItem(f)}catch{return[]}if(!t)return[];let n;try{n=JSON.parse(t)}catch{return[]}if(!Array.isArray(n))return[];let r=[];for(let t of n){if(!t||typeof t!=`object`)continue;let n=t;if(typeof n.id!=`string`||!p.includes(n.kind)||!h(n.rect)||!g(n.payload))continue;let i=m.includes(n.state)?n.state:`normal`;r.push({id:n.id,kind:n.kind,rect:s(n.rect,e),state:i,payload:n.payload})}return r}var b={w:1280,h:800},x=e=>Object.values(e).sort((e,t)=>e.rank-t.rank);function S(e){let t={};return e.forEach((e,n)=>{t[e.id]=e.rank===n?e:{...e,rank:n}}),t}function C(e){v(Object.values(e))}function w(){return`win-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}var T=e((e,t)=>({windows:{},bounds:b,restored:!1,open:(n,r,i)=>{let{windows:a,bounds:o}=t(),c=x(a);if(c.length>=8){let e=c[0];return t().focus(e.id),e.id}let u=w(),d=i?s(i,o):l(c.map(e=>e.rect),o),f=S([...c,{id:u,kind:n,rect:d,rank:c.length,state:`normal`,payload:r}]);return e({windows:f}),C(f),u},close:n=>{let{windows:r}=t();if(!r[n])return;let i=S(x(r).filter(e=>e.id!==n));e({windows:i}),C(i)},focus:n=>{let{windows:r}=t(),i=r[n];if(!i)return;let a=x(r);if(a[a.length-1]?.id===n)return;let o=S([...a.filter(e=>e.id!==n),i]);e({windows:o}),C(o)},move:(n,r)=>{let{windows:i,bounds:a}=t(),o=i[n];if(!o)return;let c=s({...o.rect,...r},a),l={...i,[n]:{...o,rect:c}};e({windows:l}),C(l)},resize:(n,r)=>{let{windows:i,bounds:a}=t(),o=i[n];if(!o)return;let c={...i,[n]:{...o,rect:s(r,a)}};e({windows:c}),C(c)},setState:(n,r)=>{let{windows:i}=t(),a=i[n];if(!a||a.state===r)return;let o={...i,[n]:{...a,state:r}};e({windows:o}),C(o)},setPayload:(n,r)=>{let{windows:i}=t(),a=i[n];if(!a)return;let o={...a.payload,...r};if(Object.entries(o).every(([e,t])=>a.payload?.[e]===t)&&Object.keys(o).length===Object.keys(a.payload??{}).length)return;let s={...i,[n]:{...a,payload:o}};e({windows:s}),C(s)},setBounds:n=>{let r=t();if(r.bounds.w===n.w&&r.bounds.h===n.h)return;let i={};for(let e of Object.values(r.windows)){let t=s(e.rect,n);i[e.id]=t.x===e.rect.x&&t.y===e.rect.y&&t.w===e.rect.w&&t.h===e.rect.h?e:{...e,rect:t}}e({bounds:n,windows:i})},restoreAll:n=>{t().restored||e({bounds:n,windows:S(y(n).slice(0,8).map((e,t)=>({id:e.id,kind:e.kind,rect:e.rect,rank:t,state:e.state,payload:e.payload}))),restored:!0})}}));function E(e){return x(e)}export{s as a,c as i,E as n,u as o,t as r,o as s,T as t};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/web/assets/{catppuccin-macchiato-FYGkfsJ5.js → catppuccin-macchiato-Btx8c17W.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/web/assets/{github-dark-default-CNUYo_kp.js → github-dark-default-CMNi7dQX.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/web/assets/{github-light-default-GAEgq1eA.js → github-light-default-ceQrtdXg.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/web/assets/{gruvbox-dark-medium-DYwkDSZ6.js → gruvbox-dark-medium-BWcWXDBB.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/web/assets/{gruvbox-light-medium-CaqqjeGJ.js → gruvbox-light-medium-tiR9t7gr.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|