@hienlh/ppm 0.18.2 → 0.18.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/CLAUDE.md +1 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/http-api.md +6 -1
- package/dist/web/assets/{ai-resource-editor-B6CODu6u.js → ai-resource-editor-Bb-NNlp1.js} +1 -1
- package/dist/web/assets/{angular-html-C-Kjr43S.js → angular-html-jfMqUuRd.js} +1 -1
- package/dist/web/assets/{angular-ts-CaDDbZqm.js → angular-ts-wytn9PMm.js} +1 -1
- package/dist/web/assets/api-client-CzABTreM.js +1 -0
- package/dist/web/assets/{api-settings-CAhcNpj5.js → api-settings-DfNRPr1q.js} +1 -1
- package/dist/web/assets/api-settings-DlcoR5QT.js +1 -0
- package/dist/web/assets/{api-themes-CAjg_Bt9.js → api-themes-CEyYK7AK.js} +1 -1
- package/dist/web/assets/{apl-B1WsQFAb.js → apl-i-ahKx6O.js} +1 -1
- package/dist/web/assets/architecture-PBZL5I3N-Bs7wzj-W.js +1 -0
- package/dist/web/assets/arrow-right-DubGFkN8.js +1 -0
- package/dist/web/assets/{astro-Bdnz7nVp.js → astro-DVBCJfG6.js} +1 -1
- package/dist/web/assets/audio-preview-DG2Tw0cO.js +1 -0
- package/dist/web/assets/{blade-B2euh8sS.js → blade-BHlL8SqU.js} +1 -1
- package/dist/web/assets/{bsl-GNeMaxd0.js → bsl-D-UOfR1F.js} +1 -1
- package/dist/web/assets/button-B4MWPjWj.js +1 -0
- package/dist/web/assets/{cairo-D7G0W7-s.js → cairo-Bn6rucli.js} +1 -1
- package/dist/web/assets/chat-tab-CgAv-crh.js +15 -0
- package/dist/web/assets/{cobol-Q6YgysnI.js → cobol-Byn9FYKu.js} +1 -1
- package/dist/web/assets/code-editor-bX4jlgMy.js +10 -0
- package/dist/web/assets/{coffee-BjufWxVc.js → coffee-DjBl4gm-.js} +1 -1
- package/dist/web/assets/{conflict-editor-DnSltcyC.js → conflict-editor-B6hVffX3.js} +3 -3
- package/dist/web/assets/{context-menu-q-RHHAWz.js → context-menu-DkQdt6YA.js} +1 -1
- package/dist/web/assets/{cpp-CqWU0gCR.js → cpp-CKzic-3E.js} +1 -1
- package/dist/web/assets/{crystal-ylayVajF.js → crystal-Bkg-Ly_g.js} +1 -1
- package/dist/web/assets/{csv-preview-DnaFdgOB.js → csv-preview-hL4Z9HS5.js} +1 -1
- package/dist/web/assets/{data-grid-overlay-editor-BzPfsCfd.js → data-grid-overlay-editor-B1mTl3KS.js} +1 -1
- package/dist/web/assets/{database-viewer-C7uLy8Z1.js → database-viewer-CTK5kMaA.js} +1 -1
- package/dist/web/assets/diff-viewer-DZxnANY4.js +4 -0
- package/dist/web/assets/{docx-preview-Dd2nTW2v.js → docx-preview-CrAc7Qjv.js} +1 -1
- package/dist/web/assets/download-D9UYwY0-.js +1 -0
- package/dist/web/assets/{edge-DX4NxQfh.js → edge-DVbZnd3Y.js} +1 -1
- package/dist/web/assets/{edit-diff-preview-DfX-9om9.js → edit-diff-preview-HTZPC9VP.js} +1 -1
- package/dist/web/assets/{elixir-CSh3NjbV.js → elixir-Dwi8Wu7W.js} +1 -1
- package/dist/web/assets/{elm-DBzwFYq9.js → elm-DtIv-HXJ.js} +1 -1
- package/dist/web/assets/{erb-yxVOb8aB.js → erb-D3HEDz1x.js} +1 -1
- package/dist/web/assets/{erlang-5XIDkYrM.js → erlang-2MjTCzGz.js} +1 -1
- package/dist/web/assets/{esm-DO4el2OJ.js → esm-CZ8B8Ba2.js} +1 -1
- package/dist/web/assets/explorer-body-DykJXCTw.js +2 -0
- package/dist/web/assets/explorer-window-content-NS8Y0v8c.js +1 -0
- package/dist/web/assets/{extension-webview-Dk_zyoXZ.js → extension-webview-D6eywKPN.js} +1 -1
- package/dist/web/assets/{fortran-fixed-form-D4tE5VWY.js → fortran-fixed-form-BLyAtyPM.js} +1 -1
- package/dist/web/assets/{fsharp-By8soj6-.js → fsharp-Bxbn_gbr.js} +1 -1
- package/dist/web/assets/{gdresource-DoSwM7Hv.js → gdresource-sFMY4D2Q.js} +1 -1
- package/dist/web/assets/{git-commit-_ZiciHIx.js → git-commit-BzB9Lio5.js} +1 -1
- package/dist/web/assets/{git-log-panel-BLQSy6rC.js → git-log-panel-DAogZ9QV.js} +1 -1
- package/dist/web/assets/{git-rebase-C3Y5N9-s.js → git-rebase-CKSVd848.js} +1 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-D7i54kbM.js +1 -0
- package/dist/web/assets/glide-data-grid-DxfJRN-r.js +138 -0
- package/dist/web/assets/{glimmer-js-BPBTXVlC.js → glimmer-js-BY8aExAJ.js} +1 -1
- package/dist/web/assets/{glimmer-ts-BQSZdy_D.js → glimmer-ts-Bak54dBX.js} +1 -1
- package/dist/web/assets/{glsl-CbQdxpU-.js → glsl-nR2eaJQe.js} +1 -1
- package/dist/web/assets/{graphql-GMlKikpY.js → graphql-CGPPFAU6.js} +1 -1
- package/dist/web/assets/group-chat-tab-DkVi6qL2.js +1 -0
- package/dist/web/assets/{hack-DyshcLec.js → hack-CXIMX-Ol.js} +1 -1
- package/dist/web/assets/{haml-rqCqWzsq.js → haml-tPY-9Pfm.js} +1 -1
- package/dist/web/assets/{handlebars-BCKwSWjR.js → handlebars-BuW1LT7T.js} +1 -1
- package/dist/web/assets/{html-Cg29xPR1.js → html-bgVcwZ-t.js} +1 -1
- package/dist/web/assets/{html-derivative-geltIVg8.js → html-derivative-D6-IxTgn.js} +1 -1
- package/dist/web/assets/{http-pG7Vp237.js → http-CJ1zyB-h.js} +1 -1
- package/dist/web/assets/{hurl-Di3Uu_Mc.js → hurl-CmoT7l3T.js} +1 -1
- package/dist/web/assets/{hxml-CRy4lbv8.js → hxml-CztOsL8o.js} +1 -1
- package/dist/web/assets/{image-preview-KubLSLNO.js → image-preview-Byjx8MoL.js} +1 -1
- package/dist/web/assets/index-Bucbpby-.css +2 -0
- package/dist/web/assets/index-CcN0TBm4.js +52 -0
- package/dist/web/assets/info-3K5VOQVL-BV41AzR9.js +1 -0
- package/dist/web/assets/{jinja-C8GyVnvd.js → jinja-B1pq3jJq.js} +1 -1
- package/dist/web/assets/{jison-BywnqPn6.js → jison-D8B5pCwA.js} +1 -1
- package/dist/web/assets/{julia-DTrO3T3B.js → julia-D0K3bwpU.js} +1 -1
- package/dist/web/assets/{just-CA3KSHPi.js → just-B9Jlddu-.js} +1 -1
- package/dist/web/assets/keybindings-store-DJIHqbLM.js +1 -0
- package/dist/web/assets/{latex-BC5xUMpc.js → latex-BPJSSE6j.js} +1 -1
- package/dist/web/assets/{liquid-Chd8tSyQ.js → liquid-lv10fo4U.js} +1 -1
- package/dist/web/assets/{lua-DHaEtwLv.js → lua-PNuaIBEF.js} +1 -1
- package/dist/web/assets/{markdown-renderer-B4uL6GVA.js → markdown-renderer-CXlEe3ma.js} +3 -3
- package/dist/web/assets/markdown-renderer-pYznJDbh.js +1 -0
- package/dist/web/assets/{marko-Desx_bC-.js → marko-Du3frD6X.js} +1 -1
- package/dist/web/assets/{mdc-DahWHc1t.js → mdc-BeDVcFRl.js} +1 -1
- package/dist/web/assets/media-url-C5vA0ha9.js +1 -0
- package/dist/web/assets/{mobile-bottom-sheet-BQt45q9T.js → mobile-bottom-sheet-CS3XMwFw.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-BuqBlP3o.js +1 -0
- package/dist/web/assets/{nextflow-3A7lutCA.js → nextflow-DkcXP71s.js} +1 -1
- package/dist/web/assets/{nginx-XQda6Hdy.js → nginx-C5n8N_bt.js} +1 -1
- package/dist/web/assets/{nim-DHqlpwP1.js → nim-CIhyfs-A.js} +1 -1
- package/dist/web/assets/notification-store-Bcl5efY2.js +1 -0
- package/dist/web/assets/{number-overlay-editor-DgZtViPO.js → number-overlay-editor-NgOsWJ7x.js} +1 -1
- package/dist/web/assets/packet-RMMSAZCW-CaJoP44m.js +1 -0
- package/dist/web/assets/{panel-store-s6Qx49RK.js → panel-store-DCD82zc1.js} +1 -1
- package/dist/web/assets/{pdf-preview-xZQVUtaV.js → pdf-preview-F2DWVB85.js} +1 -1
- package/dist/web/assets/{perl-M-ncjACb.js → perl-Cf31sZYE.js} +1 -1
- package/dist/web/assets/{php-CKIajrZi.js → php-Dzl_MDIW.js} +1 -1
- package/dist/web/assets/pie-UPGHQEXC-DSGZmNw2.js +1 -0
- package/dist/web/assets/plus-DmjC2iRB.js +1 -0
- package/dist/web/assets/{postgres-viewer-Ds0FxBel.js → postgres-viewer-KZqPYfOB.js} +3 -3
- package/dist/web/assets/{project-store-DyaEpHVG.js → project-store-B8BkHXy5.js} +1 -1
- package/dist/web/assets/{pug-DO0u_gO4.js → pug-CxSYHrB3.js} +1 -1
- package/dist/web/assets/{qml-UEje1PAA.js → qml-DlEjGhwN.js} +1 -1
- package/dist/web/assets/radar-KQ55EAFF-Be4VUTs0.js +1 -0
- package/dist/web/assets/{razor-lCs5T1Ib.js → razor-KVt5uW14.js} +1 -1
- package/dist/web/assets/{rst-CZX_O0z4.js → rst-D5BwNTnw.js} +1 -1
- package/dist/web/assets/{ruby-idycVAyE.js → ruby-D5fejQwd.js} +1 -1
- package/dist/web/assets/run-in-terminal-B8TDtaM_.js +1 -0
- package/dist/web/assets/{sas-o5gTfUwp.js → sas-Bj7B1CB2.js} +1 -1
- package/dist/web/assets/{scss-CRTk3iBQ.js → scss-BB0CUoCL.js} +1 -1
- package/dist/web/assets/send-to-chat-CuBAVC8l.js +1 -0
- package/dist/web/assets/{settings-store-ChqHdT2V.js → settings-store-CY-4_U3H.js} +2 -2
- package/dist/web/assets/settings-tab-Khj-w6Sr.js +1 -0
- package/dist/web/assets/{shaderlab-3e5ln8ci.js → shaderlab-BdjEZUMc.js} +1 -1
- package/dist/web/assets/{shellsession-CGQjQ75I.js → shellsession-Bp1OA1rR.js} +1 -1
- package/dist/web/assets/{soy-CxY0VwX2.js → soy-DlYz3wsC.js} +1 -1
- package/dist/web/assets/{sparql-CBAGAFuq.js → sparql-CdfII5Jd.js} +1 -1
- package/dist/web/assets/sql-query-editor-Cp0_e2P1.js +1 -0
- package/dist/web/assets/{sqlite-viewer-CZYDknNa.js → sqlite-viewer-CIv3sagZ.js} +1 -1
- package/dist/web/assets/{stata-BoezhOvk.js → stata-BvUA6GUW.js} +1 -1
- package/dist/web/assets/{surrealql-CHEzAhu7.js → surrealql--DLNbTyI.js} +1 -1
- package/dist/web/assets/{svelte-y6xtu2zX.js → svelte-CBfSsG4n.js} +1 -1
- package/dist/web/assets/system-monitor-tab-CrssTOf4.js +1 -0
- package/dist/web/assets/{tab-store-C42sktPo.js → tab-store-DAsvpx4t.js} +1 -1
- package/dist/web/assets/team-member-window-content-D-hXax3c.js +1 -0
- package/dist/web/assets/{templ-DbG2y5yD.js → templ-Dv8zpKZW.js} +1 -1
- package/dist/web/assets/terminal-tab-BIQDG-Ti.js +3 -0
- package/dist/web/assets/{tex-CeKQhrQG.js → tex-CsrOiqh1.js} +1 -1
- package/dist/web/assets/tool-cards-Dx-Rrpri.js +8 -0
- package/dist/web/assets/treemap-KZPCXAKY-Cu2zgbxU.js +1 -0
- package/dist/web/assets/{ts-tags-iKKOXJjG.js → ts-tags-3T98k4EJ.js} +1 -1
- package/dist/web/assets/{twig-DK8Vrp-G.js → twig-u6QZ45FH.js} +1 -1
- package/dist/web/assets/{use-blob-url-DYtOHK7u.js → use-blob-url-BmlYYZ8L.js} +1 -1
- package/dist/web/assets/use-is-mobile-B8FA4kQf.js +1 -0
- package/dist/web/assets/use-monaco-theme-Djp1_fKi.js +1 -0
- package/dist/web/assets/use-websocket-CCYA9-a2.js +1 -0
- package/dist/web/assets/{vendor-mermaid-C977xNeE.js → vendor-mermaid-Bg4vE8QA.js} +1 -1
- package/dist/web/assets/video-preview-cvjNMjWA.js +1 -0
- package/dist/web/assets/{vue-JkIEObMV.js → vue-CxIsxtwn.js} +1 -1
- package/dist/web/assets/{vue-html-D8SqnU86.js → vue-html-BGL5qnuH.js} +1 -1
- package/dist/web/assets/{vue-vine-DJj7N4WD.js → vue-vine-DHPh_gMr.js} +1 -1
- package/dist/web/assets/{xml-C-00w9Rv.js → xml-C-vM2m7J.js} +1 -1
- package/dist/web/assets/{xsl-CVdCwPHV.js → xsl-DvTXNwuO.js} +1 -1
- package/dist/web/index.html +21 -20
- package/dist/web/sw.js +1 -1
- package/docs/codebase-summary.md +1 -0
- package/package.json +1 -1
- package/scripts/dev-quick-tunnel-retry.mjs +51 -0
- package/src/providers/claude-agent-sdk.ts +6 -0
- package/src/server/helpers/media-route-handlers.ts +66 -0
- package/src/server/helpers/range-file-response.ts +86 -0
- package/src/server/index.ts +24 -17
- package/src/server/middleware/auth.ts +3 -2
- package/src/server/routes/files.ts +40 -7
- package/src/server/routes/fs-browse.ts +43 -5
- package/src/server/routes/fs-upload.ts +32 -0
- package/src/server/routes/teams.ts +34 -0
- package/src/server/ws/chat.ts +64 -16
- package/src/server/ws/team-inbox-watcher.ts +61 -22
- package/src/server/ws/terminal.ts +24 -6
- package/src/services/fs-ops/fs-ops-upload.service.ts +120 -0
- package/src/services/media-transcode/ffmpeg-capabilities.ts +89 -0
- package/src/services/media-transcode/media-probe.ts +63 -0
- package/src/services/media-transcode/transcode-stream.ts +129 -0
- package/src/services/subagent-transcript-merger.ts +1 -1
- package/src/services/team-member-activity/member-activity.service.ts +117 -0
- package/src/services/team-member-activity/outbound-message-scanner.ts +121 -0
- package/src/services/team-member-activity/subagent-transcript-index.ts +95 -0
- package/src/services/team-member-activity/transcript-tail-summary.ts +125 -0
- package/src/shared/background-agent-status.ts +79 -0
- package/src/types/api.ts +1 -0
- package/src/types/chat.ts +6 -1
- package/src/web/components/chat/chat-history-bar.tsx +4 -2
- package/src/web/components/chat/chat-tab.tsx +1 -0
- package/src/web/components/chat/message-input.tsx +13 -6
- package/src/web/components/chat/mini-markdown.tsx +17 -0
- package/src/web/components/chat/send-message-card.tsx +134 -0
- package/src/web/components/chat/send-message-parse.ts +159 -0
- package/src/web/components/chat/team-activity-panel.tsx +107 -121
- package/src/web/components/chat/team-member-activity-row.tsx +92 -0
- package/src/web/components/chat/team-member-list.tsx +43 -0
- package/src/web/components/chat/team-member-window-content.tsx +97 -0
- package/src/web/components/chat/team-message-badges.ts +18 -0
- package/src/web/components/chat/team-message-list.tsx +88 -0
- package/src/web/components/chat/team-message-preview.ts +87 -0
- package/src/web/components/chat/tool-cards.tsx +100 -23
- package/src/web/components/editor/audio-preview.tsx +6 -7
- package/src/web/components/editor/video-player/use-video-keyboard-shortcuts.ts +62 -0
- package/src/web/components/editor/video-player/video-player-controls.tsx +103 -0
- package/src/web/components/editor/video-player/video-player.tsx +190 -0
- package/src/web/components/editor/video-player/video-settings-menu.tsx +92 -0
- package/src/web/components/editor/video-player/video-transform.ts +49 -0
- package/src/web/components/editor/video-preview.tsx +75 -14
- package/src/web/components/explorer/file-tree.tsx +6 -0
- package/src/web/components/explorer/tree-node-context-menu.tsx +5 -1
- package/src/web/components/floating-window/window-content-registry.ts +5 -0
- package/src/web/components/floating-window/window-store-types.ts +1 -1
- package/src/web/components/os-explorer/actions/explorer-actions-upload.ts +96 -0
- package/src/web/components/os-explorer/actions/use-explorer-actions.ts +23 -2
- package/src/web/components/os-explorer/actions/use-explorer-upload-actions.tsx +41 -0
- package/src/web/components/os-explorer/dnd/use-drop-transfer.tsx +10 -1
- package/src/web/components/os-explorer/dnd/use-entry-row-dnd.ts +8 -1
- package/src/web/components/os-explorer/dnd/use-external-file-drop.ts +84 -0
- package/src/web/components/os-explorer/dnd/use-path-drop-target.ts +46 -3
- package/src/web/components/os-explorer/explorer-body.tsx +1 -1
- package/src/web/components/os-explorer/explorer-context-menu.tsx +10 -0
- package/src/web/components/os-explorer/explorer-dialogs.tsx +2 -0
- package/src/web/components/os-explorer/explorer-sidebar.tsx +10 -5
- package/src/web/components/os-explorer/explorer-toolbar.tsx +32 -2
- package/src/web/components/os-explorer/mobile/mobile-bottom-toolbar.tsx +5 -1
- package/src/web/components/os-explorer/upload/collect-dropped-entries.ts +81 -0
- package/src/web/components/os-explorer/upload/upload-queue.ts +79 -0
- package/src/web/components/os-explorer/upload/use-upload-picker.tsx +74 -0
- package/src/web/components/os-explorer/views/column-row.tsx +3 -1
- package/src/web/components/os-explorer/views/column-view-column.tsx +6 -1
- package/src/web/components/os-explorer/views/icons-view-tile.tsx +1 -1
- package/src/web/components/os-explorer/views/icons-view.tsx +5 -1
- package/src/web/components/os-explorer/views/list-row.tsx +1 -1
- package/src/web/components/os-explorer/views/list-view.tsx +5 -1
- package/src/web/components/shared/markdown-code-block.tsx +3 -7
- package/src/web/components/terminal/terminal-tab.tsx +19 -25
- package/src/web/hooks/use-chat.ts +77 -15
- package/src/web/hooks/use-team-activity-feed.ts +92 -0
- package/src/web/hooks/use-terminal-command-queue.ts +108 -0
- package/src/web/hooks/use-terminal.ts +45 -3
- package/src/web/lib/fs-api.ts +9 -0
- package/src/web/lib/fs-upload-xhr.ts +62 -0
- package/src/web/lib/media-url.ts +51 -0
- package/src/web/lib/open-terminal-at.ts +22 -0
- package/src/web/lib/run-in-terminal.ts +55 -0
- package/src/web/lib/send-to-chat.ts +118 -0
- package/src/web/lib/ws-auth.ts +13 -0
- package/src/web/lib/ws-client.ts +10 -5
- package/.release-run.sh +0 -5
- package/dist/web/assets/api-client-CaRE4HYh.js +0 -1
- package/dist/web/assets/api-settings-DBcXfeJ8.js +0 -1
- package/dist/web/assets/architecture-PBZL5I3N-B4J2-O8Q.js +0 -1
- package/dist/web/assets/audio-preview-BkNAEqcB.js +0 -1
- package/dist/web/assets/chat-tab-B-MEsHYp.js +0 -13
- package/dist/web/assets/code-editor-bC1KAEUA.js +0 -10
- package/dist/web/assets/dialog-CkI7rwrh.js +0 -1
- package/dist/web/assets/diff-viewer-BwElk4q9.js +0 -4
- package/dist/web/assets/explorer-body-DzdXBlWw.js +0 -2
- package/dist/web/assets/explorer-window-content-Dgl1WTNs.js +0 -1
- package/dist/web/assets/gitGraph-HDMCJU4V-CtQ3yXN-.js +0 -1
- package/dist/web/assets/glide-data-grid-QZ_fgjIa.js +0 -138
- package/dist/web/assets/group-chat-tab-BbdVlKFv.js +0 -1
- package/dist/web/assets/index-D-xwjNyX.css +0 -2
- package/dist/web/assets/index-wd3FSHHn.js +0 -52
- package/dist/web/assets/info-3K5VOQVL-Cg0mIJn9.js +0 -1
- package/dist/web/assets/keybindings-store-Bp_c_C3z.js +0 -1
- package/dist/web/assets/markdown-renderer-2asl-3Kk.js +0 -1
- package/dist/web/assets/mobile-explorer-sheet-LWUDaNBV.js +0 -1
- package/dist/web/assets/notification-store-BasUnpt7.js +0 -1
- package/dist/web/assets/packet-RMMSAZCW-D79vAFR_.js +0 -1
- package/dist/web/assets/pie-UPGHQEXC-DYUOH68U.js +0 -1
- package/dist/web/assets/plus-9LatwJMx.js +0 -1
- package/dist/web/assets/radar-KQ55EAFF-B1eznNtd.js +0 -1
- package/dist/web/assets/settings-tab-vhatQ51-.js +0 -1
- package/dist/web/assets/sql-query-editor-BblB2Imt.js +0 -1
- package/dist/web/assets/system-monitor-tab-D8dy-RT_.js +0 -1
- package/dist/web/assets/terminal-tab-CfD22q5x.js +0 -3
- package/dist/web/assets/tool-cards-DNgw1yI6.js +0 -7
- package/dist/web/assets/treemap-KZPCXAKY-SeI2TxLs.js +0 -1
- package/dist/web/assets/use-is-mobile-DnFSkUG2.js +0 -1
- package/dist/web/assets/use-monaco-theme-DEbn-QT3.js +0 -1
- package/dist/web/assets/video-preview-DcUaFYyv.js +0 -1
- package/src/web/components/chat/team-activity-popover.tsx +0 -202
- /package/dist/web/assets/{abap-DrMyiWmK.js → abap-C1K0-wzc.js} +0 -0
- /package/dist/web/assets/{actionscript-3-BlSOyi0y.js → actionscript-3-CJhQVjLA.js} +0 -0
- /package/dist/web/assets/{ada-B_m96icB.js → ada-Bt8r9fME.js} +0 -0
- /package/dist/web/assets/{andromeeda-Ch3vOiZB.js → andromeeda-DF1I8qi3.js} +0 -0
- /package/dist/web/assets/{apache-CdsaXc1n.js → apache-CnlleE6P.js} +0 -0
- /package/dist/web/assets/{apex-0AnsBevk.js → apex-j0C6Xmk6.js} +0 -0
- /package/dist/web/assets/{api-client-rTAGdEKo.js → api-client-BSB14J4w.js} +0 -0
- /package/dist/web/assets/{applescript-CSxLolzy.js → applescript-DO7AnO8U.js} +0 -0
- /package/dist/web/assets/{apply-theme-CMQXnUAa.js → apply-theme-CNj1iA-v.js} +0 -0
- /package/dist/web/assets/{ara-DXZS0jA5.js → ara-i83AydZj.js} +0 -0
- /package/dist/web/assets/{asciidoc-DDy3pH2A.js → asciidoc-DbBA6-sF.js} +0 -0
- /package/dist/web/assets/{asm-Bd17hhqg.js → asm-B5S47Rgr.js} +0 -0
- /package/dist/web/assets/{aurora-x-C62HJRs-.js → aurora-x-De_IaSKw.js} +0 -0
- /package/dist/web/assets/{awk-Cc-nazni.js → awk-CfyLHXqS.js} +0 -0
- /package/dist/web/assets/{ayu-dark-BsfmNWCU.js → ayu-dark-DTLdZ1Si.js} +0 -0
- /package/dist/web/assets/{ayu-light-BZ4HLa4X.js → ayu-light-DTOfkzhu.js} +0 -0
- /package/dist/web/assets/{ayu-mirage-Bhyjyiqr.js → ayu-mirage-DsAECCMv.js} +0 -0
- /package/dist/web/assets/{ballerina-QiWgir3v.js → ballerina-CumGp9A7.js} +0 -0
- /package/dist/web/assets/{bat-DxtlkwN3.js → bat-Ca2SBbYN.js} +0 -0
- /package/dist/web/assets/{beancount-Bt21X7M_.js → beancount-CqyXBwwF.js} +0 -0
- /package/dist/web/assets/{berry-Cksre7lO.js → berry-yl-kJr_H.js} +0 -0
- /package/dist/web/assets/{bibtex-DkakgDlR.js → bibtex-DoFFszjV.js} +0 -0
- /package/dist/web/assets/{bicep-8crmcyXU.js → bicep-CWPi4nfK.js} +0 -0
- /package/dist/web/assets/{bird2-CewQ2I_Z.js → bird2-DXew-ut0.js} +0 -0
- /package/dist/web/assets/{bot-nk1k3ELu.js → bot-CunPuEdW.js} +0 -0
- /package/dist/web/assets/{c-C_6zE8Ha.js → c-clbySDvd.js} +0 -0
- /package/dist/web/assets/{c3-DLWB9-dp.js → c3-B65jvSM1.js} +0 -0
- /package/dist/web/assets/{cadence-D8qYS6pR.js → cadence-Cm8tQTHN.js} +0 -0
- /package/dist/web/assets/{can-open-in-ppm-BzVXoV-d.js → can-open-in-ppm-Cu-XYIgu.js} +0 -0
- /package/dist/web/assets/{catppuccin-frappe-Bh95lNRy.js → catppuccin-frappe-DLeGslh_.js} +0 -0
- /package/dist/web/assets/{catppuccin-latte-C1PlN3G0.js → catppuccin-latte-CR5GeHws.js} +0 -0
- /package/dist/web/assets/{catppuccin-macchiato-CldtgdK4.js → catppuccin-macchiato-p-XgjxhP.js} +0 -0
- /package/dist/web/assets/{catppuccin-mocha-BiwqxX9A.js → catppuccin-mocha-B8QOAZLl.js} +0 -0
- /package/dist/web/assets/{clarity-CGiU22jY.js → clarity-DPulbvKH.js} +0 -0
- /package/dist/web/assets/{clojure-COIC3doh.js → clojure-DFuWS20u.js} +0 -0
- /package/dist/web/assets/{cmake-DWUEQfHv.js → cmake-DejCqcu4.js} +0 -0
- /package/dist/web/assets/{codeowners-BNHiAQea.js → codeowners-BwAyqWIH.js} +0 -0
- /package/dist/web/assets/{codeql-BuKaoS0j.js → codeql-DgSwFjqI.js} +0 -0
- /package/dist/web/assets/{common-lisp-D5IKbxsd.js → common-lisp-CxIVJCtf.js} +0 -0
- /package/dist/web/assets/{coq-BMVS-p94.js → coq-DLSjSnmf.js} +0 -0
- /package/dist/web/assets/{csharp-DMlbXbM4.js → csharp-C1HHzXBp.js} +0 -0
- /package/dist/web/assets/{css-CjkJC89X.js → css-VXsMY--y.js} +0 -0
- /package/dist/web/assets/{csv-DoNVBBf0.js → csv-BEbcJdHz.js} +0 -0
- /package/dist/web/assets/{csv-parser-DHvoTjMF.js → csv-parser-r-Nk1oHT.js} +0 -0
- /package/dist/web/assets/{cue-DoTRbBg-.js → cue-BkDnFqUD.js} +0 -0
- /package/dist/web/assets/{cypher-DVsNdTT3.js → cypher-1cMqojSQ.js} +0 -0
- /package/dist/web/assets/{d-EX7BBSrv.js → d-BnYjRXtH.js} +0 -0
- /package/dist/web/assets/{dark-plus-P_YTHwlh.js → dark-plus-XfbaH7kZ.js} +0 -0
- /package/dist/web/assets/{dart-Do-rgU4S.js → dart-Ca7s-8hK.js} +0 -0
- /package/dist/web/assets/{data-grid-types-CUx8cusN.js → data-grid-types-BXwlFMzs.js} +0 -0
- /package/dist/web/assets/{dax-DxOieacu.js → dax-CmuOw-mY.js} +0 -0
- /package/dist/web/assets/{desktop-CvdV7SBf.js → desktop-C2gJ6Ovb.js} +0 -0
- /package/dist/web/assets/{diff-CNOetGen.js → diff-BCEo1Ej7.js} +0 -0
- /package/dist/web/assets/{dist-CMfLpPW_.js → dist-CUPbqNnL.js} +0 -0
- /package/dist/web/assets/{dist-DduBIVkD.js → dist-DOlBnxFX.js} +0 -0
- /package/dist/web/assets/{docker-DAlG4_q-.js → docker-DN2jlyAh.js} +0 -0
- /package/dist/web/assets/{dotenv-Dh3qf6yx.js → dotenv-NExMY2kS.js} +0 -0
- /package/dist/web/assets/{dracula-baAGmJYG.js → dracula-B9lbE01y.js} +0 -0
- /package/dist/web/assets/{dracula-soft-l7ZIyums.js → dracula-soft-CMBBfKF_.js} +0 -0
- /package/dist/web/assets/{dream-maker-DeRjdBn8.js → dream-maker-DEyDwFsd.js} +0 -0
- /package/dist/web/assets/{emacs-lisp-CB05-jQA.js → emacs-lisp-D_qP2zS6.js} +0 -0
- /package/dist/web/assets/{everforest-dark-CT-llQBT.js → everforest-dark-DbHa2U-p.js} +0 -0
- /package/dist/web/assets/{everforest-light-ByPJkTT7.js → everforest-light-BISkJchP.js} +0 -0
- /package/dist/web/assets/{fennel-CeMarbvn.js → fennel-6B22SfJR.js} +0 -0
- /package/dist/web/assets/{file-exclamation-point-COAwgNGw.js → file-exclamation-point-a8f3_w7a.js} +0 -0
- /package/dist/web/assets/{fish-BYrt6Xtb.js → fish-CubIIvJD.js} +0 -0
- /package/dist/web/assets/{fluent-Cr5VcAwh.js → fluent-DF55zQ09.js} +0 -0
- /package/dist/web/assets/{fortran-free-form-DQmKtrLa.js → fortran-free-form-DvOu8jAt.js} +0 -0
- /package/dist/web/assets/{gdscript-QTDKjzhY.js → gdscript-DCPxdLpq.js} +0 -0
- /package/dist/web/assets/{gdshader-Chr-5UYt.js → gdshader-CTZ381FO.js} +0 -0
- /package/dist/web/assets/{genie-kWHMWnt0.js → genie-C_QDtvgU.js} +0 -0
- /package/dist/web/assets/{gherkin-DtEBQFUo.js → gherkin-BcvK42tF.js} +0 -0
- /package/dist/web/assets/{github-dark-B5aiUta2.js → github-dark-C9afs_4w.js} +0 -0
- /package/dist/web/assets/{github-dark-default-BkxtsTqR.js → github-dark-default-CKGVrl3Z.js} +0 -0
- /package/dist/web/assets/{github-dark-dimmed-B9QjR_0K.js → github-dark-dimmed-C3dQZ_LC.js} +0 -0
- /package/dist/web/assets/{github-dark-high-contrast-D6bO-5c0.js → github-dark-high-contrast-DW78QukY.js} +0 -0
- /package/dist/web/assets/{github-light-Cg2ZW_CJ.js → github-light-BnP2dznS.js} +0 -0
- /package/dist/web/assets/{github-light-default-eD7qUVlQ.js → github-light-default-C2fPZzPG.js} +0 -0
- /package/dist/web/assets/{github-light-high-contrast-CFnlSVjd.js → github-light-high-contrast-BzIuUFR2.js} +0 -0
- /package/dist/web/assets/{gleam-BpYoOqIT.js → gleam-BpeKwEIO.js} +0 -0
- /package/dist/web/assets/{gn-BxwtZPau.js → gn-nUb_Mit0.js} +0 -0
- /package/dist/web/assets/{gnuplot-CRyiZDfl.js → gnuplot-D7I0v20p.js} +0 -0
- /package/dist/web/assets/{go-Dw1Qx94W.js → go-D7Qqska7.js} +0 -0
- /package/dist/web/assets/{groovy-zq_SbWk-.js → groovy-DS-pne5-.js} +0 -0
- /package/dist/web/assets/{gruvbox-dark-hard-DbbNy8-Q.js → gruvbox-dark-hard-C0W01fsq.js} +0 -0
- /package/dist/web/assets/{gruvbox-dark-medium-BQZ7Kj6C.js → gruvbox-dark-medium-Bqo6fQbg.js} +0 -0
- /package/dist/web/assets/{gruvbox-dark-soft-vNavErXi.js → gruvbox-dark-soft-D-XSM_fu.js} +0 -0
- /package/dist/web/assets/{gruvbox-light-hard-AOFbCd7i.js → gruvbox-light-hard-IVAwMJRl.js} +0 -0
- /package/dist/web/assets/{gruvbox-light-medium-DqtxND6H.js → gruvbox-light-medium-38ATiG7i.js} +0 -0
- /package/dist/web/assets/{gruvbox-light-soft-Cg0basu6.js → gruvbox-light-soft-DnZr3c_0.js} +0 -0
- /package/dist/web/assets/{haskell-CcsmcOez.js → haskell-uQcywkDH.js} +0 -0
- /package/dist/web/assets/{haxe-BimYY9X4.js → haxe-c6bI4_GT.js} +0 -0
- /package/dist/web/assets/{hcl-CTrXCK40.js → hcl-CQXTiEXq.js} +0 -0
- /package/dist/web/assets/{hjson-CmqqU6Qg.js → hjson-ChETf2bz.js} +0 -0
- /package/dist/web/assets/{hlsl-CuJtX_uf.js → hlsl-BMC4JGoE.js} +0 -0
- /package/dist/web/assets/{horizon-BGeSjDYJ.js → horizon-BusFlhLW.js} +0 -0
- /package/dist/web/assets/{horizon-bright-GYMgd3R0.js → horizon-bright-2oD0Mz7W.js} +0 -0
- /package/dist/web/assets/{houston--JD_5r2q.js → houston-DdbbjqFg.js} +0 -0
- /package/dist/web/assets/{hy-C9ILOiqk.js → hy-D_SOuqw9.js} +0 -0
- /package/dist/web/assets/{image-gallery-BWFpZAAP.js → image-gallery-CrM5fHKy.js} +0 -0
- /package/dist/web/assets/{imba-B6F3yus5.js → imba-BxLOHO5I.js} +0 -0
- /package/dist/web/assets/{ini-BfkQswMZ.js → ini-ox-CFcg0.js} +0 -0
- /package/dist/web/assets/{java-DEH5avQ1.js → java-Bzo8yIal.js} +0 -0
- /package/dist/web/assets/{javascript-Dr4yHuV2.js → javascript-DHuz9VXn.js} +0 -0
- /package/dist/web/assets/{json-BuR35ewf.js → json-0_y80FD5.js} +0 -0
- /package/dist/web/assets/{json5-Ny9ZiJAC.js → json5-CEQ50pGM.js} +0 -0
- /package/dist/web/assets/{jsonc-zYVuoZkR.js → jsonc-CfrLEAKA.js} +0 -0
- /package/dist/web/assets/{jsonl-B9xthb_H.js → jsonl-fKbrANC2.js} +0 -0
- /package/dist/web/assets/{jsonnet-CCoLJbMP.js → jsonnet-DKbkPaQ2.js} +0 -0
- /package/dist/web/assets/{jssm-W0GDlQXi.js → jssm-Dxxx1Hqu.js} +0 -0
- /package/dist/web/assets/{jsx-BrLJpWC-.js → jsx-DlJL-Oj3.js} +0 -0
- /package/dist/web/assets/{kanagawa-dragon-CuVwt_MO.js → kanagawa-dragon-CwN4SV1c.js} +0 -0
- /package/dist/web/assets/{kanagawa-lotus-B3W_617P.js → kanagawa-lotus-BHltayiE.js} +0 -0
- /package/dist/web/assets/{kanagawa-wave-CEx4MP5W.js → kanagawa-wave-D-KXPjw6.js} +0 -0
- /package/dist/web/assets/{kdl-DilRejnB.js → kdl-DvtoJdFo.js} +0 -0
- /package/dist/web/assets/{kotlin-Bq5JtKaa.js → kotlin-CTS4MLcx.js} +0 -0
- /package/dist/web/assets/{kusto-Bhp2KYog.js → kusto-HtSE_sKm.js} +0 -0
- /package/dist/web/assets/{laserwave-WA_7c5hu.js → laserwave-DaXZG9ge.js} +0 -0
- /package/dist/web/assets/{lean-AEGcXwS-.js → lean-BYtGUfWx.js} +0 -0
- /package/dist/web/assets/{less-NPqH-26u.js → less-BoxmU_Mk.js} +0 -0
- /package/dist/web/assets/{lib-BFetOULu.js → lib-BzxL1ARZ.js} +0 -0
- /package/dist/web/assets/{libesm-tR4XlhMj.js → libesm-ah-mr-sh.js} +0 -0
- /package/dist/web/assets/{light-plus-B4xW7cgY.js → light-plus-Bt5CyUuo.js} +0 -0
- /package/dist/web/assets/{llvm-CPyWNcDE.js → llvm-CSdk9q9V.js} +0 -0
- /package/dist/web/assets/{log-CeQmiQSz.js → log-B-kp_3CL.js} +0 -0
- /package/dist/web/assets/{logo-BO0VrjBm.js → logo-DdIsXFDO.js} +0 -0
- /package/dist/web/assets/{luau-B6GT9kA1.js → luau-DUBpLlzQ.js} +0 -0
- /package/dist/web/assets/{make-CwfmN7e_.js → make-B3JVjoW_.js} +0 -0
- /package/dist/web/assets/{markdown-Bbe4FlLp.js → markdown-Seon0vHs.js} +0 -0
- /package/dist/web/assets/{material-theme-iD9XbfsB.js → material-theme-Nq-ChX1P.js} +0 -0
- /package/dist/web/assets/{material-theme-darker-u7M3XGe7.js → material-theme-darker-CPV4ayXJ.js} +0 -0
- /package/dist/web/assets/{material-theme-lighter-BGdI48zn.js → material-theme-lighter-0kyjYqEd.js} +0 -0
- /package/dist/web/assets/{material-theme-ocean-_mk62F5q.js → material-theme-ocean-DGpAp5co.js} +0 -0
- /package/dist/web/assets/{material-theme-palenight-CxFbDyAu.js → material-theme-palenight-B0AUn0NG.js} +0 -0
- /package/dist/web/assets/{matlab-Z0RUE3V_.js → matlab-C2waytxs.js} +0 -0
- /package/dist/web/assets/{mdx-BZ5wPYzV.js → mdx-DAis6R6I.js} +0 -0
- /package/dist/web/assets/{mermaid-CY1_aP-h.js → mermaid-_rnT2YGD.js} +0 -0
- /package/dist/web/assets/{min-dark-DKWtxOre.js → min-dark-BSSjchUB.js} +0 -0
- /package/dist/web/assets/{min-light-e1iwHDfP.js → min-light-DomAFQsa.js} +0 -0
- /package/dist/web/assets/{mipsasm-BiDfQ4ir.js → mipsasm-bBgtvPyG.js} +0 -0
- /package/dist/web/assets/{mojo-DteFEHsj.js → mojo-Cp9BayW0.js} +0 -0
- /package/dist/web/assets/{monokai-BgPbE9xZ.js → monokai-CL_9gbmn.js} +0 -0
- /package/dist/web/assets/{moonbit-mEbRp-mA.js → moonbit-BS_fcr-P.js} +0 -0
- /package/dist/web/assets/{move-CogqZw7A.js → move-C79AH45U.js} +0 -0
- /package/dist/web/assets/{narrat-BD2qjmy1.js → narrat-CJ5s3BDf.js} +0 -0
- /package/dist/web/assets/{nextflow-groovy-BNX8GOD_.js → nextflow-groovy-ZHa4JrPJ.js} +0 -0
- /package/dist/web/assets/{night-owl-ed3GbziD.js → night-owl-Jkf9zFQK.js} +0 -0
- /package/dist/web/assets/{night-owl-light-B0j7O0Wn.js → night-owl-light-DRPeaG5J.js} +0 -0
- /package/dist/web/assets/{nix-DFDbcQQm.js → nix-D2Jet9DN.js} +0 -0
- /package/dist/web/assets/{nord-D93TxEQi.js → nord-CREVs22j.js} +0 -0
- /package/dist/web/assets/{nushell-3_H_XKja.js → nushell-CAiDi_mR.js} +0 -0
- /package/dist/web/assets/{objective-c-BM3u6nlm.js → objective-c-CVkmJkC1.js} +0 -0
- /package/dist/web/assets/{objective-cpp-DZ73h42g.js → objective-cpp-DIKDO1Ly.js} +0 -0
- /package/dist/web/assets/{ocaml-B1PU5gmh.js → ocaml-R9qtGQhs.js} +0 -0
- /package/dist/web/assets/{odin-D14L6aRL.js → odin-DTYNQqVr.js} +0 -0
- /package/dist/web/assets/{one-dark-pro-Bj-94Z8v.js → one-dark-pro-BSLWUJn5.js} +0 -0
- /package/dist/web/assets/{one-light-DTdGWyOZ.js → one-light-DbkRXG3t.js} +0 -0
- /package/dist/web/assets/{openscad-Ciq554Sj.js → openscad-BlPcSnmT.js} +0 -0
- /package/dist/web/assets/{pascal-Bfd4qdGi.js → pascal-B1Y46ZZB.js} +0 -0
- /package/dist/web/assets/{pkl-CTurDUfj.js → pkl-BhJSJbFv.js} +0 -0
- /package/dist/web/assets/{plastic-BLQfZXQp.js → plastic-BzxsCTpi.js} +0 -0
- /package/dist/web/assets/{plsql-DyYfP9kQ.js → plsql-DBba7dyP.js} +0 -0
- /package/dist/web/assets/{po-CgXdT8vQ.js → po-BvgLlnNo.js} +0 -0
- /package/dist/web/assets/{poimandres-DOg5fK6s.js → poimandres-DUaI_1JP.js} +0 -0
- /package/dist/web/assets/{polar-Dv4aoL6X.js → polar-C7uILwJn.js} +0 -0
- /package/dist/web/assets/{postcss-DxugHnJD.js → postcss-BgJlpFdw.js} +0 -0
- /package/dist/web/assets/{powerquery-CR3kzRyX.js → powerquery-Dn1MIpZu.js} +0 -0
- /package/dist/web/assets/{powershell-BE91xJQB.js → powershell-Bo-DYzOS.js} +0 -0
- /package/dist/web/assets/{prisma-B_3yUlRQ.js → prisma-CTLs5IdT.js} +0 -0
- /package/dist/web/assets/{prolog-DcT781Ht.js → prolog-QRGun3eG.js} +0 -0
- /package/dist/web/assets/{proto-CSf-w5k2.js → proto-B7PI7apn.js} +0 -0
- /package/dist/web/assets/{puppet-CLGO6QWl.js → puppet-CBq0tLrP.js} +0 -0
- /package/dist/web/assets/{purescript-Bah2McKd.js → purescript-DFewOQb2.js} +0 -0
- /package/dist/web/assets/{python-DUH8qy7N.js → python-iWuxKXvT.js} +0 -0
- /package/dist/web/assets/{qmldir-YIsHnjKq.js → qmldir-cXiW3AsF.js} +0 -0
- /package/dist/web/assets/{qss-CLmoVNA4.js → qss-DASwAbBL.js} +0 -0
- /package/dist/web/assets/{r-Pon-b-vz.js → r-TU2eaIPw.js} +0 -0
- /package/dist/web/assets/{racket-BA09P5Kg.js → racket-SkRKqrLY.js} +0 -0
- /package/dist/web/assets/{raku-DlpzU7Fe.js → raku-D31lthkZ.js} +0 -0
- /package/dist/web/assets/{react-w6wINGnd.js → react-I_EwPIZi.js} +0 -0
- /package/dist/web/assets/{red-l7VuCR6d.js → red-CTcQZevb.js} +0 -0
- /package/dist/web/assets/{reg-g_k7gQEr.js → reg-D8YAsTGf.js} +0 -0
- /package/dist/web/assets/{regexp-CT17B7I7.js → regexp-CD2uvAWx.js} +0 -0
- /package/dist/web/assets/{rel-DkPCS7Bp.js → rel-CAaI-1fg.js} +0 -0
- /package/dist/web/assets/{resolve-theme-DdB7Yo5Z.js → resolve-theme-CJvkL8hU.js} +0 -0
- /package/dist/web/assets/{riscv-CYuFTw30.js → riscv-DR-hJVIj.js} +0 -0
- /package/dist/web/assets/{ron-cY7u_yEu.js → ron-CuUCJ0n4.js} +0 -0
- /package/dist/web/assets/{rose-pine-Cr_h_Ubo.js → rose-pine-aFHxW48i.js} +0 -0
- /package/dist/web/assets/{rose-pine-dawn-rRewaSZg.js → rose-pine-dawn-Bqz2sBRY.js} +0 -0
- /package/dist/web/assets/{rose-pine-moon-3VX5Xwca.js → rose-pine-moon-wqyh0an4.js} +0 -0
- /package/dist/web/assets/{rosmsg-Du4ie5PU.js → rosmsg-CI1ywimO.js} +0 -0
- /package/dist/web/assets/{rust-B7xWL-Eh.js → rust-p7Imk4G_.js} +0 -0
- /package/dist/web/assets/{sass-oXbOG8de.js → sass-C8JfaqCV.js} +0 -0
- /package/dist/web/assets/{save-C4z1p51e.js → save-DRPrDfTt.js} +0 -0
- /package/dist/web/assets/{scala-nlZJhKHf.js → scala-DNxCW1By.js} +0 -0
- /package/dist/web/assets/{scheme-FZ9_Zy8D.js → scheme-BYuUPJoL.js} +0 -0
- /package/dist/web/assets/{sdbl-D_lyvXiu.js → sdbl-DbPeJPUr.js} +0 -0
- /package/dist/web/assets/{shellscript-DRWRboAd.js → shellscript-DMiHlR3q.js} +0 -0
- /package/dist/web/assets/{shield-check-C5laObJv.js → shield-check-8GObuUAn.js} +0 -0
- /package/dist/web/assets/{shield-off-DULFtyLS.js → shield-off-egKAZEwR.js} +0 -0
- /package/dist/web/assets/{slack-dark-BGk2uVHu.js → slack-dark-C4xGcQXI.js} +0 -0
- /package/dist/web/assets/{slack-ochin-PAoSX041.js → slack-ochin-BzgRt_wm.js} +0 -0
- /package/dist/web/assets/{smalltalk-qP0zvICo.js → smalltalk-LDeL9PYH.js} +0 -0
- /package/dist/web/assets/{snazzy-light-B7uccpH6.js → snazzy-light-CXE7a5j_.js} +0 -0
- /package/dist/web/assets/{solarized-dark-CbICLZs3.js → solarized-dark-DgUhY74x.js} +0 -0
- /package/dist/web/assets/{solarized-light-CprWhyjj.js → solarized-light-DD9C-H-9.js} +0 -0
- /package/dist/web/assets/{solidity-B7pcm2K6.js → solidity-CAbDB4D4.js} +0 -0
- /package/dist/web/assets/{splunk-Co2LL4J_.js → splunk-kQREPfIc.js} +0 -0
- /package/dist/web/assets/{sql-cETIdGnT.js → sql-CBzeNAD8.js} +0 -0
- /package/dist/web/assets/{ssh-config-DETG6JCD.js → ssh-config-L1euxrsM.js} +0 -0
- /package/dist/web/assets/{stylus-tmTre2-O.js → stylus-DvBnYniP.js} +0 -0
- /package/dist/web/assets/{swift-BeKQbULV.js → swift-DF5NDQp6.js} +0 -0
- /package/dist/web/assets/{synthwave-84-eCL4-Xdn.js → synthwave-84-DbBhB_Hq.js} +0 -0
- /package/dist/web/assets/{system-verilog-CviwWvEx.js → system-verilog-D8s2ZW_k.js} +0 -0
- /package/dist/web/assets/{systemd-WuoFIbBS.js → systemd-a5-XZJsG.js} +0 -0
- /package/dist/web/assets/{table-CHmxuh6M.js → table-BX2ZrJfM.js} +0 -0
- /package/dist/web/assets/{talonscript-B9VBu7VI.js → talonscript-BLa0URTW.js} +0 -0
- /package/dist/web/assets/{tasl-CN7r11ky.js → tasl-DIoV4XcC.js} +0 -0
- /package/dist/web/assets/{tcl-e1cdhe3h.js → tcl-ztYAdXfQ.js} +0 -0
- /package/dist/web/assets/{terraform-BEP0mfa_.js → terraform-DvpCCiOZ.js} +0 -0
- /package/dist/web/assets/{tokyo-night-BfA_dA37.js → tokyo-night-BkHlYUv0.js} +0 -0
- /package/dist/web/assets/{toml-BrDIfNnt.js → toml-acIrxos6.js} +0 -0
- /package/dist/web/assets/{tsv-CyfGyE4i.js → tsv-BJB5EVCT.js} +0 -0
- /package/dist/web/assets/{tsx-BrFA8Iwf.js → tsx-B1MmXGT3.js} +0 -0
- /package/dist/web/assets/{turtle-9GBtR0mP.js → turtle-DFceTiqd.js} +0 -0
- /package/dist/web/assets/{typescript-BuTRZ65V.js → typescript-Dz9wU5Y1.js} +0 -0
- /package/dist/web/assets/{typespec-CRiNNRXF.js → typespec-CPuYZijj.js} +0 -0
- /package/dist/web/assets/{typst-CmpTnnkl.js → typst-CfsCIYv8.js} +0 -0
- /package/dist/web/assets/{utils-B9H0d3Fh.js → utils-DoY4yTP-.js} +0 -0
- /package/dist/web/assets/{v-DnIi2aab.js → v-CGo0jcXA.js} +0 -0
- /package/dist/web/assets/{vala-B7VxCNZP.js → vala-AsSR0hrb.js} +0 -0
- /package/dist/web/assets/{vb-DGoQ3pBT.js → vb-C7tvbXv1.js} +0 -0
- /package/dist/web/assets/{vendor-xterm-ClRVIJ-k.js → vendor-xterm-BeaIjRrv.js} +0 -0
- /package/dist/web/assets/{verilog-zGOC4qwV.js → verilog--a33ND-p.js} +0 -0
- /package/dist/web/assets/{vesper-DXR9-06q.js → vesper-B_Z0h4pn.js} +0 -0
- /package/dist/web/assets/{vhdl-CCO0oz0l.js → vhdl-CWL5dZPN.js} +0 -0
- /package/dist/web/assets/{viml-Dxwr-QNN.js → viml-BglmT14Y.js} +0 -0
- /package/dist/web/assets/{vitesse-black-Bhah7RxE.js → vitesse-black-RKFsSqQI.js} +0 -0
- /package/dist/web/assets/{vitesse-dark-CGK6XVwc.js → vitesse-dark-D7zDWNmc.js} +0 -0
- /package/dist/web/assets/{vitesse-light-ne5kfw8h.js → vitesse-light-MAp87W5b.js} +0 -0
- /package/dist/web/assets/{vyper-ErDFqVoP.js → vyper-CgCBYg1G.js} +0 -0
- /package/dist/web/assets/{wasm-DtWvUWGr.js → wasm-BOG7ZeTT.js} +0 -0
- /package/dist/web/assets/{wasm-Bd258nS1.js → wasm-Bwl4txwp.js} +0 -0
- /package/dist/web/assets/{wenyan-EZe1IEYT.js → wenyan-DpShPKXZ.js} +0 -0
- /package/dist/web/assets/{wgsl-B1o5_I_9.js → wgsl-BakcCblK.js} +0 -0
- /package/dist/web/assets/{wikitext-C_rwp8An.js → wikitext-NroRWVAO.js} +0 -0
- /package/dist/web/assets/{wit-gbYtF3rY.js → wit-B5CM2pg6.js} +0 -0
- /package/dist/web/assets/{wolfram-DrcQFe2n.js → wolfram-7MTFBJpR.js} +0 -0
- /package/dist/web/assets/{x-B1qHmLdR.js → x-BcqfTY_7.js} +0 -0
- /package/dist/web/assets/{yaml-CzDAObLX.js → yaml-Bwr01G2K.js} +0 -0
- /package/dist/web/assets/{zenscript-B-J1phtg.js → zenscript-Dj8GATvi.js} +0 -0
- /package/dist/web/assets/{zig-BlzNia0O.js → zig-LAE-fbS-.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{H as e}from"./vendor-mermaid-C977xNeE.js";export{e as createInfoServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./api-client-rTAGdEKo.js";import{tn as e}from"./index-wd3FSHHn.js";export{e as useKeybindingsStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./api-client-rTAGdEKo.js";import"./vendor-mermaid-C977xNeE.js";import"./settings-store-ChqHdT2V.js";import"./panel-store-s6Qx49RK.js";import"./project-store-DyaEpHVG.js";import"./tab-store-C42sktPo.js";import{t as e}from"./markdown-renderer-B4uL6GVA.js";export{e as MarkdownRenderer};
|
|
@@ -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{t as r}from"./explorer-body-DzdXBlWw.js";import"./context-menu-q-RHHAWz.js";import"./use-is-mobile-DnFSkUG2.js";import"./dialog-CkI7rwrh.js";import"./api-client-rTAGdEKo.js";import"./vendor-mermaid-C977xNeE.js";import"./settings-store-ChqHdT2V.js";import"./panel-store-s6Qx49RK.js";import"./tab-store-C42sktPo.js";import{t as i}from"./mobile-bottom-sheet-BQt45q9T.js";import{Q as a,Z as o,vt as s}from"./index-wd3FSHHn.js";var c=e(t(),1),l=n();function u(){let e=a(e=>e.isOpen),t=a(e=>e.close),n=a(e=>e.setSelectMode),u=s(e=>e.slices[o]?.path),d=s(e=>e.slices[o]?.inlineEdit?.kind===`rename`);(0,c.useEffect)(()=>{n(!1)},[u,n]);let f=e=>{d&&e.stopPropagation()};return e?(0,l.jsx)(i,{open:e,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:(0,l.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col`,onTouchStart:f,onTouchMove:f,children:u?(0,l.jsx)(r,{windowId:o,initialPath:u,variant:`sheet`}):(0,l.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-text-2`,children:`Loading…`})})}):null}export{u as MobileExplorerSheet};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./api-client-rTAGdEKo.js";import{un as e}from"./index-wd3FSHHn.js";export{e as useNotificationStore};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{B as e}from"./vendor-mermaid-C977xNeE.js";export{e as createPacketServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{R as e}from"./vendor-mermaid-C977xNeE.js";export{e as createPieServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-D8pyde1A.js";var t=e(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),n=e(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),r=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{n,t as r,r as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as e}from"./vendor-mermaid-C977xNeE.js";export{e as createRadarServices};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import"./context-menu-q-RHHAWz.js";import"./use-is-mobile-DnFSkUG2.js";import"./dialog-CkI7rwrh.js";import"./api-client-rTAGdEKo.js";import"./vendor-mermaid-C977xNeE.js";import"./settings-store-ChqHdT2V.js";import"./project-store-DyaEpHVG.js";import"./mobile-bottom-sheet-BQt45q9T.js";import"./api-settings-CAhcNpj5.js";import{F as e}from"./index-wd3FSHHn.js";export{e as SettingsTab};
|
|
@@ -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{a as r,i,r as a}from"./glide-data-grid-QZ_fgjIa.js";import{o}from"./index-wd3FSHHn.js";import{t as s}from"./use-monaco-theme-DEbn-QT3.js";var c=e(t(),1),l=n();function u({onExecute:e,loading:t,defaultValue:n=`SELECT * FROM `,schemaInfo:u,onSqlChange:d,persistedSql:f}){let[p,m]=(0,c.useState)(()=>f??n),h=(0,c.useRef)(!!f),g=(0,c.useRef)(null),_=(0,c.useRef)(null),v=(0,c.useRef)(null),y=(0,c.useRef)(e);y.current=e;let b=s();(0,c.useEffect)(()=>{if(!(!_.current||!u))return v.current?.dispose(),a(),v.current=_.current.languages.registerCompletionItemProvider(`sql`,i(_.current,u)),()=>{v.current?.dispose()}},[u]);let x=(0,c.useCallback)((e,t)=>{g.current=e,_.current=t,e.addAction({id:`run-query-at-cursor`,label:`Run Statement at Cursor`,keybindings:[t.KeyMod.CtrlCmd|t.KeyCode.Enter],run:e=>{let t=e.getPosition();if(!t)return;let n=r(e.getValue(),t.lineNumber);n&&y.current(n)}}),u&&(v.current?.dispose(),v.current=t.languages.registerCompletionItemProvider(`sql`,i(t,u)))},[u]);return(0,c.useEffect)(()=>{h.current||m(n)},[n]),(0,l.jsx)(`div`,{className:`h-full overflow-hidden`,children:(0,l.jsx)(o,{height:`100%`,language:`sql`,theme:b,value:p,onChange:e=>{let t=e??``;m(t),h.current=!0,d?.(t)},onMount:x,options:{minimap:{enabled:!1},lineNumbers:`off`,scrollBeyondLastLine:!1,wordWrap:`on`,fontSize:12,tabSize:2,renderLineHighlight:`none`,overviewRulerLanes:0,hideCursorInOverviewRuler:!0,scrollbar:{vertical:`auto`,horizontal:`auto`,verticalScrollbarSize:6,horizontalScrollbarSize:6},padding:{top:4,bottom:4},lineDecorationsWidth:4,lineNumbersMinChars:0,glyphMargin:!1,folding:!1,fixedOverflowWidgets:!0}})})}export{u as t};
|
|
@@ -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{t as r}from"./createLucideIcon-D8pyde1A.js";import{t as i}from"./bot-nk1k3ELu.js";import{n as a,r as o}from"./use-is-mobile-DnFSkUG2.js";import{t as s}from"./chevron-right-BLOtX8Vy.js";import{t as c}from"./circle-question-mark-CENpx4oA.js";import{t as l}from"./x-B1qHmLdR.js";import{n as u,s as d}from"./api-client-rTAGdEKo.js";import{n as f}from"./utils-B9H0d3Fh.js";import{In as p,br as m,m as h,mn as g,xr as _}from"./index-wd3FSHHn.js";var v=r(`hammer`,[[`path`,{d:`m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9`,key:`1hayfq`}],[`path`,{d:`m18 15 4-4`,key:`16gjal`}],[`path`,{d:`m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5`,key:`15ts47`}]]),y=r(`server`,[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]),b=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`}]]),x=e(t(),1),S=n(),C=(0,x.memo)(function({data:e,width:t=120,height:n=24,color:r=`var(--color-primary)`}){let i=(0,x.useRef)(null),a=(0,x.useRef)(0);return(0,x.useEffect)(()=>{let o=Date.now();if(o-a.current<1e3)return;a.current=o;let s=i.current;if(!s||e.length<2)return;let c=s.getContext(`2d`);if(!c)return;let l=window.devicePixelRatio||1;s.width=t*l,s.height=n*l,c.scale(l,l),c.clearRect(0,0,t,n);let u=Math.max(...e,1),d=t/(e.length-1),f=n-4;c.beginPath(),c.strokeStyle=r,c.lineWidth=1.5,c.lineJoin=`round`;for(let t=0;t<e.length;t++){let n=t*d,r=2+f-e[t]/u*f;t===0?c.moveTo(n,r):c.lineTo(n,r)}c.stroke()},[e,t,n,r]),(0,S.jsx)(`canvas`,{ref:i,style:{width:t,height:n},className:`inline-block`})});function w(e){return e>80?`text-error`:e>50?`text-warning`:`text-success`}function T(e){return e<1024?`${e.toFixed(0)} MB`:`${(e/1024).toFixed(1)} GB`}function E(e){if(!e)return``;let t=Math.round((Date.now()-e)/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}var D=(0,x.memo)(function({group:e,Icon:t,isExpanded:n,sparkData:r,isMobile:i,sortKey:a,sortDir:c,onToggle:u,onKill:d}){let p=n?o:s,m=(0,x.useMemo)(()=>a?[...e.processes].sort((e,t)=>{let n=a===`cpu`?e.cpu:e.ramMB,r=a===`cpu`?t.cpu:t.ramMB;return c===`asc`?n-r:r-n}):e.processes,[e.processes,a,c]);return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsxs)(`tr`,{className:`hover:bg-surface-hover cursor-pointer transition-colors`,onClick:u,children:[(0,S.jsx)(`td`,{className:`py-1.5 px-3`,children:(0,S.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,S.jsx)(p,{className:`size-3 text-text-subtle shrink-0`}),(0,S.jsx)(t,{className:`size-3.5 text-text-secondary shrink-0`}),(0,S.jsx)(`span`,{className:`truncate`,children:e.label}),(0,S.jsxs)(`span`,{className:`text-text-subtle`,children:[`(`,e.processes.length,`)`]})]})}),(0,S.jsxs)(`td`,{className:f(`text-right py-1.5 px-2`,w(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,S.jsx)(`td`,{className:`text-right py-1.5 px-2 text-text-secondary`,children:T(e.ramMB)}),!i&&(0,S.jsx)(`td`,{className:`py-1.5 px-2`,children:r.length>1&&(0,S.jsx)(C,{data:r,width:120,height:20})})]}),n&&m.map(e=>(0,S.jsxs)(`tr`,{className:`text-text-subtle group/proc hover:bg-surface-hover transition-colors`,children:[(0,S.jsx)(`td`,{className:`py-1 px-3 pl-10`,children:(0,S.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,S.jsx)(`span`,{className:`text-text-subtle shrink-0`,children:e.pid}),(0,S.jsx)(`span`,{className:`break-all text-text-secondary`,title:e.command,children:e.command})]})}),(0,S.jsxs)(`td`,{className:`text-right py-1 px-2 align-top`,children:[e.cpu.toFixed(1),`%`]}),(0,S.jsx)(`td`,{className:`text-right py-1 px-2 align-top`,children:T(e.ramMB)}),!i&&(0,S.jsx)(`td`,{className:`align-top py-1 px-2`,children:(0,S.jsxs)(`div`,{className:`flex items-center justify-between gap-1`,children:[(0,S.jsx)(`span`,{className:`text-text-subtle`,title:e.startedAt?new Date(e.startedAt).toLocaleString():``,children:E(e.startedAt)}),(0,S.jsx)(`button`,{onClick:t=>{t.stopPropagation(),d(e.pid)},className:`opacity-0 group-hover/proc:opacity-100 p-0.5 rounded hover:bg-error/20 hover:text-error transition-all`,title:`End process ${e.pid}`,children:(0,S.jsx)(l,{className:`size-3`})})]})})]},e.pid))]})});function O({label:e,field:t,activeKey:n,activeDir:r,onClick:i,className:a}){let o=n===t,s=o?r===`asc`?m:_:null;return(0,S.jsx)(`th`,{className:f(`text-right py-1.5 px-2 font-medium cursor-pointer select-none hover:text-text-primary transition-colors`,o&&`text-text-primary`,a),onClick:()=>i(t),children:(0,S.jsxs)(`div`,{className:`flex items-center justify-end gap-0.5`,children:[(0,S.jsx)(`span`,{children:e}),s&&(0,S.jsx)(s,{className:`size-3`})]})})}var k={server:y,terminal:p,"ai-tool":i,build:v,unknown:c},A=200;function j(e,t,n){return e===n?t===`desc`?[n,`asc`]:[null,`desc`]:[n,`desc`]}function M(e,t,n){return t?[...e].sort((e,r)=>{let i=t===`cpu`?e.cpu:e.ramMB,a=t===`cpu`?r.cpu:r.ramMB;return n===`asc`?i-a:a-i}):e}var N=(0,x.memo)(function(){let{latest:e,history:t,isConnected:n}=h(),[r,i]=(0,x.useState)(()=>new Set([`server`])),[o,s]=(0,x.useState)(null),[l,p]=(0,x.useState)(`desc`),m=a(),_=(0,x.useMemo)(()=>{let e=new Map,n=t.slice(-A);for(let t of n)for(let n of t.groups){let t=`${n.type}:${n.label}`,r=e.get(t)??[];r.push(n.cpu),e.set(t,r)}return e},[t]),v=(0,x.useMemo)(()=>e?M(e.groups,o,l):[],[e,o,l]),y=(0,x.useCallback)(async e=>{try{await u.post(`/api/system/resources/kill/${e}`),d.success(`Sent SIGTERM to PID ${e}`)}catch(t){d.error(t.message||`Failed to kill PID ${e}`)}},[]),C=e=>{i(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},E=e=>{let[t,n]=j(o,l,e);s(t),p(n)};if(!e)return(0,S.jsx)(`div`,{className:`flex items-center justify-center h-full text-text-subtle text-sm`,children:n?`Waiting for data...`:`Connecting to resource monitor...`});let N=Math.round((Date.now()-e.timestamp)/1e3);return(0,S.jsxs)(`div`,{className:`h-full flex flex-col overflow-hidden`,children:[(0,S.jsxs)(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[(0,S.jsx)(`h2`,{className:`text-sm font-medium`,children:`System Monitor`}),(0,S.jsxs)(`div`,{className:`flex items-center gap-1.5 text-[10px] text-text-subtle`,children:[n?(0,S.jsx)(b,{className:`size-3 text-success`}):(0,S.jsx)(g,{className:`size-3 text-error`}),(0,S.jsx)(`span`,{children:n?`Updated ${N}s ago`:`Disconnected`})]})]}),(0,S.jsx)(`div`,{className:`flex-1 overflow-y-auto min-h-0`,children:(0,S.jsxs)(`table`,{className:`w-full text-xs`,children:[(0,S.jsx)(`thead`,{children:(0,S.jsxs)(`tr`,{className:`text-text-subtle border-b border-border`,children:[(0,S.jsx)(`th`,{className:`text-left py-1.5 px-3 font-medium`,children:`Process`}),(0,S.jsx)(O,{label:`CPU`,field:`cpu`,activeKey:o,activeDir:l,onClick:E,className:`w-16`}),(0,S.jsx)(O,{label:`RAM`,field:`ram`,activeKey:o,activeDir:l,onClick:E,className:`w-20`}),!m&&(0,S.jsx)(`th`,{className:`py-1.5 px-2 font-medium w-[130px]`,children:`Trend / Age`})]})}),(0,S.jsx)(`tbody`,{children:v.map(e=>{let t=`${e.type}:${e.label}`;return(0,S.jsx)(D,{group:e,Icon:k[e.type]??c,isExpanded:r.has(t),sparkData:_.get(t)??[],isMobile:m,sortKey:o,sortDir:l,onToggle:()=>C(t),onKill:y},t)})}),(0,S.jsx)(`tfoot`,{children:(0,S.jsxs)(`tr`,{className:`border-t border-border font-medium`,children:[(0,S.jsxs)(`td`,{className:`py-1.5 px-3`,children:[`Total (`,e.total.processCount,` processes)`]}),(0,S.jsxs)(`td`,{className:f(`text-right py-1.5 px-2`,w(e.total.cpu)),children:[e.total.cpu.toFixed(1),`%`]}),(0,S.jsx)(`td`,{className:`text-right py-1.5 px-2 text-text-secondary`,children:T(e.total.ramMB)}),!m&&(0,S.jsx)(`td`,{})]})})]})})]})});export{N as SystemMonitorTab};
|
|
@@ -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"./vendor-ui-CaeeFO0B.js";import{t as r}from"./createLucideIcon-D8pyde1A.js";import{t as i}from"./copy-BApI9v7Z.js";import{n as a,s as o}from"./api-client-rTAGdEKo.js";import"./vendor-mermaid-C977xNeE.js";import{t as s}from"./settings-store-ChqHdT2V.js";import{n as c}from"./utils-B9H0d3Fh.js";import{t as l}from"./panel-store-s6Qx49RK.js";import{t as u}from"./mobile-bottom-sheet-BQt45q9T.js";import{t as d}from"./resolve-theme-DdB7Yo5Z.js";import{r as f,t as p}from"./apply-theme-CMQXnUAa.js";import{An as m,Hn as h,Ut as g,Wn as _,sr as v,ur as y,zn as b}from"./index-wd3FSHHn.js";import{i as x,n as S,r as C,t as w}from"./vendor-xterm-ClRVIJ-k.js";var T=r(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),E=r(`log-in`,[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]),D=r(`text-select`,[[`path`,{d:`M14 21h1`,key:`v9vybs`}],[`path`,{d:`M14 3h1`,key:`1ec4yj`}],[`path`,{d:`M19 3a2 2 0 0 1 2 2`,key:`18rm91`}],[`path`,{d:`M21 14v1`,key:`169vum`}],[`path`,{d:`M21 19a2 2 0 0 1-2 2`,key:`1j7049`}],[`path`,{d:`M21 9v1`,key:`mxsmne`}],[`path`,{d:`M3 14v1`,key:`vnatye`}],[`path`,{d:`M3 9v1`,key:`1r0deq`}],[`path`,{d:`M5 21a2 2 0 0 1-2-2`,key:`sbafld`}],[`path`,{d:`M5 3a2 2 0 0 0-2 2`,key:`y57alp`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}],[`path`,{d:`M7 16h6`,key:`1vyc9m`}],[`path`,{d:`M7 8h8`,key:`1jbsf9`}],[`path`,{d:`M9 21h1`,key:`15o7lz`}],[`path`,{d:`M9 3h1`,key:`1yesri`}]]),O=e(t(),1);function k(e){let t=e.tokens;if(e.terminal){let n=e.terminal.ansi;return{background:t.bgSolid,foreground:t.text,cursor:e.terminal.cursor,cursorAccent:e.terminal.cursorAccent??t.bgSolid,selectionBackground:e.terminal.selection,black:n[0],red:n[1],green:n[2],yellow:n[3],blue:n[4],magenta:n[5],cyan:n[6],white:n[7],brightBlack:n[8],brightRed:n[9],brightGreen:n[10],brightYellow:n[11],brightBlue:n[12],brightMagenta:n[13],brightCyan:n[14],brightWhite:n[15]}}let n=e.mode===`dark`,r=n?`#1b1f2a`:`#2b2f38`,i=n?`#d7dce8`:`#e9edf5`,a=t.text3,o=n?`#f7f9ff`:`#ffffff`;return{background:t.bgSolid,foreground:t.text,cursor:t.accent,cursorAccent:t.bgSolid,selectionBackground:t.accentWash,black:r,red:t.error,green:t.success,yellow:t.warning,blue:t.accent,magenta:t.accent2,cyan:t.info,white:i,brightBlack:a,brightRed:t.error,brightGreen:t.success,brightYellow:t.warning,brightBlue:t.accent,brightMagenta:t.accent2,brightCyan:t.info,brightWhite:o}}function A(){let e=s.getState();return k(f()??d(e.themeStyle,e.themeMode,e.customThemes,e.customThemeId))}var j=/[).,;:'"\]}>]+$/,M=/\bhttps?:\/\/[^\s<>"'`]+/g,N=5e3,P=100,F=`RESIZE:`,I=`PING`,L=`PONG`,R=15e3,z=35e3;function B(e){let{sessionId:t,containerRef:n}=e,r=(0,O.useRef)(null),i=(0,O.useRef)(null),a=(0,O.useRef)(null),o=(0,O.useRef)(null),s=(0,O.useRef)(0),c=(0,O.useRef)(!1),l=(0,O.useRef)(Date.now()),[u,d]=(0,O.useState)(!1),[f,m]=(0,O.useState)(!1),[h,g]=(0,O.useState)(!1),_=e.tabId?`ppm:terminal-session:${e.tabId}`:null,v=(0,O.useRef)((()=>{if(_)try{return localStorage.getItem(_)??t}catch{}return t})()),y=(0,O.useRef)(0),b=(0,O.useCallback)(e=>{let t=a.current;t?.readyState===WebSocket.OPEN&&t.send(e)},[]),T=(0,O.useCallback)(()=>r.current?.getSelection()??``,[]),E=(0,O.useCallback)(()=>{let e=r.current;if(!e)return``;let t=e.buffer.active,n=y.current,i=t.baseY+t.cursorY,a=[];for(let e=n;e<=i;e++){let n=t.getLine(e);n&&a.push(n.translateToString(!0))}for(;a.length>0&&a[a.length-1].trim()===``;)a.pop();return a.join(`
|
|
2
|
-
`)},[]),D=(0,O.useCallback)(()=>{let e=r.current;if(!e)return[];let t=e.buffer.active,n=t.baseY+t.cursorY,i=Math.max(0,n-N),a=[],o=``;for(let e=i;e<=n;e++){let n=t.getLine(e);n&&(o+=n.translateToString(!0),!t.getLine(e+1)?.isWrapped&&(a.push(o),o=``))}o&&a.push(o);let s=new Set,c=[];for(let e of a)for(let t of e.match(M)??[]){let e=t.replace(j,``);!e||s.has(e)||(s.add(e),c.push(e))}return c.reverse()},[]),k=(0,O.useCallback)(()=>{let e=r.current,t=a.current;e&&t?.readyState===WebSocket.OPEN&&t.send(`${F}${e.cols},${e.rows}`)},[]),B=(0,O.useCallback)(()=>{if(o.current&&clearTimeout(o.current),a.current?.close(),a.current=null,v.current=`new`,_)try{localStorage.removeItem(_)}catch{}s.current=0,g(!1),d(!1),m(!1),setTimeout(()=>V(),0)},[]),V=(0,O.useCallback)(()=>{o.current&&=(clearTimeout(o.current),null),a.current&&=(a.current.onclose=null,a.current.close(),null);let t=r.current;if(!t)return;let n=window.location.protocol===`https:`?`wss:`:`ws:`,i=e.projectName??``,u=v.current,f=`/ws/project/${encodeURIComponent(i)}/terminal/${u}`,p=`${n}//${window.location.host}${f}`,h=new WebSocket(p);a.current=h,h.onopen=()=>{c.current&&r.current&&r.current.clear(),c.current=!0,l.current=Date.now(),d(!0),m(!1),s.current=0,k()},h.onmessage=e=>{if(l.current=Date.now(),typeof e.data==`string`){if(e.data===L)return;if(e.data.startsWith(`{`))try{let n=JSON.parse(e.data);if(n.type){if(n.type===`session`&&n.id&&(v.current=n.id,_))try{localStorage.setItem(_,n.id)}catch{}n.type===`error`&&t.write(`\r\n\x1b[31mError: ${n.message}\x1b[0m\r\n`),n.type===`exited`&&g(!0);return}}catch{}t.write(e.data)}},h.onclose=()=>{d(!1),U()},h.onerror=()=>{h.close()}},[k]),H=(0,O.useCallback)(()=>{if(document.visibilityState!==`visible`)return;let e=a.current;if(!e||e.readyState!==WebSocket.OPEN){V();return}if(Date.now()-l.current>z){V();return}try{e.send(I)}catch{V()}},[V]);function U(){let e=Math.min(1e3*2**s.current,3e4);s.current++,m(!0),o.current=setTimeout(()=>{V()},e)}return(0,O.useEffect)(()=>{let e=n.current;if(!e)return;let t=new x({cursorBlink:!0,fontSize:13,scrollback:5e4,fontFamily:`Consolas, 'Cascadia Mono', Menlo, 'DejaVu Sans Mono', 'Courier New', monospace`,theme:A()}),s=new C,c=new S;if(t.loadAddon(s),t.loadAddon(c),t.open(e),!(`ontouchstart`in window||navigator.maxTouchPoints>0))try{let e=new w;e.onContextLoss(()=>e.dispose()),t.loadAddon(e)}catch{}s.fit(),r.current=t,i.current=s,t.onData(e=>{if(e.includes(`\r`)||e.includes(`
|
|
3
|
-
`)){let e=t.buffer.active;y.current=e.baseY+e.cursorY+1}let n=a.current;n?.readyState===WebSocket.OPEN&&n.send(e)}),V();let l=setInterval(H,R),u=()=>{document.visibilityState===`visible`&&H()};document.addEventListener(`visibilitychange`,u);let d=null,f=new ResizeObserver(e=>{let t=e[0];!t||t.contentRect.width===0||t.contentRect.height===0||(d&&clearTimeout(d),d=setTimeout(()=>{try{s.fit(),k()}catch{}},P))});f.observe(e);let m=()=>{t.options.theme=A()};window.addEventListener(p,m);let h=()=>window.removeEventListener(p,m);return()=>{h(),d&&clearTimeout(d),f.disconnect(),clearInterval(l),document.removeEventListener(`visibilitychange`,u),o.current&&clearTimeout(o.current),a.current?.close(),a.current=null,t.dispose(),r.current=null,i.current=null}},[]),{connected:u,reconnecting:f,exited:h,sendData:b,getSelection:T,getLastCommandOutput:E,getBufferUrls:D,restart:B}}function V(e,t,n){return new MouseEvent(e,{bubbles:!0,cancelable:!0,view:window,clientX:t.clientX,clientY:t.clientY,screenX:t.screenX,screenY:t.screenY,button:0,buttons:n,detail:1})}function H(e,t){(0,O.useEffect)(()=>{let n=e.current;if(!t||!n)return;let r=n.querySelector(`.xterm`);if(!r)return;let i=e=>{let t=e.touches[0];!t||e.touches.length>1||(e.preventDefault(),e.stopPropagation(),r.dispatchEvent(V(`mousedown`,t,1)))},a=e=>{let t=e.touches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(V(`mousemove`,t,1)))},o=e=>{let t=e.changedTouches[0];t&&(e.preventDefault(),e.stopPropagation(),document.dispatchEvent(V(`mouseup`,t,0)))},s={capture:!0,passive:!1};return n.addEventListener(`touchstart`,i,s),n.addEventListener(`touchmove`,a,s),n.addEventListener(`touchend`,o,s),n.addEventListener(`touchcancel`,o,s),()=>{n.removeEventListener(`touchstart`,i,s),n.removeEventListener(`touchmove`,a,s),n.removeEventListener(`touchend`,o,s),n.removeEventListener(`touchcancel`,o,s)}},[e,t])}var U=n(),W=[{label:`Tab`,value:` `},{label:`Esc`,value:`\x1B`},{label:`Ctrl`,value:null},{label:`↑`,value:`\x1B[A`},{label:`↓`,value:`\x1B[B`},{label:`←`,value:`\x1B[D`},{label:`→`,value:`\x1B[C`},{label:`^C`,value:``}],G=`flex items-center justify-center shrink-0 min-w-11 min-h-11 rounded text-xs bg-surface-elevated text-text-primary active:bg-primary active:text-primary-foreground transition-colors select-none`;function K({ctrlMode:e,onToggleCtrl:t,selectMode:n,onToggleSelect:r,onKey:a,onCopy:o,onPaste:s,onSendToChat:l,onOpenLinks:u}){return(0,U.jsxs)(`div`,{className:`relative shrink-0 bg-surface border-t border-border`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1 px-2 py-1.5 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden`,children:[(0,U.jsx)(`button`,{onClick:r,"aria-label":`Select text`,"aria-pressed":n,className:c(G,n&&`bg-primary text-primary-foreground`),children:(0,U.jsx)(D,{size:16})}),(0,U.jsx)(`button`,{onClick:o,"aria-label":`Copy`,className:G,children:(0,U.jsx)(i,{size:16})}),(0,U.jsx)(`button`,{onClick:s,"aria-label":`Paste`,className:G,children:(0,U.jsx)(y,{size:16})}),(0,U.jsx)(`button`,{onClick:u,"aria-label":`Links`,className:G,children:(0,U.jsx)(_,{size:16})}),(0,U.jsx)(`button`,{onClick:l,"aria-label":`Send to Chat`,className:G,children:(0,U.jsx)(b,{size:16})}),(0,U.jsx)(`div`,{className:`w-px h-6 shrink-0 bg-border mx-0.5`}),W.map(n=>(0,U.jsx)(`button`,{onClick:()=>n.value===null?t():a(n.value),className:c(G,`font-mono`,n.value===null&&e&&`bg-primary text-primary-foreground`),children:n.label},n.label)),(0,U.jsx)(`div`,{className:`w-6 shrink-0`,"aria-hidden":!0})]}),(0,U.jsx)(`div`,{className:`pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-surface to-transparent`,"aria-hidden":!0})]})}var q=new Set([`localhost`,`::1`]);function J(e){let t=e.replace(/^\[|\]$/g,``).toLowerCase();return q.has(t)?!0:/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(t)}function Y(e){let t;try{t=new URL(e)}catch{return null}let n=t.searchParams.get(`redirect_uri`)??t.searchParams.get(`redirectUri`);if(!n)return null;try{let e=new URL(n);return J(e.hostname)?e.port||(e.protocol===`https:`?`443`:`80`):null}catch{return null}}function X(e){try{let t=new URL(e.trim());return(t.protocol===`http:`||t.protocol===`https:`)&&J(t.hostname)}catch{return!1}}function Z({onDone:e}){let[t,n]=(0,O.useState)(``),[r,i]=(0,O.useState)(!1),s=t.trim(),c=!r&&X(s),l=async()=>{i(!0);try{await a.post(`/api/loopback/callback`,{url:s}),o.success(`Sent to the waiting command`,{duration:2e3}),n(``),e()}catch(e){o.error(e.message,{duration:4e3})}finally{i(!1)}};return(0,U.jsxs)(`div`,{className:`shrink-0 border-t border-border px-3 py-3`,children:[(0,U.jsx)(`p`,{className:`pb-2 text-[11px] leading-snug text-text-secondary`,children:`Finished signing in and landed on a page that would not load? Paste that address here — the machine will deliver it to the command still waiting.`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{value:t,onChange:e=>n(e.target.value),inputMode:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`http://127.0.0.1:54132/oauth/callback?code=…`,"aria-label":`Callback address`,className:`h-11 min-w-0 flex-1 rounded-lg border border-border bg-surface px-3 font-mono text-xs text-foreground placeholder:text-text-subtle`}),(0,U.jsx)(`button`,{onClick:()=>void l(),disabled:!c,"aria-label":`Finish login`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg bg-primary text-primary-foreground disabled:opacity-40 active:opacity-80 transition-opacity`,children:r?(0,U.jsx)(h,{className:`size-4 animate-spin`}):(0,U.jsx)(E,{className:`size-4`})})]}),s!==``&&!X(s)&&(0,U.jsx)(`p`,{className:`pt-1.5 text-[11px] text-error`,children:`Needs to be the http://127.0.0.1:… address the sign-in redirected to.`})]})}function Q({open:e,onClose:t,urls:n}){let r=async e=>{let n=await g(e);o[n?`success`:`error`](n?`Link copied`:`Could not copy link`,{duration:1500}),t()},a=[...new Set(n.map(Y).filter(e=>!!e))];return(0,U.jsxs)(u,{open:e,onClose:t,zIndex:70,className:`flex flex-col max-h-[70vh]`,children:[(0,U.jsx)(`div`,{className:`shrink-0 px-4 pb-2 text-xs font-medium text-text-secondary`,children:n.length>0?`Links in terminal (${n.length})`:`Links in terminal`}),(0,U.jsx)(`div`,{className:`flex-1 min-h-0 overflow-y-auto px-2 pb-2`,children:n.length===0?(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-4 py-8 text-center text-sm text-text-secondary`,children:[(0,U.jsx)(T,{className:`size-5 text-text-subtle`}),`No links found in the visible scrollback.`]}):n.map(e=>{let n=Y(e);return(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`flex items-stretch gap-1`,children:[(0,U.jsxs)(`a`,{href:e,target:`_blank`,rel:`noreferrer noopener`,onClick:t,className:`flex min-h-11 flex-1 min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-sm text-foreground active:bg-accent transition-colors`,children:[(0,U.jsx)(v,{className:`size-4 shrink-0 text-text-subtle`}),(0,U.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-left font-mono text-xs`,children:e})]}),(0,U.jsx)(`button`,{onClick:()=>void r(e),"aria-label":`Copy ${e}`,className:`flex size-11 shrink-0 items-center justify-center rounded-lg text-text-secondary active:bg-accent transition-colors`,children:(0,U.jsx)(i,{className:`size-4`})})]}),n&&(0,U.jsxs)(`p`,{className:`px-3 pb-2 text-[11px] leading-snug text-text-secondary`,children:[`Signing in here sends you back to port `,n,` `,(0,U.jsx)(`strong`,{children:`on the machine`}),`, not this device — so the terminal keeps waiting. Afterwards, paste the address bar below to finish it.`]})]},e)})}),a.length>0&&(0,U.jsx)(Z,{onDone:t})]})}var $=(0,O.memo)(function({metadata:e,tabId:t}){let n=e?.sessionId??`new`,r=e?.projectName,i=(0,O.useRef)(null),{connected:a,reconnecting:s,exited:u,sendData:d,getSelection:f,getLastCommandOutput:p,getBufferUrls:h,restart:_}=B({sessionId:n,projectName:r,containerRef:i,tabId:t}),[v,y]=(0,O.useState)(!1),[x,S]=(0,O.useState)(!1),[C,w]=(0,O.useState)(!1);H(i,x);let T=(0,O.useCallback)(()=>{(i.current?.querySelector(`.xterm-helper-textarea`))?.focus()},[]);(0,O.useEffect)(()=>{let e=i.current;if(!e||x)return;let t=()=>T();return e.addEventListener(`touchend`,t,{capture:!0}),()=>e.removeEventListener(`touchend`,t,{capture:!0})},[T,x]);let E=(0,O.useCallback)(e=>{if(T(),v&&e.length===1){let t=e.toLowerCase().charCodeAt(0)-96;t>=1&&t<=26&&d(String.fromCharCode(t)),y(!1);return}d(e)},[v,d,T]),D=(0,O.useCallback)(async()=>{let e=f(),t=e||p();if(!t.trim()){o(`Nothing to copy`,{duration:1500});return}let n=await g(t);o[n?`success`:`error`](n?e?`Selection copied`:`Last output copied`:`Could not copy`,{duration:1500})},[f,p]),k=(0,O.useCallback)(async()=>{try{let e=await navigator.clipboard.readText();e&&(d(e),T())}catch{o.error(`Clipboard blocked — paste with the keyboard instead`,{duration:2500})}},[d,T]),A=(0,O.useCallback)(()=>{let e=f(),t=e||p();if(!t.trim())return;let n="```bash\n"+t+"\n```",i=e?`Terminal selection`:`Terminal output`,a=!1,s=()=>{a=!0};window.addEventListener(`ppm:send-to-chat:ack`,s,{once:!0}),window.dispatchEvent(new CustomEvent(`ppm:send-to-chat`,{detail:{text:n,label:i,projectName:r}})),window.removeEventListener(`ppm:send-to-chat:ack`,s),a?o.success(`Sent to chat`,{duration:1500}):l.getState().openTab({type:`chat`,title:`Chat`,projectId:null,metadata:{projectName:r,pendingMessage:n},closable:!0})},[f,p,r]),j=typeof window<`u`&&`ontouchstart`in window;return(0,U.jsxs)(`div`,{className:`flex flex-col h-full min-h-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1 bg-surface border-b border-border text-xs`,children:[(0,U.jsx)(`span`,{className:c(`size-2 rounded-full`,u?`bg-error`:a?`bg-success`:s?`bg-warning`:`bg-error`)}),(0,U.jsx)(`span`,{className:`text-text-secondary`,children:u?`Process exited`:a?`Connected`:s?`Reconnecting...`:`Disconnected`}),u&&(0,U.jsxs)(`button`,{onClick:_,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors`,children:[(0,U.jsx)(m,{size:10}),`Restart`]}),(0,U.jsxs)(`button`,{onClick:A,title:`Send to Chat`,className:`flex items-center gap-1 px-1.5 py-0.5 rounded text-xs bg-surface-elevated text-text-primary hover:bg-primary hover:text-primary-foreground active:bg-primary active:text-primary-foreground transition-colors ml-auto`,children:[(0,U.jsx)(b,{size:10}),`Chat`]}),(0,U.jsx)(`span`,{className:`text-text-subtle font-mono`,children:n})]}),(0,U.jsx)(`div`,{ref:i,onClick:x?void 0:T,className:c(`flex-1 min-h-0 bg-background p-1`,x&&`touch-none`)}),j&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(K,{ctrlMode:v,onToggleCtrl:()=>y(!v),selectMode:x,onToggleSelect:()=>S(!x),onKey:E,onCopy:()=>void D(),onPaste:()=>void k(),onSendToChat:A,onOpenLinks:()=>w(!0)}),(0,U.jsx)(Q,{open:C,onClose:()=>w(!1),urls:C?h():[]})]})]})});export{$ as TerminalTab};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-renderer-2asl-3Kk.js","assets/vendor-mermaid-C977xNeE.js","assets/rolldown-runtime-FhOqtrmT.js","assets/vendor-ui-CaeeFO0B.js","assets/vendor-markdown-Ls5AcU91.js","assets/markdown-renderer-B4uL6GVA.js","assets/index-wd3FSHHn.js","assets/dialog-CkI7rwrh.js","assets/utils-B9H0d3Fh.js","assets/createLucideIcon-D8pyde1A.js","assets/x-B1qHmLdR.js","assets/eye-off-CUdzgmX8.js","assets/bot-nk1k3ELu.js","assets/context-menu-q-RHHAWz.js","assets/chevron-right-BLOtX8Vy.js","assets/use-is-mobile-DnFSkUG2.js","assets/clock-D493FU_D.js","assets/sparkles-n1hzh65o.js","assets/copy-BApI9v7Z.js","assets/database-B9okYLx6.js","assets/plus-9LatwJMx.js","assets/api-client-rTAGdEKo.js","assets/react-w6wINGnd.js","assets/mobile-bottom-sheet-BQt45q9T.js","assets/api-settings-CAhcNpj5.js","assets/project-store-DyaEpHVG.js","assets/panel-store-s6Qx49RK.js","assets/settings-store-ChqHdT2V.js","assets/tab-store-C42sktPo.js","assets/apply-theme-CMQXnUAa.js","assets/resolve-theme-DdB7Yo5Z.js","assets/index-D-xwjNyX.css","assets/image-gallery-BWFpZAAP.js","assets/edit-diff-preview-DfX-9om9.js","assets/libesm-tR4XlhMj.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{t as r}from"./createLucideIcon-D8pyde1A.js";import{t as i}from"./bot-nk1k3ELu.js";import{r as a}from"./use-is-mobile-DnFSkUG2.js";import{t as o}from"./chevron-right-BLOtX8Vy.js";import{t as s}from"./circle-question-mark-CENpx4oA.js";import{t as c}from"./clock-D493FU_D.js";import{t as l}from"./code-CLF5x7KK.js";import{n as u,t as d}from"./sparkles-n1hzh65o.js";import{q as f}from"./vendor-mermaid-C977xNeE.js";import{t as p}from"./utils-B9H0d3Fh.js";import{t as m}from"./tab-store-C42sktPo.js";import{Hn as h,Ut as g,Xn as _,dr as v,fr as y,i as b,jt as x,kn as S,r as C,sr as w,xn as T}from"./index-wd3FSHHn.js";import{t as E}from"./use-blob-url-DYtOHK7u.js";import{r as D,t as O}from"./image-gallery-BWFpZAAP.js";var k=r(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),A=r(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),j=r(`file-pen`,[[`path`,{d:`M12.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v9.34`,key:`o6klzx`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10.378 12.622a1 1 0 0 1 3 3.003L8.36 20.637a2 2 0 0 1-.854.506l-2.867.837a.5.5 0 0 1-.62-.62l.836-2.869a2 2 0 0 1 .506-.853z`,key:`zhnas1`}]]),M=r(`file-plus-corner`,[[`path`,{d:`M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35`,key:`17jvcc`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M14 19h6`,key:`bvotb8`}],[`path`,{d:`M17 16v6`,key:`18yu1i`}]]),N=r(`file-search`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`11.5`,cy:`14.5`,r:`2.5`,key:`1bq0ko`}],[`path`,{d:`M13.3 16.3 15 18`,key:`2quom7`}]]),P=r(`list-checks`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`path`,{d:`m3 7 2 2 4-4`,key:`1obspn`}]]),F=r(`list-todo`,[[`path`,{d:`M13 5h8`,key:`a7qcls`}],[`path`,{d:`M13 12h8`,key:`h98zly`}],[`path`,{d:`M13 19h8`,key:`c3s6r1`}],[`path`,{d:`m3 17 2 2 4-4`,key:`1jhpwq`}],[`rect`,{x:`3`,y:`4`,width:`6`,height:`6`,rx:`1`,key:`cif1o7`}]]),I=e(t(),1);function ee({url:e,onMessage:t,autoConnect:n=!0}){let r=(0,I.useRef)(null);return(0,I.useEffect)(()=>{let i=new b(e);return r.current=i,t&&i.onMessage(t),n&&i.connect(),()=>{i.disconnect(),r.current=null}},[e,n]),{send:(0,I.useCallback)(e=>{r.current?.send(e)},[]),connect:(0,I.useCallback)(()=>{r.current?.connect()},[]),disconnect:(0,I.useCallback)(()=>{r.current?.disconnect()},[])}}var L=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.avif`,`.ico`]);function te(e){let t=e.lastIndexOf(`.`);return t===-1?!1:L.has(e.slice(t).toLowerCase())}var ne=/^\[image(?: · [\d.]+(?:B|KB|MB))?\]$/;function re(e){if(!e.startsWith(`[`))return!1;let t;try{t=JSON.parse(e)}catch{return!1}return Array.isArray(t)?t.some(e=>{let t=e;return t?.type===`text`&&typeof t.text==`string`&&ne.test(t.text)}):!1}var R=n(),ie=`text-[var(--img-meta-label)] @max-[470px]:hidden`,ae=[`60%`,`45%`,`80%`];function oe({aspect:e,actions:t}){return(0,R.jsxs)(`div`,{className:`grid grid-cols-[132px_1fr] items-start gap-[14px] overflow-hidden rounded-lg border border-border bg-panel p-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px] @max-[470px]:p-[11px]`,children:[(0,R.jsx)(`div`,{className:`img-skeleton rounded-lg`,style:{aspectRatio:e}}),(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,R.jsx)(`div`,{className:`img-skeleton h-[13px] w-2/5 rounded @max-[470px]:hidden`}),(0,R.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:[`dimensions`,`size`,`path`].map((e,t)=>(0,R.jsxs)(I.Fragment,{children:[(0,R.jsx)(`dt`,{className:ie,children:e}),(0,R.jsx)(`dd`,{className:`flex items-center`,children:(0,R.jsx)(`span`,{className:`img-skeleton h-[11px] rounded`,style:{width:ae[t]}})})]},e))}),t]})]})}function se({code:e,onRetry:t}){return(0,R.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border bg-panel px-2.5 py-2 font-mono text-[12px] text-text-2`,children:[(0,R.jsx)(y,{className:`size-3 shrink-0`}),(0,R.jsxs)(`span`,{className:`truncate`,children:[`preview unavailable`,e?` · ${e}`:``]}),(0,R.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto shrink-0 text-accent`,children:`retry`})]})}var ce=.62;function le(e,t){let n=e.w/e.h;if(n>2.4)return{variant:`band`,aspect:n,fit:`contain`};let r=Math.max(ce,n),i=t/r;return e.w<t&&e.h<i?{variant:`split`,aspect:r,fit:`native`}:{variant:`split`,aspect:r,fit:n<.62?`contain`:`cover`}}function ue(e){return e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}function z(e,t){let n=`${e.w} × ${e.h} px`;return t===`native`?`${n} · shown 1:1`:n}var B=new Map;function V(e){return B.get(e)}function H(e,t){B.set(e,t)}var de=4/5,U=`text-[var(--img-meta-label)] @max-[470px]:hidden`,W=`truncate text-text @max-[470px]:text-text-2`,G=`h-[30px] @max-[470px]:h-[36px] shrink-0 rounded-[7px] px-[9px] font-mono text-[11.5px] text-text-2 bg-[var(--img-ghost)] border border-[var(--img-ghost-border)] backdrop-blur-[6px] transition-colors can-hover:hover:bg-[var(--img-ghost-hover)] can-hover:hover:border-[var(--img-ghost-hover-border)] can-hover:hover:text-text`;function fe({filePath:e,projectName:t}){let[n,r]=(0,I.useState)(0),{blobUrl:i,blob:a,error:o,errorCode:s}=E(e,t,void 0,n),[c,l]=(0,I.useState)(()=>V(e)),[u,d]=(0,I.useState)(!1),[f,h]=(0,I.useState)(!1),_=C(e=>e.open),{openTab:v}=m(x(e=>({openTab:e.openTab}))),y=p(e);(0,I.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>h(!1),1200);return()=>clearTimeout(e)},[f]);let b=t=>{let n={w:t.naturalWidth,h:t.naturalHeight};if(!n.w||!n.h)return d(!0);H(e,n),l(n)},S=()=>{d(!1),r(e=>e+1)};if(o||u)return(0,R.jsx)(`div`,{className:`border-t border-border pt-1.5`,children:(0,R.jsx)(se,{code:u?void 0:s??void 0,onRetry:S})});let w=c?le(c,132):null,T=w?.aspect??de,k=(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-[6px]`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:A,className:G,children:[(0,R.jsx)(`span`,{className:`@max-[470px]:hidden`,children:`open in editor`}),(0,R.jsx)(`span`,{className:`hidden @max-[470px]:inline`,children:`open`})]}),(0,R.jsx)(`button`,{type:`button`,onClick:j,className:G,children:f?`copied`:`copy path`}),(0,R.jsx)(`button`,{type:`button`,onClick:M,className:G,children:`full size`})]});function A(){t&&v({type:`editor`,title:y,metadata:{filePath:e,projectName:t},projectId:t,closable:!0})}function j(){g(e).then(()=>h(!0))}function M(e){i&&_(i,y,D(e.currentTarget))}if(!i||!w||!c)return(0,R.jsxs)(`div`,{className:`@container border-t border-border pt-1.5`,children:[i&&(0,R.jsx)(`img`,{src:i,alt:``,className:`hidden`,onLoad:e=>b(e.currentTarget),onError:()=>d(!0)}),(0,R.jsx)(oe,{aspect:T,actions:k})]});let N=(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`dt`,{className:U,children:`dimensions`}),(0,R.jsx)(`dd`,{className:W,children:z(c,w.fit)}),a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`dt`,{className:U,children:`size`}),(0,R.jsxs)(`dd`,{className:W,children:[ue(a.size),a.type?` · ${a.type}`:``]})]}),(0,R.jsx)(`dt`,{className:U,children:`path`}),(0,R.jsx)(`dd`,{dir:`rtl`,className:`${W} text-left`,children:e})]}),P=(0,R.jsx)(`img`,{src:i,alt:y,[O]:``,onLoad:e=>b(e.currentTarget),onError:()=>d(!0),className:w.fit===`cover`?`size-full object-cover`:w.fit===`contain`?`size-full object-contain`:`max-h-full max-w-full`});return(0,R.jsx)(`div`,{className:`@container border-t border-border pt-1.5`,children:(0,R.jsxs)(`div`,{className:`relative overflow-hidden rounded-lg border border-border p-[14px] @max-[470px]:p-[11px]`,children:[(0,R.jsx)(`img`,{"aria-hidden":`true`,alt:``,src:i,className:`absolute inset-0 size-full object-cover`,style:{filter:`var(--img-backdrop)`,transform:`scale(1.3)`}}),(0,R.jsx)(`div`,{className:`absolute inset-0`,style:{background:`var(--img-veil)`}}),w.variant===`band`?(0,R.jsxs)(`div`,{className:`relative grid gap-[11px]`,children:[(0,R.jsx)(`button`,{type:`button`,onClick:M,title:`Open ${y}`,className:`img-checkerboard w-full cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)]`,style:{aspectRatio:w.aspect},children:P}),(0,R.jsx)(`dl`,{className:`grid grid-cols-[auto_auto_1fr] gap-x-[18px] font-mono text-[11.5px] [&_dt]:hidden`,children:N}),k]}):(0,R.jsxs)(`div`,{className:`relative grid grid-cols-[132px_1fr] items-start gap-[14px] @max-[470px]:grid-cols-[64px_1fr] @max-[470px]:gap-[11px]`,children:[(0,R.jsx)(`button`,{type:`button`,onClick:M,title:`Open ${y}`,className:`cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)] bg-[var(--img-plate)] shadow-[var(--img-plate-shadow)] ${w.fit===`cover`?``:`img-checkerboard flex items-center justify-center`}`,style:{aspectRatio:w.aspect},children:P}),(0,R.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-[9px]`,children:[(0,R.jsx)(`p`,{className:`truncate text-[13px] font-semibold text-text @max-[470px]:hidden`,children:y}),(0,R.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-[14px] gap-y-[4px] font-mono text-[11.5px] @max-[470px]:grid-cols-[1fr]`,children:N}),k]})]})]})})}var pe=(0,I.lazy)(()=>f(()=>import(`./markdown-renderer-2asl-3Kk.js`).then(e=>({default:e.MarkdownRenderer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32])));function me(e,t){if(t&&(e===`Bash`||e===`PowerShell`))return{Icon:T,cls:`bg-error/15 text-error`};switch(e){case`Read`:case`Glob`:case`LS`:return{Icon:N,cls:`bg-accent-wash text-primary`};case`Grep`:case`Search`:case`WebSearch`:case`ToolSearch`:return{Icon:S,cls:`bg-accent-wash text-primary`};case`WebFetch`:case`Fetch`:return{Icon:_,cls:`bg-info/15 text-info`};case`Edit`:case`MultiEdit`:case`NotebookEdit`:return{Icon:j,cls:`bg-accent-2/15 text-accent-2`};case`Write`:return{Icon:M,cls:`bg-success/15 text-success`};case`Bash`:case`PowerShell`:return{Icon:T,cls:`bg-panel-2 text-text-2`};case`TodoWrite`:return{Icon:P,cls:`bg-warning/15 text-warning`};case`Task`:case`Agent`:return{Icon:i,cls:`bg-accent-wash text-primary`};case`AskUserQuestion`:return{Icon:s,cls:`bg-accent-wash text-primary`};case`ExitPlanMode`:return{Icon:A,cls:`bg-accent-wash text-primary`};case`Skill`:return{Icon:d,cls:`bg-accent-2/15 text-accent-2`};default:return{Icon:l,cls:`bg-panel-2 text-text-2`}}}function he(e){let t=e.type===`approval_request`;return{toolName:e.type===`tool_use`?e.tool:t?e.tool??`Tool`:`Tool`,input:e.type===`tool_use`?e.input:t?e.input??{}:{}}}function K(e){if(e.type!==`tool_use`||e.tool!==`Read`)return null;let t=e.input?.file_path;return typeof t!=`string`||!/^(\/|[A-Za-z]:[/\\])/.test(t)?null:te(t)?t:null}function q({tool:e,result:t,completed:n,projectName:r,bashPartialOutput:i}){let[s,c]=(0,I.useState)(()=>{let n=(e.type,e.tool),r=t?.type===`tool_result`&&!!t.isError;return(n===`Edit`||n===`MultiEdit`)&&!r?!0:!!K(e)});if(e.type===`error`)return(0,R.jsxs)(`div`,{className:`flex items-center gap-2 rounded bg-error/10 border border-error/20 px-2 py-1.5 text-xs text-error`,children:[(0,R.jsx)(y,{className:`size-3`}),(0,R.jsx)(`span`,{children:e.message})]});let{toolName:l,input:u}=he(e),d=t?.type===`tool_result`,f=d&&!!t.isError,p=l===`AskUserQuestion`&&!!u?.answers,m=e.type===`approval_request`&&e.approved!=null,g=(l===`Agent`||l===`Task`)&&e.type===`tool_use`,_=g?e.children:void 0,b=_&&_.length>0,x=d||p||m||n,S=[`Edit`,`MultiEdit`,`Write`,`NotebookEdit`].includes(l),C=K(e),w=d&&re(String(t.output??``)),T=e.type===`tool_use`?e.toolUseId:void 0,E=(l===`Bash`||l===`PowerShell`)&&!d&&T?i?.current?.get(T):void 0,D=!!E;(0,I.useEffect)(()=>{D&&!s&&c(!0)},[D]);let O=(0,I.useRef)(!1);(0,I.useEffect)(()=>{f&&(l===`Edit`||l===`MultiEdit`)&&!O.current&&(O.current=!0,c(!1))},[f,l]);let{Icon:A,cls:j}=me(l,f),M=l===`AskUserQuestion`||l===`ExitPlanMode`||g;return(0,R.jsxs)(`div`,{"data-tool-ref":T,className:`rounded-[11px] border overflow-hidden text-xs bg-panel ${M?`border-accent-wash-border`:`border-border`}`,children:[(0,R.jsxs)(`button`,{onClick:()=>c(!s),className:`flex items-center gap-2.5 px-2.5 py-2 w-full text-left hover:bg-panel-2/40 transition-colors min-w-0`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 ${j}`,children:(0,R.jsx)(A,{className:`size-3.5`})}),(0,R.jsx)(`span`,{className:`truncate text-text font-medium`,children:(0,R.jsx)(ge,{name:l,input:u})}),(0,R.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[D&&(0,R.jsxs)(`span`,{className:`text-[10px] text-warning`,children:[E.lineCount,` line`,E.lineCount===1?``:`s`,` streaming…`]}),b&&!D&&(0,R.jsxs)(`span`,{className:`text-[10px] text-text-3 font-mono`,children:[_.length,` steps`]}),f?(0,R.jsx)(k,{className:`size-3.5 text-error`}):x?(0,R.jsx)(v,{className:`size-3.5 text-success`}):(0,R.jsx)(h,{className:`size-3.5 text-primary animate-spin`}),s?(0,R.jsx)(a,{className:`size-3 text-text-3`}):(0,R.jsx)(o,{className:`size-3 text-text-3`})]})]}),s&&(0,R.jsxs)(`div`,{className:`px-2 pb-2 space-y-1.5 select-text`,children:[(e.type===`tool_use`||e.type===`approval_request`)&&(0,R.jsx)(_e,{name:l,input:u,projectName:r,toolUseId:T}),E&&(0,R.jsx)(xe,{content:E.content,lineCount:E.lineCount}),b&&(0,R.jsx)(Y,{events:_,projectName:r}),C&&(0,R.jsx)(fe,{filePath:C,projectName:r??``}),d&&!(S&&!f)&&!(w&&!f)&&(0,R.jsx)(ye,{toolName:l,output:t.output})]})]})}function ge({name:e,input:t}){let n=e=>String(e??``);switch(e){case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:return(0,R.jsxs)(R.Fragment,{children:[e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:p(n(t.file_path))})]});case`Bash`:case`PowerShell`:{let r=t.description?n(t.description):n(t.command);return(0,R.jsxs)(R.Fragment,{children:[e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle${t.description?``:` font-mono`}`,children:Q(r,60)})]})}case`Glob`:return(0,R.jsxs)(R.Fragment,{children:[e,` `,(0,R.jsx)(`span`,{className:`font-mono text-text-subtle`,children:n(t.pattern)})]});case`Grep`:return(0,R.jsxs)(R.Fragment,{children:[e,` `,(0,R.jsx)(`span`,{className:`font-mono text-text-subtle`,children:Q(n(t.pattern),40)})]});case`WebSearch`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(S,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:Q(n(t.query),50)})]});case`WebFetch`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(_,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:Q(n(t.url),50)})]});case`ToolSearch`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(S,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:Q(n(t.query),50)})]});case`Agent`:case`Task`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(i,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:Q(n(t.description||t.prompt),60)})]});case`TodoWrite`:{let n=Array.isArray(t.todos)?t.todos:[],r=n.filter(e=>e.status===`completed`).length;return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[r,`/`,n.length,` done`]})]})}case`AskUserQuestion`:{let n=Array.isArray(t.questions)?t.questions:[],r=!!t.answers;return(0,R.jsxs)(R.Fragment,{children:[e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[n.length,` question`,n.length===1?``:`s`,r?` ✓`:``]})]})}case`ScheduleWakeup`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(c,{className:`size-3 inline`}),` `,e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[`in `,$(Number(t.delaySeconds)),t.reason?` — ${Q(n(t.reason),50)}`:``]})]});case`TaskCreate`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:Q(n(t.subject),60)})]});case`TaskUpdate`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` → `,n(t.status)]})]});case`TaskStop`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(F,{className:`size-3 inline`}),` `,e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[`#`,n(t.taskId),` stopped`]})]});default:return(0,R.jsx)(R.Fragment,{children:e})}}function _e({name:e,input:t,projectName:n,toolUseId:r}){let i=e=>String(e??``),{openTab:a}=m(x(e=>({openTab:e.openTab}))),o=e=>{n&&a({type:`editor`,title:p(e),metadata:{filePath:e,projectName:n},projectId:n,closable:!0})},s=(e,t,r)=>{a({type:`git-diff`,title:`Diff ${p(e)}`,metadata:{filePath:e,projectName:n,original:t,modified:r},projectId:n??null,closable:!0})};switch(e){case`Bash`:case`PowerShell`:return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,R.jsx)(`p`,{className:`text-text-subtle italic`,children:i(t.description)}),(0,R.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:i(t.command)})]});case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let n=i(t.notebook_path||t.file_path),a=e===`Edit`&&(!!t.old_string||!!t.new_string),c=e=>r?`${r}-${e}`:void 0;return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[(0,R.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,R.jsxs)(`button`,{type:`button`,className:`font-mono text-text-secondary break-all hover:text-primary hover:underline text-left flex items-center gap-1 min-w-0`,onClick:()=>o(n),title:`Open file in editor`,children:[(0,R.jsx)(w,{className:`size-3 shrink-0`}),n]}),a&&(0,R.jsxs)(`button`,{type:`button`,className:`text-text-subtle hover:text-primary hover:underline flex items-center gap-1 shrink-0 whitespace-nowrap`,onClick:()=>s(n,i(t.old_string),i(t.new_string)),title:`View diff in new tab`,children:[(0,R.jsx)(u,{className:`size-3 shrink-0`}),`View Diff`]})]}),a&&(0,R.jsx)(`div`,{"data-edit-ref":c(0),children:(0,R.jsx)(Z,{oldStr:i(t.old_string),newStr:i(t.new_string),filePath:n})}),e===`MultiEdit`&&Array.isArray(t.edits)&&(0,R.jsx)(`div`,{className:`space-y-1.5`,children:t.edits.map((e,t)=>(0,R.jsxs)(`div`,{"data-edit-ref":c(t),className:`space-y-0.5`,children:[(0,R.jsxs)(`p`,{className:`text-text-subtle text-[10px]`,children:[`Edit `,t+1]}),(0,R.jsx)(Z,{oldStr:i(e.old_string),newStr:i(e.new_string),filePath:n})]},t))}),e===`Write`&&!!t.content&&(0,R.jsx)(`pre`,{"data-edit-ref":c(0),className:`font-mono text-text-subtle overflow-x-auto max-h-32 whitespace-pre-wrap`,children:Q(i(t.content),300)})]})}case`Glob`:return(0,R.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[i(t.pattern),t.path?` in ${i(t.path)}`:``]});case`Grep`:return(0,R.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,R.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[`/`,i(t.pattern),`/`]}),!!t.path&&(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,i(t.path)]})]});case`TodoWrite`:return(0,R.jsx)(ve,{todos:t.todos??[]});case`Agent`:case`Task`:return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[!!t.description&&(0,R.jsx)(`p`,{className:`text-text-secondary font-medium`,children:i(t.description)}),!!t.subagent_type&&(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[`Type: `,i(t.subagent_type)]}),!!t.prompt&&(0,R.jsx)(X,{content:i(t.prompt),maxHeight:`max-h-48`})]});case`ToolSearch`:return(0,R.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,R.jsx)(`p`,{className:`font-mono text-text-secondary`,children:i(t.query)}),!!t.max_results&&(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[`Max results: `,i(t.max_results)]})]});case`WebFetch`:return(0,R.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,R.jsxs)(`a`,{href:i(t.url),target:`_blank`,rel:`noopener noreferrer`,className:`font-mono text-primary hover:underline break-all flex items-center gap-1`,children:[(0,R.jsx)(_,{className:`size-3 shrink-0`}),i(t.url)]}),!!t.prompt&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:Q(i(t.prompt),100)})]});case`AskUserQuestion`:{let e=t.questions??[],n=t.answers??{};return(0,R.jsx)(`div`,{className:`space-y-2`,children:e.map((e,t)=>(0,R.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,R.jsxs)(`p`,{className:`text-text-primary font-medium`,children:[e.header?`${e.header}: `:``,e.question]}),(0,R.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.options.map((t,r)=>(0,R.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-xs border ${(n[e.question]??``).split(`, `).includes(t.label)?`border-primary bg-primary/20 text-text-primary`:`border-border text-text-subtle`}`,children:t.label},r))}),n[e.question]&&(0,R.jsxs)(`p`,{className:`text-foreground text-xs`,children:[`Answer: `,n[e.question]]})]},t))})}case`ScheduleWakeup`:{let e=Number(t.delaySeconds)||0;return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[(0,R.jsxs)(`p`,{className:`text-text-secondary`,children:[(0,R.jsx)(c,{className:`size-3 inline mr-1`}),`Wake in `,(0,R.jsx)(`span`,{className:`font-medium text-text-primary`,children:$(e)}),(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[` (`,e,`s)`]})]}),!!t.reason&&(0,R.jsx)(`p`,{className:`text-text-secondary italic`,children:i(t.reason)}),!!t.prompt&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`p`,{className:`text-text-subtle text-[10px] mb-0.5`,children:`Prompt on wake`}),(0,R.jsx)(X,{content:i(t.prompt),maxHeight:`max-h-48`})]})]})}case`TaskCreate`:return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[(0,R.jsx)(`p`,{className:`text-text-primary font-medium`,children:i(t.subject)}),!!t.description&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:i(t.description)}),!!t.activeForm&&(0,R.jsx)(`p`,{className:`text-text-subtle italic`,children:i(t.activeForm)})]});case`TaskUpdate`:return(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,i(t.taskId)]}),(0,R.jsx)(J,{status:i(t.status)})]});case`TaskStop`:return(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,R.jsxs)(`span`,{className:`font-mono text-text-secondary`,children:[`#`,i(t.taskId)]}),(0,R.jsx)(J,{status:`stopped`})]});default:return(0,R.jsx)(`pre`,{className:`overflow-x-auto text-text-secondary font-mono whitespace-pre-wrap break-all`,children:JSON.stringify(t,null,2)})}}function J({status:e}){return(0,R.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] border ${e===`completed`?`text-success border-success/30 bg-success/10`:e===`in_progress`?`text-warning border-warning/30 bg-warning/10`:`text-text-subtle border-border bg-surface`}`,children:e})}function ve({todos:e}){return(0,R.jsx)(`div`,{className:`space-y-0.5`,children:e.map((e,t)=>(0,R.jsxs)(`div`,{className:`flex items-start gap-1.5`,children:[(0,R.jsx)(`span`,{className:`shrink-0 mt-0.5 ${e.status===`completed`?`text-success`:e.status===`in_progress`?`text-warning`:`text-text-subtle`}`,children:e.status===`completed`?`✓`:e.status===`in_progress`?`▶`:`○`}),(0,R.jsx)(`span`,{className:e.status===`completed`?`line-through text-text-subtle`:`text-text-secondary`,children:e.content})]},t))})}function ye({toolName:e,output:t}){let[n,r]=(0,I.useState)(!1),i=(0,I.useMemo)(()=>{if(e!==`Agent`&&e!==`Task`)return null;try{let e=JSON.parse(t);if(Array.isArray(e)){let t=e.filter(e=>e.type===`text`&&e.text).map(e=>e.text).join(`
|
|
3
|
-
|
|
4
|
-
`);if(t)return t}if(typeof e==`string`)return e}catch{if(t&&!t.startsWith(`[{`))return t}return null},[e,t]);return i?(0,R.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,R.jsx)(X,{content:i,maxHeight:`max-h-60`}),(0,R.jsxs)(`button`,{type:`button`,onClick:()=>r(!n),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,R.jsx)(l,{className:`size-3`}),n?`Hide`:`Show`,` raw`]}),n&&(0,R.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:t})]}):(0,R.jsx)(be,{output:t})}function be({output:e}){let t=e.split(`
|
|
5
|
-
`).length,n=t>3||e.length>200,[r,i]=(0,I.useState)(n);return(0,R.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[n&&(0,R.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors mb-1`,children:[r?(0,R.jsx)(o,{className:`size-3`}):(0,R.jsx)(a,{className:`size-3`}),`Output (`,t,` lines)`]}),(0,R.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono whitespace-pre-wrap break-all ${r?`max-h-16 overflow-hidden`:`max-h-60`}`,children:e})]})}function Y({events:e,projectName:t}){let n=[],r=``;for(let t of e)if(t.type===`text`)r+=t.content;else if(t.type===`tool_use`)r&&=(n.push({kind:`text`,content:r}),``),n.push({kind:`tool`,tool:t});else if(t.type===`tool_result`){let e=t.toolUseId,r=e?n.find(t=>t.kind===`tool`&&t.tool.type===`tool_use`&&t.tool.toolUseId===e&&!t.result):n.findLast(e=>e.kind===`tool`&&!e.result);r&&(r.result=t)}r&&n.push({kind:`text`,content:r});let i=(0,I.useRef)(null),a=(0,I.useRef)(!1);return(0,I.useEffect)(()=>{i.current&&!a.current&&(i.current.scrollTop=i.current.scrollHeight)},[n.length]),(0,R.jsx)(`div`,{ref:i,onScroll:e=>{let t=e.currentTarget;a.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:`border-l-2 border-accent/20 pl-2 space-y-1 mt-1 max-h-64 md:max-h-96 overflow-y-auto`,children:n.map((e,n)=>e.kind===`text`?(0,R.jsx)(`div`,{className:`text-text-secondary text-[11px]`,children:(0,R.jsx)(X,{content:e.content,maxHeight:`max-h-24`})},`st-${n}`):(0,R.jsx)(q,{tool:e.tool,result:e.result,completed:!!e.result,projectName:t},`sc-${n}`))})}function X({content:e,maxHeight:t=`max-h-48`}){return(0,R.jsx)(I.Suspense,{fallback:(0,R.jsx)(`div`,{className:`animate-pulse h-4 bg-muted rounded`}),children:(0,R.jsx)(pe,{content:e,className:`text-text-secondary overflow-auto ${t}`})})}function xe({content:e,lineCount:t}){let n=(0,I.useRef)(null),r=(0,I.useRef)(!1);return(0,I.useEffect)(()=>{n.current&&!r.current&&(n.current.scrollTop=n.current.scrollHeight)},[e]),(0,R.jsxs)(`div`,{className:`border-t border-border pt-1.5`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-warning mb-1`,children:[(0,R.jsx)(h,{className:`size-3 animate-spin`}),(0,R.jsxs)(`span`,{children:[`Output (`,t,` line`,t===1?``:`s`,`, streaming...)`]})]}),(0,R.jsx)(`pre`,{ref:n,onScroll:e=>{let t=e.currentTarget;r.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:`overflow-x-auto overflow-y-auto max-h-60 text-text-subtle font-mono whitespace-pre-wrap break-all text-[11px]`,children:e.split(`
|
|
6
|
-
`).slice(-200).join(`
|
|
7
|
-
`)})]})}var Se=f(()=>import(`./edit-diff-preview-DfX-9om9.js`),__vite__mapDeps([33,2,4,34])),Ce=(0,I.lazy)(()=>Se);function Z(e){return(0,R.jsx)(I.Suspense,{fallback:(0,R.jsx)(`div`,{className:`animate-pulse h-8 bg-muted rounded`}),children:(0,R.jsx)(Ce,{...e})})}function Q(e,t=50){return e?e.length>t?e.slice(0,t)+`…`:e:``}function $(e){if(!Number.isFinite(e)||e<=0)return`0s`;let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.round(e%60),i=[];return t&&i.push(`${t}h`),n&&i.push(`${n}m`),(r||i.length===0)&&i.push(`${r}s`),i.join(` `)}export{k as a,A as i,ee as n,F as r,q as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{P as e}from"./vendor-mermaid-C977xNeE.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"./createLucideIcon-D8pyde1A.js";var r=n(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),i=e(t(),1);function a(e){return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)}function o(){return typeof window<`u`&&window.innerWidth<768}function s(){return!1}function c(){return(0,i.useSyncExternalStore)(a,o,s)}function l(){return typeof window<`u`&&window.innerWidth<768}export{c as n,r,l as t};
|
|
@@ -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-ChqHdT2V.js";import{t as r}from"./resolve-theme-DdB7Yo5Z.js";import{r as i,t as a}from"./apply-theme-CMQXnUAa.js";import{a as o}from"./index-wd3FSHHn.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{x as e}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t}from"./file-exclamation-point-COAwgNGw.js";import"./api-client-rTAGdEKo.js";import{Hn as n}from"./index-wd3FSHHn.js";import{t as r}from"./use-blob-url-DYtOHK7u.js";var i=e();function a({filePath:e,projectName:a}){let{blobUrl:o,error:s}=r(e,a);return s?(0,i.jsxs)(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-text-secondary`,children:[(0,i.jsx)(t,{className:`size-10 text-text-subtle`}),(0,i.jsx)(`p`,{className:`text-sm`,children:`Failed to load video.`})]}):o?(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full p-4 bg-surface overflow-auto`,children:(0,i.jsx)(`video`,{src:o,controls:!0,className:`max-w-full max-h-full`})}):(0,i.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,i.jsx)(n,{className:`size-5 animate-spin text-text-subtle`})})}export{a as VideoPreview};
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { useState, useRef, useEffect, useCallback } from "react";
|
|
2
|
-
import { RefreshCw, X } from "lucide-react";
|
|
3
|
-
import { cn } from "@/lib/utils";
|
|
4
|
-
import { api } from "@/lib/api-client";
|
|
5
|
-
import type { TeamMessageItem } from "@/hooks/use-chat";
|
|
6
|
-
|
|
7
|
-
interface TeamActivityPopoverProps {
|
|
8
|
-
teamNames: string[];
|
|
9
|
-
messages: TeamMessageItem[];
|
|
10
|
-
open: boolean;
|
|
11
|
-
onOpenChange: (open: boolean) => void;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const STATUS_COLORS: Record<string, string> = {
|
|
15
|
-
active: "bg-success",
|
|
16
|
-
idle: "bg-warning",
|
|
17
|
-
shutdown: "bg-text-3",
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const TYPE_BADGES: Record<string, { label: string; className: string }> = {
|
|
21
|
-
task_assignment: { label: "task", className: "bg-primary/20 text-primary" },
|
|
22
|
-
idle_notification: { label: "idle", className: "bg-warning/20 text-warning" },
|
|
23
|
-
completion: { label: "done", className: "bg-success/20 text-success" },
|
|
24
|
-
shutdown_request: { label: "shutdown", className: "bg-error/20 text-error" },
|
|
25
|
-
shutdown_approved: { label: "shutdown ✓", className: "bg-text-3/20 text-text-3" },
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export function TeamActivityPopover({ teamNames, messages, open, onOpenChange }: TeamActivityPopoverProps) {
|
|
29
|
-
const [selectedTeam, setSelectedTeam] = useState(teamNames[0] ?? "");
|
|
30
|
-
const [members, setMembers] = useState<any[]>([]);
|
|
31
|
-
const [loading, setLoading] = useState(false);
|
|
32
|
-
const messagesEndRef = useRef<HTMLDivElement>(null);
|
|
33
|
-
const panelRef = useRef<HTMLDivElement>(null);
|
|
34
|
-
|
|
35
|
-
// Sync selected team when teamNames changes
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
if (teamNames.length > 0 && !teamNames.includes(selectedTeam)) {
|
|
38
|
-
setSelectedTeam(teamNames[0]!);
|
|
39
|
-
}
|
|
40
|
-
}, [teamNames, selectedTeam]);
|
|
41
|
-
|
|
42
|
-
const fetchTeamDetail = useCallback(async (name: string) => {
|
|
43
|
-
setLoading(true);
|
|
44
|
-
try {
|
|
45
|
-
const detail = await api.get<any>(`/api/teams/${encodeURIComponent(name)}`);
|
|
46
|
-
setMembers(detail?.members ?? []);
|
|
47
|
-
} catch { setMembers([]); }
|
|
48
|
-
setLoading(false);
|
|
49
|
-
}, []);
|
|
50
|
-
|
|
51
|
-
// Fetch members on mount and tab switch
|
|
52
|
-
useEffect(() => {
|
|
53
|
-
if (open && selectedTeam) fetchTeamDetail(selectedTeam);
|
|
54
|
-
}, [open, selectedTeam, fetchTeamDetail]);
|
|
55
|
-
|
|
56
|
-
// Auto-scroll messages
|
|
57
|
-
useEffect(() => {
|
|
58
|
-
messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
59
|
-
}, [messages.length]);
|
|
60
|
-
|
|
61
|
-
// Close on outside click
|
|
62
|
-
useEffect(() => {
|
|
63
|
-
if (!open) return;
|
|
64
|
-
const handler = (e: MouseEvent) => {
|
|
65
|
-
if (panelRef.current && !panelRef.current.contains(e.target as Node)) {
|
|
66
|
-
onOpenChange(false);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
document.addEventListener("mousedown", handler);
|
|
70
|
-
return () => document.removeEventListener("mousedown", handler);
|
|
71
|
-
}, [open, onOpenChange]);
|
|
72
|
-
|
|
73
|
-
if (!open) return null;
|
|
74
|
-
|
|
75
|
-
// Filter messages relevant to selected team (all for now — teams share the same messages array)
|
|
76
|
-
const teamMessages = messages;
|
|
77
|
-
const displayMessages = teamMessages.slice(-200);
|
|
78
|
-
|
|
79
|
-
return (
|
|
80
|
-
<div
|
|
81
|
-
ref={panelRef}
|
|
82
|
-
className="absolute bottom-full left-0 mb-2 w-80 md:w-96 popover-solid border border-border rounded-lg shadow-[var(--shadow-panel)] z-50 overflow-hidden"
|
|
83
|
-
>
|
|
84
|
-
{/* Header with tabs */}
|
|
85
|
-
<div className="flex items-center justify-between px-3 py-2 border-b border-border bg-surface-elevated">
|
|
86
|
-
<div className="flex items-center gap-1 overflow-x-auto min-w-0">
|
|
87
|
-
{teamNames.map((name) => (
|
|
88
|
-
<button
|
|
89
|
-
key={name}
|
|
90
|
-
onClick={() => setSelectedTeam(name)}
|
|
91
|
-
className={cn(
|
|
92
|
-
"px-2 py-0.5 text-[11px] rounded-md whitespace-nowrap transition-colors",
|
|
93
|
-
selectedTeam === name
|
|
94
|
-
? "bg-primary/10 text-primary font-medium"
|
|
95
|
-
: "text-text-subtle hover:text-text-primary"
|
|
96
|
-
)}
|
|
97
|
-
>
|
|
98
|
-
{name}
|
|
99
|
-
</button>
|
|
100
|
-
))}
|
|
101
|
-
</div>
|
|
102
|
-
<div className="flex items-center gap-1 shrink-0">
|
|
103
|
-
<button
|
|
104
|
-
onClick={() => selectedTeam && fetchTeamDetail(selectedTeam)}
|
|
105
|
-
className="text-text-subtle hover:text-foreground p-1"
|
|
106
|
-
aria-label="Refresh"
|
|
107
|
-
>
|
|
108
|
-
<RefreshCw className={cn("size-3", loading && "animate-spin")} />
|
|
109
|
-
</button>
|
|
110
|
-
<button
|
|
111
|
-
onClick={() => onOpenChange(false)}
|
|
112
|
-
className="text-text-subtle hover:text-foreground p-1"
|
|
113
|
-
aria-label="Close"
|
|
114
|
-
>
|
|
115
|
-
<X className="size-3" />
|
|
116
|
-
</button>
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
|
|
120
|
-
{/* Members */}
|
|
121
|
-
{members.length > 0 && (
|
|
122
|
-
<div className="px-3 py-2 border-b border-border">
|
|
123
|
-
<div className="text-[10px] text-text-subtle uppercase tracking-wider mb-1">Members</div>
|
|
124
|
-
<div className="space-y-1">
|
|
125
|
-
{members.map((m: any) => (
|
|
126
|
-
<div key={m.name} className="flex items-center gap-2 text-xs">
|
|
127
|
-
<span className={cn("size-1.5 rounded-full shrink-0", STATUS_COLORS[m.status] ?? "bg-text-3")} />
|
|
128
|
-
<span className="font-medium truncate">{m.name}</span>
|
|
129
|
-
{m.model && m.model !== "unknown" && (
|
|
130
|
-
<span className="text-text-subtle text-[10px]">({m.model})</span>
|
|
131
|
-
)}
|
|
132
|
-
<span className="ml-auto text-text-subtle text-[10px]">{m.status}</span>
|
|
133
|
-
</div>
|
|
134
|
-
))}
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
|
-
)}
|
|
138
|
-
|
|
139
|
-
{/* Messages */}
|
|
140
|
-
<div className="max-h-64 overflow-y-auto px-3 py-2">
|
|
141
|
-
{displayMessages.length === 0 ? (
|
|
142
|
-
<p className="text-xs text-text-subtle text-center py-4">No messages yet</p>
|
|
143
|
-
) : (
|
|
144
|
-
<div className="space-y-2">
|
|
145
|
-
{displayMessages.map((msg, i) => {
|
|
146
|
-
const badge = msg.parsedType ? TYPE_BADGES[msg.parsedType] : null;
|
|
147
|
-
const time = formatTime(msg.timestamp);
|
|
148
|
-
return (
|
|
149
|
-
<div key={`${msg.timestamp}-${i}`} className="text-xs">
|
|
150
|
-
<div className="flex items-center gap-1 text-text-subtle">
|
|
151
|
-
<span className="font-medium" style={safeColor(msg.color)}>
|
|
152
|
-
{msg.from}
|
|
153
|
-
</span>
|
|
154
|
-
<span>→</span>
|
|
155
|
-
<span>{msg.to}</span>
|
|
156
|
-
<span className="ml-auto text-[10px]">{time}</span>
|
|
157
|
-
</div>
|
|
158
|
-
<div className="mt-0.5 text-foreground/90 break-words">
|
|
159
|
-
{badge && (
|
|
160
|
-
<span className={cn("inline-block px-1 py-0 rounded text-[9px] mr-1", badge.className)}>
|
|
161
|
-
{badge.label}
|
|
162
|
-
</span>
|
|
163
|
-
)}
|
|
164
|
-
{msg.summary ?? truncateText(msg.text)}
|
|
165
|
-
</div>
|
|
166
|
-
</div>
|
|
167
|
-
);
|
|
168
|
-
})}
|
|
169
|
-
<div ref={messagesEndRef} />
|
|
170
|
-
</div>
|
|
171
|
-
)}
|
|
172
|
-
</div>
|
|
173
|
-
</div>
|
|
174
|
-
);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
function formatTime(timestamp: string): string {
|
|
178
|
-
try {
|
|
179
|
-
const d = new Date(timestamp);
|
|
180
|
-
return d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit" });
|
|
181
|
-
} catch { return ""; }
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/** Sanitize color value to prevent CSS injection */
|
|
185
|
-
function safeColor(color?: string): React.CSSProperties | undefined {
|
|
186
|
-
if (!color) return undefined;
|
|
187
|
-
// Only allow hex colors and named CSS colors (no url(), expression(), etc.)
|
|
188
|
-
if (/^#[0-9a-fA-F]{3,8}$/.test(color) || /^[a-zA-Z]{3,20}$/.test(color)) {
|
|
189
|
-
return { color };
|
|
190
|
-
}
|
|
191
|
-
return undefined;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
function truncateText(text: string, max = 120): string {
|
|
195
|
-
if (!text) return "";
|
|
196
|
-
// Try to parse JSON for structured messages
|
|
197
|
-
try {
|
|
198
|
-
const parsed = JSON.parse(text);
|
|
199
|
-
return parsed.summary ?? parsed.text ?? text.slice(0, max);
|
|
200
|
-
} catch {}
|
|
201
|
-
return text.length > max ? text.slice(0, max) + "..." : text;
|
|
202
|
-
}
|
|
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/{catppuccin-macchiato-CldtgdK4.js → catppuccin-macchiato-p-XgjxhP.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
|
/package/dist/web/assets/{file-exclamation-point-COAwgNGw.js → file-exclamation-point-a8f3_w7a.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
|
/package/dist/web/assets/{github-dark-default-BkxtsTqR.js → github-dark-default-CKGVrl3Z.js}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|