@hienlh/ppm 0.23.8 → 0.23.10
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 +16 -0
- package/CLAUDE.md +4 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/cli-reference.md +4 -4
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/accounts-settings-section-BOBJbG7i.js +1 -0
- package/dist/web/assets/accounts-settings-section-BOBJbG7i.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-BOBJbG7i.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-CjD4hBZV.js +2 -0
- package/dist/web/assets/agent-session-sheet-CjD4hBZV.js.br +0 -0
- package/dist/web/assets/agent-session-sheet-CjD4hBZV.js.gz +0 -0
- package/dist/web/assets/agent-session-sheet-store-BcQbnaV2.js +1 -0
- package/dist/web/assets/agent-session-window-content-Drm1HsSn.js +1 -0
- package/dist/web/assets/agent-session-window-content-Drm1HsSn.js.br +0 -0
- package/dist/web/assets/agent-session-window-content-Drm1HsSn.js.gz +0 -0
- package/dist/web/assets/{ai-resource-editor-DfVRMUHS.js → ai-resource-editor-M1Eax2Hc.js} +1 -1
- package/dist/web/assets/ai-resource-editor-M1Eax2Hc.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-M1Eax2Hc.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-B73t9SXm.js +1 -0
- package/dist/web/assets/{ai-settings-section-Ezhw4Fef.js → ai-settings-section-H173dm1k.js} +1 -1
- package/dist/web/assets/ai-settings-section-H173dm1k.js.br +0 -0
- package/dist/web/assets/ai-settings-section-H173dm1k.js.gz +0 -0
- package/dist/web/assets/{api-settings-tYKJ5Fqk.js → api-settings-BA_n8cPt.js} +1 -1
- package/dist/web/assets/{appearance-settings-section-CPOAp0fY.js → appearance-settings-section-Dqu20pt8.js} +1 -1
- package/dist/web/assets/appearance-settings-section-Dqu20pt8.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-Dqu20pt8.js.gz +0 -0
- package/dist/web/assets/{apps-panel-Cz7_o-M4.js → apps-panel-mkrzY7K0.js} +1 -1
- package/dist/web/assets/apps-panel-mkrzY7K0.js.br +0 -0
- package/dist/web/assets/apps-panel-mkrzY7K0.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-Dw3bNixU.js +1 -0
- package/dist/web/assets/branch-review-tab-Dw3bNixU.js.br +0 -0
- package/dist/web/assets/branch-review-tab-Dw3bNixU.js.gz +0 -0
- package/dist/web/assets/chat-tab-BAbcVFzD.js +15 -0
- package/dist/web/assets/chat-tab-BAbcVFzD.js.br +0 -0
- package/dist/web/assets/chat-tab-BAbcVFzD.js.gz +0 -0
- package/dist/web/assets/chat-tab-BaXGaBEC.js +1 -0
- package/dist/web/assets/chat-tab-BaXGaBEC.js.br +4 -0
- package/dist/web/assets/chat-tab-BaXGaBEC.js.gz +0 -0
- package/dist/web/assets/code-editor-CXLANXnI.js +7 -0
- package/dist/web/assets/code-editor-CXLANXnI.js.br +0 -0
- package/dist/web/assets/code-editor-CXLANXnI.js.gz +0 -0
- package/dist/web/assets/{codex-reset-credit-button-D2hal4bG.js → codex-reset-credit-button-CB8Dfhki.js} +1 -1
- package/dist/web/assets/codex-reset-credit-button-CB8Dfhki.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-CB8Dfhki.js.gz +0 -0
- package/dist/web/assets/{conflict-editor-Cj_gUncw.js → conflict-editor-CKsxIw3v.js} +2 -2
- package/dist/web/assets/conflict-editor-CKsxIw3v.js.br +0 -0
- package/dist/web/assets/conflict-editor-CKsxIw3v.js.gz +0 -0
- package/dist/web/assets/{csv-preview-Be3ODNj0.js → csv-preview-U0v_r_-7.js} +1 -1
- package/dist/web/assets/csv-preview-U0v_r_-7.js.br +0 -0
- package/dist/web/assets/csv-preview-U0v_r_-7.js.gz +0 -0
- package/dist/web/assets/{database-viewer-B1b--4y8.js → database-viewer-xQyUcBoL.js} +1 -1
- package/dist/web/assets/database-viewer-xQyUcBoL.js.br +0 -0
- package/dist/web/assets/database-viewer-xQyUcBoL.js.gz +0 -0
- package/dist/web/assets/{design-tab-8wi0IHss.js → design-tab-aaAt2_QE.js} +4 -4
- package/dist/web/assets/design-tab-aaAt2_QE.js.br +0 -0
- package/dist/web/assets/design-tab-aaAt2_QE.js.gz +0 -0
- package/dist/web/assets/{designs-sidebar-panel-D5-1Q8zQ.js → designs-sidebar-panel-CTzO4Thu.js} +1 -1
- package/dist/web/assets/designs-sidebar-panel-CTzO4Thu.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-CTzO4Thu.js.gz +0 -0
- package/dist/web/assets/{diff-viewer-Dcxk6UTG.js → diff-viewer-CSE2-OE7.js} +1 -1
- package/dist/web/assets/diff-viewer-CSE2-OE7.js.br +0 -0
- package/dist/web/assets/diff-viewer-CSE2-OE7.js.gz +0 -0
- package/dist/web/assets/{edit-diff-preview-DxDAtYhi.js → edit-diff-preview-gH6pRk4S.js} +1 -1
- package/dist/web/assets/edit-diff-preview-gH6pRk4S.js.br +0 -0
- package/dist/web/assets/{edit-diff-preview-DxDAtYhi.js.gz → edit-diff-preview-gH6pRk4S.js.gz} +0 -0
- package/dist/web/assets/{editor-language-service-BVJQnTSV.js → editor-language-service-CYl04pUy.js} +1 -1
- package/dist/web/assets/editor-language-service-CYl04pUy.js.br +0 -0
- package/dist/web/assets/editor-language-service-CYl04pUy.js.gz +0 -0
- package/dist/web/assets/explorer-body-BBOcvwmV.js +2 -0
- package/dist/web/assets/explorer-body-BBOcvwmV.js.br +0 -0
- package/dist/web/assets/explorer-body-BBOcvwmV.js.gz +0 -0
- package/dist/web/assets/{explorer-window-content-DH5AD3Ng.js → explorer-window-content-juCGcrkc.js} +1 -1
- package/dist/web/assets/explorer-window-content-juCGcrkc.js.br +0 -0
- package/dist/web/assets/explorer-window-content-juCGcrkc.js.gz +0 -0
- package/dist/web/assets/{extension-manager-section-BJr6ccWw.js → extension-manager-section-poMRmwvg.js} +1 -1
- package/dist/web/assets/extension-manager-section-poMRmwvg.js.br +0 -0
- package/dist/web/assets/extension-manager-section-poMRmwvg.js.gz +0 -0
- package/dist/web/assets/{extension-webview-CYNXHd8D.js → extension-webview-0QfzTI6s.js} +1 -1
- package/dist/web/assets/extension-webview-0QfzTI6s.js.br +0 -0
- package/dist/web/assets/extension-webview-0QfzTI6s.js.gz +0 -0
- package/dist/web/assets/{files-settings-section-JX7o4lex.js → files-settings-section-DJptxRgH.js} +1 -1
- package/dist/web/assets/files-settings-section-DJptxRgH.js.br +0 -0
- package/dist/web/assets/files-settings-section-DJptxRgH.js.gz +0 -0
- package/dist/web/assets/{general-settings-section-kF94Mz5q.js → general-settings-section-BFNbdDNv.js} +1 -1
- package/dist/web/assets/general-settings-section-BFNbdDNv.js.br +0 -0
- package/dist/web/assets/general-settings-section-BFNbdDNv.js.gz +0 -0
- package/dist/web/assets/{git-log-panel-Crlp9ofM.js → git-log-panel-SMMIbjSe.js} +1 -1
- package/dist/web/assets/git-log-panel-SMMIbjSe.js.br +0 -0
- package/dist/web/assets/git-log-panel-SMMIbjSe.js.gz +0 -0
- package/dist/web/assets/{glide-data-grid-O6MO5dKU.js → glide-data-grid-DZVmgu0T.js} +3 -3
- package/dist/web/assets/glide-data-grid-DZVmgu0T.js.br +0 -0
- package/dist/web/assets/glide-data-grid-DZVmgu0T.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-d_aaYuK_.js +1 -0
- package/dist/web/assets/group-chat-tab-d_aaYuK_.js.br +0 -0
- package/dist/web/assets/group-chat-tab-d_aaYuK_.js.gz +0 -0
- package/dist/web/assets/{index-DQCw6d-2.js → index-CIscPw4g.js} +6 -6
- package/dist/web/assets/index-CIscPw4g.js.br +0 -0
- package/dist/web/assets/index-CIscPw4g.js.gz +0 -0
- package/dist/web/assets/{jira-watcher-section-DwM7gqHT.js → jira-watcher-section-CsbhnLLn.js} +1 -1
- package/dist/web/assets/keybindings-store-BPs0pM0r.js +1 -0
- package/dist/web/assets/{keyboard-shortcuts-section-CewWGwiF.js → keyboard-shortcuts-section-CXqc2OtM.js} +1 -1
- package/dist/web/assets/keyboard-shortcuts-section-CXqc2OtM.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-CXqc2OtM.js.gz +0 -0
- package/dist/web/assets/{language-servers-section-nricdxke.js → language-servers-section-B4FsBVvZ.js} +2 -2
- package/dist/web/assets/language-servers-section-B4FsBVvZ.js.br +0 -0
- package/dist/web/assets/language-servers-section-B4FsBVvZ.js.gz +0 -0
- package/dist/web/assets/{lsp-client-DRMEWb-z.js → lsp-client-MQ4mjDfT.js} +1 -1
- package/dist/web/assets/lsp-client-MQ4mjDfT.js.br +0 -0
- package/dist/web/assets/lsp-client-MQ4mjDfT.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-BvCZZlue.js +1 -0
- package/dist/web/assets/{markdown-renderer-Dab9Us6u.js → markdown-renderer-CjPb5pns.js} +3 -3
- package/dist/web/assets/markdown-renderer-CjPb5pns.js.br +0 -0
- package/dist/web/assets/markdown-renderer-CjPb5pns.js.gz +0 -0
- package/dist/web/assets/{mobile-explorer-sheet-DtgdpvJ9.js → mobile-explorer-sheet-0aGhVQtI.js} +1 -1
- package/dist/web/assets/mobile-explorer-sheet-0aGhVQtI.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-0aGhVQtI.js.gz +0 -0
- package/dist/web/assets/{new-design-dialog-Dd5KDB_p.js → new-design-dialog-2oT2oc_F.js} +1 -1
- package/dist/web/assets/new-design-dialog-2oT2oc_F.js.br +0 -0
- package/dist/web/assets/new-design-dialog-2oT2oc_F.js.gz +0 -0
- package/dist/web/assets/notification-store-Dd25PMPQ.js +1 -0
- package/dist/web/assets/{panel-store-DrSH3Nhp.js → panel-store-1X6yM3XZ.js} +1 -1
- package/dist/web/assets/panel-store-1X6yM3XZ.js.br +0 -0
- package/dist/web/assets/panel-store-1X6yM3XZ.js.gz +0 -0
- package/dist/web/assets/performance-panel-Ub96qrEH.js +3 -0
- package/dist/web/assets/performance-panel-Ub96qrEH.js.br +0 -0
- package/dist/web/assets/performance-panel-Ub96qrEH.js.gz +0 -0
- package/dist/web/assets/{ppmbot-settings-section-D67u6gPi.js → ppmbot-settings-section-CPMGP66g.js} +1 -1
- package/dist/web/assets/ppmbot-settings-section-CPMGP66g.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-CPMGP66g.js.gz +0 -0
- package/dist/web/assets/{problems-panel-DKgIw4uZ.js → problems-panel-CWwzZIP3.js} +1 -1
- package/dist/web/assets/problems-panel-CWwzZIP3.js.br +0 -0
- package/dist/web/assets/problems-panel-CWwzZIP3.js.gz +0 -0
- package/dist/web/assets/process-table-BwPws3zS.js +1 -0
- package/dist/web/assets/process-table-BwPws3zS.js.br +0 -0
- package/dist/web/assets/process-table-BwPws3zS.js.gz +0 -0
- package/dist/web/assets/{proxy-settings-section-CFiYcTBA.js → proxy-settings-section-nS8VbxI_.js} +1 -1
- package/dist/web/assets/proxy-settings-section-nS8VbxI_.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-nS8VbxI_.js.gz +0 -0
- package/dist/web/assets/{query-audit-section-BybgiPsc.js → query-audit-section-Dv5Pxn-w.js} +1 -1
- package/dist/web/assets/query-audit-section-Dv5Pxn-w.js.br +0 -0
- package/dist/web/assets/query-audit-section-Dv5Pxn-w.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-clipboard-notice-Bs3fZSRw.js → remote-desktop-clipboard-notice-DEbdu0hC.js} +1 -1
- package/dist/web/assets/remote-desktop-clipboard-notice-DEbdu0hC.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-DEbdu0hC.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-BJm-akVY.js +2 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-BJm-akVY.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-BJm-akVY.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-mobile-view-DgGOfPVY.js → remote-desktop-mobile-view-DPdGFD6C.js} +1 -1
- package/dist/web/assets/remote-desktop-mobile-view-DPdGFD6C.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-DPdGFD6C.js.gz +0 -0
- package/dist/web/assets/{remote-desktop-readiness-gate-DOWryrQx.js → remote-desktop-readiness-gate-DV7YgSpP.js} +1 -1
- package/dist/web/assets/remote-desktop-readiness-gate-DV7YgSpP.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-DV7YgSpP.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-BktcWMjD.js +1 -0
- package/dist/web/assets/remote-desktop-window-content-BktcWMjD.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-BktcWMjD.js.gz +0 -0
- package/dist/web/assets/{run-in-terminal-Cdn9PaAl.js → run-in-terminal-B_PCeBqG.js} +1 -1
- package/dist/web/assets/{schedules-settings-section-DGhG-b5O.js → schedules-settings-section-B3HYKSVh.js} +1 -1
- package/dist/web/assets/schedules-settings-section-B3HYKSVh.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-B3HYKSVh.js.gz +0 -0
- package/dist/web/assets/{send-to-chat-B09VjsB5.js → send-to-chat-Bjg6c8Ld.js} +1 -1
- package/dist/web/assets/send-to-chat-Bjg6c8Ld.js.br +0 -0
- package/dist/web/assets/send-to-chat-Bjg6c8Ld.js.gz +0 -0
- package/dist/web/assets/{services-panel-0klE3O4g.js → services-panel-D6k6AVS4.js} +1 -1
- package/dist/web/assets/services-panel-D6k6AVS4.js.br +0 -0
- package/dist/web/assets/services-panel-D6k6AVS4.js.gz +0 -0
- package/dist/web/assets/{settings-body-CfqpqFfq.js → settings-body-Cu0mNA5x.js} +2 -2
- package/dist/web/assets/settings-body-Cu0mNA5x.js.br +0 -0
- package/dist/web/assets/settings-body-Cu0mNA5x.js.gz +0 -0
- package/dist/web/assets/{settings-store-3jIBB8gx.js → settings-store-DIV25PM_.js} +2 -2
- package/dist/web/assets/settings-store-DIV25PM_.js.br +0 -0
- package/dist/web/assets/settings-store-DIV25PM_.js.gz +0 -0
- package/dist/web/assets/{settings-tab-CHweH5Nh.js → settings-tab-C-A6RNQ3.js} +1 -1
- package/dist/web/assets/{settings-window-content-C6Od3qV7.js → settings-window-content-48e5FJAq.js} +1 -1
- package/dist/web/assets/{sql-query-editor-ALQ5_X0j.js → sql-query-editor-CgGWYu9K.js} +1 -1
- package/dist/web/assets/sql-query-editor-CgGWYu9K.js.br +0 -0
- package/dist/web/assets/sql-query-editor-CgGWYu9K.js.gz +0 -0
- package/dist/web/assets/{sqlite-viewer-DKTty_jR.js → sqlite-viewer-Co1Oi3dv.js} +1 -1
- package/dist/web/assets/sqlite-viewer-Co1Oi3dv.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-Co1Oi3dv.js.gz +0 -0
- package/dist/web/assets/{system-monitor-body-D6J6lq7-.js → system-monitor-body-DxPKVa-W.js} +2 -2
- package/dist/web/assets/system-monitor-body-DxPKVa-W.js.br +0 -0
- package/dist/web/assets/system-monitor-body-DxPKVa-W.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-4miOZuQQ.js +1 -0
- package/dist/web/assets/{system-monitor-window-content-D1t30f32.js → system-monitor-window-content-B-A7DdML.js} +1 -1
- package/dist/web/assets/{tab-host-window-content-DTcx2D0O.js → tab-host-window-content-CChcpg1v.js} +1 -1
- package/dist/web/assets/tab-host-window-content-CChcpg1v.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-CChcpg1v.js.gz +0 -0
- package/dist/web/assets/{tab-store-CUPgQIQz.js → tab-store-D33icgdA.js} +1 -1
- package/dist/web/assets/{terminal-tab-DgTfQKBI.js → terminal-tab-BDqlyBLK.js} +2 -2
- package/dist/web/assets/terminal-tab-BDqlyBLK.js.br +0 -0
- package/dist/web/assets/terminal-tab-BDqlyBLK.js.gz +0 -0
- package/dist/web/assets/tool-cards-iJ8tyrLq.js +9 -0
- package/dist/web/assets/tool-cards-iJ8tyrLq.js.br +0 -0
- package/dist/web/assets/tool-cards-iJ8tyrLq.js.gz +0 -0
- package/dist/web/assets/{use-inline-blame-Dv111BKY.js → use-inline-blame-D9js570a.js} +4 -4
- package/dist/web/assets/use-inline-blame-D9js570a.js.br +0 -0
- package/dist/web/assets/use-inline-blame-D9js570a.js.gz +0 -0
- package/dist/web/assets/{use-lsp-CZTFJIXX.js → use-lsp-BYtylZId.js} +1 -1
- package/dist/web/assets/use-lsp-BYtylZId.js.br +0 -0
- package/dist/web/assets/use-lsp-BYtylZId.js.gz +0 -0
- package/dist/web/assets/{use-monaco-theme-DL2dIG5L.js → use-monaco-theme-DJ8y_7IZ.js} +1 -1
- package/dist/web/assets/{use-process-kill-D7D9QvJG.js → use-process-kill-BS84S-kD.js} +1 -1
- package/dist/web/assets/use-process-kill-BS84S-kD.js.br +0 -0
- package/dist/web/assets/use-process-kill-BS84S-kD.js.gz +0 -0
- package/dist/web/assets/{use-websocket-ziY-Gz_B.js → use-websocket-Mqj27umG.js} +1 -1
- package/dist/web/assets/{video-preview-DzwY3q9W.js → video-preview-BuzUAIma.js} +1 -1
- package/dist/web/assets/video-preview-BuzUAIma.js.br +0 -0
- package/dist/web/assets/video-preview-BuzUAIma.js.gz +0 -0
- package/dist/web/assets/{voice-settings-section-B7zMHsuz.js → voice-settings-section-DnwQjBbw.js} +1 -1
- package/dist/web/assets/voice-settings-section-DnwQjBbw.js.br +0 -0
- package/dist/web/assets/voice-settings-section-DnwQjBbw.js.gz +0 -0
- package/dist/web/assets/{window-pip-registry-dxrBFfkP.js → window-pip-registry-Bl--fK8-.js} +1 -1
- package/dist/web/assets/window-store-vo1N70nK.js +1 -0
- package/dist/web/assets/window-store-vo1N70nK.js.br +0 -0
- package/dist/web/assets/window-store-vo1N70nK.js.gz +0 -0
- package/dist/web/index.html +6 -6
- package/dist/web/index.html.br +0 -0
- package/dist/web/index.html.gz +0 -0
- package/dist/web/sw.js +1 -1
- package/dist/web/sw.js.br +0 -0
- package/dist/web/sw.js.gz +0 -0
- package/docs/architecture/ai-chat-and-providers.md +66 -0
- package/docs/architecture/workspace-and-ui.md +15 -3
- package/docs/design-guidelines.md +6 -1
- package/package.json +1 -1
- package/src/providers/codex-app-server/codex-history.ts +4 -4
- package/src/providers/codex-app-server/codex-provider.ts +1 -1
- package/src/providers/codex-app-server/codex-rollout-tail-parser.ts +203 -0
- package/src/providers/codex-app-server/codex-subagent-thread.ts +7 -1
- package/src/server/index.ts +7 -2
- package/src/server/routes/chat.ts +12 -4
- package/src/server/ws/global.ts +19 -3
- package/src/services/agent-transcript/agent-transcript-activity.ts +72 -0
- package/src/services/agent-transcript/agent-transcript-codex-activity.ts +161 -0
- package/src/services/agent-transcript/agent-transcript-codex-tail-cache.ts +85 -0
- package/src/services/agent-transcript/agent-transcript-envelope.ts +86 -0
- package/src/services/agent-transcript/agent-transcript-error-map.ts +33 -0
- package/src/services/agent-transcript/agent-transcript-file-tail-feed.ts +180 -0
- package/src/services/agent-transcript/agent-transcript-file-tail-state.ts +100 -0
- package/src/services/agent-transcript/agent-transcript-fs-io.ts +79 -0
- package/src/services/agent-transcript/agent-transcript-hub-clock.ts +37 -0
- package/src/services/agent-transcript/agent-transcript-hub-registry.ts +153 -0
- package/src/services/agent-transcript/agent-transcript-hub.ts +103 -0
- package/src/services/agent-transcript/agent-transcript-index-cache.ts +85 -0
- package/src/services/agent-transcript/agent-transcript-session-hub-activity.ts +103 -0
- package/src/services/agent-transcript/agent-transcript-session-hub-read.ts +194 -0
- package/src/services/agent-transcript/agent-transcript-session-hub-types.ts +81 -0
- package/src/services/agent-transcript/agent-transcript-session-hub.ts +196 -0
- package/src/services/agent-transcript/agent-transcript-sources.ts +199 -0
- package/src/services/agent-transcript/agent-transcript-ws-like.ts +19 -0
- package/src/services/agent-transcript/claude-projects-root.ts +21 -0
- package/src/services/agent-transcript/session-ownership.ts +152 -0
- package/src/services/nested-subagent-spy.ts +3 -3
- package/src/services/subagent-transcript-merger.ts +21 -7
- package/src/shared/agent-transcript-protocol.ts +158 -0
- package/src/types/chat.ts +27 -3
- package/src/web/app.tsx +5 -5
- package/src/web/components/chat/agent-card-summary.tsx +73 -0
- package/src/web/components/chat/agent-session-context.ts +34 -0
- package/src/web/components/chat/agent-session-fallback-store.ts +60 -0
- package/src/web/components/chat/agent-session-sheet-store.ts +23 -0
- package/src/web/components/chat/{team-member-sheet.tsx → agent-session-sheet.tsx} +12 -12
- package/src/web/components/chat/agent-session-window-content.tsx +133 -0
- package/src/web/components/chat/chat-history-bar.tsx +1 -0
- package/src/web/components/chat/chat-tab.tsx +21 -4
- package/src/web/components/chat/codex-usage-panel.tsx +26 -8
- package/src/web/components/chat/running-agents-bar.tsx +93 -0
- package/src/web/components/chat/team-activity-panel.tsx +19 -5
- package/src/web/components/chat/tool-cards.tsx +73 -4
- package/src/web/components/chat/use-open-agent-session.ts +83 -0
- package/src/web/components/floating-window/window-content-registry.ts +4 -5
- package/src/web/components/floating-window/window-geometry.ts +18 -0
- package/src/web/components/floating-window/window-persistence.ts +5 -4
- package/src/web/components/floating-window/window-store-types.ts +1 -1
- package/src/web/components/settings/resolve-open-settings-action.ts +1 -1
- package/src/web/components/system/resolve-open-system-monitor-action.ts +1 -1
- package/src/web/hooks/use-agent-activity.ts +65 -0
- package/src/web/hooks/use-agent-session-stream.ts +134 -0
- package/src/web/hooks/use-chat.ts +12 -18
- package/src/web/hooks/use-global-events.ts +35 -2
- package/src/web/lib/agent-session-stream-merge.ts +48 -0
- package/src/web/lib/agent-step-summary.ts +331 -0
- package/src/web/lib/global-ws-channel.ts +41 -0
- package/src/web/lib/running-agent-rows.ts +115 -0
- package/dist/web/assets/accounts-settings-section-BNcPvEq1.js +0 -1
- package/dist/web/assets/accounts-settings-section-BNcPvEq1.js.br +0 -0
- package/dist/web/assets/accounts-settings-section-BNcPvEq1.js.gz +0 -0
- package/dist/web/assets/ai-resource-editor-DfVRMUHS.js.br +0 -0
- package/dist/web/assets/ai-resource-editor-DfVRMUHS.js.gz +0 -0
- package/dist/web/assets/ai-settings-section-B_0-P8jx.js +0 -1
- package/dist/web/assets/ai-settings-section-Ezhw4Fef.js.br +0 -0
- package/dist/web/assets/ai-settings-section-Ezhw4Fef.js.gz +0 -0
- package/dist/web/assets/appearance-settings-section-CPOAp0fY.js.br +0 -0
- package/dist/web/assets/appearance-settings-section-CPOAp0fY.js.gz +0 -0
- package/dist/web/assets/apps-panel-Cz7_o-M4.js.br +0 -0
- package/dist/web/assets/apps-panel-Cz7_o-M4.js.gz +0 -0
- package/dist/web/assets/branch-review-tab-BPx3kHrM.js +0 -1
- package/dist/web/assets/branch-review-tab-BPx3kHrM.js.br +0 -0
- package/dist/web/assets/branch-review-tab-BPx3kHrM.js.gz +0 -0
- package/dist/web/assets/chat-tab-BadDM_j8.js +0 -1
- package/dist/web/assets/chat-tab-BadDM_j8.js.br +0 -0
- package/dist/web/assets/chat-tab-BadDM_j8.js.gz +0 -0
- package/dist/web/assets/chat-tab-IqAY4c7p.js +0 -15
- package/dist/web/assets/chat-tab-IqAY4c7p.js.br +0 -0
- package/dist/web/assets/chat-tab-IqAY4c7p.js.gz +0 -0
- package/dist/web/assets/code-editor-Dmitw9QS.js +0 -7
- package/dist/web/assets/code-editor-Dmitw9QS.js.br +0 -0
- package/dist/web/assets/code-editor-Dmitw9QS.js.gz +0 -0
- package/dist/web/assets/codex-reset-credit-button-D2hal4bG.js.br +0 -0
- package/dist/web/assets/codex-reset-credit-button-D2hal4bG.js.gz +0 -0
- package/dist/web/assets/conflict-editor-Cj_gUncw.js.br +0 -0
- package/dist/web/assets/conflict-editor-Cj_gUncw.js.gz +0 -0
- package/dist/web/assets/csv-preview-Be3ODNj0.js.br +0 -0
- package/dist/web/assets/csv-preview-Be3ODNj0.js.gz +0 -0
- package/dist/web/assets/database-viewer-B1b--4y8.js.br +0 -0
- package/dist/web/assets/database-viewer-B1b--4y8.js.gz +0 -0
- package/dist/web/assets/design-tab-8wi0IHss.js.br +0 -0
- package/dist/web/assets/design-tab-8wi0IHss.js.gz +0 -0
- package/dist/web/assets/designs-sidebar-panel-D5-1Q8zQ.js.br +0 -0
- package/dist/web/assets/designs-sidebar-panel-D5-1Q8zQ.js.gz +0 -0
- package/dist/web/assets/diff-viewer-Dcxk6UTG.js.br +0 -0
- package/dist/web/assets/diff-viewer-Dcxk6UTG.js.gz +0 -0
- package/dist/web/assets/edit-diff-preview-DxDAtYhi.js.br +0 -0
- package/dist/web/assets/editor-language-service-BVJQnTSV.js.br +0 -0
- package/dist/web/assets/editor-language-service-BVJQnTSV.js.gz +0 -0
- package/dist/web/assets/explorer-body-CTkrlrI3.js +0 -2
- package/dist/web/assets/explorer-body-CTkrlrI3.js.br +0 -0
- package/dist/web/assets/explorer-body-CTkrlrI3.js.gz +0 -0
- package/dist/web/assets/explorer-window-content-DH5AD3Ng.js.br +0 -0
- package/dist/web/assets/explorer-window-content-DH5AD3Ng.js.gz +0 -0
- package/dist/web/assets/extension-manager-section-BJr6ccWw.js.br +0 -0
- package/dist/web/assets/extension-manager-section-BJr6ccWw.js.gz +0 -0
- package/dist/web/assets/extension-webview-CYNXHd8D.js.br +0 -0
- package/dist/web/assets/extension-webview-CYNXHd8D.js.gz +0 -0
- package/dist/web/assets/files-settings-section-JX7o4lex.js.br +0 -0
- package/dist/web/assets/files-settings-section-JX7o4lex.js.gz +0 -0
- package/dist/web/assets/general-settings-section-kF94Mz5q.js.br +0 -0
- package/dist/web/assets/general-settings-section-kF94Mz5q.js.gz +0 -0
- package/dist/web/assets/git-log-panel-Crlp9ofM.js.br +0 -0
- package/dist/web/assets/git-log-panel-Crlp9ofM.js.gz +0 -0
- package/dist/web/assets/glide-data-grid-O6MO5dKU.js.br +0 -0
- package/dist/web/assets/glide-data-grid-O6MO5dKU.js.gz +0 -0
- package/dist/web/assets/group-chat-tab-DGLSGf37.js +0 -1
- package/dist/web/assets/group-chat-tab-DGLSGf37.js.br +0 -0
- package/dist/web/assets/group-chat-tab-DGLSGf37.js.gz +0 -0
- package/dist/web/assets/index-DQCw6d-2.js.br +0 -0
- package/dist/web/assets/index-DQCw6d-2.js.gz +0 -0
- package/dist/web/assets/keybindings-store-CJtEHFIQ.js +0 -1
- package/dist/web/assets/keyboard-shortcuts-section-CewWGwiF.js.br +0 -0
- package/dist/web/assets/keyboard-shortcuts-section-CewWGwiF.js.gz +0 -0
- package/dist/web/assets/language-servers-section-nricdxke.js.br +0 -0
- package/dist/web/assets/language-servers-section-nricdxke.js.gz +0 -0
- package/dist/web/assets/lsp-client-DRMEWb-z.js.br +0 -0
- package/dist/web/assets/lsp-client-DRMEWb-z.js.gz +0 -0
- package/dist/web/assets/markdown-renderer-D5-xliE9.js +0 -1
- package/dist/web/assets/markdown-renderer-Dab9Us6u.js.br +0 -0
- package/dist/web/assets/markdown-renderer-Dab9Us6u.js.gz +0 -0
- package/dist/web/assets/mobile-explorer-sheet-DtgdpvJ9.js.br +0 -0
- package/dist/web/assets/mobile-explorer-sheet-DtgdpvJ9.js.gz +0 -0
- package/dist/web/assets/new-design-dialog-Dd5KDB_p.js.br +0 -0
- package/dist/web/assets/new-design-dialog-Dd5KDB_p.js.gz +0 -0
- package/dist/web/assets/notification-store-D2vTyp_Q.js +0 -1
- package/dist/web/assets/panel-store-DrSH3Nhp.js.br +0 -0
- package/dist/web/assets/panel-store-DrSH3Nhp.js.gz +0 -0
- package/dist/web/assets/performance-panel-LMGefOQ2.js +0 -3
- package/dist/web/assets/performance-panel-LMGefOQ2.js.br +0 -0
- package/dist/web/assets/performance-panel-LMGefOQ2.js.gz +0 -0
- package/dist/web/assets/ppmbot-settings-section-D67u6gPi.js.br +0 -0
- package/dist/web/assets/ppmbot-settings-section-D67u6gPi.js.gz +0 -0
- package/dist/web/assets/problems-panel-DKgIw4uZ.js.br +0 -0
- package/dist/web/assets/problems-panel-DKgIw4uZ.js.gz +0 -0
- package/dist/web/assets/process-table-BIAgC_jG.js +0 -1
- package/dist/web/assets/process-table-BIAgC_jG.js.br +0 -0
- package/dist/web/assets/process-table-BIAgC_jG.js.gz +0 -0
- package/dist/web/assets/proxy-settings-section-CFiYcTBA.js.br +0 -0
- package/dist/web/assets/proxy-settings-section-CFiYcTBA.js.gz +0 -0
- package/dist/web/assets/query-audit-section-BybgiPsc.js.br +0 -0
- package/dist/web/assets/query-audit-section-BybgiPsc.js.gz +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-Bs3fZSRw.js.br +0 -0
- package/dist/web/assets/remote-desktop-clipboard-notice-Bs3fZSRw.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-DgxTdWMh.js +0 -2
- package/dist/web/assets/remote-desktop-mobile-sheet-DgxTdWMh.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-sheet-DgxTdWMh.js.gz +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-DgGOfPVY.js.br +0 -0
- package/dist/web/assets/remote-desktop-mobile-view-DgGOfPVY.js.gz +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-DOWryrQx.js.br +0 -0
- package/dist/web/assets/remote-desktop-readiness-gate-DOWryrQx.js.gz +0 -0
- package/dist/web/assets/remote-desktop-window-content-7t0wQsHx.js +0 -1
- package/dist/web/assets/remote-desktop-window-content-7t0wQsHx.js.br +0 -0
- package/dist/web/assets/remote-desktop-window-content-7t0wQsHx.js.gz +0 -0
- package/dist/web/assets/schedules-settings-section-DGhG-b5O.js.br +0 -0
- package/dist/web/assets/schedules-settings-section-DGhG-b5O.js.gz +0 -0
- package/dist/web/assets/send-to-chat-B09VjsB5.js.br +0 -0
- package/dist/web/assets/send-to-chat-B09VjsB5.js.gz +0 -0
- package/dist/web/assets/services-panel-0klE3O4g.js.br +0 -0
- package/dist/web/assets/services-panel-0klE3O4g.js.gz +0 -0
- package/dist/web/assets/settings-body-CfqpqFfq.js.br +0 -0
- package/dist/web/assets/settings-body-CfqpqFfq.js.gz +0 -0
- package/dist/web/assets/settings-store-3jIBB8gx.js.br +0 -0
- package/dist/web/assets/settings-store-3jIBB8gx.js.gz +0 -0
- package/dist/web/assets/sql-query-editor-ALQ5_X0j.js.br +0 -0
- package/dist/web/assets/sql-query-editor-ALQ5_X0j.js.gz +0 -0
- package/dist/web/assets/sqlite-viewer-DKTty_jR.js.br +0 -0
- package/dist/web/assets/sqlite-viewer-DKTty_jR.js.gz +0 -0
- package/dist/web/assets/system-monitor-body-D6J6lq7-.js.br +0 -0
- package/dist/web/assets/system-monitor-body-D6J6lq7-.js.gz +0 -0
- package/dist/web/assets/system-monitor-tab-Di18zNNS.js +0 -1
- package/dist/web/assets/tab-host-window-content-DTcx2D0O.js.br +0 -0
- package/dist/web/assets/tab-host-window-content-DTcx2D0O.js.gz +0 -0
- package/dist/web/assets/team-member-sheet-CFSbPG6n.js +0 -2
- package/dist/web/assets/team-member-sheet-CFSbPG6n.js.br +0 -0
- package/dist/web/assets/team-member-sheet-CFSbPG6n.js.gz +0 -0
- package/dist/web/assets/team-member-window-content-VeI6DGeM.js +0 -1
- package/dist/web/assets/team-member-window-content-VeI6DGeM.js.br +0 -0
- package/dist/web/assets/team-member-window-content-VeI6DGeM.js.gz +0 -0
- package/dist/web/assets/terminal-tab-DgTfQKBI.js.br +0 -0
- package/dist/web/assets/terminal-tab-DgTfQKBI.js.gz +0 -0
- package/dist/web/assets/tool-cards-_fpYI1hB.js +0 -9
- package/dist/web/assets/tool-cards-_fpYI1hB.js.br +0 -0
- package/dist/web/assets/tool-cards-_fpYI1hB.js.gz +0 -0
- package/dist/web/assets/use-inline-blame-Dv111BKY.js.br +0 -0
- package/dist/web/assets/use-inline-blame-Dv111BKY.js.gz +0 -0
- package/dist/web/assets/use-lsp-CZTFJIXX.js.br +0 -0
- package/dist/web/assets/use-lsp-CZTFJIXX.js.gz +0 -0
- package/dist/web/assets/use-open-team-member-ElN3KmCI.js +0 -1
- package/dist/web/assets/use-process-kill-D7D9QvJG.js.br +0 -0
- package/dist/web/assets/use-process-kill-D7D9QvJG.js.gz +0 -0
- package/dist/web/assets/video-preview-DzwY3q9W.js.br +0 -0
- package/dist/web/assets/video-preview-DzwY3q9W.js.gz +0 -0
- package/dist/web/assets/voice-settings-section-B7zMHsuz.js.br +0 -0
- package/dist/web/assets/voice-settings-section-B7zMHsuz.js.gz +0 -0
- package/dist/web/assets/window-store-B4cbZ5rr.js +0 -1
- package/dist/web/assets/window-store-B4cbZ5rr.js.br +0 -0
- package/dist/web/assets/window-store-B4cbZ5rr.js.gz +0 -0
- package/src/web/components/chat/team-member-window-content.tsx +0 -66
- package/src/web/components/chat/team-working-bar.tsx +0 -62
- package/src/web/components/chat/use-open-team-member.ts +0 -41
- package/src/web/hooks/use-member-transcript-tail.ts +0 -95
- /package/dist/web/assets/{api-settings-BeINN5Dy.js → api-settings-BWgfXl7o.js} +0 -0
- /package/dist/web/assets/{api-settings-BeINN5Dy.js.br → api-settings-BWgfXl7o.js.br} +0 -0
- /package/dist/web/assets/{api-settings-BeINN5Dy.js.gz → api-settings-BWgfXl7o.js.gz} +0 -0
- /package/dist/web/assets/{libesm-CxeQSM3t.js → libesm-DAF5_F99.js} +0 -0
- /package/dist/web/assets/{libesm-CxeQSM3t.js.br → libesm-DAF5_F99.js.br} +0 -0
- /package/dist/web/assets/{libesm-CxeQSM3t.js.gz → libesm-DAF5_F99.js.gz} +0 -0
- /package/dist/web/assets/{onboarding-entry-DD3QSDiz.js → onboarding-entry-Bh-WE3vq.js} +0 -0
- /package/dist/web/assets/{onboarding-entry-DD3QSDiz.js.br → onboarding-entry-Bh-WE3vq.js.br} +0 -0
- /package/dist/web/assets/{onboarding-entry-DD3QSDiz.js.gz → onboarding-entry-Bh-WE3vq.js.gz} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{Jr as r,O as i,j as a,ur as o}from"./icons-CO_II6D-.js";import{O as s,a as c,r as l}from"./api-client-F5Zi1sR0.js";import{n as u}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import"./context-menu-CH1mvCwA.js";import{n as d}from"./use-is-mobile-CkO33jqU.js";import"./button-CsmGH5xa.js";import{a as f,n as p,o as m,t as h}from"./dialog-z8PLkL8n.js";import{t as g}from"./mobile-bottom-sheet-CLic9ovp.js";import"./use-visual-viewport-C307OVeV.js";import{an as _,dn as v,fn as y,hn as ee,mn as b,on as x,pn as S,sn as C,un as w}from"./index-DQCw6d-2.js";import{r as T}from"./format-bytes-DZ8bW_uF.js";import{a as E,i as D,n as O,o as k,r as A,s as j,t as M}from"./process-row-format-Dbs_tAZ2.js";import{r as N,t as P}from"./use-process-kill-D7D9QvJG.js";import{n as te,r as ne,t as F}from"./sortable-header-IH47XuRI.js";var I=e(t(),1),L=[`swap`,`disk`,`gpu`,`net`],R={cpu:64,ram:80,swap:80,disk:120,gpu:90,net:120},z=`minmax(0,1fr)`,B=`44px`;function V(e){return e===`swap`||e===`disk`||e===`gpu`||e===`net`}function H(e){return Math.round(Math.min(400,Math.max(48,e)))}function U(e,t){let n=t[e];return typeof n==`number`&&Number.isFinite(n)?H(n):R[e]}function re(e,t,n={}){let r=L.filter(t=>e[t]),i=V(t)&&e[t]?t:null,a=e=>`${U(e,n)}px`,o=[z,a(`cpu`),a(`ram`)];return{wideTemplate:[...o,...r.map(a),B].join(` `),narrowTemplate:[...o,...i?[a(i)]:[],B].join(` `),columns:e,narrowExtra:i}}var W=`grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`;function G(e){return{"--sysmon-grid-n":e.narrowTemplate,"--sysmon-grid-w":e.wideTemplate}}function K(e,t){return e.narrowExtra===t?`block`:`hidden @lg:block`}var q=n(),J=150;function Y({mode:e,onModeChange:t,ppmOnly:n,onPpmOnlyChange:r,onQueryChange:i}){let[a,s]=(0,I.useState)(``),c=(0,I.useRef)(null);return(0,I.useEffect)(()=>(c.current&&clearTimeout(c.current),c.current=setTimeout(()=>i(a),J),()=>{c.current&&clearTimeout(c.current)}),[a]),(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 p-2 border-b border-border shrink-0`,children:[(0,q.jsxs)(`div`,{className:`relative flex-1 min-w-[140px]`,children:[(0,q.jsx)(o,{className:`absolute left-2 top-1/2 -translate-y-1/2 size-3.5 text-text-subtle`}),(0,q.jsx)(`input`,{type:`text`,value:a,onChange:e=>s(e.target.value),placeholder:`Search processes`,"aria-label":`Search processes`,"data-testid":`sysmon-process-search`,className:`w-full min-h-11 md:min-h-8 pl-7 pr-2 text-sm rounded-md border border-border bg-transparent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`})]}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>t(e===`grouped`?`flat`:`grouped`),"aria-pressed":e===`flat`,"data-testid":`sysmon-toggle-flat`,className:`min-h-11 md:min-h-8 px-3 text-xs rounded-md border border-border hover:bg-surface-hover transition-colors`,children:e===`flat`?`Flat`:`Grouped`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>r(!n),"aria-pressed":n,"data-testid":`sysmon-filter-ppm`,className:u(`min-h-11 md:min-h-8 px-3 text-xs rounded-md border transition-colors`,n?`border-primary bg-primary/10 text-primary`:`border-border hover:bg-surface-hover`),children:`PPM only`})]})}function ie({sortKey:e,sortDir:t,grid:n,onSort:r,resize:i}){let a={activeKey:e,activeDir:t,onClick:r,resize:i};return(0,q.jsxs)(`div`,{role:`row`,className:u(`grid gap-1 px-3 py-1.5 text-[11px] text-text-subtle border-b border-border sticky top-0 bg-background z-10`,W),children:[(0,q.jsx)(F,{label:`Process`,field:`name`,...a,resize:void 0,align:`left`,testId:`sysmon-sort-name`}),(0,q.jsx)(F,{label:`CPU`,field:`cpu`,...a,resizeKey:`cpu`,testId:`sysmon-sort-cpu`}),(0,q.jsx)(F,{label:`RAM`,field:`ram`,...a,resizeKey:`ram`,testId:`sysmon-sort-ram`}),n.columns.swap&&(0,q.jsx)(F,{label:`Swap`,field:`swap`,...a,resizeKey:`swap`,testId:`sysmon-col-swap`,className:K(n,`swap`)}),n.columns.disk&&(0,q.jsx)(F,{label:`Disk`,field:`disk`,...a,resizeKey:`disk`,testId:`sysmon-col-disk`,className:K(n,`disk`)}),n.columns.gpu&&(0,q.jsx)(F,{label:`GPU`,field:`gpu`,...a,resizeKey:`gpu`,testId:`sysmon-col-gpu`,className:K(n,`gpu`)}),n.columns.net&&(0,q.jsx)(F,{label:`Net`,field:`net`,...a,resizeKey:`net`,testId:`sysmon-col-net`,className:K(n,`net`)}),(0,q.jsx)(`span`,{})]})}function ae({totals:e,grid:t,gpuUtilPercent:n}){return(0,q.jsxs)(`div`,{className:u(`grid gap-1 px-3 py-1.5 text-xs font-medium border-t border-border shrink-0`,W),"data-testid":`sysmon-total`,"data-process-count":e.count,children:[(0,q.jsxs)(`span`,{className:`truncate`,children:[`Total (`,e.count,` processes)`]}),(0,q.jsxs)(`span`,{className:u(`text-right`,M(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:T(e.ramMB)}),t.columns.swap&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(t,`swap`)),children:k(e.swapMB)}),t.columns.disk&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(t,`disk`)),children:A(e.diskReadBps,e.diskWriteBps)}),t.columns.gpu&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(t,`gpu`)),children:D(n,e.gpuMemMB)}),t.columns.net&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(t,`net`)),children:E(e.netInBps,e.netOutBps)}),(0,q.jsx)(`span`,{})]})}var oe=`Protected: this app contains a PPM or OS-critical process — cannot be ended as a whole.`;function se({group:e,expanded:t,grid:n,killProtected:o,onToggle:s,onKillClick:c}){let l=t?i:a;return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs cursor-pointer hover:bg-surface-hover transition-colors group/proc grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,onClick:()=>s(e.key),"data-testid":`sysmon-group-row`,"data-group-key":e.key,"data-count":e.count,"data-disk-bps":j(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":j(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 min-w-0`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),s(e.key)},"aria-expanded":t,"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,"data-testid":`sysmon-group-expand`,className:`flex items-center justify-center size-11 md:size-7 -ml-2 shrink-0`,children:(0,q.jsx)(l,{className:`size-3.5 text-text-subtle`})}),(0,q.jsx)(`span`,{className:`truncate font-medium`,children:e.label}),(0,q.jsxs)(`span`,{className:`text-text-subtle shrink-0`,children:[`(`,e.count,`)`]})]}),(0,q.jsxs)(`span`,{className:u(`text-right`,M(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:T(e.ramMB)}),n.columns.swap&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`swap`)),children:k(e.swapMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`disk`)),children:A(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`gpu`)),children:D(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`net`)),children:E(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),c(e)},disabled:o,"aria-label":`End ${e.label} and its ${e.count} processes`,title:o?oe:`End ${e.label} (${e.count} processes)`,"data-testid":`sysmon-group-kill-btn`,className:u(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,o?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(r,{className:`size-3.5`})})})]})}var ce=`Protected: PPM or OS-critical process — cannot be ended.`;function le({proc:e,indent:t,grid:n,onKillClick:i}){return(0,q.jsxs)(`div`,{className:`grid items-center gap-1 min-h-11 md:min-h-7 px-3 text-xs group/proc hover:bg-surface-hover transition-colors grid-cols-[var(--sysmon-grid-n)] @lg:grid-cols-[var(--sysmon-grid-w)]`,"data-testid":`sysmon-process-row`,"data-pid":e.pid,"data-ppm":e.ppm,"data-protected":e.protected,"data-swap-mb":e.swapMB,"data-disk-bps":j(e.diskReadBps,e.diskWriteBps),"data-gpu-pct":e.gpuPct,"data-net-bps":j(e.netInBps,e.netOutBps),children:[(0,q.jsxs)(`div`,{className:u(`flex items-start gap-1.5 min-w-0`,t&&`pl-6`),children:[(0,q.jsx)(`span`,{className:`text-text-subtle shrink-0`,children:e.pid}),(0,q.jsx)(`span`,{className:`truncate text-text-secondary`,title:e.startedAt?`${e.command}\nRunning ${O(e.startedAt)}`:e.command,children:e.command})]}),(0,q.jsxs)(`span`,{className:u(`text-right`,M(e.cpu)),children:[e.cpu.toFixed(1),`%`]}),(0,q.jsx)(`span`,{className:`text-right text-text-secondary`,children:T(e.ramMB)}),n.columns.swap&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`swap`)),children:k(e.swapMB)}),n.columns.disk&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`disk`)),children:A(e.diskReadBps,e.diskWriteBps)}),n.columns.gpu&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`gpu`)),children:D(e.gpuPct,e.gpuMemMB)}),n.columns.net&&(0,q.jsx)(`span`,{className:u(`text-right text-text-secondary tabular-nums truncate`,K(n,`net`)),children:E(e.netInBps,e.netOutBps)}),(0,q.jsx)(`div`,{className:`flex justify-end`,children:(0,q.jsx)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(e)},disabled:e.protected,"aria-label":`End process ${e.name} (${e.pid})`,title:e.protected?ce:`End process ${e.name}`,"data-testid":`sysmon-kill-btn`,className:u(`flex items-center justify-center size-11 md:size-7 rounded transition-all`,`can-hover:opacity-0 can-hover:group-hover/proc:opacity-100`,e.protected?`opacity-40 cursor-not-allowed`:`hover:bg-error/20 hover:text-error active:bg-error/30`),children:(0,q.jsx)(r,{className:`size-3.5`})})})]})}var ue={STOP:`Suspend (SIGSTOP)`,CONT:`Continue (SIGCONT)`,TERM:`Terminate (SIGTERM)`,KILL:`Kill (SIGKILL)`,HUP:`Hang up (SIGHUP)`,INT:`Interrupt (SIGINT)`,USR1:`User signal 1`,USR2:`User signal 2`},de=[`KILL`,`STOP`];async function fe(e){let t=c(),n={"Content-Type":`application/json`,"X-PPM-Request":`1`};t&&(n.Authorization=`Bearer ${t}`);let r=await fetch(`/api/system/resources/signal`,{method:`POST`,headers:n,body:JSON.stringify(e)}),i;try{i=await r.json()}catch{throw Error(r.ok?`Empty response from server`:`Server error (HTTP ${r.status})`)}if(i.ok===!1)throw Error(i.error??`HTTP ${r.status}`);return i.data}function pe(e,t,n){return{pid:e.pid,startedAt:e.startedAt,signal:t,tree:n}}function me(){let[e,t]=(0,I.useState)(null);return{send:(0,I.useCallback)(async(e,n,r=!1)=>{t(e.pid);try{let t=(await fe(pe(e,n,r))).signalled.length;s.success(t>1?`Sent SIG${n} to ${e.name} and ${t-1} child processes`:`Sent SIG${n} to ${e.name} (${e.pid})`)}catch(t){s.error(t instanceof Error?t.message:`Could not signal ${e.name}`)}finally{t(null)}},[]),pending:e}}function he({proc:e,signals:t,onDetails:n,onKill:r,onSignal:i,children:a}){return(0,q.jsxs)(_,{children:[(0,q.jsx)(b,{asChild:!0,children:(0,q.jsx)(`div`,{className:`select-none`,children:a})}),(0,q.jsxs)(x,{children:[(0,q.jsx)(C,{onSelect:()=>n(e),children:`Details…`}),t.length>0&&(0,q.jsxs)(v,{children:[(0,q.jsx)(S,{children:`Send signal`}),(0,q.jsx)(y,{children:t.map(t=>(0,q.jsx)(C,{variant:de.includes(t)?`destructive`:void 0,disabled:e.protected,onSelect:()=>{e.protected||i(e,t,!1)},children:ue[t]},t))})]}),(0,q.jsx)(w,{}),(0,q.jsx)(C,{variant:`destructive`,disabled:e.protected,onSelect:()=>{e.protected||r(e)},children:`End process`}),e.protected&&(0,q.jsx)(`p`,{className:`px-2 py-1.5 text-[11px] text-text-subtle max-w-64`,children:`PPM or OS-critical process — it cannot be ended or signalled.`})]})]})}function ge(e){return e>0?new Date(e).toLocaleString():`—`}function _e({pid:e,name:t,onClose:n}){let r=d(),[i,a]=(0,I.useState)(null),[o,s]=(0,I.useState)(null);if((0,I.useEffect)(()=>{if(e===null){a(null),s(null);return}let t=!0;return a(null),s(null),l.get(`/api/system/resources/process/${e}`).then(e=>{t&&a(e)}).catch(e=>{t&&s(e instanceof Error?e.message:`Could not read the process`)}),()=>{t=!1}},[e]),e===null)return null;let c=(0,q.jsxs)(`div`,{className:`space-y-3`,"data-testid":`sysmon-process-details`,"data-pid":e,children:[o&&(0,q.jsx)(`p`,{className:`text-sm text-error`,children:o}),!o&&i===null&&(0,q.jsx)(`p`,{className:`text-sm text-text-subtle`,children:`Reading /proc…`}),i&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`dl`,{className:`grid grid-cols-2 gap-x-4 gap-y-2 text-xs`,children:[(0,q.jsx)(X,{label:`PID`,value:i.pid}),(0,q.jsx)(X,{label:`Parent PID`,value:i.ppid}),(0,q.jsx)(X,{label:`User`,value:i.user}),(0,q.jsx)(X,{label:`State`,value:i.state}),(0,q.jsx)(X,{label:`Threads`,value:i.threads}),(0,q.jsx)(X,{label:`Nice`,value:i.nice}),(0,q.jsx)(X,{label:`Started`,value:ge(i.startedAt)}),(0,q.jsx)(X,{label:`Control group`,value:i.cgroup})]}),(0,q.jsx)(Z,{label:`Executable`,value:i.exe}),(0,q.jsx)(Z,{label:`Working directory`,value:i.cwd}),(0,q.jsx)(Z,{label:`Command line`,value:i.command,mono:!0})]})]});return r?(0,q.jsx)(g,{open:!0,onClose:n,children:(0,q.jsxs)(`div`,{className:`px-4 pb-4 space-y-3`,children:[(0,q.jsx)(`h2`,{className:`text-base font-semibold break-all`,children:t}),c]})}):(0,q.jsx)(h,{open:!0,onOpenChange:e=>!e&&n(),children:(0,q.jsxs)(p,{className:`sm:max-w-xl`,children:[(0,q.jsx)(f,{children:(0,q.jsx)(m,{className:`break-all`,children:t})}),c]})})}function X({label:e,value:t}){let n=t===null||t===``?`—`:String(t);return(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`dt`,{className:`text-text-subtle`,children:e}),(0,q.jsx)(`dd`,{className:`truncate`,title:n,children:n})]})}function Z({label:e,value:t,mono:n}){return(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(`p`,{className:`text-[11px] text-text-subtle`,children:e}),(0,q.jsx)(`p`,{className:`text-xs break-all ${n?`font-mono`:``}`,children:t??`—`})]})}var Q=`ppm-sysmon-col-widths`;function ve(){try{let e=localStorage.getItem(Q);if(!e)return{};let t=JSON.parse(e),n={};for(let e of[`cpu`,`ram`,`disk`,`gpu`,`net`]){let r=t[e];typeof r==`number`&&Number.isFinite(r)&&(n[e]=H(r))}return n}catch{return{}}}function $(e){try{Object.keys(e).length===0?localStorage.removeItem(Q):localStorage.setItem(Q,JSON.stringify(e))}catch{}}function ye(){let[e,t]=(0,I.useState)(()=>typeof localStorage>`u`?{}:ve()),n=(0,I.useRef)(null);return(0,I.useEffect)(()=>{let e=e=>{let r=n.current;if(!r)return;let i=H(r.startWidth+(e.clientX-r.startX));t(e=>e[r.key]===i?e:{...e,[r.key]:i})},r=()=>{n.current&&(n.current=null,document.body.style.cursor=``,t(e=>($(e),e)))};return window.addEventListener(`pointermove`,e),window.addEventListener(`pointerup`,r),window.addEventListener(`pointercancel`,r),()=>{window.removeEventListener(`pointermove`,e),window.removeEventListener(`pointerup`,r),window.removeEventListener(`pointercancel`,r)}},[]),{widths:e,begin:(0,I.useCallback)((t,r)=>{r.preventDefault(),n.current={key:t,startX:r.clientX,startWidth:U(t,e)},document.body.style.cursor=`col-resize`},[e]),reset:(0,I.useCallback)(e=>{t(t=>{if(!(e in t))return t;let{[e]:n,...r}=t;return $(r),r})},[])}}var be={disk:!1,gpu:!1,net:!1};function xe({snapshot:e}){let t=d(),n=(0,I.useRef)(null),[r,i]=(0,I.useState)(`grouped`),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(``),[l,u]=(0,I.useState)(null),[f,p]=(0,I.useState)(`desc`),[m,h]=(0,I.useState)(()=>new Set),{pendingKill:g,groupProtected:_,requestKillProcess:v,requestKillGroup:y,confirmKill:b,cancelKill:x}=P(e),{send:S}=me(),[C,w]=(0,I.useState)(null),T=e.signals??[],{widths:E,begin:D,reset:O}=ye(),{rows:k,totals:A}=(0,I.useMemo)(()=>te({processes:e.processes,groups:e.groups,mode:r,ppmOnly:a,query:s,sortKey:l,sortDir:f,expanded:m}),[e.processes,e.groups,r,a,s,l,f,m]),j=e.processColumns??be,M=(0,I.useMemo)(()=>re(j,l,E),[j,l,E]),F=e.system.gpus[0]?.utilPercent,L=ee({count:k.length,getScrollElement:()=>n.current,estimateSize:()=>t?44:28,overscan:12}),R=(0,I.useCallback)(e=>{let[t,n]=ne(l,f,e);u(t),p(n)},[l,f]),z=(0,I.useCallback)(e=>{h(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]);return(0,q.jsxs)(`div`,{className:`h-full flex flex-col min-h-0 @container`,style:G(M),"data-testid":`sysmon-processes`,"data-row-count":k.length,children:[(0,q.jsx)(Y,{mode:r,onModeChange:i,ppmOnly:a,onPpmOnlyChange:o,onQueryChange:c}),(0,q.jsx)(ie,{sortKey:l,sortDir:f,grid:M,onSort:R,resize:{onResizeStart:D,onResizeReset:O}}),(0,q.jsx)(`div`,{ref:n,className:`flex-1 min-h-0 overflow-y-auto`,children:(0,q.jsx)(`div`,{style:{height:L.getTotalSize(),position:`relative`},children:L.getVirtualItems().map(e=>{let t=k[e.index];return t?(0,q.jsx)(`div`,{style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${e.start}px)`},children:t.kind===`group`?(0,q.jsx)(se,{group:t.group,expanded:t.expanded,grid:M,killProtected:_.get(t.group.key)??!0,onToggle:z,onKillClick:y}):(0,q.jsx)(he,{proc:t.proc,signals:T,onDetails:w,onKill:v,onSignal:(e,t,n)=>void S(e,t,n),children:(0,q.jsx)(le,{proc:t.proc,indent:t.indent,grid:M,onKillClick:v})})},t.kind===`group`?t.group.key:`p:${t.proc.pid}`):null})})}),(0,q.jsx)(ae,{totals:A,grid:M,gpuUtilPercent:F}),(0,q.jsx)(N,{target:g,onConfirm:b,onCancel:x}),(0,q.jsx)(_e,{pid:C?.pid??null,name:C?.name??``,onClose:()=>w(null)})]})}export{xe as ProcessTable};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/remote-desktop-mobile-view-DgGOfPVY.js","assets/rolldown-runtime-C5c2KzVm.js","assets/index-DQCw6d-2.js","assets/preload-helper-BEFjQwLd.js","assets/vendor-ui-P9Ym7hCv.js","assets/vendor-markdown-QKPNiWEd.js","assets/button-CsmGH5xa.js","assets/utils-btZ8C8-R.js","assets/createLucideIcon-DBXq3G0e.js","assets/api-client-F5Zi1sR0.js","assets/react-CzUPVyyG.js","assets/panel-store-DrSH3Nhp.js","assets/window-store-B4cbZ5rr.js","assets/project-store-CCimwgGF.js","assets/settings-store-3jIBB8gx.js","assets/file-store-DCU7_YyB.js","assets/window-pip-registry-dxrBFfkP.js","assets/onboarding-quick-orientation-WLKI95GY.js","assets/dialog-z8PLkL8n.js","assets/portal-container-context-NFSuymMu.js","assets/icons-CO_II6D-.js","assets/use-is-mobile-CkO33jqU.js","assets/format-file-meta-B0ZpqzSM.js","assets/fs-api-vF_bQoeL.js","assets/context-menu-CH1mvCwA.js","assets/input-CP31LZnN.js","assets/mobile-bottom-sheet-CLic9ovp.js","assets/use-visual-viewport-C307OVeV.js","assets/scroll-area-Dp-P38kg.js","assets/chat-preparation-cache-DoS7sdal.js","assets/file-icons-Ed_yLyef.js","assets/format-date-Fd9tpNaw.js","assets/git-repo-store-CdoOpvmf.js","assets/ws-auth-J3hw0Mhc.js","assets/tab-store-CUPgQIQz.js","assets/apply-theme-aVoqSG0I.js","assets/resolve-theme-B87m6l4i.js","assets/index-BmsPSBtF.css","assets/remote-desktop-clipboard-notice-Bs3fZSRw.js","assets/run-in-terminal-Cdn9PaAl.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{_t as r}from"./vendor-ui-P9Ym7hCv.js";import"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import"./settings-store-3jIBB8gx.js";import{t as i}from"./preload-helper-BEFjQwLd.js";import{n as a}from"./portal-container-context-NFSuymMu.js";import"./panel-store-DrSH3Nhp.js";import"./window-store-B4cbZ5rr.js";import"./project-store-CCimwgGF.js";import{Q as o}from"./index-DQCw6d-2.js";import"./run-in-terminal-Cdn9PaAl.js";import{n as s,t as c}from"./remote-desktop-readiness-gate-DOWryrQx.js";var l=e(t(),1),u=e(r(),1),d=n(),f=(0,l.lazy)(()=>i(()=>import(`./remote-desktop-mobile-view-DgGOfPVY.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39])));function p(){let e=o(e=>e.isOpen),t=o(e=>e.close),n=a();return e?(0,u.createPortal)((0,d.jsx)(`div`,{className:`fixed inset-0 z-[45] bg-black`,"data-testid":`remote-desktop-mobile-sheet`,children:(0,d.jsx)(s,{onCancel:t,children:(0,d.jsx)(c,{onCancel:t,children:(0,d.jsx)(l.Suspense,{fallback:(0,d.jsx)(`div`,{className:`flex h-full items-center justify-center text-sm text-text-2`,children:`Loading…`}),children:(0,d.jsx)(f,{onClose:t})})})})}),n??document.getElementById(`root`)??document.body):null}export{p as RemoteDesktopMobileSheet};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{En as r,Gt as i,Nt as a,On as o,Tn as s,Zn as c,or as l,pr as u,ut as d,xr as f,z as p}from"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import{C as m,a as h,c as g,d as _,f as v,i as y,l as b,m as x,n as S,o as ee,p as C,r as te,s as w,t as T,u as ne,w as re}from"./settings-store-3jIBB8gx.js";import{n as ie}from"./utils-btZ8C8-R.js";import"./portal-container-context-NFSuymMu.js";import"./panel-store-DrSH3Nhp.js";import{t as ae}from"./window-store-B4cbZ5rr.js";import"./project-store-CCimwgGF.js";import{t as oe}from"./button-CsmGH5xa.js";import{a as se,i as E,n as D,o as O,r as k,t as A}from"./dialog-z8PLkL8n.js";import"./ws-auth-J3hw0Mhc.js";import{Cn as j,Dn as M,En as N,On as P,Sn as F,Tn as I,Z as ce,_n as L,bn as R,vn as z,wn as B,xn as V,yn as H}from"./index-DQCw6d-2.js";import"./run-in-terminal-Cdn9PaAl.js";import{n as U,t as W}from"./remote-desktop-readiness-gate-DOWryrQx.js";import{a as G,c as le,h as K,i as ue,l as de,m as q,n as fe,o as J,p as pe,r as me,s as he,t as ge,u as Y}from"./remote-desktop-clipboard-notice-Bs3fZSRw.js";var X=e(t(),1);function Z(e,t,n,r){let i=(0,X.useCallback)((n,r,i,a)=>{let o=e.current;if(!o)return;let{xFrac:s,yFrac:c}=Y(n,r,o.getBoundingClientRect());t({type:`pointer`,xFrac:s,yFrac:c,button:i,down:a})},[e,t]);(0,X.useEffect)(()=>{let a=e.current;if(!a||!n)return;let o=e=>e===0?`left`:e===2?`right`:null,s=()=>t({type:`releaseAll`}),c=null,l=0,u=()=>{l=0,c&&=(i(c.x,c.y,null,null),null)},d=()=>{l&&=(cancelAnimationFrame(l),0),c&&=(i(c.x,c.y,null,null),null)},f=e=>{e.preventDefault(),a.setPointerCapture(e.pointerId),a.focus(),d(),i(e.clientX,e.clientY,o(e.button),!0)},p=e=>{c={x:e.clientX,y:e.clientY},l||=requestAnimationFrame(u)},m=e=>{d(),i(e.clientX,e.clientY,o(e.button),!1)},h=e=>e.preventDefault(),g=!1,_=e=>{if(r&&K(e)){g=e.shiftKey;return}e.preventDefault(),t({type:`key`,code:e.code,down:!0}),r&&q(e)&&r.onCopyCombo()},v=e=>{r&&K(e)||(e.preventDefault(),t({type:`key`,code:e.code,down:!1}))},y=e=>{e.preventDefault();let t=e.clipboardData?.getData(`text/plain`);t&&r?.onPasteText(t,g),g=!1},b=()=>{document.hidden&&s()};return a.tabIndex=0,a.addEventListener(`pointerdown`,f),a.addEventListener(`pointermove`,p),a.addEventListener(`pointerup`,m),a.addEventListener(`contextmenu`,h),a.addEventListener(`keydown`,_),a.addEventListener(`keyup`,v),a.addEventListener(`paste`,y),a.addEventListener(`blur`,s),document.addEventListener(`visibilitychange`,b),()=>{l&&cancelAnimationFrame(l),a.removeEventListener(`pointerdown`,f),a.removeEventListener(`pointermove`,p),a.removeEventListener(`pointerup`,m),a.removeEventListener(`contextmenu`,h),a.removeEventListener(`keydown`,_),a.removeEventListener(`keyup`,v),a.removeEventListener(`blur`,s),document.removeEventListener(`visibilitychange`,b)}},[e,n,i,t,r])}var Q={h264_nvenc:`NVIDIA NVENC`,h264_qsv:`Intel QuickSync`,h264_vaapi:`VAAPI (GPU)`,h264_amf:`AMD AMF`,h264_videotoolbox:`Apple VideoToolbox`,libx264:`Software (x264)`};function _e(e){return Object.hasOwn(Q,e)?Q[e]:e}var $=n(),ve=`flex size-7 shrink-0 items-center justify-center rounded bg-black/40 text-white/70 outline-none hover:bg-black/60 hover:text-white data-[state=open]:bg-black/70 data-[state=open]:text-white`;function ye({displays:e,currentDisplayId:t,onSelectDisplay:n,quality:o,qualityChoice:s,onSetQuality:c,onOpenCustomQuality:l,codecs:h,codec:g,onSetCodec:_,hostModes:v,hostModeId:b,hostOriginalModeId:x,onSetHostMode:S,canResizeHost:ee,resolutionError:C,viewStyle:w,customScale:T,onSetViewStyle:ne,onSetCustomScale:ae,showCursor:oe,onSetShowCursor:se,audioOn:E,audioReason:D,onSetAudioOn:O,privacyOn:k,privacyReason:A,privacyCanBlank:ce,onSetPrivacyOn:U,recording:W,recordingElapsedSec:G,recordingSupported:K,onToggleRecording:ue,onScreenshot:q,clipboardEnabled:fe,onSetClipboardEnabled:pe,statsVisible:me,onToggleStats:ge}){let Y=(0,X.useMemo)(()=>le(v),[v]),Z=(0,X.useMemo)(()=>he(),[]),Q=(0,X.useMemo)(()=>J(v,Z,b),[v,Z,b]),ye=!!(x&&x!==b),Se=t??e.find(e=>e.primary)?.id??e[0]?.id??``;return(0,$.jsxs)(`div`,{className:`absolute right-1 top-1 z-40 flex items-center gap-1`,"data-testid":`remote-desktop-toolbar`,children:[e.length>1&&(0,$.jsxs)(L,{children:[(0,$.jsx)(P,{className:ve,"aria-label":`Display`,title:`Display`,children:(0,$.jsx)(r,{className:`size-3.5`})}),(0,$.jsxs)(H,{align:`end`,className:`w-64`,children:[(0,$.jsx)(V,{children:`Display`}),(0,$.jsx)(F,{value:Se,onValueChange:n,children:e.map(e=>(0,$.jsxs)(j,{value:e.id,"data-testid":`remote-desktop-display-${e.id}`,children:[e.label,e.primary?` (main)`:``,` · `,e.width,`×`,e.height]},e.id))})]})]}),(0,$.jsxs)(L,{children:[(0,$.jsx)(P,{className:ve,"aria-label":`Display settings`,title:`Display settings`,"data-testid":`remote-desktop-settings-trigger`,children:(0,$.jsx)(u,{className:`size-3.5`})}),(0,$.jsxs)(H,{align:`end`,className:`w-64`,children:[(0,$.jsx)(V,{children:`Scale`}),(0,$.jsx)(F,{value:w,onValueChange:e=>ne(e),children:y.map(e=>(0,$.jsx)(j,{value:e,"data-testid":`remote-desktop-view-style-${e}`,children:te[e]},e))}),w===`custom`&&(0,$.jsx)(xe,{scale:T,onSet:ae}),(0,$.jsx)(B,{}),(0,$.jsxs)(I,{children:[(0,$.jsxs)(M,{"data-testid":`remote-desktop-quality-submenu`,children:[`Image quality`,o.held<1&&(0,$.jsxs)(`span`,{className:`ml-1.5 text-[10px] opacity-60`,"data-testid":`remote-desktop-quality-held`,children:[Math.round(o.held*100),`% — link limited`]})]}),(0,$.jsx)(N,{className:`w-56`,children:(0,$.jsxs)(F,{value:s,onValueChange:e=>e===`custom`?l():c(e),children:[re.map(e=>(0,$.jsx)(j,{value:e,"data-testid":`remote-desktop-quality-${e}`,children:m[e].label},e)),(0,$.jsx)(j,{value:`custom`,"data-testid":`remote-desktop-quality-custom`,children:`Custom…`})]})})]}),h.length>1&&(0,$.jsxs)(I,{children:[(0,$.jsx)(M,{"data-testid":`remote-desktop-codec-submenu`,children:`Codec`}),(0,$.jsx)(N,{className:`w-56`,children:(0,$.jsxs)(F,{value:g??`auto`,onValueChange:e=>_(e===`auto`?null:e),children:[(0,$.jsxs)(j,{value:`auto`,children:[`Auto · `,_e(h[0])]}),h.map(e=>(0,$.jsx)(j,{value:e,"data-testid":`remote-desktop-codec-${e}`,children:_e(e)},e))]})})]}),ee&&Y.length>1&&(0,$.jsxs)(I,{children:[(0,$.jsx)(M,{"data-testid":`remote-desktop-resolution-submenu`,children:`Resolution`}),(0,$.jsxs)(N,{className:`max-h-80 w-56 overflow-y-auto`,children:[ye&&x&&(0,$.jsx)(R,{onSelect:()=>S(x),"data-testid":`remote-desktop-resolution-original`,children:`Original`}),Q&&(0,$.jsxs)(R,{onSelect:()=>S(Q.id),"data-testid":`remote-desktop-resolution-fit-local`,children:[`Fit local `,Q.width,`×`,Q.height]}),(ye||Q)&&(0,$.jsx)(B,{}),(0,$.jsx)(F,{value:b??Y.find(e=>e.current)?.id??``,onValueChange:S,children:Y.map(e=>(0,$.jsxs)(j,{value:e.id,"data-testid":`remote-desktop-resolution-${e.width}x${e.height}`,children:[de(e),e.preferred&&(0,$.jsx)(`span`,{className:`ml-1.5 text-[10px] opacity-60`,children:`native`})]},e.id))}),C&&(0,$.jsx)(`div`,{className:`px-2 py-1.5 text-[10px] leading-tight text-destructive`,children:C})]})]}),(0,$.jsx)(B,{}),(0,$.jsx)(z,{checked:oe,onCheckedChange:se,"data-testid":`remote-desktop-show-cursor`,children:`Show remote cursor`}),(0,$.jsx)(z,{checked:fe,onCheckedChange:pe,"data-testid":`remote-desktop-clipboard-toggle`,children:`Sync clipboard`}),(0,$.jsx)(z,{checked:E,disabled:D!==null,onCheckedChange:O,"data-testid":`remote-desktop-audio-toggle`,children:(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{children:`Play host audio`}),D&&(0,$.jsx)(`span`,{className:`text-[10px] leading-tight text-muted-foreground`,children:D})]})}),(0,$.jsx)(B,{}),(0,$.jsx)(z,{checked:k,disabled:A!==null&&!k,onCheckedChange:U,"data-testid":`remote-desktop-privacy-toggle`,children:(0,$.jsxs)(`span`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsx)(`span`,{children:`Privacy mode`}),(0,$.jsx)(`span`,{className:`text-[10px] leading-tight text-muted-foreground`,children:A??(ce?`Blocks the host's keyboard and mouse, and blanks its screen`:`Blocks the host's keyboard and mouse (its screen stays on)`)})]})}),(0,$.jsx)(B,{}),(0,$.jsxs)(R,{onSelect:q,"data-testid":`remote-desktop-screenshot`,children:[(0,$.jsx)(i,{className:`size-3.5`}),` Save screenshot`]}),K&&(0,$.jsx)(R,{onSelect:ue,"data-testid":`remote-desktop-record`,children:W?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(f,{className:`size-3.5 text-red-500`}),` Stop recording · `,be(G)]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(p,{className:`size-3.5`}),` Start recording`]})})]})]}),k&&(0,$.jsxs)(`button`,{type:`button`,onClick:()=>U(!1),title:`Privacy mode is on — click to release the host`,"aria-label":`Turn privacy mode off`,className:`flex h-7 shrink-0 items-center gap-1 rounded bg-amber-500/85 px-1.5 text-[10px] font-medium text-black hover:bg-amber-400`,"data-testid":`remote-desktop-privacy-indicator`,children:[(0,$.jsx)(d,{className:`size-3`}),` Host locked`]}),W&&(0,$.jsxs)(`button`,{type:`button`,onClick:ue,title:`Stop recording`,"aria-label":`Stop recording`,className:`flex h-7 shrink-0 items-center gap-1 rounded bg-red-600/80 px-1.5 text-[10px] font-medium tabular-nums text-white hover:bg-red-600`,"data-testid":`remote-desktop-recording-indicator`,children:[(0,$.jsx)(`span`,{className:`size-1.5 animate-pulse rounded-full bg-white`}),be(G)]}),(0,$.jsx)(`button`,{type:`button`,onClick:ge,"aria-label":`Toggle stats overlay`,"aria-pressed":me,title:`Quality monitor`,className:ie(ve,me&&`bg-primary/70 text-primary-foreground hover:bg-primary/80`),children:(0,$.jsx)(a,{className:`size-3.5`})})]})}function be(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=String(e%60).padStart(2,`0`);return t>0?`${t}:${String(n).padStart(2,`0`)}:${r}`:`${n}:${r}`}function xe({scale:e,onSet:t}){let[n,r]=(0,X.useState)(null),i=(0,X.useRef)(null),a=w(Math.round(ee(e)*100)),o=n??a,l=g(o);(0,X.useEffect)(()=>()=>{i.current&&clearTimeout(i.current)},[]);let u=e=>{r(e),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{r(null),t(e/100)},300)},d=e=>t=>{t.preventDefault(),u(w(o+e*1))},f=`flex size-6 shrink-0 items-center justify-center rounded hover:bg-accent disabled:opacity-40`;return(0,$.jsx)(`div`,{className:`px-2 py-1.5`,"data-testid":`remote-desktop-zoom-row`,children:(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(`button`,{type:`button`,className:f,onClick:d(-1),disabled:o<=5,"aria-label":`Decrease`,children:(0,$.jsx)(s,{className:`size-3.5`})}),(0,$.jsxs)(`span`,{className:`relative flex-1 py-2.5`,children:[(0,$.jsx)(`input`,{type:`range`,min:0,max:1,step:1/(S-5),value:l,"aria-label":`Scale`,"aria-valuetext":`${o}%`,"data-testid":`remote-desktop-zoom-slider`,onKeyDown:e=>e.stopPropagation(),onChange:e=>u(b(ne(Number(e.target.value)))),className:`h-1 w-full cursor-pointer appearance-none rounded bg-accent accent-primary`}),(0,$.jsxs)(`span`,{className:`pointer-events-none absolute top-0 -translate-x-1/2 rounded bg-primary px-1.5 text-[10px] leading-4 tabular-nums text-primary-foreground`,style:{left:`${l*100}%`},"data-testid":`remote-desktop-zoom-value`,children:[o,`%`]})]}),(0,$.jsx)(`button`,{type:`button`,className:f,onClick:d(1),disabled:o>=S,"aria-label":`Increase`,children:(0,$.jsx)(c,{className:`size-3.5`})})]})})}var Se=400;function Ce({open:e,onOpenChange:t,percent:n,fps:r,more:i,onSetMore:a,onCommit:o,frameSize:s}){let[c,l]=(0,X.useState)(n),[u,d]=(0,X.useState)(r),f=(0,X.useRef)(null);(0,X.useEffect)(()=>{e&&(l(n),d(r))},[e,n,r]),(0,X.useEffect)(()=>()=>{f.current&&clearTimeout(f.current)},[]);let p=i?_:100,m=(e,t)=>{f.current&&clearTimeout(f.current),f.current=setTimeout(()=>o(e,t),Se)},h=e=>{let t=C(e,i);l(t),m(t,u)},g=e=>{let t=v(e);d(t),m(c,t)},y=e=>{a(e);let t=C(c,e);t!==c&&(l(t),m(t,u))},b=x(c,s.width,s.height);return(0,$.jsx)(A,{open:e,onOpenChange:t,children:(0,$.jsxs)(D,{className:`sm:max-w-md`,"data-testid":`remote-desktop-custom-quality-dialog`,children:[(0,$.jsxs)(se,{children:[(0,$.jsx)(O,{children:`Custom image quality`}),(0,$.jsx)(k,{children:s.width>0?`${c}% of the base rate for ${s.width}×${s.height} — about ${(b/1e3).toFixed(1)} Mbit/s`:`Waiting for the first frame`})]}),(0,$.jsxs)(`div`,{className:`space-y-4 py-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`input`,{type:`range`,min:10,max:p,step:1,value:Math.min(c,p),onChange:e=>h(Number(e.target.value)),"aria-label":`Bitrate`,"data-testid":`remote-desktop-custom-bitrate`,className:`h-1 min-w-0 flex-1 cursor-pointer appearance-none rounded bg-accent accent-primary`}),(0,$.jsxs)(`span`,{className:`w-14 text-right text-xs tabular-nums`,children:[c,`%`]}),(0,$.jsx)(`span`,{className:`w-14 text-xs text-muted-foreground`,children:`Bitrate`}),(0,$.jsxs)(`label`,{className:`flex shrink-0 items-center gap-1.5 text-xs`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>y(e.target.checked),"data-testid":`remote-desktop-custom-more`,className:`size-3.5 accent-primary`}),`More`]})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`input`,{type:`range`,min:5,max:120,step:1,value:u,onChange:e=>g(Number(e.target.value)),"aria-label":`FPS`,"data-testid":`remote-desktop-custom-fps`,className:`h-1 min-w-0 flex-1 cursor-pointer appearance-none rounded bg-accent accent-primary`}),(0,$.jsx)(`span`,{className:`w-14 text-right text-xs tabular-nums`,children:u}),(0,$.jsx)(`span`,{className:`w-14 text-xs text-muted-foreground`,children:`FPS`}),(0,$.jsx)(`span`,{className:`w-[4.25rem] shrink-0`,"aria-hidden":!0})]})]}),(0,$.jsx)(E,{children:(0,$.jsx)(oe,{onClick:()=>t(!1),children:`Close`})})]})})}function we({id:e}){let t=ae(e=>e.close),n=(0,X.useCallback)(()=>t(e),[t,e]);return(0,$.jsx)(U,{onCancel:n,children:(0,$.jsx)(W,{onCancel:n,children:(0,$.jsx)(Te,{})})})}function Te(){let e=(0,X.useRef)(null),t=fe(),{connState:n,errorMessage:r,decoderStatus:i,decoderErrorMessage:a,sendMessage:s,reconnect:c,getFrameCount:u,getTotalBytes:d,frameSize:f,quality:p,setQuality:m,setCustomQuality:g,showCursor:_,setShowCursor:v,codec:y,setCodec:b,audioOn:x,setAudioOn:S,getAudioTracks:ee,privacyOn:C,privacyError:te,setPrivacyOn:w,hostModeId:ne,hostOriginalModeId:re,resolutionError:ae,setHostMode:oe,pendingHostClipboard:se,clearHostClipboard:E,sendClipboard:D,requestHostClipboard:O}=pe(e,{displayId:t.displayId}),k=T(e=>e.remoteDesktopStatsVisible),A=T(e=>e.toggleRemoteDesktopStatsVisible),j=T(e=>e.remoteDesktopViewStyle),M=T(e=>e.remoteDesktopCustomScale),N=T(e=>e.setRemoteDesktopViewStyle),P=T(e=>e.setRemoteDesktopCustomScale),F=T(e=>e.remoteDesktopClipboardSync),I=T(e=>e.remoteDesktopQuality),L=T(e=>e.remoteDesktopCustomQualityPercent),R=T(e=>e.remoteDesktopCustomFps),z=T(e=>e.remoteDesktopCustomQualityMore),B=T(e=>e.setRemoteDesktopCustomQualityMore),[V,H]=(0,X.useState)(!1),U=T(e=>e.setRemoteDesktopClipboardSync),{caps:W}=ce(!1),[le,K]=(0,X.useState)(!1),de=(0,X.useMemo)(()=>F?{onPasteText:(e,t)=>{K(!0),D(e,!0,t)},onCopyCombo:O}:void 0,[F,D,O]);Z(e,s,n===`streaming`,de);let q=ue(e,ee),J=h(j,M,f),he=i===`unsupported`?a:n===`error`?r:n===`closed`?`Disconnected`:n===`connecting`?`Connecting…`:null;return(0,$.jsxs)(`div`,{className:`relative flex h-full w-full items-center justify-center bg-black`,"data-testid":`remote-desktop-window`,"data-conn-state":n,children:[(0,$.jsx)(`div`,{className:ie(`flex h-full w-full`,J?`overflow-auto`:`overflow-hidden`),children:(0,$.jsx)(`canvas`,{ref:e,"data-testid":`remote-desktop-canvas`,"data-view-style":j,className:ie(`m-auto outline-none`,!J&&`max-h-full max-w-full`),style:J?{width:J.width,height:J.height}:void 0})}),(0,$.jsx)(me,{canvasRef:e,getFrameCount:u,getTotalBytes:d}),(0,$.jsx)(ye,{displays:t.displays,currentDisplayId:t.current?.id,onSelectDisplay:t.select,quality:p,qualityChoice:I,onSetQuality:m,onOpenCustomQuality:()=>H(!0),codecs:W?.encoders??[],codec:y,onSetCodec:b,hostModes:W?.resolutions?.modes??[],hostModeId:ne,hostOriginalModeId:re,onSetHostMode:oe,canResizeHost:W?.inputReady??!1,resolutionError:ae,viewStyle:j,customScale:M,onSetViewStyle:N,onSetCustomScale:P,showCursor:_,onSetShowCursor:v,audioOn:x,audioReason:W&&!W.audio.available?W.audio.reason:null,onSetAudioOn:S,privacyOn:C,privacyReason:te??(W&&!W.privacy.available?W.privacy.reason:null),privacyCanBlank:W?.privacy?.canBlank??!1,onSetPrivacyOn:w,recording:q.recording,recordingElapsedSec:q.elapsedSec,recordingSupported:q.supported,onToggleRecording:q.toggle,onScreenshot:()=>void G(e.current),clipboardEnabled:F,onSetClipboardEnabled:U,statsVisible:k,onToggleStats:A}),(0,$.jsx)(ge,{pendingText:se,onDismiss:E,missingToolAction:le&&W&&!W.clipboard.available?W.clipboard.action:null,onDismissMissingTool:()=>K(!1)}),(0,$.jsx)(Ce,{open:V,onOpenChange:H,percent:L,fps:R,more:z,onSetMore:B,onCommit:g,frameSize:f}),he&&(0,$.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-3 bg-black/70 text-sm text-white`,children:[(0,$.jsx)(o,{className:`size-6 opacity-70`}),(0,$.jsx)(`span`,{className:`max-w-sm text-center px-4`,children:he}),(n===`error`||n===`closed`)&&i!==`unsupported`&&(0,$.jsxs)(`button`,{onClick:c,className:`flex items-center gap-1.5 rounded-md bg-white/10 px-3 py-1.5 hover:bg-white/20`,children:[(0,$.jsx)(l,{className:`size-3.5`}),` Reconnect`]})]})]})}export{we as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{S as e}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import"./icons-CO_II6D-.js";import"./api-client-F5Zi1sR0.js";import"./settings-store-3jIBB8gx.js";import{t}from"./system-monitor-body-D6J6lq7-.js";var n=e(),r=()=>(0,n.jsx)(t,{});export{r as SystemMonitorTab};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/team-member-window-content-VeI6DGeM.js","assets/rolldown-runtime-C5c2KzVm.js","assets/vendor-ui-P9Ym7hCv.js","assets/vendor-markdown-QKPNiWEd.js","assets/utils-btZ8C8-R.js","assets/api-client-F5Zi1sR0.js","assets/tool-cards-_fpYI1hB.js","assets/index-DQCw6d-2.js","assets/preload-helper-BEFjQwLd.js","assets/button-CsmGH5xa.js","assets/createLucideIcon-DBXq3G0e.js","assets/react-CzUPVyyG.js","assets/panel-store-DrSH3Nhp.js","assets/window-store-B4cbZ5rr.js","assets/project-store-CCimwgGF.js","assets/settings-store-3jIBB8gx.js","assets/file-store-DCU7_YyB.js","assets/window-pip-registry-dxrBFfkP.js","assets/onboarding-quick-orientation-WLKI95GY.js","assets/dialog-z8PLkL8n.js","assets/portal-container-context-NFSuymMu.js","assets/icons-CO_II6D-.js","assets/use-is-mobile-CkO33jqU.js","assets/format-file-meta-B0ZpqzSM.js","assets/fs-api-vF_bQoeL.js","assets/context-menu-CH1mvCwA.js","assets/input-CP31LZnN.js","assets/mobile-bottom-sheet-CLic9ovp.js","assets/use-visual-viewport-C307OVeV.js","assets/scroll-area-Dp-P38kg.js","assets/chat-preparation-cache-DoS7sdal.js","assets/file-icons-Ed_yLyef.js","assets/format-date-Fd9tpNaw.js","assets/git-repo-store-CdoOpvmf.js","assets/ws-auth-J3hw0Mhc.js","assets/tab-store-CUPgQIQz.js","assets/apply-theme-aVoqSG0I.js","assets/resolve-theme-B87m6l4i.js","assets/index-BmsPSBtF.css","assets/image-preview-geometry-CC7s9J5U.js","assets/use-blob-url-B3R1DMZ0.js","assets/image-gallery-FN-9YT5_.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{Jr as r}from"./icons-CO_II6D-.js";import{t as i}from"./preload-helper-BEFjQwLd.js";import"./portal-container-context-NFSuymMu.js";import"./window-store-B4cbZ5rr.js";import"./use-is-mobile-CkO33jqU.js";import{t as a}from"./mobile-bottom-sheet-CLic9ovp.js";import"./use-visual-viewport-C307OVeV.js";import{n as o}from"./use-open-team-member-ElN3KmCI.js";var s=e(t(),1),c=n(),l=(0,s.lazy)(()=>i(()=>import(`./team-member-window-content-VeI6DGeM.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41])));function u(){let e=o(e=>e.payload),t=o(e=>e.close);return e?(0,c.jsxs)(a,{open:!0,onClose:t,zIndex:45,className:`flex h-[var(--sheet-vh)] flex-col p-0`,children:[(0,c.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,c.jsxs)(`span`,{className:`truncate text-sm font-medium text-text-primary`,children:[`Session — `,e.memberName]}),(0,c.jsx)(`button`,{type:`button`,onClick:t,className:`ml-auto flex size-11 items-center justify-center rounded text-text-secondary hover:text-text-primary`,"aria-label":`Close`,children:(0,c.jsx)(r,{className:`size-5`})})]}),(0,c.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto`,children:(0,c.jsx)(s.Suspense,{fallback:(0,c.jsx)(`div`,{className:`p-4 text-sm text-text-2`,children:`Loading…`}),children:(0,c.jsx)(l,{id:`sheet-${e.memberName}`,payload:e})})})]}):null}export{u as TeamMemberSheet};
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import"./vendor-ui-P9Ym7hCv.js";import{ir as r,un as i}from"./icons-CO_II6D-.js";import{r as a}from"./api-client-F5Zi1sR0.js";import{n as o}from"./utils-btZ8C8-R.js";import"./panel-store-DrSH3Nhp.js";import"./window-store-B4cbZ5rr.js";import"./project-store-CCimwgGF.js";import"./tab-store-CUPgQIQz.js";import{t as s}from"./tool-cards-_fpYI1hB.js";import"./use-blob-url-B3R1DMZ0.js";var c=e(t(),1),l=3e3,u=2e3;function d(e,t){let[n,r]=(0,c.useState)([]),[i,o]=(0,c.useState)(!0),[s,d]=(0,c.useState)(null),[f,p]=(0,c.useState)(0);return(0,c.useEffect)(()=>{if(!e||!t){d(`Missing team or member`),o(!1);return}let n=!1,i=0,s=!1;r([]),o(!0),d(null);let c=async()=>{if(s)return;s=!0;let c=i===0;try{let o=await a.get(`/api/teams/${encodeURIComponent(e)}/members/${encodeURIComponent(t)}/transcript?sinceBytes=${i}`);if(n)return;i=o?.nextBytes??i;let s=o?.events??[];c||o?.restarted?r(s.slice(-u)):s.length>0&&r(e=>[...e,...s].slice(-u)),d(null)}catch{!n&&c&&d(`Could not read this member's session`)}finally{s=!1,n||o(!1)}};c();let f=setInterval(()=>void c(),l);return()=>{n=!0,clearInterval(f)}},[e,t,f]),{events:n,loading:i,error:s,refresh:(0,c.useCallback)(()=>p(e=>e+1),[])}}var f=n();function p({payload:e}){let{teamName:t,memberName:n,projectName:a}=e??{},{events:c,loading:l,error:u,refresh:p}=d(t,n);return(0,f.jsxs)(`div`,{className:`flex flex-col h-full min-h-0 bg-surface`,children:[(0,f.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-1.5 border-b border-border/30 shrink-0`,children:[(0,f.jsx)(`span`,{className:`text-xs font-medium truncate`,children:n}),(0,f.jsx)(`span`,{className:`text-[10px] text-text-subtle`,children:c.length>0?`${c.length} steps`:``}),(0,f.jsx)(`button`,{type:`button`,onClick:p,className:`ml-auto text-text-subtle hover:text-foreground p-1 shrink-0`,"aria-label":`Reload session`,children:(0,f.jsx)(r,{className:o(`size-3`,l&&`animate-spin`)})})]}),l&&c.length===0?(0,f.jsxs)(`div`,{className:`flex-1 flex items-center justify-center gap-2 text-xs text-text-subtle`,children:[(0,f.jsx)(i,{className:`size-3 animate-spin`}),`Loading session…`]}):u?(0,f.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-error px-4 text-center`,children:u}):c.length===0?(0,f.jsx)(`div`,{className:`flex-1 flex items-center justify-center text-xs text-text-subtle`,children:`This member has no recorded session`}):(0,f.jsx)(s,{events:c,projectName:a,className:`flex-1 min-h-0 overflow-y-auto px-3 py-2 space-y-1`})]})}export{p as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/markdown-renderer-D5-xliE9.js","assets/vendor-ui-P9Ym7hCv.js","assets/rolldown-runtime-C5c2KzVm.js","assets/vendor-markdown-QKPNiWEd.js","assets/markdown-renderer-Dab9Us6u.js","assets/index-DQCw6d-2.js","assets/preload-helper-BEFjQwLd.js","assets/button-CsmGH5xa.js","assets/utils-btZ8C8-R.js","assets/createLucideIcon-DBXq3G0e.js","assets/api-client-F5Zi1sR0.js","assets/react-CzUPVyyG.js","assets/panel-store-DrSH3Nhp.js","assets/window-store-B4cbZ5rr.js","assets/project-store-CCimwgGF.js","assets/settings-store-3jIBB8gx.js","assets/file-store-DCU7_YyB.js","assets/window-pip-registry-dxrBFfkP.js","assets/onboarding-quick-orientation-WLKI95GY.js","assets/dialog-z8PLkL8n.js","assets/portal-container-context-NFSuymMu.js","assets/icons-CO_II6D-.js","assets/use-is-mobile-CkO33jqU.js","assets/format-file-meta-B0ZpqzSM.js","assets/fs-api-vF_bQoeL.js","assets/context-menu-CH1mvCwA.js","assets/input-CP31LZnN.js","assets/mobile-bottom-sheet-CLic9ovp.js","assets/use-visual-viewport-C307OVeV.js","assets/scroll-area-Dp-P38kg.js","assets/chat-preparation-cache-DoS7sdal.js","assets/file-icons-Ed_yLyef.js","assets/format-date-Fd9tpNaw.js","assets/git-repo-store-CdoOpvmf.js","assets/ws-auth-J3hw0Mhc.js","assets/tab-store-CUPgQIQz.js","assets/apply-theme-aVoqSG0I.js","assets/resolve-theme-B87m6l4i.js","assets/index-BmsPSBtF.css","assets/image-gallery-FN-9YT5_.js","assets/run-in-terminal-Cdn9PaAl.js","assets/edit-diff-preview-DxDAtYhi.js","assets/libesm-CxeQSM3t.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t,S as n}from"./vendor-markdown-QKPNiWEd.js";import{E as r,Ft as i,J as a,K as o,O as s,V as c,Vr as l,Yr as u,Z as d,_t as f,br as p,ct as m,dr as h,et as g,gt as _,j as v,kr as y,ln as b,mt as x,n as S,on as C,qt as w,u as T,un as E,ur as D,v as O}from"./icons-CO_II6D-.js";import{t as k}from"./preload-helper-BEFjQwLd.js";import{t as A}from"./utils-btZ8C8-R.js";import{t as j}from"./tab-store-CUPgQIQz.js";import{In as M,gn as N,r as P}from"./index-DQCw6d-2.js";import{a as F,i as ee,n as I,r as te,t as ne}from"./image-preview-geometry-CC7s9J5U.js";import{t as re}from"./use-blob-url-B3R1DMZ0.js";import{r as ie,t as ae}from"./image-gallery-FN-9YT5_.js";var L=e(t(),1),R=n(),oe=(0,L.lazy)(()=>k(()=>import(`./markdown-renderer-D5-xliE9.js`).then(e=>({default:e.MarkdownRenderer})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40])));function z({content:e,maxHeight:t=`max-h-48`}){return(0,R.jsx)(L.Suspense,{fallback:(0,R.jsx)(`div`,{className:`animate-pulse h-4 bg-muted rounded`}),children:(0,R.jsx)(oe,{content:e,className:`text-text-secondary overflow-auto ${t}`})})}var B={task_assignment:{label:`task`,className:`bg-primary/20 text-primary`},idle_notification:{label:`idle`,className:`bg-warning/20 text-warning`},completion:{label:`done`,className:`bg-success/20 text-success`},shutdown_request:{label:`shutdown`,className:`bg-error/20 text-error`},shutdown_approved:{label:`shutdown ✓`,className:`bg-text-3/20 text-text-3`},shutdown_response:{label:`shutdown reply`,className:`bg-text-3/20 text-text-3`},plan_approval_request:{label:`plan review`,className:`bg-primary/20 text-primary`},plan_approval_response:{label:`plan reply`,className:`bg-primary/20 text-primary`}},se=new Set([`to`,`message`,`summary`,`notify_when_idle`,`recipient`,`content`,`type`]),V=e=>typeof e==`string`?e:e==null?``:String(e);function H(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e;return typeof t.type!=`string`||!t.type?null:{type:t.type,request_id:typeof t.request_id==`string`?t.request_id:void 0,approve:typeof t.approve==`boolean`?t.approve:void 0,reason:typeof t.reason==`string`?t.reason:void 0,feedback:typeof t.feedback==`string`?t.feedback:void 0}}function ce(e){let t=e.trim();if(!t.startsWith(`{`))return null;try{return H(JSON.parse(t))}catch{return null}}function U(e){let t=V(e.to)||V(e.recipient),n=e.message??e.content,r=H(n)??ce(V(n)),i=r?``:V(n),a=V(e.type),o=r?.type||(a&&a!==`message`?a:`message`),s=V(e.summary).trim(),c=Object.entries(e).filter(([e])=>!se.has(e)).map(([e,t])=>({key:e,value:typeof t==`string`?t:JSON.stringify(t)??``}));return{to:t,summary:s||void 0,text:i,firstLine:i.split(`
|
|
3
|
-
`).map(e=>e.trim()).find(e=>e.length>0)??``,protocol:r??void 0,kind:o,notifyWhenIdle:e.notify_when_idle===!0,extras:c}}function W(e){if(!e)return null;let t;try{t=JSON.parse(e)}catch{return null}if(Array.isArray(t)){let e=V(t.find(e=>e&&typeof e==`object`&&e.type===`text`)?.text);if(!e)return null;try{t=JSON.parse(e)}catch{return null}}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t;if(typeof n.success!=`boolean`)return null;let r=n.pin&&typeof n.pin==`object`?n.pin:null;return{ok:n.success,detail:V(n.message)||V(n.error)||void 0,peer:r&&V(r.name)||void 0,ref:r&&V(r.ref)||void 0}}function le({kind:e}){if(e===`message`)return null;let t=B[e];return(0,R.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] ${t?.className??`bg-panel-2 text-text-3`}`,children:t?.label??e})}function ue({name:e,input:t}){let n=U(t),r=n.summary||n.firstLine||(n.protocol?n.kind:``),i=r.length>72?`${r.slice(0,72)}…`:r;return(0,R.jsxs)(R.Fragment,{children:[e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[(0,R.jsx)(T,{className:`size-3 inline`}),` `,n.to||`unknown`,i?` · ${i}`:``]}),n.notifyWhenIdle&&(0,R.jsx)(a,{className:`size-3 inline ml-1 text-text-3`})]})}function de({input:e}){let t=U(e);return(0,R.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,R.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`text-text-subtle`,children:`To`}),(0,R.jsx)(`span`,{className:`font-medium text-text-primary`,children:t.to||`unknown`}),(0,R.jsx)(le,{kind:t.kind}),t.notifyWhenIdle&&(0,R.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:[(0,R.jsx)(a,{className:`size-3`}),` notify when idle`]})]}),!!t.text&&(0,R.jsx)(z,{content:t.text,maxHeight:`max-h-40`}),t.protocol&&(0,R.jsxs)(`div`,{className:`space-y-0.5 text-text-secondary`,children:[t.protocol.approve!=null&&(0,R.jsxs)(`p`,{children:[t.protocol.approve?`Approved`:`Rejected`,t.protocol.request_id?(0,R.jsxs)(`span`,{className:`text-text-subtle font-mono`,children:[` · `,t.protocol.request_id]}):null]}),!!t.protocol.reason&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.reason}),!!t.protocol.feedback&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:t.protocol.feedback})]}),t.extras.length>0&&(0,R.jsx)(`div`,{className:`space-y-0.5`,children:t.extras.map(e=>(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[(0,R.jsx)(`span`,{className:`font-mono`,children:e.key}),`: `,e.value]},e.key))})]})}function fe({output:e}){let[t,n]=(0,L.useState)(!1),i=W(e);return i?(0,R.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-1.5 flex-wrap`,children:[i.ok?(0,R.jsx)(r,{className:`size-3 text-success shrink-0`}):(0,R.jsx)(u,{className:`size-3 text-error shrink-0`}),(0,R.jsx)(`span`,{className:i.ok?`text-success`:`text-error`,children:i.ok?`Delivered`:`Not delivered`}),!!i.detail&&(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[`· `,i.detail]}),!!i.ref&&(0,R.jsxs)(`span`,{className:`text-text-3 font-mono text-[10px]`,children:[`[`,i.ref,`]`]})]}),(0,R.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`flex items-center gap-1 text-[10px] text-text-subtle hover:text-text-secondary transition-colors`,children:[(0,R.jsx)(d,{className:`size-3`}),t?`Hide`:`Show`,` raw`]}),t&&(0,R.jsx)(`pre`,{className:`overflow-x-auto text-text-subtle font-mono max-h-40 whitespace-pre-wrap break-all text-[10px]`,children:e})]}):null}var pe=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.webp`,`.bmp`,`.avif`,`.ico`]);function me(e){let t=e.lastIndexOf(`.`);return t===-1?!1:pe.has(e.slice(t).toLowerCase())}var he=/^\[image(?: · [\d.]+(?:B|KB|MB))?\]$/;function ge(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`&&he.test(t.text)}):!1}var _e=`Async agent launched successfully`;function ve(e){return!!e&&e.includes(_e)}var ye=`text-[var(--img-meta-label)] @max-[470px]:hidden`,be=[`60%`,`45%`,`80%`];function xe({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)(L.Fragment,{children:[(0,R.jsx)(`dt`,{className:ye,children:e}),(0,R.jsx)(`dd`,{className:`flex items-center`,children:(0,R.jsx)(`span`,{className:`img-skeleton h-[11px] rounded`,style:{width:be[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)(S,{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=4/5,G=`text-[var(--img-meta-label)] @max-[470px]:hidden`,K=`truncate text-text @max-[470px]:text-text-2`,q=`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 we({filePath:e,projectName:t}){let[n,r]=(0,L.useState)(0),{blobUrl:i,blob:a,error:o,errorCode:s}=re(e,t,void 0,n),[c,l]=(0,L.useState)(()=>ee(e)),[u,d]=(0,L.useState)(!1),[f,p]=(0,L.useState)(!1),m=P(e=>e.open),{openTab:h}=j(N(e=>({openTab:e.openTab}))),g=A(e);(0,L.useEffect)(()=>{if(!f)return;let e=setTimeout(()=>p(!1),1200);return()=>clearTimeout(e)},[f]);let _=t=>{let n={w:t.naturalWidth,h:t.naturalHeight};if(!n.w||!n.h)return d(!0);ne(e,n),l(n)},v=()=>{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:v})});let y=c?F(c,132):null,b=y?.aspect??Ce,x=(0,R.jsxs)(`div`,{className:`flex flex-wrap gap-[6px]`,children:[(0,R.jsxs)(`button`,{type:`button`,onClick:S,className:q,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:C,className:q,children:f?`copied`:`copy path`}),(0,R.jsx)(`button`,{type:`button`,onClick:w,className:q,children:`full size`})]});function S(){t&&h({type:`editor`,title:g,metadata:{filePath:e,projectName:t},projectId:t,closable:!0})}function C(){M(e).then(()=>p(!0))}function w(e){i&&m(i,g,ie(e.currentTarget))}if(!i||!y||!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=>_(e.currentTarget),onError:()=>d(!0)}),(0,R.jsx)(xe,{aspect:b,actions:x})]});let T=(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`dt`,{className:G,children:`dimensions`}),(0,R.jsx)(`dd`,{className:K,children:I(c,y.fit)}),a&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(`dt`,{className:G,children:`size`}),(0,R.jsxs)(`dd`,{className:K,children:[te(a.size),a.type?` · ${a.type}`:``]})]}),(0,R.jsx)(`dt`,{className:G,children:`path`}),(0,R.jsx)(`dd`,{dir:`rtl`,className:`${K} text-left`,children:e})]}),E=(0,R.jsx)(`img`,{src:i,alt:g,[ae]:``,onLoad:e=>_(e.currentTarget),onError:()=>d(!0),className:y.fit===`cover`?`size-full object-cover`:y.fit===`contain`?`size-full object-contain`:`max-h-full max-w-full`});return(0,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)`}}),y.variant===`band`?(0,R.jsxs)(`div`,{className:`relative grid gap-[11px]`,children:[(0,R.jsx)(`button`,{type:`button`,onClick:w,title:`Open ${g}`,className:`img-checkerboard w-full cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)]`,style:{aspectRatio:y.aspect},children:E}),(0,R.jsx)(`dl`,{className:`grid grid-cols-[auto_auto_1fr] gap-x-[18px] font-mono text-[11.5px] [&_dt]:hidden`,children:T}),x]}):(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:w,title:`Open ${g}`,className:`cursor-zoom-in overflow-hidden rounded-lg border border-[var(--img-plate-border)] bg-[var(--img-plate)] shadow-[var(--img-plate-shadow)] ${y.fit===`cover`?``:`img-checkerboard flex items-center justify-center`}`,style:{aspectRatio:y.aspect},children:E}),(0,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:g}),(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:T}),x]})]})]})})}function J(e,t){if(e!==`Agent`&&e!==`Task`)return null;let n=t.name;return typeof n==`string`&&n.trim()?n.trim():null}function Te(e,t,n=!1){if(t&&(e===`Bash`||e===`PowerShell`))return{Icon:y,cls:`bg-error/15 text-error`};if(n)return{Icon:l,cls:`bg-accent-2/15 text-accent-2`};switch(e){case`Read`:case`Glob`:case`LS`:return{Icon:f,cls:`bg-accent-wash text-primary`};case`Grep`:case`Search`:case`WebSearch`:case`ToolSearch`:return{Icon:D,cls:`bg-accent-wash text-primary`};case`WebFetch`:case`Fetch`:return{Icon:i,cls:`bg-info/15 text-info`};case`Edit`:case`MultiEdit`:case`NotebookEdit`:return{Icon:x,cls:`bg-accent-2/15 text-accent-2`};case`Write`:return{Icon:_,cls:`bg-success/15 text-success`};case`Bash`:case`PowerShell`:return{Icon:y,cls:`bg-panel-2 text-text-2`};case`TodoWrite`:return{Icon:C,cls:`bg-warning/15 text-warning`};case`Task`:case`Agent`:return{Icon:O,cls:`bg-accent-wash text-primary`};case`SendMessage`:return{Icon:h,cls:`bg-info/15 text-info`};case`AskUserQuestion`:return{Icon:c,cls:`bg-accent-wash text-primary`};case`ExitPlanMode`:return{Icon:o,cls:`bg-accent-wash text-primary`};case`Skill`:return{Icon:p,cls:`bg-accent-2/15 text-accent-2`};case`ImageGen`:return{Icon:w,cls:`bg-accent-2/15 text-accent-2`};default:return{Icon:d,cls:`bg-panel-2 text-text-2`}}}function Ee(e){let t=e.type===`approval_request`;return{toolName:e.type===`tool_use`?e.tool:t?e.tool??`Tool`:`Tool`,input:e.type===`tool_use`?e.input:t?e.input??{}:{}}}var De=new Set([`Read`,`ImageGen`]);function Y(e){if(e.type!==`tool_use`||!De.has(e.tool))return null;let t=e.input?.file_path;return typeof t!=`string`||!/^(\/|[A-Za-z]:[/\\])/.test(t)?null:me(t)?t:null}function X({tool:e,result:t,completed:n,projectName:i,bashPartialOutput:a}){let[o,c]=(0,L.useState)(()=>{let n=(e.type,e.tool),r=t?.type===`tool_result`&&!!t.isError;return(n===`Edit`||n===`MultiEdit`)&&!r?!0:!!Y(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)(S,{className:`size-3`}),(0,R.jsx)(`span`,{children:e.message})]});let{toolName:l,input:d}=Ee(e),f=t?.type===`tool_result`,p=f&&!!t.isError,m=f&&typeof t.exitCode==`number`?t.exitCode:void 0,h=l===`AskUserQuestion`&&!!d?.answers,g=e.type===`approval_request`&&e.approved!=null,_=(l===`Agent`||l===`Task`)&&e.type===`tool_use`,y=_?e.children:void 0,b=y&&y.length>0,x=_&&e.type===`tool_use`?e.bgStatus:void 0,C=_&&(x!=null||f&&!p&&ve(String(t.output??``)))&&x==null,w=x===`failed`||x===`stopped`,T=C?!1:f||h||g||n,D=[`Edit`,`MultiEdit`,`Write`,`NotebookEdit`].includes(l),O=Y(e),k=f&&ge(String(t.output??``)),A=!!O,j=e.type===`tool_use`?e.toolUseId:void 0,M=(l===`Bash`||l===`PowerShell`)&&!f&&j?a?.current?.get(j):void 0,N=!!M;(0,L.useEffect)(()=>{N&&!o&&c(!0)},[N]);let P=(0,L.useRef)(!1);(0,L.useEffect)(()=>{p&&(l===`Edit`||l===`MultiEdit`)&&!P.current&&(P.current=!0,c(!1))},[p,l]);let{Icon:F,cls:ee}=Te(l,p,!!J(l,d)),I=l===`AskUserQuestion`||l===`ExitPlanMode`||_;return(0,R.jsxs)(`div`,{"data-tool-ref":j,className:`rounded-[11px] border overflow-hidden text-xs bg-panel ${I?`border-accent-wash-border`:`border-border`}`,children:[(0,R.jsxs)(`button`,{onClick:()=>c(!o),className:`flex items-center gap-2.5 px-2.5 py-2 w-full text-left hover:bg-panel-2/40 transition-colors min-w-0`,children:[(0,R.jsx)(`span`,{className:`inline-flex items-center justify-center size-6 rounded-[7px] shrink-0 ${ee}`,children:(0,R.jsx)(F,{className:`size-3.5`})}),(0,R.jsx)(`span`,{className:`truncate text-text font-medium`,children:(0,R.jsx)(Oe,{name:l,input:d})}),(0,R.jsxs)(`span`,{className:`ml-auto flex items-center gap-2 shrink-0`,children:[N&&(0,R.jsxs)(`span`,{className:`text-[10px] text-warning`,children:[M.lineCount,` line`,M.lineCount===1?``:`s`,` streaming…`]}),b&&!N&&(0,R.jsxs)(`span`,{className:`text-[10px] text-text-3 font-mono`,children:[y.length,` steps`]}),C&&(0,R.jsx)(`span`,{className:`text-[10px] text-primary`,children:`running…`}),m!=null&&(0,R.jsxs)(`span`,{className:`text-[10px] font-mono ${m===0?`text-text-3`:`text-error`}`,children:[`exit `,m]}),p||w?(0,R.jsx)(u,{className:`size-3.5 text-error`}):T?(0,R.jsx)(r,{className:`size-3.5 text-success`}):(0,R.jsx)(E,{className:`size-3.5 text-primary animate-spin`}),o?(0,R.jsx)(s,{className:`size-3 text-text-3`}):(0,R.jsx)(v,{className:`size-3 text-text-3`})]})]}),o&&(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)(ke,{name:l,input:d,projectName:i,toolUseId:j}),M&&(0,R.jsx)(Ne,{content:M.content,lineCount:M.lineCount}),b&&(0,R.jsx)(Q,{events:y,projectName:i}),O&&(0,R.jsx)(we,{filePath:O,projectName:i??``}),f&&!(D&&!p)&&!(k&&!p)&&!(A&&!p)&&(0,R.jsx)(je,{toolName:l,output:t.output})]})]})}function Oe({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:A(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:$(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:$(n(t.pattern),40)})]});case`WebSearch`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(D,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`WebFetch`: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:$(n(t.url),50)})]});case`ToolSearch`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(D,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.query),50)})]});case`ImageGen`:{let e=(n(t.prompt).split(`
|
|
4
|
-
`).find(e=>e.trim())??``)||A(n(t.file_path));return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(w,{className:`size-3 inline`}),` Image`,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[` `,$(e,50)]})]})}case`Agent`:case`Task`:{let r=J(e,t),i=$(n(t.description||t.prompt),r?44:60);return(0,R.jsxs)(R.Fragment,{children:[!r&&(0,R.jsx)(O,{className:`size-3 inline`}),` `,e,` `,r&&(0,R.jsx)(`span`,{className:`text-text-primary font-medium`,children:r}),(0,R.jsx)(`span`,{className:`text-text-subtle`,children:r?` · ${i}`:i})]})}case`SendMessage`:return(0,R.jsx)(ue,{name:e,input:t});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)(b,{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)(a,{className:`size-3 inline`}),` `,e,` `,(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[`in `,Le(Number(t.delaySeconds)),t.reason?` — ${$(n(t.reason),50)}`:``]})]});case`TaskCreate`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(b,{className:`size-3 inline`}),` `,e,` `,(0,R.jsx)(`span`,{className:`text-text-subtle`,children:$(n(t.subject),60)})]});case`TaskUpdate`:return(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(b,{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)(b,{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 ke({name:e,input:t,projectName:n,toolUseId:r}){let o=e=>String(e??``),{openTab:s}=j(N(e=>({openTab:e.openTab}))),c=e=>{n&&s({type:`editor`,title:A(e),metadata:{filePath:e,projectName:n},projectId:n,closable:!0})},l=(e,t,r)=>{s({type:`git-diff`,title:`Diff ${A(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:o(t.description)}),(0,R.jsx)(`pre`,{className:`font-mono text-text-secondary overflow-x-auto whitespace-pre-wrap break-all`,children:o(t.command)})]});case`Read`:case`Write`:case`Edit`:case`MultiEdit`:case`NotebookEdit`:{let n=o(t.notebook_path||t.file_path),i=e===`Edit`&&(!!t.old_string||!!t.new_string),a=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:()=>c(n),title:`Open file in editor`,children:[(0,R.jsx)(m,{className:`size-3 shrink-0`}),n]}),i&&(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:()=>l(n,o(t.old_string),o(t.new_string)),title:`View diff in new tab`,children:[(0,R.jsx)(g,{className:`size-3 shrink-0`}),`View Diff`]})]}),i&&(0,R.jsx)(`div`,{"data-edit-ref":a(0),children:(0,R.jsx)(Ie,{oldStr:o(t.old_string),newStr:o(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":a(t),className:`space-y-0.5`,children:[(0,R.jsxs)(`p`,{className:`text-text-subtle text-[10px]`,children:[`Edit `,t+1]}),(0,R.jsx)(Ie,{oldStr:o(e.old_string),newStr:o(e.new_string),filePath:n})]},t))}),e===`Write`&&!!t.content&&(0,R.jsx)(`pre`,{"data-edit-ref":a(0),className:`font-mono text-text-subtle overflow-x-auto max-h-32 whitespace-pre-wrap`,children:$(o(t.content),300)})]})}case`Glob`:return(0,R.jsxs)(`p`,{className:`font-mono text-text-secondary`,children:[o(t.pattern),t.path?` in ${o(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:[`/`,o(t.pattern),`/`]}),!!t.path&&(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[`in `,o(t.path)]})]});case`TodoWrite`:return(0,R.jsx)(Ae,{todos:t.todos??[]});case`Agent`:case`Task`:{let n=J(e,t);return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[!!n&&(0,R.jsxs)(`p`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,R.jsx)(`span`,{className:`text-text-subtle`,children:`Name`}),(0,R.jsx)(`span`,{className:`font-medium text-text-primary`,children:n}),(0,R.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-accent-2/15 text-accent-2`,children:`teammate`}),t.isolation===`worktree`&&(0,R.jsx)(`span`,{className:`inline-block rounded px-1.5 py-0.5 text-[10px] bg-panel-2 text-text-3`,children:`worktree`})]}),!!t.description&&(0,R.jsx)(`p`,{className:`text-text-secondary font-medium`,children:o(t.description)}),!!t.subagent_type&&(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[`Type: `,o(t.subagent_type)]}),!!t.prompt&&(0,R.jsx)(z,{content:o(t.prompt),maxHeight:`max-h-48`})]})}case`SendMessage`:return(0,R.jsx)(de,{input:t});case`ToolSearch`:return(0,R.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,R.jsx)(`p`,{className:`font-mono text-text-secondary`,children:o(t.query)}),!!t.max_results&&(0,R.jsxs)(`p`,{className:`text-text-subtle`,children:[`Max results: `,o(t.max_results)]})]});case`WebFetch`:return(0,R.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,R.jsxs)(`a`,{href:o(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)(i,{className:`size-3 shrink-0`}),o(t.url)]}),!!t.prompt&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:$(o(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)(a,{className:`size-3 inline mr-1`}),`Wake in `,(0,R.jsx)(`span`,{className:`font-medium text-text-primary`,children:Le(e)}),(0,R.jsxs)(`span`,{className:`text-text-subtle`,children:[` (`,e,`s)`]})]}),!!t.reason&&(0,R.jsx)(`p`,{className:`text-text-secondary italic`,children:o(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)(z,{content:o(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:o(t.subject)}),!!t.description&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:o(t.description)}),!!t.activeForm&&(0,R.jsx)(`p`,{className:`text-text-subtle italic`,children:o(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:[`#`,o(t.taskId)]}),(0,R.jsx)(Z,{status:o(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:[`#`,o(t.taskId)]}),(0,R.jsx)(Z,{status:`stopped`})]});case`ImageGen`:return(0,R.jsxs)(`div`,{className:`space-y-1`,children:[!!t.prompt&&(0,R.jsx)(`p`,{className:`text-text-secondary whitespace-pre-wrap`,children:o(t.prompt)}),t.transparentBackground===!0&&(0,R.jsx)(`p`,{className:`text-text-subtle`,children:`Transparent background`})]});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 Z({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 Ae({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 je({toolName:e,output:t}){let[n,r]=(0,L.useState)(!1),i=(0,L.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(`
|
|
5
|
-
|
|
6
|
-
`);if(t)return t}if(typeof e==`string`)return e}catch{if(t&&!t.startsWith(`[{`))return t}return null},[e,t]);return e===`SendMessage`&&W(t)?(0,R.jsx)(fe,{output:t}):i?(0,R.jsxs)(`div`,{className:`border-t border-border pt-1.5 space-y-1`,children:[(0,R.jsx)(z,{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)(d,{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)(Me,{output:t})}function Me({output:e}){let t=e.split(`
|
|
7
|
-
`).length,n=t>3||e.length>200,[r,i]=(0,L.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)(v,{className:`size-3`}):(0,R.jsx)(s,{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 Q({events:e,projectName:t,className:n}){let r=[],i=``;for(let t of e)if(t.type===`text`)i+=t.content;else if(t.type===`tool_use`)i&&=(r.push({kind:`text`,content:i}),``),r.push({kind:`tool`,tool:t});else if(t.type===`tool_result`){let e=t.toolUseId,n=e?r.find(t=>t.kind===`tool`&&t.tool.type===`tool_use`&&t.tool.toolUseId===e&&!t.result):r.findLast(e=>e.kind===`tool`&&!e.result);n&&(n.result=t)}i&&r.push({kind:`text`,content:i});let a=(0,L.useRef)(null),o=(0,L.useRef)(!1);return(0,L.useEffect)(()=>{a.current&&!o.current&&(a.current.scrollTop=a.current.scrollHeight)},[r.length]),(0,R.jsx)(`div`,{ref:a,onScroll:e=>{let t=e.currentTarget;o.current=t.scrollTop+t.clientHeight<t.scrollHeight-20},className:n??`border-l-2 border-accent/20 pl-2 space-y-1 mt-1 max-h-64 md:max-h-96 overflow-y-auto`,children:r.map((e,n)=>e.kind===`text`?(0,R.jsx)(`div`,{className:`text-text-secondary text-[11px]`,children:(0,R.jsx)(z,{content:e.content,maxHeight:`max-h-24`})},`st-${n}`):(0,R.jsx)(X,{tool:e.tool,result:e.result,completed:!!e.result,projectName:t},`sc-${n}`))})}function Ne({content:e,lineCount:t}){let n=(0,L.useRef)(null),r=(0,L.useRef)(!1);return(0,L.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)(E,{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(`
|
|
8
|
-
`).slice(-200).join(`
|
|
9
|
-
`)})]})}var Pe=k(()=>import(`./edit-diff-preview-DxDAtYhi.js`),__vite__mapDeps([41,2,3,42])),Fe=(0,L.lazy)(()=>Pe);function Ie(e){return(0,R.jsx)(L.Suspense,{fallback:(0,R.jsx)(`div`,{className:`animate-pulse h-8 bg-muted rounded`}),children:(0,R.jsx)(Fe,{...e})})}function $(e,t=50){return e?e.length>t?e.slice(0,t)+`…`:e:``}function Le(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{X as n,B as r,Q as t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-C5c2KzVm.js";import{C as t}from"./vendor-markdown-QKPNiWEd.js";import{t as n}from"./react-CzUPVyyG.js";import{t as r}from"./window-store-B4cbZ5rr.js";import{n as i}from"./use-is-mobile-CkO33jqU.js";var a=e(t(),1),o=n(e=>({payload:null,open:t=>e({payload:t}),close:()=>e({payload:null})}));function s(){let e=i(),t=r(e=>e.open),n=o(e=>e.open);return(0,a.useCallback)(r=>{e?n(r):t(`team-member`,r)},[e,n,t])}export{o as n,s as t};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./react-CzUPVyyG.js";var t=[`n`,`s`,`e`,`w`,`ne`,`nw`,`se`,`sw`],n={w:360,h:240},r={w:880,h:560},i=48,a=(e,t,n)=>Math.min(n,Math.max(t,e));function o(e){return 30+a(Math.trunc(e),0,8)}function s(e,t){let r=Math.max(n.w,Math.min(e.w,Math.max(t.w,n.w))),i=Math.max(n.h,Math.min(e.h,Math.max(t.h,n.h))),o=a(e.x,48-r,Math.max(48-r,t.w-48)),s=a(e.y,0,Math.max(0,t.h-48));return{x:Math.round(o),y:Math.round(s),w:Math.round(r),h:Math.round(i)}}function c(e,t,r,i,a=n){let{x:o,y:s,w:c,h:l}=e;if(t.includes(`e`))c=Math.max(a.w,e.w+r);else if(t.includes(`w`)){let t=e.x+e.w;c=Math.max(a.w,e.w-r),o=t-c}if(t.includes(`s`))l=Math.max(a.h,e.h+i);else if(t.includes(`n`)){let t=e.y+e.h;l=Math.max(a.h,e.h-i),s=t-l}return{x:o,y:s,w:c,h:l}}function l(e,t){let a=Math.min(r.w,Math.max(n.w,t.w-i*2)),o=Math.min(r.h,Math.max(n.h,t.h-i*2)),c=e.length%8;return s({x:i+c*24,y:i+c*24,w:a,h:o},t)}function u(e,t,n,r){return s({...e,x:e.x+t,y:e.y+n},r)}var d=[`explorer`,`team-member`,`system-monitor`,`tab-host`,`remote-desktop`,`settings`],f=`ppm-windows`,p=d.filter(e=>e!==`team-member`),m=[`normal`,`maximized`,`minimized`];function h(e){if(!e||typeof e!=`object`)return!1;let t=e;return[`x`,`y`,`w`,`h`].every(e=>typeof t[e]==`number`&&Number.isFinite(t[e]))}function g(e){if(e===void 0)return!0;if(!e||typeof e!=`object`||Array.isArray(e))return!1;try{return JSON.stringify(e),!0}catch{return!1}}function _(e){return g(e.payload)?{id:e.id,kind:e.kind,rect:e.rect,state:e.state,payload:e.payload}:null}function v(e){try{let t=[...e].sort((e,t)=>e.rank-t.rank).map(_).filter(e=>e!==null);t.length===0?localStorage.removeItem(f):localStorage.setItem(f,JSON.stringify(t))}catch{}}function y(e){let t=null;try{t=localStorage.getItem(f)}catch{return[]}if(!t)return[];let n;try{n=JSON.parse(t)}catch{return[]}if(!Array.isArray(n))return[];let r=[];for(let t of n){if(!t||typeof t!=`object`)continue;let n=t;if(typeof n.id!=`string`||!p.includes(n.kind)||!h(n.rect)||!g(n.payload))continue;let i=m.includes(n.state)?n.state:`normal`;r.push({id:n.id,kind:n.kind,rect:s(n.rect,e),state:i,payload:n.payload})}return r}var b={w:1280,h:800},x=e=>Object.values(e).sort((e,t)=>e.rank-t.rank);function S(e){let t={};return e.forEach((e,n)=>{t[e.id]=e.rank===n?e:{...e,rank:n}}),t}function C(e){v(Object.values(e))}function w(){return`win-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}var T=e((e,t)=>({windows:{},bounds:b,restored:!1,open:(n,r,i)=>{let{windows:a,bounds:o}=t(),c=x(a);if(c.length>=8){let e=c[0];return t().focus(e.id),e.id}let u=w(),d=i?s(i,o):l(c.map(e=>e.rect),o),f=S([...c,{id:u,kind:n,rect:d,rank:c.length,state:`normal`,payload:r}]);return e({windows:f}),C(f),u},close:n=>{let{windows:r}=t();if(!r[n])return;let i=S(x(r).filter(e=>e.id!==n));e({windows:i}),C(i)},focus:n=>{let{windows:r}=t(),i=r[n];if(!i)return;let a=x(r);if(a[a.length-1]?.id===n)return;let o=S([...a.filter(e=>e.id!==n),i]);e({windows:o}),C(o)},move:(n,r)=>{let{windows:i,bounds:a}=t(),o=i[n];if(!o)return;let c=s({...o.rect,...r},a),l={...i,[n]:{...o,rect:c}};e({windows:l}),C(l)},resize:(n,r)=>{let{windows:i,bounds:a}=t(),o=i[n];if(!o)return;let c={...i,[n]:{...o,rect:s(r,a)}};e({windows:c}),C(c)},setState:(n,r)=>{let{windows:i}=t(),a=i[n];if(!a||a.state===r)return;let o={...i,[n]:{...a,state:r}};e({windows:o}),C(o)},setPayload:(n,r)=>{let{windows:i}=t(),a=i[n];if(!a)return;let o={...a.payload,...r};if(Object.entries(o).every(([e,t])=>a.payload?.[e]===t)&&Object.keys(o).length===Object.keys(a.payload??{}).length)return;let s={...i,[n]:{...a,payload:o}};e({windows:s}),C(s)},setBounds:n=>{let r=t();if(r.bounds.w===n.w&&r.bounds.h===n.h)return;let i={};for(let e of Object.values(r.windows)){let t=s(e.rect,n);i[e.id]=t.x===e.rect.x&&t.y===e.rect.y&&t.w===e.rect.w&&t.h===e.rect.h?e:{...e,rect:t}}e({bounds:n,windows:i})},restoreAll:n=>{t().restored||e({bounds:n,windows:S(y(n).slice(0,8).map((e,t)=>({id:e.id,kind:e.kind,rect:e.rect,rank:t,state:e.state,payload:e.payload}))),restored:!0})}}));function E(e){return x(e)}export{s as a,c as i,E as n,u as o,t as r,o as s,T as t};
|
|
Binary file
|
|
Binary file
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Floating-window body replaying one teammate's whole work session, live.
|
|
3
|
-
*
|
|
4
|
-
* The transcript is fetched on demand and only for the member being opened —
|
|
5
|
-
* a single teammate transcript reaches several MB, so loading all of a team's
|
|
6
|
-
* transcripts up front is not an option, and following one means tailing it by
|
|
7
|
-
* byte offset rather than re-reading it (`useMemberTranscriptTail`). Steps
|
|
8
|
-
* render through the same `SubagentChildren` view the inline Agent card uses,
|
|
9
|
-
* so a teammate's session looks identical wherever it is read.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import { Loader2, RefreshCw } from "@/lib/icons";
|
|
13
|
-
import { cn } from "@/lib/utils";
|
|
14
|
-
import { useMemberTranscriptTail } from "@/hooks/use-member-transcript-tail";
|
|
15
|
-
import type { WindowContentProps } from "@/components/floating-window/window-content-registry";
|
|
16
|
-
import { SubagentChildren } from "./tool-cards";
|
|
17
|
-
|
|
18
|
-
/** Payload the team panel puts on the window when opening it. */
|
|
19
|
-
export interface TeamMemberWindowPayload {
|
|
20
|
-
teamName: string;
|
|
21
|
-
memberName: string;
|
|
22
|
-
projectName?: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export default function TeamMemberWindowContent({ payload }: WindowContentProps) {
|
|
26
|
-
const { teamName, memberName, projectName } = (payload ?? {}) as unknown as TeamMemberWindowPayload;
|
|
27
|
-
const { events, loading, error, refresh } = useMemberTranscriptTail(teamName, memberName);
|
|
28
|
-
|
|
29
|
-
return (
|
|
30
|
-
<div className="flex flex-col h-full min-h-0 bg-surface">
|
|
31
|
-
<div className="flex items-center gap-2 px-3 py-1.5 border-b border-border/30 shrink-0">
|
|
32
|
-
<span className="text-xs font-medium truncate">{memberName}</span>
|
|
33
|
-
<span className="text-[10px] text-text-subtle">
|
|
34
|
-
{events.length > 0 ? `${events.length} steps` : ""}
|
|
35
|
-
</span>
|
|
36
|
-
<button
|
|
37
|
-
type="button"
|
|
38
|
-
onClick={refresh}
|
|
39
|
-
className="ml-auto text-text-subtle hover:text-foreground p-1 shrink-0"
|
|
40
|
-
aria-label="Reload session"
|
|
41
|
-
>
|
|
42
|
-
<RefreshCw className={cn("size-3", loading && "animate-spin")} />
|
|
43
|
-
</button>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
{loading && events.length === 0 ? (
|
|
47
|
-
<div className="flex-1 flex items-center justify-center gap-2 text-xs text-text-subtle">
|
|
48
|
-
<Loader2 className="size-3 animate-spin" />
|
|
49
|
-
Loading session…
|
|
50
|
-
</div>
|
|
51
|
-
) : error ? (
|
|
52
|
-
<div className="flex-1 flex items-center justify-center text-xs text-error px-4 text-center">{error}</div>
|
|
53
|
-
) : events.length === 0 ? (
|
|
54
|
-
<div className="flex-1 flex items-center justify-center text-xs text-text-subtle">
|
|
55
|
-
This member has no recorded session
|
|
56
|
-
</div>
|
|
57
|
-
) : (
|
|
58
|
-
<SubagentChildren
|
|
59
|
-
events={events}
|
|
60
|
-
projectName={projectName}
|
|
61
|
-
className="flex-1 min-h-0 overflow-y-auto px-3 py-2 space-y-1"
|
|
62
|
-
/>
|
|
63
|
-
)}
|
|
64
|
-
</div>
|
|
65
|
-
);
|
|
66
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Teammates working right now, pinned under the conversation.
|
|
3
|
-
*
|
|
4
|
-
* A teammate only appears in the transcript when it is *spawned*; every later task
|
|
5
|
-
* reaches it through SendMessage, which resumes the same agent and writes no new
|
|
6
|
-
* card. So after the first round the conversation goes quiet while members are
|
|
7
|
-
* still working, and the only way to notice was to open the team panel.
|
|
8
|
-
*
|
|
9
|
-
* This is deliberately a live overlay rather than chat events: work state is derived
|
|
10
|
-
* from transcripts on disk within a 90s window, so replaying an old session must show
|
|
11
|
-
* nothing here instead of claiming a long-finished teammate is still running.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import { Users } from "@/lib/icons";
|
|
15
|
-
import type { TeamMemberActivity } from "@/hooks/use-team-activity-feed";
|
|
16
|
-
import { currentStep, formatDuration, shortAgentType } from "./team-member-activity-format";
|
|
17
|
-
import { useOpenTeamMember } from "./use-open-team-member";
|
|
18
|
-
|
|
19
|
-
interface TeamWorkingBarProps {
|
|
20
|
-
teamName: string;
|
|
21
|
-
members: TeamMemberActivity[];
|
|
22
|
-
projectName?: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function TeamWorkingBar({ teamName, members, projectName }: TeamWorkingBarProps) {
|
|
26
|
-
const openMember = useOpenTeamMember();
|
|
27
|
-
const working = members.filter((m) => m.workState === "working");
|
|
28
|
-
if (!teamName || working.length === 0) return null;
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<div className="shrink-0 border-t border-border bg-surface-elevated/60 px-2 py-1.5 space-y-1">
|
|
32
|
-
{working.map((member) => {
|
|
33
|
-
const step = currentStep(member);
|
|
34
|
-
const elapsed = formatDuration(member.startedAt);
|
|
35
|
-
const agentType = shortAgentType(member.agentType);
|
|
36
|
-
return (
|
|
37
|
-
<button
|
|
38
|
-
key={member.name}
|
|
39
|
-
type="button"
|
|
40
|
-
onClick={() => openMember({ teamName, memberName: member.name, projectName })}
|
|
41
|
-
className="flex w-full items-center gap-2 rounded px-1 py-1.5 min-h-[36px] text-left text-xs hover:bg-surface transition-colors"
|
|
42
|
-
title={`Open ${member.name}'s work session`}
|
|
43
|
-
>
|
|
44
|
-
<span className="relative flex size-2 shrink-0">
|
|
45
|
-
<span className="absolute inline-flex size-full animate-ping rounded-full bg-emerald-400 opacity-60" />
|
|
46
|
-
<span className="relative inline-flex size-2 rounded-full bg-emerald-500" />
|
|
47
|
-
</span>
|
|
48
|
-
<Users className="size-3.5 shrink-0 text-accent-2" />
|
|
49
|
-
<span className="font-medium text-text-primary shrink-0">{member.name}</span>
|
|
50
|
-
{!!agentType && <span className="text-text-3 shrink-0 hidden sm:inline">{agentType}</span>}
|
|
51
|
-
{!!step && (
|
|
52
|
-
<span className="flex-1 truncate text-text-subtle" title={step}>
|
|
53
|
-
{step}
|
|
54
|
-
</span>
|
|
55
|
-
)}
|
|
56
|
-
{!!elapsed && <span className="ml-auto shrink-0 text-text-3 font-mono">{elapsed}</span>}
|
|
57
|
-
</button>
|
|
58
|
-
);
|
|
59
|
-
})}
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Opening a teammate's work session, on whichever presentation the device has.
|
|
3
|
-
*
|
|
4
|
-
* `WindowLayer` renders nothing below the `md` breakpoint, so `openWindow("team-member")`
|
|
5
|
-
* is a silent no-op on a phone — the tap looked broken. Desktop keeps the floating window;
|
|
6
|
-
* mobile gets the full-screen sheet, both hosting the same content component.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
import { useCallback } from "react";
|
|
10
|
-
import { create } from "zustand";
|
|
11
|
-
import { useIsMobile } from "@/hooks/use-is-mobile";
|
|
12
|
-
import { useWindowStore } from "@/components/floating-window/window-store";
|
|
13
|
-
import type { TeamMemberWindowPayload } from "./team-member-window-content";
|
|
14
|
-
|
|
15
|
-
interface TeamMemberSheetState {
|
|
16
|
-
payload: TeamMemberWindowPayload | null;
|
|
17
|
-
open: (payload: TeamMemberWindowPayload) => void;
|
|
18
|
-
close: () => void;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/** Mobile-only: which teammate the full-screen sheet is showing, if any. */
|
|
22
|
-
export const useTeamMemberSheet = create<TeamMemberSheetState>((set) => ({
|
|
23
|
-
payload: null,
|
|
24
|
-
open: (payload) => set({ payload }),
|
|
25
|
-
close: () => set({ payload: null }),
|
|
26
|
-
}));
|
|
27
|
-
|
|
28
|
-
/** Callback that opens a teammate's session the right way for this viewport. */
|
|
29
|
-
export function useOpenTeamMember(): (payload: TeamMemberWindowPayload) => void {
|
|
30
|
-
const isMobile = useIsMobile();
|
|
31
|
-
const openWindow = useWindowStore((s) => s.open);
|
|
32
|
-
const openSheet = useTeamMemberSheet((s) => s.open);
|
|
33
|
-
|
|
34
|
-
return useCallback(
|
|
35
|
-
(payload: TeamMemberWindowPayload) => {
|
|
36
|
-
if (isMobile) openSheet(payload);
|
|
37
|
-
else openWindow("team-member", payload as unknown as Record<string, unknown>);
|
|
38
|
-
},
|
|
39
|
-
[isMobile, openSheet, openWindow],
|
|
40
|
-
);
|
|
41
|
-
}
|