@xopcai/xopc 0.0.424 → 0.0.425
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/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-AI081rxe.js → activity-store-CMw8qBuC.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DupnTbL7.js → agent-avatar-dicebear-JI0YWOIm.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-display-CmEj6Uqy.js → agent-avatar-display-YqmwzOSa.js} +2 -2
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-IEV5yKuu.js → agent-defaults-settings-panel-DlvjxWg6.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-plugin-dialog-D_njOuFA.js → agent-plugin-dialog-OBueuQSc.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-B_yg9nA3.js → agents-Cp6_5OOQ.js} +3 -3
- package/dist/gateway/static/root/assets/{agents-admin-api-CUZUolwG.js → agents-admin-api-DLnmdC1h.js} +1 -1
- package/dist/gateway/static/root/assets/{api-bpQ7yR10.js → api-Boc-CVh7.js} +1 -1
- package/dist/gateway/static/root/assets/{api-CWWEVThO.js → api-bL7sxjAF.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-C0_hxwgg.js → app-management-settings-panel-jIG5i7KE.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CLh-qnCC.js → appearance-settings-BnaQW9Xd.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-Bjtm3Rgi.js → apps-page-C2WKUwtN.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-dGnstkhB.js → archive-plugin-DjboG3kA.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-api-MB2xCoFF.js → automation-api-CZqL9l_d.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-result-state-DJQflY78.js → automation-result-state-DRd-X_Ai.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-task-card-DXgBxVE2.js → automation-task-card-wbnR5i6N.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-D3O7M2FH.js → automations-page-HyBQIfmn.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-Dk3FVWoX.js → automations-workspace-D6cTOKr7.js} +2 -2
- package/dist/gateway/static/root/assets/{binary-plugins-BrVJXmYf.js → binary-plugins-Bg8ARZUH.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Dok4sfT3.js → block-editor-DKohqFAW.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-PJbT3CxW.js → browser-automation-inputs-YeibTzw4.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-kkpX1Q7K.js → browser-automations-page-BWNcbuz2.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-control-api-Bg4wnkeA.js → browser-control-api-CDeuxy2x.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BrgX_Yb2.js → browser-settings-page-L0nBjfhG.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-Cs6Jt5Gl.js → capabilities-BcQa8c9n.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-BMaJizw4.js → capabilities-aT-QjNTl.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-D5hvAG6D.js → capabilities-page-DlpuHdHi.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-BrEvm4IH.js → capabilities-settings-panel-pvqkN2-2.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-1jQgGVc9.js → channels-BUPtawh6.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-agents-api-BAOWaUJf.js → chat-agents-api-B8JO6Tcj.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-chart-block-DeWrb9XR.js → chat-chart-block-DRtuFfF1.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-page-CafkCKOj.js → chat-page-BP0huA-W.js} +31 -31
- package/dist/gateway/static/root/assets/{chat-terminal-dock-C544n0-R.js → chat-terminal-dock-Dkqq5FSL.js} +1 -1
- package/dist/gateway/static/root/assets/{command-palette-api-D9PXzY8b.js → command-palette-api-qujvNqkK.js} +1 -1
- package/dist/gateway/static/root/assets/{composer-payload-handoff-CYXfjpem.js → composer-payload-handoff-CYIhcczq.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-DJmod8-w.js → computer-settings-page-8q4hRmoo.js} +1 -1
- package/dist/gateway/static/root/assets/{connected-providers-grid-b46VH4uy.js → connected-providers-grid-CKZfhHSD.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-BqDbTOTp.js → connector-service-page-DQaTI21R.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-CwRuUnH4.js → connectors-api-BjypBp2g.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-Mq9Bvoax.js → connectors-page-Lf1ZzaVn.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-DWaT0IC0.js → date-picker-D_PSHGpe.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-DV9XAt6F.js → dependency-picker-UqKVJ9dv.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-Dffq2NxL.js → desktop-pet-1Et9VqkM.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-narrative-CS8qJpNO.js → desktop-pet-narrative-rADKU0FX.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CrB1ICax.js → desktop-pet-settings-0fCGgaG7.js} +1 -1
- package/dist/gateway/static/root/assets/{dev-view-store-liRgSkcT.js → dev-view-store-TTj_djD8.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-ByEL5lvM.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-EKqQLQrE.js → directory-picker-path-field-C07a7wYX.js} +1 -1
- package/dist/gateway/static/root/assets/{discussion-annotation-sync-D-b1X6ro.js → discussion-annotation-sync-BFqKm9ky.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-wD97GeG0.js → extension-debug-page-DFaVlqas.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-iframe-host-B4Q1CjvW.js → extension-iframe-host-BfzPfXBq.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-marketplace-api-ak1_K3u8.js → extension-marketplace-api-ow0K1Y4_.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DWFI4iIh.js → extension-page-CrDADV5W.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-BZwcaU5Y.js → extension-provider-mnRoa63o.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-cn4KS42C.js → extension-settings-page-BLl02GFY.js} +1 -1
- package/dist/gateway/static/root/assets/{file-preview-surface-c3gDD9sM.js → file-preview-surface-TGdKqhCf.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-Dmt5JhZU.js → gateway-config-swr-DfPQIHOL.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-CJtDXQCt.js → gateway-realtime-67vWg_M2.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-Bkt1z-xo.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-restart-DInvvT5u.js → gateway-restart-CLtR2wkL.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BZXdv2FE.js → gateway-settings-COvC3r-l.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-s2KcWekp.js → gateway-startup-retry-9YQllbw2.js} +1 -1
- package/dist/gateway/static/root/assets/{global-defaults-api-DtnmDd87.js → global-defaults-api-DYMRjGvd.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-CAVjA5rO.js → home-page-k9LFXcVa.js} +2 -2
- package/dist/gateway/static/root/assets/{image-generation-api-RQQokgE9.js → image-generation-api-Dzydfvy8.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-BP_4TubV.js → imports-page-Csd_YZXZ.js} +1 -1
- package/dist/gateway/static/root/assets/index-CpwPxKQ8.css +1 -0
- package/dist/gateway/static/root/assets/index-DKW7BeT_.js +11 -0
- package/dist/gateway/static/root/assets/{install-connector-dialog-BNzNuXJ8.js → install-connector-dialog-CTQAKTPv.js} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DNRQFepg.js → keyboard-shortcuts-settings-B201bMIa.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-CvY5XxbX.js → local-app-workbench-page-CD_8_gd_.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-DfwEvd8G.js → local-apps-page-BOwqNH0L.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-CuDdIyxR.js → local-session-drafts-DjmK-SM9.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-TQcz_Vjt.js → locale-store-Bg_XR36n.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-eq49F1Rt.js → logs-page-gw3E9CMQ.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-BaYXDMOJ.js → management-settings-t_Z2mCyw.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-D4nII6Zv.js → markdown-view-BUpXJUPv.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-MvlAY405.js → media-plugins-_shnaEMY.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DG4HLOER.js +3 -0
- package/dist/gateway/static/root/assets/{model-selector-nsoNHqif.js → model-selector-a7PIT1Lk.js} +1 -1
- package/dist/gateway/static/root/assets/{models-hub-cache-CFIazNIF.js → models-hub-cache-KOJC3z6Q.js} +1 -1
- package/dist/gateway/static/root/assets/{note-detail-panel-KPzbHiEW.js → note-detail-panel-BsHYUFgk.js} +3 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-B-bEtjhj.js +1 -0
- package/dist/gateway/static/root/assets/{notes-api-HVxR5bRD.js → notes-api-BSmikUKI.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-yShJeR3i.js → notes-page-CA0NRL8O.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-api-CfKjRVnb.js → oauth-api-D2t9HXoC.js} +1 -1
- package/dist/gateway/static/root/assets/{oauth-provider-connect-D4uqONWr.js → oauth-provider-connect-DGGGGtcB.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-B98nlKTc.js → page-context-capture-button-BH54VO0V.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-draft-HcuK45iu.js → page-context-draft-BS5y8Cx9.js} +1 -1
- package/dist/gateway/static/root/assets/page-header-store-BdZnUh-D.js +1 -0
- package/dist/gateway/static/root/assets/{personal-avatar-_d72UP_d.js → personal-avatar-D8DtpDTa.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-B19h_3WQ.js → personal-page-KJezmTKP.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-settings-panel-CfwtGyue.js → personal-settings-panel-9uDaNJy5.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-dependencies-card-D8bqsDk_.js → phone-dependencies-card-DLYrI0C4.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-model-picker-CL_Zn6Xd.js → phone-model-picker-BbA2iI-3.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-settings-page-C5Jia8eQ.js → phone-settings-page-Cg_BPss4.js} +1 -1
- package/dist/gateway/static/root/assets/{phone-workspace-store-FBfrfkYq.js → phone-workspace-store-CVDk80Bf.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-details-dialog-gAq2KPzK.js → plugin-details-dialog-DgibLkc3.js} +1 -1
- package/dist/gateway/static/root/assets/{preference-select-fields-Ck8GAX_y.js → preference-select-fields-BVoN-lAv.js} +1 -1
- package/dist/gateway/static/root/assets/{product-automation-feedback-BJ9oTnNs.js → product-automation-feedback-DCo90zGh.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Dw9hUdxP.js → product-open-page-OWl8IAoY.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-C0iPzmSm.js → product-preview-content-Cjas7UNe.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-modal-COFtHoh6.js → product-preview-modal-CPWRvBI9.js} +2 -2
- package/dist/gateway/static/root/assets/{project-detail-page-C5Amjah-.js → project-detail-page-B_HlZux_.js} +1 -1
- package/dist/gateway/static/root/assets/{project-understanding-DpL9ADQU.js → project-understanding-Ba02SFzB.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-gGg9nM2t.js → projects-page-CdfKjp95.js} +1 -1
- package/dist/gateway/static/root/assets/{providers-api-D6JJRlJb.js → providers-api-rwQ4LWzr.js} +1 -1
- package/dist/gateway/static/root/assets/{recording-upload-DxX1xKyt.js → recording-upload-BSmvRrZQ.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-BfXzBR1D.js → registry-api-Vy7LfH6E.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BZA4StwC.js → remote-access-hub-UXrnpGev.js} +1 -1
- package/dist/gateway/static/root/assets/{resource-unavailable-X-SIrZYI.js → resource-unavailable-f9OzSi4W.js} +1 -1
- package/dist/gateway/static/root/assets/{route-preload-CWRb0UCt.js → route-preload-BtObM-co.js} +2 -2
- package/dist/gateway/static/root/assets/{runtime-tools-api-1DjsPyQ5.js → runtime-tools-api-Bt8t37z5.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BnCtyORj.js → runtime-tools-settings-panel-DU4UXnBm.js} +1 -1
- package/dist/gateway/static/root/assets/{service-recommendation-list-ChSOfHHh.js → service-recommendation-list-CuYsRcBB.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-rvY5aWw8.js → session-api-DJI9eSgw.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-CtKgACGl.js +23 -0
- package/dist/gateway/static/root/assets/{sessions-page-DAS2IUGT.js → sessions-page-BAsKzRHt.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CjAFqg2U.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-section-ZKRIuk7h.js → settings-advanced-section-BxUuF_yi.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-mode-store-CtJ8pEfm.js → settings-mode-store-CaoRh2gt.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-header-DuNCn8i-.js → settings-page-header-CyUHrn7c.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-DeNC8YHJ.js → settings-page-layout-DGVqXrlp.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-B3pUce-_.js → settings-page-qQ8-6dJ_.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-Fc3vuz_h.js → setup-status-panel-BpaPb625.js} +1 -1
- package/dist/gateway/static/root/assets/{share-link-dialog-B3hwjVAx.js → share-link-dialog-CQJ6Ykm2.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-D_9oFzGS.js → share-preview-page-Cem96FbB.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-BoUpXmxq.js → shares-api-Dowes16l.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-Drfuvepz.js → shares-settings-DZEkZDR0.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-By2HhJ9O.js → skill-api-D8ZwFEVe.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-list-api-TaUCzS8Y.js → skill-list-api-B4gp00-f.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-CN2fpS1n.js → skill-reload-api-ClmaaDXo.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-LzGLique.js → skills-page-CV0X9rvG.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-Cuyg8Ml3.js → system-settings-panel-D095uacX.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-CY2C4AM2.js +2 -0
- package/dist/gateway/static/root/assets/{task-result-evidence-DDubAU_5.js → task-result-evidence-LUrJlUhb.js} +1 -1
- package/dist/gateway/static/root/assets/{terminal-panel-store-BNs75Wdr.js → terminal-panel-store-BqEDB1Vl.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-DB1ZfBUm.js → theme-store-gAcojLgP.js} +1 -1
- package/dist/gateway/static/root/assets/tool-friendly-title-o6sxGVUu.js +1 -0
- package/dist/gateway/static/root/assets/{tracing-settings-page-TvtX4Goh.js → tracing-settings-page-B1ZRh-Is.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-COoVEdV9.js → tunnel-api-C9u9E3UQ.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-activity-store-Dr_MLgYe.js → understanding-activity-store-BTrzsR6_.js} +1 -1
- package/dist/gateway/static/root/assets/{understanding-refresh-store-DGmLGEqw.js → understanding-refresh-store-5Qava3jh.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-DP6eb6ed.js → usage-page-DFMLYKAc.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-itwjDYUb.js → use-autosave-3O-X7x15.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-hjIGlI_2.js → use-composer-attachments-BLc4dBfe.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-ClLa0g8D.js → use-file-preview-expanded-BaOmTXsT.js} +2 -2
- package/dist/gateway/static/root/assets/{use-personal-profile-vhWk6tTU.js → use-personal-profile-MusPgljM.js} +1 -1
- package/dist/gateway/static/root/assets/{use-workspace-tree-dfXXjA2-.js → use-workspace-tree-Ck_U2yTw.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-D8dswPWd.js → user-model-page-Den5Lg-k.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-BIfBySnN.js → voice-api-key-field-C5zJApoa.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-J4o59ICE.js → voice-config-api-DC1bYDt1.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-input-shortcut-events-B1mlpUdC.js → voice-input-shortcut-events-0SZjJdVV.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-transcribe-api-xxaSOOmq.js → voice-transcribe-api-CxVeANPX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DqwT1E5u.js → work-discovery-overlay-DAQ8McVe.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-BzYQmPLT.js → work-discovery-page-DUQysEyb.js} +1 -1
- package/dist/gateway/static/root/assets/{working-directory-picker-modal-D2Zf3GOG.js → working-directory-picker-modal-BO9qdJyZ.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-api-Bnx3eS2M.js → workspace-api-ZrN6yUER.js} +2 -2
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-Bo5dwoWP.js +1 -0
- package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-D13qHzVr.js → workspace-file-preview-dialog-Yj_kBWSb.js} +1 -1
- package/dist/gateway/static/root/assets/{workspace-open-location-menu-Cou-ig1H.js → workspace-open-location-menu-yxT7wajO.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DQGPKxHA.js → xopc-cloud-account-card-IcH9KDzx.js} +1 -1
- package/dist/gateway/static/root/index.html +81 -81
- package/dist/package.js +1 -1
- package/dist/packages/computer-control-contract/src/index.js +33 -3
- package/dist/src/agent/embedded/run-turn.js +64 -4
- package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
- package/dist/src/agent/tool-manuals/computer.js +6 -0
- package/dist/src/agent/tools/computer-use-tool.js +18 -5
- package/dist/src/agent/tools/phone-use-tool.js +12 -2
- package/dist/src/cli/commands/backup.js +1 -1
- package/dist/src/computer/agent-context.d.ts +21 -0
- package/dist/src/computer/agent-context.js +107 -0
- package/dist/src/computer/broker.d.ts +4 -2
- package/dist/src/computer/broker.js +26 -11
- package/dist/src/computer/diagnostics.d.ts +60 -6
- package/dist/src/computer/diagnostics.js +45 -4
- package/dist/src/computer/errors.d.ts +1 -1
- package/dist/src/computer/errors.js +4 -0
- package/dist/src/computer/evaluation.d.ts +2 -2
- package/dist/src/computer/native-timing.d.ts +15 -0
- package/dist/src/computer/native-timing.js +49 -0
- package/dist/src/computer/program-runtime.d.ts +22 -0
- package/dist/src/computer/program-runtime.js +105 -0
- package/dist/src/computer/runtime.d.ts +36 -2
- package/dist/src/computer/runtime.js +269 -58
- package/dist/src/config/schema.d.ts +18 -0
- package/dist/src/gateway/global-defaults-admin.js +1 -1
- package/dist/src/gateway/service/config-coordinator.d.ts +6 -0
- package/dist/src/phone/adb-driver.d.ts +15 -1
- package/dist/src/phone/adb-driver.js +104 -41
- package/dist/src/phone/autoglm-protocol.d.ts +36 -0
- package/dist/src/phone/autoglm-protocol.js +88 -0
- package/dist/src/phone/autoglm-upstream-prompt.d.ts +2 -0
- package/dist/src/phone/autoglm-upstream-prompt.js +5 -0
- package/dist/src/phone/autoglm-upstream.LICENSE +201 -0
- package/dist/src/phone/cloud-adb-connection.d.ts +3 -0
- package/dist/src/phone/cloud-adb-connection.js +102 -31
- package/dist/src/phone/cloud-adb.js +18 -6
- package/dist/src/phone/completion-recovery.d.ts +6 -0
- package/dist/src/phone/completion-recovery.js +30 -0
- package/dist/src/phone/contracts.d.ts +20 -0
- package/dist/src/phone/contracts.js +6 -0
- package/dist/src/phone/execution-trace.d.ts +51 -0
- package/dist/src/phone/execution-trace.js +78 -0
- package/dist/src/phone/model-adapter.d.ts +9 -1
- package/dist/src/phone/model-adapter.js +132 -61
- package/dist/src/phone/model-response.d.ts +5 -0
- package/dist/src/phone/model-response.js +118 -0
- package/dist/src/phone/runtime.d.ts +4 -0
- package/dist/src/phone/runtime.js +146 -16
- package/dist/src/phone/text-session.d.ts +14 -0
- package/dist/src/phone/text-session.js +39 -0
- package/dist/src/phone/ui-dump-binary.d.ts +1 -1
- package/dist/src/phone/ui-dump-binary.js +1 -1
- package/dist/src/phone/ui-session.d.ts +22 -0
- package/dist/src/phone/ui-session.js +191 -0
- package/dist/src/process/phone-process.d.ts +1 -0
- package/dist/src/process/phone-process.js +11 -1
- package/package.json +2 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-1du1hfi5.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-DcsZyYEa.js +0 -1
- package/dist/gateway/static/root/assets/index-BS9mjvSL.js +0 -11
- package/dist/gateway/static/root/assets/index-pT-m6l6b.css +0 -1
- package/dist/gateway/static/root/assets/messages-DaLmc4W1.js +0 -3
- package/dist/gateway/static/root/assets/note-image-lightbox-DticJxxh.js +0 -1
- package/dist/gateway/static/root/assets/page-header-store-D6SzJ9Ch.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-D2rbRfX3.js +0 -23
- package/dist/gateway/static/root/assets/settings-advanced-gate-CYDQybNF.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-6A9337pK.js +0 -2
- package/dist/gateway/static/root/assets/tool-friendly-title-DGmi7rCQ.js +0 -1
- package/dist/gateway/static/root/assets/workspace-editor-agent-store-COUVwj-p.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{i as a,l as o,n as s,o as c}from"./locale-store-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{i as a,l as o,n as s,o as c}from"./locale-store-Bg_XR36n.js";import{t as l}from"./messages-DG4HLOER.js";import{t as u}from"./button-CnRSIP6m.js";import{t as d}from"./skeleton-BI5TyibZ.js";import{i as f}from"./vendor-swr-CdRzEUwF.js";var p=e(t(),1),m=n(),h=e=>a(`/api/projects/${encodeURIComponent(e)}/understanding`);function g(e){return c(h(e))}function _(e){return c(h(e),{method:`POST`})}function v(e,t){return c(h(e),{method:`PATCH`,body:JSON.stringify({content:t})})}function y(e){return e===`queued`||e===`probing`||e===`analyzing`}var b=r();function x(){let e=(0,m.c)(2),t=s(S),n;return e[0]===t?n=e[1]:(n=l(t),e[0]=t,e[1]=n),n.projectsPage.understanding}function S(e){return e.language}function C(e){let t=(0,m.c)(18),{checked:n,onChange:r,disabled:i}=e,a=x(),o=(0,p.useId)(),s;t[0]===r?s=t[1]:(s=e=>r(e.target.checked),t[0]=r,t[1]=s);let c;t[2]!==n||t[3]!==i||t[4]!==o||t[5]!==s?(c=(0,b.jsx)(`input`,{type:`checkbox`,"aria-describedby":o,className:`mt-1 accent-accent`,checked:n,disabled:i,onChange:s}),t[2]=n,t[3]=i,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;t[7]===a.auto?l=t[8]:(l=(0,b.jsx)(`span`,{children:a.auto}),t[7]=a.auto,t[8]=l);let u;t[9]!==c||t[10]!==l?(u=(0,b.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2.5 text-sm text-fg`,children:[c,l]}),t[9]=c,t[10]=l,t[11]=u):u=t[11];let d;t[12]!==a.hint||t[13]!==o?(d=(0,b.jsx)(`p`,{id:o,className:`mt-1 pl-6 text-xs leading-5 text-fg-subtle`,children:a.hint}),t[12]=a.hint,t[13]=o,t[14]=d):d=t[14];let f;return t[15]!==u||t[16]!==d?(f=(0,b.jsxs)(`div`,{children:[u,d]}),t[15]=u,t[16]=d,t[17]=f):f=t[17],f}function w(e){let t=(0,m.c)(11),n=o(D),r=o(E),i;t[0]!==r||t[1]!==n||t[2]!==e?(i=r?[`project-understanding`,n,r,e]:null,t[0]=r,t[1]=n,t[2]=e,t[3]=i):i=t[3];let a;t[4]===e?a=t[5]:(a=()=>g(e),t[4]=e,t[5]=a);let s;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(s={refreshInterval:T,revalidateOnFocus:!1},t[6]=s):s=t[6];let c=f(i,a,s),{mutate:l}=c,u,d;return t[7]!==l||t[8]!==e?(u=()=>{let t=t=>{t.detail?.id===e&&l()};return window.addEventListener(`project-updated`,t),()=>window.removeEventListener(`project-updated`,t)},d=[l,e],t[7]=l,t[8]=e,t[9]=u,t[10]=d):(u=t[9],d=t[10]),(0,p.useEffect)(u,d),c}function T(e){return y(e?.status)?3e3:0}function E(e){return e.conversationId}function D(e){return e.baseUrl}function O({projectId:e,hasProjectFolder:t,onStarted:n,className:r}){let i=x(),{data:a,mutate:o}=w(e),[s,c]=(0,p.useState)(!1),[l,u]=(0,p.useState)(!1),d=y(a?.status),f=async()=>{c(!0),u(!1);try{await _(e),await o(),n?.()}catch{u(!0)}finally{c(!1)}};return t?(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`button`,{type:`button`,className:r??`text-xs text-fg-muted hover:text-fg disabled:opacity-50`,disabled:s||d,onClick:()=>void f(),children:d||s?i.running:a?.status===`failed`||a?.status===`canceled`?i.retry:a?.status===`completed`?i.refresh:i.start}),l?(0,b.jsx)(`p`,{role:`alert`,className:`px-2 text-xs text-danger`,children:i.failed}):null]}):(0,b.jsx)(A,{projectId:e})}function k({projectId:e,hasProjectFolder:t}){let n=x(),{data:r,error:i,isLoading:a,mutate:o}=w(e),[s,c]=(0,p.useState)(!1),[l,f]=(0,p.useState)(``),[m,h]=(0,p.useState)(!1),[g,_]=(0,p.useState)(!1),S=async()=>{h(!0),_(!1);try{await v(e,l),await o(),c(!1)}catch{_(!0)}finally{h(!1)}};return t?a?(0,b.jsx)(d,{className:`h-12 w-full rounded-xl`}):(0,b.jsxs)(`section`,{className:`rounded-xl border border-edge bg-surface-panel px-5 py-3`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-xs text-fg-subtle`,children:[(0,b.jsx)(`span`,{children:y(r?.status)?n.running:r?.status===`failed`||r?.status===`canceled`||i?n.failed:n.title}),y(r?.status)?null:(0,b.jsx)(O,{projectId:e,hasProjectFolder:t})]}),r?.overview?(0,b.jsxs)(`details`,{className:`mt-2`,children:[(0,b.jsx)(`summary`,{className:`cursor-pointer text-sm text-fg-muted`,children:n.view}),s?(0,b.jsxs)(`div`,{className:`mt-3 space-y-2`,children:[(0,b.jsx)(`textarea`,{"aria-label":n.title,className:`min-h-48 w-full rounded-lg border border-edge bg-surface-base p-3 text-sm text-fg`,value:l,onChange:e=>f(e.target.value),maxLength:6e3,disabled:m}),(0,b.jsxs)(`div`,{className:`flex gap-2`,children:[(0,b.jsx)(u,{onClick:()=>void S(),disabled:m||!l.trim(),children:n.save}),(0,b.jsx)(u,{variant:`ghost`,disabled:m,onClick:()=>c(!1),children:n.cancel})]}),g?(0,b.jsx)(`p`,{role:`alert`,className:`text-xs text-danger`,children:n.saveFailed}):null]}):(0,b.jsxs)(`div`,{className:`mt-3`,children:[(0,b.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-6 text-fg-muted`,children:r.overview}),(0,b.jsx)(`button`,{type:`button`,className:`mt-2 text-xs text-fg-subtle hover:text-fg`,onClick:()=>{f(r.overview??``),c(!0)},children:n.edit})]})]}):null]}):(0,b.jsx)(`section`,{className:`rounded-xl border border-edge p-4`,children:(0,b.jsx)(A,{projectId:e})})}function A(e){let t=(0,m.c)(8),{projectId:n}=e,r=s(j)===`zh`,a=r?`未绑定项目文件夹`:`No project folder linked`,o;t[0]===a?o=t[1]:(o=(0,b.jsx)(`span`,{className:`text-fg-muted`,children:a}),t[0]=a,t[1]=o);let c=`/projects/${encodeURIComponent(n)}/settings`,l=r?`绑定文件夹`:`Link a folder`,u;t[2]!==c||t[3]!==l?(u=(0,b.jsx)(i,{className:`text-accent-fg hover:underline`,to:c,children:l}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d;return t[5]!==o||t[6]!==u?(d=(0,b.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs leading-5`,children:[o,u]}),t[5]=o,t[6]=u,t[7]=d):d=t[7],d}function j(e){return e.language}export{C as n,k as r,O as t};
|
package/dist/gateway/static/root/assets/{projects-page-gGg9nM2t.js → projects-page-CdfKjp95.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{n as a}from"./locale-store-TQcz_Vjt.js";import{t as ee}from"./messages-DaLmc4W1.js";import{t as o}from"./archive-Dz0hferG.js";import{t as s}from"./arrow-right-DSSvoX71.js";import{t as c}from"./working-directory-picker-modal-D2Zf3GOG.js";import{n as l,r as u}from"./popover-select-DD8fmrxH.js";import{t as te}from"./folder-kanban-CpLlFI1o.js";import{t as d}from"./folder-open-CyzJ19I9.js";import{t as f}from"./loader-circle-CifKLtgG.js";import{n as p,t as m}from"./pin-off-BMRv-Kxr.js";import{t as h}from"./plus-Q2yW6OE7.js";import{t as ne}from"./rotate-ccw-JM1TBLpp.js";import{t as g}from"./search-DA7gz22f.js";import{t as _}from"./x-B_N4OPjy.js";import{t as v}from"./cn-0WouolD0.js";import{t as y}from"./button-CnRSIP6m.js";import{t as b}from"./skeleton-BI5TyibZ.js";import{a as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./dist-DfWfZ9iu.js";import{_ as O,d as k,f as A,m as j,n as M,t as N}from"./api-bpQ7yR10.js";import{t as P}from"./page-header-store-D6SzJ9Ch.js";import{n as re}from"./project-understanding-DpL9ADQU.js";import{t as ie}from"./use-directory-picker-C4p7AgWY.js";import{t as F}from"./date-formatters-DukWSVwc.js";var I=n(),L=e(t(),1),R=r();function z(e,t){if(e==null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?t:F(n)}function ae(e){return[...e].sort((e,t)=>{let n=Number(!!t.pinnedAt)-Number(!!e.pinnedAt);return n===0?new Date(t.lastActiveAt??t.updatedAt).getTime()-new Date(e.lastActiveAt??e.updatedAt).getTime():n})}function oe(){let e=(0,I.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsx)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-3`,"aria-busy":!0,children:Array.from({length:6},B)}),e[0]=t):t=e[0],t}function B(e,t){return(0,R.jsx)(b,{className:`h-40 rounded-xl`},t)}function se(e){let t=(0,I.c)(59),{project:n,busy:r,onTogglePin:c,onToggleArchive:l}=e,u=a(V),d,f,h,g,_,v,b,x;if(t[0]!==u||t[1]!==n.brief||t[2]!==n.description||t[3]!==n.id||t[4]!==n.lastActiveAt||t[5]!==n.name||t[6]!==n.status||t[7]!==n.updatedAt||t[8]!==n.workspaceRoot){let e=ee(u).projectsPage;d=e.management,b=`flex h-full flex-col rounded-xl border border-edge-subtle bg-surface-base p-4`;let r;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover text-fg-muted`,children:(0,R.jsx)(te,{className:`size-4`,"aria-hidden":!0})}),t[17]=r):r=t[17];let a;t[18]===n.name?a=t[19]:(a=(0,R.jsx)(`h2`,{className:`truncate text-base font-semibold sm:text-sm text-fg`,children:n.name}),t[18]=n.name,t[19]=a);let o=(0,R.jsxs)(`div`,{className:`min-w-0`,children:[a,(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-fg-subtle`,children:e.statuses[n.status]})]}),c;t[20]===o?c=t[21]:(c=(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[r,o]}),t[20]=o,t[21]=c);let l;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,R.jsx)(s,{className:`mt-2 size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0}),t[22]=l):l=t[22];let p;t[23]===c?p=t[24]:(p=(0,R.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[c,l]}),t[23]=c,t[24]=p),x=(0,R.jsxs)(i,{to:`/projects/${encodeURIComponent(n.id)}`,className:`group flex min-w-0 flex-1 flex-col rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[p,(0,R.jsx)(`p`,{className:`mt-3 line-clamp-2 min-h-10 text-sm leading-6 sm:text-xs sm:leading-5 text-fg-muted`,children:n.description||n.brief||e.noDescription})]}),v=`mt-3 flex shrink-0 items-end justify-between gap-3 border-t border-edge-subtle pt-3`,g=`min-w-0 text-xs text-fg-muted`,_=(0,R.jsx)(`p`,{className:`hidden truncate sm:block`,children:n.workspaceRoot||e.agentDefault}),f=`mt-1`,h=z(n.lastActiveAt??n.updatedAt,e.never),t[0]=u,t[1]=n.brief,t[2]=n.description,t[3]=n.id,t[4]=n.lastActiveAt,t[5]=n.name,t[6]=n.status,t[7]=n.updatedAt,t[8]=n.workspaceRoot,t[9]=d,t[10]=f,t[11]=h,t[12]=g,t[13]=_,t[14]=v,t[15]=b,t[16]=x}else d=t[9],f=t[10],h=t[11],g=t[12],_=t[13],v=t[14],b=t[15],x=t[16];let S;t[25]!==f||t[26]!==h?(S=(0,R.jsx)(`p`,{className:f,children:h}),t[25]=f,t[26]=h,t[27]=S):S=t[27];let C;t[28]!==g||t[29]!==_||t[30]!==S?(C=(0,R.jsxs)(`div`,{className:g,children:[_,S]}),t[28]=g,t[29]=_,t[30]=S,t[31]=C):C=t[31];let w=n.pinnedAt?d.unpin:d.pin,T=n.pinnedAt?d.unpin:d.pin,E;t[32]===n.pinnedAt?E=t[33]:(E=n.pinnedAt?(0,R.jsx)(m,{className:`size-4`,"aria-hidden":!0}):(0,R.jsx)(p,{className:`size-4`,"aria-hidden":!0}),t[32]=n.pinnedAt,t[33]=E);let D;t[34]!==r||t[35]!==c||t[36]!==w||t[37]!==T||t[38]!==E?(D=(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`size-8 p-0`,disabled:r,onClick:c,"aria-label":w,title:T,children:E}),t[34]=r,t[35]=c,t[36]=w,t[37]=T,t[38]=E,t[39]=D):D=t[39];let O=n.status===`archived`?d.restore:d.archive,k=n.status===`archived`?d.restore:d.archive,A;t[40]===n.status?A=t[41]:(A=n.status===`archived`?(0,R.jsx)(ne,{className:`size-4`,"aria-hidden":!0}):(0,R.jsx)(o,{className:`size-4`,"aria-hidden":!0}),t[40]=n.status,t[41]=A);let j;t[42]!==r||t[43]!==l||t[44]!==O||t[45]!==k||t[46]!==A?(j=(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`size-8 p-0`,disabled:r,onClick:l,"aria-label":O,title:k,children:A}),t[42]=r,t[43]=l,t[44]=O,t[45]=k,t[46]=A,t[47]=j):j=t[47];let M;t[48]!==D||t[49]!==j?(M=(0,R.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[D,j]}),t[48]=D,t[49]=j,t[50]=M):M=t[50];let N;t[51]!==M||t[52]!==v||t[53]!==C?(N=(0,R.jsxs)(`div`,{className:v,children:[C,M]}),t[51]=M,t[52]=v,t[53]=C,t[54]=N):N=t[54];let P;return t[55]!==N||t[56]!==b||t[57]!==x?(P=(0,R.jsxs)(`article`,{className:b,children:[x,N]}),t[55]=N,t[56]=b,t[57]=x,t[58]=P):P=t[58],P}function V(e){return e.language}function H(){let e=a(e=>e.language),t=ee(e),n=t.projectsPage,r=n.management,i=t.chat.workingDirectory,o=P(e=>e.setPageHeader),s=P(e=>e.clearPageHeader),[p,m]=(0,L.useState)([]),[ne,b]=(0,L.useState)(!0),[F,I]=(0,L.useState)(null),[z,B]=(0,L.useState)(``),[V,H]=(0,L.useState)(!1),[U,ce]=(0,L.useState)(`active`),[le,ue]=(0,L.useState)(null),[de,W]=(0,L.useState)(!1),[fe,G]=(0,L.useState)(null),[K,pe]=(0,L.useState)(!1),[me,he]=(0,L.useState)(!1),[q,ge]=(0,L.useState)(``),[J,_e]=(0,L.useState)(``),[Y,ve]=(0,L.useState)(``),X=ie({initialPath:Y,onPicked:ve}),Z=(0,L.useRef)(0),Q=(0,L.useCallback)(async(e=!1)=>{let t=++Z.current;e||(b(!0),I(null));try{let e=await k({limit:100,sortBy:`updatedAt`,sortOrder:`desc`});t===Z.current&&m(ae(e.items))}catch(n){!e&&t===Z.current&&I(n instanceof Error?n.message:String(n))}finally{t===Z.current&&b(!1)}},[]);(0,L.useEffect)(()=>(Q(),()=>{Z.current++}),[Q]),(0,L.useEffect)(()=>{let e=()=>{Q(!0)};return window.addEventListener(`project-resource-changed`,e),()=>{window.removeEventListener(`project-resource-changed`,e)}},[Q]);let $=(0,L.useMemo)(()=>{let e=z.trim().toLocaleLowerCase();return p.filter(e=>U===`all`||e.status===U).filter(t=>!e||[t.name,t.description,t.brief,t.workspaceRoot].filter(Boolean).some(t=>t.toLocaleLowerCase().includes(e)))},[U,p,z]),ye=(0,L.useMemo)(()=>(0,R.jsxs)(y,{type:`button`,variant:`primary`,className:`h-9 rounded-lg`,onClick:()=>W(!0),children:[(0,R.jsx)(h,{className:`size-4`,"aria-hidden":!0}),n.create]}),[n.create]);(0,L.useLayoutEffect)(()=>(o({startExtra:null,main:(0,R.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:r.title}),end:ye}),()=>s()),[s,ye,r.title,o]);let be=(0,L.useCallback)(async e=>{e.preventDefault();let t=q.trim(),n=Y.trim();if(!(!t||K)){pe(!0),G(null);try{let e=await M({autoUnderstand:!!Y.trim()&&me,name:t,...J.trim()?{description:J.trim()}:{},...n?{workspaceRoot:n}:{}});m(t=>[e,...t.filter(t=>t.id!==e.id)]),ge(``),_e(``),ve(``),he(!1),W(!1),window.dispatchEvent(new CustomEvent(`project-updated`,{detail:{id:e.id}}))}catch(e){G(e instanceof Error?e.message:String(e))}finally{pe(!1)}}},[K,J,q,Y,me]),xe=(0,L.useCallback)(async(e,t)=>{ue(e.id),I(null);try{let n;n=t===`pin`?e.pinnedAt?await O(e.id,e.version):await A(e.id,e.version):e.status===`archived`?await j(e.id,e.version):await N(e.id,e.version),m(e=>e.map(e=>e.id===n.id?n:e)),window.dispatchEvent(new CustomEvent(`project-updated`,{detail:{id:e.id}}))}catch(e){I(e instanceof Error?e.message:String(e))}finally{ue(null)}},[]),Se=[{id:`active`,label:n.statuses.active},{id:`paused`,label:n.statuses.paused},{id:`archived`,label:n.statuses.archived},{id:`all`,label:n.all}],Ce=Se.find(e=>e.id===U)?.label??n.all,we=r.resultCount.replace(`{{status}}`,Ce).replace(`{{count}}`,String($.length));return(0,R.jsxs)(`main`,{className:`mx-auto flex w-full max-w-7xl flex-1 flex-col gap-5 px-4 pb-7 pt-3 sm:px-6 lg:px-8 lg:pb-9 lg:pt-4`,children:[(0,R.jsx)(D,{open:de,onOpenChange:e=>{W(e),e||G(null)},children:(0,R.jsxs)(w,{children:[(0,R.jsx)(x,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,R.jsxs)(T,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[90] flex h-[min(34rem,calc(100vh-2rem))] w-[min(38rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay shadow-float focus:outline-none`,children:[(0,R.jsxs)(`div`,{className:`shrink-0 border-b border-edge px-5 py-4`,children:[(0,R.jsx)(E,{className:`text-base font-semibold text-fg`,children:n.createTitle}),(0,R.jsx)(S,{className:`mt-1 text-sm text-fg-muted`,children:n.createDescription})]}),(0,R.jsxs)(`form`,{onSubmit:be,className:`flex min-h-0 flex-1 flex-col`,children:[(0,R.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-y-auto px-5 py-4`,children:[(0,R.jsxs)(`label`,{className:`grid gap-1.5 text-sm font-medium text-fg`,children:[n.projectName,(0,R.jsx)(`input`,{className:`h-10 rounded-lg border border-edge bg-surface-base px-3 font-normal outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`,value:q,onChange:e=>ge(e.target.value),maxLength:160})]}),(0,R.jsxs)(`label`,{className:`grid gap-1.5 text-sm font-medium text-fg`,children:[r.descriptionLabel,(0,R.jsx)(`textarea`,{className:`min-h-28 resize-none rounded-lg border border-edge bg-surface-base px-3 py-2 font-normal leading-6 outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`,value:J,onChange:e=>_e(e.target.value),maxLength:2e3,placeholder:r.descriptionPlaceholder})]}),(0,R.jsxs)(`div`,{className:`grid gap-1.5 text-sm`,children:[(0,R.jsx)(`span`,{className:`font-medium text-fg`,children:n.workspaceRoot}),(0,R.jsxs)(`button`,{type:`button`,className:`flex min-h-12 w-full items-center gap-3 rounded-lg border border-edge bg-surface-base px-3 py-2 text-left outline-none transition-colors hover:bg-surface-hover focus-visible:border-accent focus-visible:ring-2 focus-visible:ring-accent/20 disabled:cursor-not-allowed disabled:opacity-60`,onClick:X.pick,disabled:K||X.picking,children:[X.picking?(0,R.jsx)(f,{className:`size-5 shrink-0 animate-spin text-accent`,"aria-hidden":!0}):(0,R.jsx)(d,{className:`size-5 shrink-0 text-accent`,"aria-hidden":!0}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:Y?i.chooseFolder:i.selectWorkingDirectory}),(0,R.jsx)(`span`,{className:v(`mt-0.5 block truncate font-mono text-xs font-normal`,Y?`text-fg-muted`:`text-fg-subtle`),title:Y||void 0,children:Y||n.workspaceSelectionPlaceholder})]})]}),(0,R.jsx)(`p`,{className:`text-xs font-normal text-fg-muted`,children:n.workspaceSelectionHint})]}),(0,R.jsx)(re,{checked:me,onChange:he,disabled:K||!Y.trim()}),fe?(0,R.jsx)(`p`,{className:`rounded-lg bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,children:fe}):null]}),(0,R.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,R.jsx)(C,{asChild:!0,children:(0,R.jsx)(y,{type:`button`,variant:`ghost`,children:n.cancel})}),(0,R.jsx)(y,{type:`submit`,variant:`primary`,disabled:K||!q.trim(),children:K?n.home.creating:n.create})]})]})]})]})}),X.hasNativePicker?null:(0,R.jsx)(c,{open:X.modalOpen,onOpenChange:X.setModalOpen,initialAbsolutePath:Y||void 0,onConfirm:X.confirmPick,wd:i}),(0,R.jsxs)(`section`,{className:`flex min-h-10 flex-wrap items-center justify-between gap-3`,"aria-label":r.filterLabel,children:[(0,R.jsx)(`p`,{className:`text-sm font-medium text-fg-muted`,"aria-live":`polite`,children:we}),(0,R.jsxs)(`div`,{className:v(`ml-auto flex min-w-0 items-center justify-end gap-2`,V&&`w-full sm:w-auto`),children:[V?(0,R.jsxs)(`div`,{className:`relative min-w-0 flex-1 sm:w-64 sm:flex-none`,children:[(0,R.jsx)(g,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,R.jsx)(`input`,{autoFocus:!0,className:`h-11 w-full rounded-lg border border-edge bg-surface-panel pl-9 pr-12 text-base sm:h-9 sm:text-sm text-fg outline-none placeholder:text-fg-muted focus:border-accent`,value:z,onChange:e=>B(e.target.value),placeholder:n.searchPlaceholder,"aria-label":n.searchPlaceholder}),(0,R.jsx)(`button`,{type:`button`,className:`touch-target absolute right-0 top-1/2 flex size-6 -translate-y-1/2 items-center justify-center rounded-md text-fg-subtle transition-colors hover:bg-surface-hover hover:text-fg`,onClick:()=>{B(``),H(!1)},"aria-label":r.clearSearch,title:r.clearSearch,children:(0,R.jsx)(_,{className:`size-3.5`,"aria-hidden":!0})})]}):(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,onClick:()=>H(!0),"aria-label":n.searchPlaceholder,title:n.searchPlaceholder,children:(0,R.jsx)(g,{className:`size-4`,"aria-hidden":!0})}),(0,R.jsx)(l,{className:`w-28 sm:w-32`,triggerClassName:`h-9 border-edge bg-surface-panel px-2.5 text-xs font-medium`,contentClassName:`min-w-36`,align:`end`,value:U,"aria-label":r.filterLabel,onChange:e=>ce(e.target.value),children:Se.map(e=>(0,R.jsx)(u,{value:e.id,children:e.label},e.id))})]})]}),F?(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl border border-danger/25 bg-danger-soft px-4 py-3 text-sm text-danger`,role:`alert`,children:[(0,R.jsx)(`span`,{children:F}),(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`h-8 px-2`,onClick:()=>void Q(),children:n.home.retry})]}):null,ne?(0,R.jsx)(oe,{}):$.length?(0,R.jsx)(`section`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-3`,children:$.map(e=>(0,R.jsx)(se,{project:e,busy:le===e.id,onTogglePin:()=>void xe(e,`pin`),onToggleArchive:()=>void xe(e,`archive`)},e.id))}):F?null:(0,R.jsxs)(`section`,{className:`py-16 text-center`,children:[(0,R.jsx)(te,{className:`mx-auto size-7 text-fg-subtle`,"aria-hidden":!0}),(0,R.jsx)(`h2`,{className:`mt-3 text-sm font-semibold text-fg`,children:p.length===0?e===`zh`?`创建第一个项目`:`Create your first project`:r.emptyTitle}),(0,R.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:p.length===0?e===`zh`?`把相关对话、任务和资料放在一起。`:`Keep related conversations, tasks and materials together.`:r.emptyHint}),(0,R.jsx)(y,{className:`mt-4`,onClick:()=>{p.length===0?W(!0):(B(``),ce(`all`))},children:p.length===0?n.create:e===`zh`?`清除筛选`:`Clear filters`})]})]})}export{H as ProjectsPage};
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{n as a}from"./locale-store-Bg_XR36n.js";import{t as ee}from"./messages-DG4HLOER.js";import{t as o}from"./archive-Dz0hferG.js";import{t as s}from"./arrow-right-DSSvoX71.js";import{t as c}from"./working-directory-picker-modal-BO9qdJyZ.js";import{n as l,r as u}from"./popover-select-DD8fmrxH.js";import{t as te}from"./folder-kanban-CpLlFI1o.js";import{t as d}from"./folder-open-CyzJ19I9.js";import{t as f}from"./loader-circle-CifKLtgG.js";import{n as p,t as m}from"./pin-off-BMRv-Kxr.js";import{t as h}from"./plus-Q2yW6OE7.js";import{t as ne}from"./rotate-ccw-JM1TBLpp.js";import{t as g}from"./search-DA7gz22f.js";import{t as _}from"./x-B_N4OPjy.js";import{t as v}from"./cn-0WouolD0.js";import{t as y}from"./button-CnRSIP6m.js";import{t as b}from"./skeleton-BI5TyibZ.js";import{a as x,i as S,n as C,o as w,r as T,s as E,t as D}from"./dist-DfWfZ9iu.js";import{_ as O,d as k,f as A,m as j,n as M,t as N}from"./api-Boc-CVh7.js";import{t as P}from"./page-header-store-BdZnUh-D.js";import{n as re}from"./project-understanding-Ba02SFzB.js";import{t as ie}from"./use-directory-picker-C4p7AgWY.js";import{t as F}from"./date-formatters-DukWSVwc.js";var I=n(),L=e(t(),1),R=r();function z(e,t){if(e==null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?t:F(n)}function ae(e){return[...e].sort((e,t)=>{let n=Number(!!t.pinnedAt)-Number(!!e.pinnedAt);return n===0?new Date(t.lastActiveAt??t.updatedAt).getTime()-new Date(e.lastActiveAt??e.updatedAt).getTime():n})}function oe(){let e=(0,I.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,R.jsx)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-3`,"aria-busy":!0,children:Array.from({length:6},B)}),e[0]=t):t=e[0],t}function B(e,t){return(0,R.jsx)(b,{className:`h-40 rounded-xl`},t)}function se(e){let t=(0,I.c)(59),{project:n,busy:r,onTogglePin:c,onToggleArchive:l}=e,u=a(V),d,f,h,g,_,v,b,x;if(t[0]!==u||t[1]!==n.brief||t[2]!==n.description||t[3]!==n.id||t[4]!==n.lastActiveAt||t[5]!==n.name||t[6]!==n.status||t[7]!==n.updatedAt||t[8]!==n.workspaceRoot){let e=ee(u).projectsPage;d=e.management,b=`flex h-full flex-col rounded-xl border border-edge-subtle bg-surface-base p-4`;let r;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,R.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover text-fg-muted`,children:(0,R.jsx)(te,{className:`size-4`,"aria-hidden":!0})}),t[17]=r):r=t[17];let a;t[18]===n.name?a=t[19]:(a=(0,R.jsx)(`h2`,{className:`truncate text-base font-semibold sm:text-sm text-fg`,children:n.name}),t[18]=n.name,t[19]=a);let o=(0,R.jsxs)(`div`,{className:`min-w-0`,children:[a,(0,R.jsx)(`p`,{className:`mt-0.5 text-xs text-fg-subtle`,children:e.statuses[n.status]})]}),c;t[20]===o?c=t[21]:(c=(0,R.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[r,o]}),t[20]=o,t[21]=c);let l;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,R.jsx)(s,{className:`mt-2 size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0}),t[22]=l):l=t[22];let p;t[23]===c?p=t[24]:(p=(0,R.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[c,l]}),t[23]=c,t[24]=p),x=(0,R.jsxs)(i,{to:`/projects/${encodeURIComponent(n.id)}`,className:`group flex min-w-0 flex-1 flex-col rounded-lg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[p,(0,R.jsx)(`p`,{className:`mt-3 line-clamp-2 min-h-10 text-sm leading-6 sm:text-xs sm:leading-5 text-fg-muted`,children:n.description||n.brief||e.noDescription})]}),v=`mt-3 flex shrink-0 items-end justify-between gap-3 border-t border-edge-subtle pt-3`,g=`min-w-0 text-xs text-fg-muted`,_=(0,R.jsx)(`p`,{className:`hidden truncate sm:block`,children:n.workspaceRoot||e.agentDefault}),f=`mt-1`,h=z(n.lastActiveAt??n.updatedAt,e.never),t[0]=u,t[1]=n.brief,t[2]=n.description,t[3]=n.id,t[4]=n.lastActiveAt,t[5]=n.name,t[6]=n.status,t[7]=n.updatedAt,t[8]=n.workspaceRoot,t[9]=d,t[10]=f,t[11]=h,t[12]=g,t[13]=_,t[14]=v,t[15]=b,t[16]=x}else d=t[9],f=t[10],h=t[11],g=t[12],_=t[13],v=t[14],b=t[15],x=t[16];let S;t[25]!==f||t[26]!==h?(S=(0,R.jsx)(`p`,{className:f,children:h}),t[25]=f,t[26]=h,t[27]=S):S=t[27];let C;t[28]!==g||t[29]!==_||t[30]!==S?(C=(0,R.jsxs)(`div`,{className:g,children:[_,S]}),t[28]=g,t[29]=_,t[30]=S,t[31]=C):C=t[31];let w=n.pinnedAt?d.unpin:d.pin,T=n.pinnedAt?d.unpin:d.pin,E;t[32]===n.pinnedAt?E=t[33]:(E=n.pinnedAt?(0,R.jsx)(m,{className:`size-4`,"aria-hidden":!0}):(0,R.jsx)(p,{className:`size-4`,"aria-hidden":!0}),t[32]=n.pinnedAt,t[33]=E);let D;t[34]!==r||t[35]!==c||t[36]!==w||t[37]!==T||t[38]!==E?(D=(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`size-8 p-0`,disabled:r,onClick:c,"aria-label":w,title:T,children:E}),t[34]=r,t[35]=c,t[36]=w,t[37]=T,t[38]=E,t[39]=D):D=t[39];let O=n.status===`archived`?d.restore:d.archive,k=n.status===`archived`?d.restore:d.archive,A;t[40]===n.status?A=t[41]:(A=n.status===`archived`?(0,R.jsx)(ne,{className:`size-4`,"aria-hidden":!0}):(0,R.jsx)(o,{className:`size-4`,"aria-hidden":!0}),t[40]=n.status,t[41]=A);let j;t[42]!==r||t[43]!==l||t[44]!==O||t[45]!==k||t[46]!==A?(j=(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`size-8 p-0`,disabled:r,onClick:l,"aria-label":O,title:k,children:A}),t[42]=r,t[43]=l,t[44]=O,t[45]=k,t[46]=A,t[47]=j):j=t[47];let M;t[48]!==D||t[49]!==j?(M=(0,R.jsxs)(`div`,{className:`flex shrink-0 gap-1`,children:[D,j]}),t[48]=D,t[49]=j,t[50]=M):M=t[50];let N;t[51]!==M||t[52]!==v||t[53]!==C?(N=(0,R.jsxs)(`div`,{className:v,children:[C,M]}),t[51]=M,t[52]=v,t[53]=C,t[54]=N):N=t[54];let P;return t[55]!==N||t[56]!==b||t[57]!==x?(P=(0,R.jsxs)(`article`,{className:b,children:[x,N]}),t[55]=N,t[56]=b,t[57]=x,t[58]=P):P=t[58],P}function V(e){return e.language}function H(){let e=a(e=>e.language),t=ee(e),n=t.projectsPage,r=n.management,i=t.chat.workingDirectory,o=P(e=>e.setPageHeader),s=P(e=>e.clearPageHeader),[p,m]=(0,L.useState)([]),[ne,b]=(0,L.useState)(!0),[F,I]=(0,L.useState)(null),[z,B]=(0,L.useState)(``),[V,H]=(0,L.useState)(!1),[U,ce]=(0,L.useState)(`active`),[le,ue]=(0,L.useState)(null),[de,W]=(0,L.useState)(!1),[fe,G]=(0,L.useState)(null),[K,pe]=(0,L.useState)(!1),[me,he]=(0,L.useState)(!1),[q,ge]=(0,L.useState)(``),[J,_e]=(0,L.useState)(``),[Y,ve]=(0,L.useState)(``),X=ie({initialPath:Y,onPicked:ve}),Z=(0,L.useRef)(0),Q=(0,L.useCallback)(async(e=!1)=>{let t=++Z.current;e||(b(!0),I(null));try{let e=await k({limit:100,sortBy:`updatedAt`,sortOrder:`desc`});t===Z.current&&m(ae(e.items))}catch(n){!e&&t===Z.current&&I(n instanceof Error?n.message:String(n))}finally{t===Z.current&&b(!1)}},[]);(0,L.useEffect)(()=>(Q(),()=>{Z.current++}),[Q]),(0,L.useEffect)(()=>{let e=()=>{Q(!0)};return window.addEventListener(`project-resource-changed`,e),()=>{window.removeEventListener(`project-resource-changed`,e)}},[Q]);let $=(0,L.useMemo)(()=>{let e=z.trim().toLocaleLowerCase();return p.filter(e=>U===`all`||e.status===U).filter(t=>!e||[t.name,t.description,t.brief,t.workspaceRoot].filter(Boolean).some(t=>t.toLocaleLowerCase().includes(e)))},[U,p,z]),ye=(0,L.useMemo)(()=>(0,R.jsxs)(y,{type:`button`,variant:`primary`,className:`h-9 rounded-lg`,onClick:()=>W(!0),children:[(0,R.jsx)(h,{className:`size-4`,"aria-hidden":!0}),n.create]}),[n.create]);(0,L.useLayoutEffect)(()=>(o({startExtra:null,main:(0,R.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:r.title}),end:ye}),()=>s()),[s,ye,r.title,o]);let be=(0,L.useCallback)(async e=>{e.preventDefault();let t=q.trim(),n=Y.trim();if(!(!t||K)){pe(!0),G(null);try{let e=await M({autoUnderstand:!!Y.trim()&&me,name:t,...J.trim()?{description:J.trim()}:{},...n?{workspaceRoot:n}:{}});m(t=>[e,...t.filter(t=>t.id!==e.id)]),ge(``),_e(``),ve(``),he(!1),W(!1),window.dispatchEvent(new CustomEvent(`project-updated`,{detail:{id:e.id}}))}catch(e){G(e instanceof Error?e.message:String(e))}finally{pe(!1)}}},[K,J,q,Y,me]),xe=(0,L.useCallback)(async(e,t)=>{ue(e.id),I(null);try{let n;n=t===`pin`?e.pinnedAt?await O(e.id,e.version):await A(e.id,e.version):e.status===`archived`?await j(e.id,e.version):await N(e.id,e.version),m(e=>e.map(e=>e.id===n.id?n:e)),window.dispatchEvent(new CustomEvent(`project-updated`,{detail:{id:e.id}}))}catch(e){I(e instanceof Error?e.message:String(e))}finally{ue(null)}},[]),Se=[{id:`active`,label:n.statuses.active},{id:`paused`,label:n.statuses.paused},{id:`archived`,label:n.statuses.archived},{id:`all`,label:n.all}],Ce=Se.find(e=>e.id===U)?.label??n.all,we=r.resultCount.replace(`{{status}}`,Ce).replace(`{{count}}`,String($.length));return(0,R.jsxs)(`main`,{className:`mx-auto flex w-full max-w-7xl flex-1 flex-col gap-5 px-4 pb-7 pt-3 sm:px-6 lg:px-8 lg:pb-9 lg:pt-4`,children:[(0,R.jsx)(D,{open:de,onOpenChange:e=>{W(e),e||G(null)},children:(0,R.jsxs)(w,{children:[(0,R.jsx)(x,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,R.jsxs)(T,{className:`xopc-dialog-content fixed left-1/2 top-1/2 z-[90] flex h-[min(34rem,calc(100vh-2rem))] w-[min(38rem,calc(100vw-2rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-overlay shadow-float focus:outline-none`,children:[(0,R.jsxs)(`div`,{className:`shrink-0 border-b border-edge px-5 py-4`,children:[(0,R.jsx)(E,{className:`text-base font-semibold text-fg`,children:n.createTitle}),(0,R.jsx)(S,{className:`mt-1 text-sm text-fg-muted`,children:n.createDescription})]}),(0,R.jsxs)(`form`,{onSubmit:be,className:`flex min-h-0 flex-1 flex-col`,children:[(0,R.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-y-auto px-5 py-4`,children:[(0,R.jsxs)(`label`,{className:`grid gap-1.5 text-sm font-medium text-fg`,children:[n.projectName,(0,R.jsx)(`input`,{className:`h-10 rounded-lg border border-edge bg-surface-base px-3 font-normal outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`,value:q,onChange:e=>ge(e.target.value),maxLength:160})]}),(0,R.jsxs)(`label`,{className:`grid gap-1.5 text-sm font-medium text-fg`,children:[r.descriptionLabel,(0,R.jsx)(`textarea`,{className:`min-h-28 resize-none rounded-lg border border-edge bg-surface-base px-3 py-2 font-normal leading-6 outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`,value:J,onChange:e=>_e(e.target.value),maxLength:2e3,placeholder:r.descriptionPlaceholder})]}),(0,R.jsxs)(`div`,{className:`grid gap-1.5 text-sm`,children:[(0,R.jsx)(`span`,{className:`font-medium text-fg`,children:n.workspaceRoot}),(0,R.jsxs)(`button`,{type:`button`,className:`flex min-h-12 w-full items-center gap-3 rounded-lg border border-edge bg-surface-base px-3 py-2 text-left outline-none transition-colors hover:bg-surface-hover focus-visible:border-accent focus-visible:ring-2 focus-visible:ring-accent/20 disabled:cursor-not-allowed disabled:opacity-60`,onClick:X.pick,disabled:K||X.picking,children:[X.picking?(0,R.jsx)(f,{className:`size-5 shrink-0 animate-spin text-accent`,"aria-hidden":!0}):(0,R.jsx)(d,{className:`size-5 shrink-0 text-accent`,"aria-hidden":!0}),(0,R.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,R.jsx)(`span`,{className:`block text-sm font-medium text-fg`,children:Y?i.chooseFolder:i.selectWorkingDirectory}),(0,R.jsx)(`span`,{className:v(`mt-0.5 block truncate font-mono text-xs font-normal`,Y?`text-fg-muted`:`text-fg-subtle`),title:Y||void 0,children:Y||n.workspaceSelectionPlaceholder})]})]}),(0,R.jsx)(`p`,{className:`text-xs font-normal text-fg-muted`,children:n.workspaceSelectionHint})]}),(0,R.jsx)(re,{checked:me,onChange:he,disabled:K||!Y.trim()}),fe?(0,R.jsx)(`p`,{className:`rounded-lg bg-danger-soft px-3 py-2 text-xs text-danger`,role:`alert`,children:fe}):null]}),(0,R.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,R.jsx)(C,{asChild:!0,children:(0,R.jsx)(y,{type:`button`,variant:`ghost`,children:n.cancel})}),(0,R.jsx)(y,{type:`submit`,variant:`primary`,disabled:K||!q.trim(),children:K?n.home.creating:n.create})]})]})]})]})}),X.hasNativePicker?null:(0,R.jsx)(c,{open:X.modalOpen,onOpenChange:X.setModalOpen,initialAbsolutePath:Y||void 0,onConfirm:X.confirmPick,wd:i}),(0,R.jsxs)(`section`,{className:`flex min-h-10 flex-wrap items-center justify-between gap-3`,"aria-label":r.filterLabel,children:[(0,R.jsx)(`p`,{className:`text-sm font-medium text-fg-muted`,"aria-live":`polite`,children:we}),(0,R.jsxs)(`div`,{className:v(`ml-auto flex min-w-0 items-center justify-end gap-2`,V&&`w-full sm:w-auto`),children:[V?(0,R.jsxs)(`div`,{className:`relative min-w-0 flex-1 sm:w-64 sm:flex-none`,children:[(0,R.jsx)(g,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,R.jsx)(`input`,{autoFocus:!0,className:`h-11 w-full rounded-lg border border-edge bg-surface-panel pl-9 pr-12 text-base sm:h-9 sm:text-sm text-fg outline-none placeholder:text-fg-muted focus:border-accent`,value:z,onChange:e=>B(e.target.value),placeholder:n.searchPlaceholder,"aria-label":n.searchPlaceholder}),(0,R.jsx)(`button`,{type:`button`,className:`touch-target absolute right-0 top-1/2 flex size-6 -translate-y-1/2 items-center justify-center rounded-md text-fg-subtle transition-colors hover:bg-surface-hover hover:text-fg`,onClick:()=>{B(``),H(!1)},"aria-label":r.clearSearch,title:r.clearSearch,children:(0,R.jsx)(_,{className:`size-3.5`,"aria-hidden":!0})})]}):(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,onClick:()=>H(!0),"aria-label":n.searchPlaceholder,title:n.searchPlaceholder,children:(0,R.jsx)(g,{className:`size-4`,"aria-hidden":!0})}),(0,R.jsx)(l,{className:`w-28 sm:w-32`,triggerClassName:`h-9 border-edge bg-surface-panel px-2.5 text-xs font-medium`,contentClassName:`min-w-36`,align:`end`,value:U,"aria-label":r.filterLabel,onChange:e=>ce(e.target.value),children:Se.map(e=>(0,R.jsx)(u,{value:e.id,children:e.label},e.id))})]})]}),F?(0,R.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl border border-danger/25 bg-danger-soft px-4 py-3 text-sm text-danger`,role:`alert`,children:[(0,R.jsx)(`span`,{children:F}),(0,R.jsx)(y,{type:`button`,variant:`ghost`,className:`h-8 px-2`,onClick:()=>void Q(),children:n.home.retry})]}):null,ne?(0,R.jsx)(oe,{}):$.length?(0,R.jsx)(`section`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-3`,children:$.map(e=>(0,R.jsx)(se,{project:e,busy:le===e.id,onTogglePin:()=>void xe(e,`pin`),onToggleArchive:()=>void xe(e,`archive`)},e.id))}):F?null:(0,R.jsxs)(`section`,{className:`py-16 text-center`,children:[(0,R.jsx)(te,{className:`mx-auto size-7 text-fg-subtle`,"aria-hidden":!0}),(0,R.jsx)(`h2`,{className:`mt-3 text-sm font-semibold text-fg`,children:p.length===0?e===`zh`?`创建第一个项目`:`Create your first project`:r.emptyTitle}),(0,R.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:p.length===0?e===`zh`?`把相关对话、任务和资料放在一起。`:`Keep related conversations, tasks and materials together.`:r.emptyHint}),(0,R.jsx)(y,{className:`mt-4`,onClick:()=>{p.length===0?W(!0):(B(``),ce(`all`))},children:p.length===0?n.create:e===`zh`?`清除筛选`:`Clear filters`})]})]})}export{H as ProjectsPage};
|
package/dist/gateway/static/root/assets/{providers-api-D6JJRlJb.js → providers-api-rwQ4LWzr.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e,o as t}from"./locale-store-
|
|
1
|
+
import{i as e,o as t}from"./locale-store-Bg_XR36n.js";import"./registry-api-Vy7LfH6E.js";import{n}from"./is-masked-secret-DOkL5b_X.js";import{i as r}from"./models-hub-cache-KOJC3z6Q.js";function i(e){return n(e)}async function a(){return(await t(e(`/api/providers/meta`))).payload?.providers??[]}function o(e){if(!e||typeof e!=`object`||!(`providers`in e))return{};let t=e.providers;if(!t||typeof t!=`object`||Array.isArray(t))return{};let n={};for(let[e,r]of Object.entries(t))typeof r==`string`&&(n[e]=r);return n}function s(e,t,n){let r=new Set(n.map(e=>e.provider));return e.map(e=>({...e,configured:e.configured||r.has(e.id),apiKey:t[e.id]??(e.activeKeySource===`extension`?``:e.configured||r.has(e.id)?`••••••••••••`:``)}))}async function c(n){await t(e(`/api/config`),{method:`PATCH`,body:JSON.stringify({providers:n})}),await r()}async function l(n){await t(e(`/api/providers/${encodeURIComponent(n)}/key`),{method:`DELETE`}),await r()}async function u(n){let r=await t(e(`/api/providers/${encodeURIComponent(n)}/reveal-api-key`),{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!r.ok||!r.payload)throw Error(r.error?.message??`Reveal failed`);return r.payload}export{c as a,s as i,a as n,o,i as r,u as s,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-DPHK1VkS.js";import{g as t,l as n,m as r,p as i,y as a}from"./discussion-annotation-sync-D-b1X6ro.js";var o=e(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),s=e(`notebook-text`,[[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`,key:`1nb95v`}],[`path`,{d:`M9.5 8h5`,key:`11mslq`}],[`path`,{d:`M9.5 12H16`,key:`ktog6x`}],[`path`,{d:`M9.5 16H14`,key:`p1seyn`}]]),c=e(`scan-search`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`path`,{d:`m16 16-1.9-1.9`,key:`1dq9hf`}]]),l=7200*1e3,u=1024*1024*1024,d=8*1024*1024;function f(e){if((e?.epochs?.length??0)>1){let t=e?.epochs?.[0]?.savedThroughMs;return Number.isFinite(t)&&t>=0?t:null}let t=e?.mediaCoverage;return t?.version===1&&t.committedChunkCount===e?.chunkCount&&Number.isFinite(t.verifiedThroughMs)&&t.verifiedThroughMs>=0&&Number.isFinite(t.observedThroughMs)&&t.observedThroughMs>=t.verifiedThroughMs?t.verifiedThroughMs:null}function p(e){let{phase:t,detail:n}=e,r=e.draft??e.locallyFinalized,i=r?.saveOutcome===`interrupted`,a=t===`recording`?`recording`:t===`paused`?`paused`:t===`requesting_permission`||t===`waiting_for_audio`?`waitingAudio`:t===`stopping`?`stopping`:t===`error`||i?`interrupted`:`stopped`,o=f(r),s=!!r?.chunkCount&&r.state!==`recording`&&r.saveOutcome===`complete`&&(t===`stopped`||t===`idle`),c=t===`error`||r?.saveOutcome===`incomplete`?`saveFailed`:s?`localComplete`:o!==null&&o>0?`savedThrough`:r?.chunkCount?`savedUnknown`:`saving`,l=!!n?.discussion.audioAttachmentId&&!n.discussion.audioDeletedAt,u=n?.discussion.audioDeletedAt?`failed`:l?`available`:e.online?e.syncStage:`offline`,d=n?.discussion.status,p=d===`completed`?`aiComplete`:d===`needs_attention`?`aiFailed`:n?.processing?.nextAttemptAt?`aiRetrying`:d===`organizing`?`analyzing`:d===`sealing`?`transcribing`:a===`recording`&&(!e.liveAvailable||e.pendingText>0||(e.transcript?.stats?.failed??0)>0)?`textDelayed`:a===`recording`?`liveText`:`waitingSource`,m=!!r?.chunkCount&&(o===null||r?.mediaCoverage?.status!==`verified`);return{capture:a,save:c,sync:u,ai:p,hasInterruptions:(r?.epochs?.length??0)>1,savedThroughMs:o,localComplete:s,interrupted:i,timingUncertain:m}}var m=new Set([408125543,357149030,374648427,174,524531317,160]),h=16*1024*1024;function g(e,t,n=!1){if(t>=e.length)return;let r=1;for(;r<=8&&!(e[t]&128>>r-1);)r++;if(r>(n?4:8))throw Error(`Invalid EBML integer`);if(t+r>e.length)return;let i=n?e[t]:e[t]&255>>r,a=!n&&i===255>>r;for(let n=1;n<r;n++)i=i*256+e[t+n],a&&=e[t+n]===255;if(!a&&!Number.isSafeInteger(i))throw Error(`Oversized EBML integer`);return{value:i,width:r,unknown:a}}function _(e){if(!e.length||e.length>6)throw Error(`Invalid media timestamp`);return e.reduce((e,t)=>e*256+t,0)}var v=class{mimeType;pending=new Uint8Array;offset=0;stack=[];timeScaleMs=1;clusterTime=0;track=0;trackType=0;opus=!1;audioTrack=0;observed=0;decoded=0;lastStart=-1/0;prefix=0;failed=!1;gap=!1;constructor(e){this.mimeType=e}snapshot(){return{version:1,verifiedThroughMs:Math.floor(this.prefix),observedThroughMs:Math.floor(this.observed),status:this.gap?`gap`:this.failed||!this.audioTrack||!this.observed?`unknown`:`verified`}}packetClock(){return{durationMs:Math.floor(this.decoded),verified:!this.failed&&!!this.audioTrack&&this.decoded>0}}append(e){if(this.failed||!this.mimeType.includes(`webm`))return this.failed=!0,this.snapshot();let t=new Uint8Array(this.pending.length+e.length);t.set(this.pending),t.set(e,this.pending.length),this.pending=t;let n=0;try{for(;n<t.length;){let e=this.offset+n;for(;this.stack.length&&e>=this.stack.at(-1).end;)this.stack.pop();let r=g(t,n,!0);if(!r)break;let i=g(t,n+r.width);if(!i)break;let a=n+r.width+i.width;if(this.stack.length&&this.offset+a+(i.unknown?0:i.value)>this.stack.at(-1).end)throw Error(`Element exceeds its container`);if(m.has(r.value)){if(r.value===160)throw Error(`BlockGroup padding needs separate verification`);if(r.value===524531317){let e=this.stack.findIndex(e=>e.id===524531317);e>=0&&(this.stack.length=e),this.clusterTime=0}if(r.value===174&&(this.track=0,this.trackType=0,this.opus=!1),this.stack.length>12)throw Error(`Excessive media nesting`);this.stack.push({id:r.value,end:i.unknown?1/0:this.offset+a+i.value}),n=a;continue}if(i.unknown||i.value>h)throw Error(`Unsupported media element`);if(a+i.value>t.length)break;let o=t.subarray(a,a+i.value);if(r.value===2807729&&(this.timeScaleMs=_(o)/1e6,!this.timeScaleMs))throw Error(`Invalid media time scale`);if(r.value===22186&&_(o)!==0)throw Error(`Codec delay needs separate verification`);if(r.value===215&&(this.track=_(o)),r.value===131&&(this.trackType=_(o)),r.value===134&&(this.opus=new TextDecoder().decode(o)===`A_OPUS`),this.track&&this.trackType===2&&this.opus){if(this.audioTrack&&this.audioTrack!==this.track)throw Error(`Multiple audio tracks`);this.audioTrack=this.track}r.value===231&&(this.clusterTime=_(o)),(r.value===163||r.value===161)&&this.block(o),n=a+i.value}if(t.length-n>h)throw Error(`Incomplete oversized media element`)}catch{this.failed=!0}return this.offset+=n,this.pending=this.failed?new Uint8Array:t.slice(n),this.snapshot()}block(e){let t=g(e,0);if(!t||e.length<t.width+4||t.value!==this.audioTrack)throw Error(`Unsupported media block`);let n=t.width;if(e[n+2]&6)throw Error(`Laced audio needs separate verification`);let r=new DataView(e.buffer,e.byteOffset+n,2).getInt16(0),i=e.subarray(n+3),a=i[0]>>3,o=a>=16?2.5*2**(a&3):a>=12?10*2**(a&1):[10,20,40,60][a&3],s=i[0]&3,c=s===0?1:s===3?(i[1]??0)&63:2,l=o*c;if(!c||l>120||s===3&&i.length<2)throw Error(`Invalid Opus packet`);let u=(this.clusterTime+r)*this.timeScaleMs,d=u+l;if(!Number.isFinite(d)||u<0||u<=this.lastStart)throw Error(`Non-monotonic media time`);let f=Math.min(1,this.timeScaleMs),p=u-this.decoded;(p>0||p<-f)&&(this.gap=!0),this.lastStart=u,this.decoded+=l,this.observed=Math.max(this.observed,d),this.gap||(this.prefix=Math.min(this.decoded,this.observed))}},y=`xopc-discussion-drafts`,b=2,x=`drafts`,S=`chunks`,C=`segments`;function w(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))})}function T(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onabort=()=>n(e.error??Error(`IndexedDB transaction aborted`)),e.onerror=()=>n(e.error??Error(`IndexedDB transaction failed`))})}function E(){return typeof indexedDB>`u`?Promise.reject(Error(`Local recording storage is unavailable`)):new Promise((e,t)=>{let n=indexedDB.open(y,b);n.onupgradeneeded=e=>{if(e.oldVersion!==0){n.transaction?.abort(),t(Error(`Unsupported recording database version`));return}let r=n.result;r.objectStoreNames.contains(x)||r.createObjectStore(x,{keyPath:`id`}),r.objectStoreNames.contains(S)||r.createObjectStore(S,{keyPath:[`draftId`,`index`]}).createIndex(`draftId`,`draftId`),r.objectStoreNames.contains(C)||r.createObjectStore(C,{keyPath:[`draftId`,`sequence`]}).createIndex(`draftId`,`draftId`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error??Error(`Could not open local recording storage`))})}async function D(e){let t=await E();try{let n=t.transaction(x,`readwrite`,{durability:`strict`});n.objectStore(x).put(e),await T(n)}finally{t.close()}}async function O(e,t){let n=await E();try{let r=n.transaction(t?[S,x]:[S],`readwrite`,{durability:`strict`}),i=T(r);try{r.objectStore(S).add(e),t&&r.objectStore(x).put(t),await i}catch(e){try{r.abort()}catch{}throw await i.catch(()=>void 0),e}}finally{n.close()}}async function k(){let e=await E();try{let t=e.transaction(x,`readonly`),n=T(t),r=await w(t.objectStore(x).getAll());return await n,r.sort((e,t)=>t.updatedAt-e.updatedAt)}finally{e.close()}}async function A(e,t){let n=await E();try{let r=n.transaction(S,`readonly`),i=T(r),a=await w(r.objectStore(S).get([e,t]));return await i,a}finally{n.close()}}async function j(e){let t=await E();try{let n=t.transaction(C,`readwrite`);n.objectStore(C).put(e),await T(n)}finally{t.close()}}async function M(e){let t=await E();try{let n=t.transaction(C,`readonly`),r=T(n),i=await w(n.objectStore(C).index(`draftId`).getAll(e));return await r,i.sort((e,t)=>e.sequence-t.sequence)}finally{t.close()}}async function N(e,t){let n=await E();try{let r=n.transaction(C,`readwrite`);r.objectStore(C).delete([e,t]),await T(r)}finally{n.close()}}async function P(e){let t=await E();try{let n=t.transaction([x,S,C],`readwrite`);n.objectStore(x).delete(e);let r=n.objectStore(S),i=r.index(`draftId`).openKeyCursor(IDBKeyRange.only(e));i.onsuccess=()=>{let e=i.result;e&&(r.delete(e.primaryKey),e.continue())};let a=n.objectStore(C),o=a.index(`draftId`).openKeyCursor(IDBKeyRange.only(e));o.onsuccess=()=>{let e=o.result;e&&(a.delete(e.primaryKey),e.continue())},await T(n)}finally{t.close()}}async function F(e){let t=await E();try{let n=t.transaction([x,S],`readonly`),r=T(n),i=n.objectStore(x).get(e),a=n.objectStore(S).index(`draftId`).openKeyCursor(IDBKeyRange.only(e)),o=0,s=!1,c=new Promise((e,t)=>{a.onerror=()=>t(a.error),a.onsuccess=()=>{let t=a.result;if(!t){e();return}let[,n]=t.primaryKey;n!==o&&(s=!0),o+=1,t.continue()}}),[l]=await Promise.all([w(i),c,r]);if(!l)throw Error(`The recording draft is missing`);if(s||o!==l.chunkCount)throw Error(`Local recording has missing chunks. Retained audio has not been deleted.`);if(!o)throw Error(`No audio was saved before the recording stopped`);let u=f(l)===null?void 0:l.mediaCoverage,d=l.epochs;if(l.mediaCoverage?.status===`gap`||(d?.length??0)>1){let n=(d?.length?d:[{firstChunk:0,mimeType:l.mimeType,startedAt:l.startedAt}]).map(e=>({...e}));for(let r=0;r<n.length;r++){let i=n[r],a=n[r+1]?.firstChunk??o;if(!Number.isInteger(i.firstChunk)||r===0&&i.firstChunk!==0||i.firstChunk<0||i.firstChunk>a||a>o)throw Error(`Local recording has invalid audio boundaries. Retained audio has not been deleted.`);let s=new v(i.mimeType);for(let n=i.firstChunk;n<a;n++){let r=t.transaction(S,`readonly`),i=T(r),a=await w(r.objectStore(S).get([e,n]));if(await i,!a)throw Error(`Local recording has missing chunks. Retained audio has not been deleted.`);s.append(new Uint8Array(await a.blob.arrayBuffer()))}r<n.length-1?i.savedThroughMs=s.snapshot().verifiedThroughMs:u={...s.snapshot(),committedChunkCount:o}}d?.length&&(d=n)}return{...l,epochs:d,mediaCoverage:u,saveOutcome:l.state===`recording`?`interrupted`:l.saveOutcome}}finally{t.close()}}async function I(e){let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer());return Array.from(new Uint8Array(t),e=>e.toString(16).padStart(2,`0`)).join(``)}async function L(e,t){let i=t,a=performance.now()+5*6e4;for(;i.state===`queued`||i.state===`running`;){if(performance.now()>=a)throw Error(`Recording is still processing. Your draft is saved; retry to check its result.`);await new Promise(e=>setTimeout(e,1e3)),i=await r(e)}if(i.state!==`completed`)throw Error(i.error??`Recording processing was cancelled`);return n(e)}async function R(e,r,o,s=!0,c){if(c?.(`uploading`),s){let e=await n(r);if(e.discussion.audioDeletedAt)throw Error(`Original recording was deleted`);if(e.discussion.audioAttachmentId)return c?.(`available`),e;if(e.recordingJob?.state===`queued`||e.recordingJob?.state===`running`){c?.(`verifying`);let t=await L(r,e.recordingJob);if(!t.discussion.audioAttachmentId||t.discussion.audioDeletedAt)throw Error(`Original audio attachment is not confirmed`);return c?.(`available`),t}}let l=new Map((await i(r)).map(e=>[e.sequence,e]));for(let t=0;t<e.chunkCount;t+=1){let n=await A(e.id,t);if(!n)throw Error(`Missing local recording chunk ${t}`);if(n.blob.size>8388608)throw Error(`Recording chunk exceeds the supported size`);let i=await I(n.blob);if(l.has(t)&&l.get(t).sha256!==i)throw Error(`Stored recording differs from this draft`);l.has(t)||await a(r,t,n.blob,i),o(Math.round((t+1)/e.chunkCount*100))}if(s){c?.(`verifying`),await D({...e,serverDiscussionId:r,sealRequested:!0});let n=await L(r,await t(r,{lastSequence:e.lastSequence,chunkCount:e.chunkCount,...e.epochs&&e.epochs.length>1?{epochs:e.epochs}:{},mimeType:e.mimeType,fileName:e.fileName??`meeting-${e.startedAt}.${e.mimeType.includes(`mp4`)?`m4a`:e.mimeType.includes(`ogg`)?`ogg`:`webm`}`}));if(!n.discussion.audioAttachmentId||n.discussion.audioDeletedAt)throw Error(`Original audio attachment is not confirmed`);return c?.(`available`),n}c?.(`pending`)}async function z(e,t){let n=await navigator.storage?.estimate?.();if(n?.quota&&n.usage!==void 0&&n.quota-n.usage<e.size*1.1)throw Error(`Not enough local storage to safely import this recording`);let r={id:t,mimeType:e.type||(/\.mp3$/i.test(e.name)?`audio/mpeg`:/\.wav$/i.test(e.name)?`audio/wav`:/\.(m4a|mp4)$/i.test(e.name)?`audio/mp4`:/\.ogg$/i.test(e.name)?`audio/ogg`:`audio/webm`),fileName:e.name,startedAt:Date.now(),updatedAt:Date.now(),durationMs:1e3,chunkCount:0,lastSequence:-1,state:`stopped`};try{for(let n=0;n<e.size;n+=d)await O({draftId:t,index:r.chunkCount,blob:e.slice(n,n+d),createdAt:Date.now()}),r.chunkCount+=1;return await D(r),r}catch(e){throw await P(t),e}}export{l as _,A as a,o as b,F as c,j as d,v as f,d as g,u as h,N as i,D as l,f as m,R as n,k as o,p,P as r,M as s,z as t,O as u,c as v,s as y};
|
|
1
|
+
import{t as e}from"./createLucideIcon-DPHK1VkS.js";import{g as t,l as n,m as r,p as i,y as a}from"./discussion-annotation-sync-BFqKm9ky.js";var o=e(`inbox`,[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]),s=e(`notebook-text`,[[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`rect`,{width:`16`,height:`20`,x:`4`,y:`2`,rx:`2`,key:`1nb95v`}],[`path`,{d:`M9.5 8h5`,key:`11mslq`}],[`path`,{d:`M9.5 12H16`,key:`ktog6x`}],[`path`,{d:`M9.5 16H14`,key:`p1seyn`}]]),c=e(`scan-search`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`path`,{d:`m16 16-1.9-1.9`,key:`1dq9hf`}]]),l=7200*1e3,u=1024*1024*1024,d=8*1024*1024;function f(e){if((e?.epochs?.length??0)>1){let t=e?.epochs?.[0]?.savedThroughMs;return Number.isFinite(t)&&t>=0?t:null}let t=e?.mediaCoverage;return t?.version===1&&t.committedChunkCount===e?.chunkCount&&Number.isFinite(t.verifiedThroughMs)&&t.verifiedThroughMs>=0&&Number.isFinite(t.observedThroughMs)&&t.observedThroughMs>=t.verifiedThroughMs?t.verifiedThroughMs:null}function p(e){let{phase:t,detail:n}=e,r=e.draft??e.locallyFinalized,i=r?.saveOutcome===`interrupted`,a=t===`recording`?`recording`:t===`paused`?`paused`:t===`requesting_permission`||t===`waiting_for_audio`?`waitingAudio`:t===`stopping`?`stopping`:t===`error`||i?`interrupted`:`stopped`,o=f(r),s=!!r?.chunkCount&&r.state!==`recording`&&r.saveOutcome===`complete`&&(t===`stopped`||t===`idle`),c=t===`error`||r?.saveOutcome===`incomplete`?`saveFailed`:s?`localComplete`:o!==null&&o>0?`savedThrough`:r?.chunkCount?`savedUnknown`:`saving`,l=!!n?.discussion.audioAttachmentId&&!n.discussion.audioDeletedAt,u=n?.discussion.audioDeletedAt?`failed`:l?`available`:e.online?e.syncStage:`offline`,d=n?.discussion.status,p=d===`completed`?`aiComplete`:d===`needs_attention`?`aiFailed`:n?.processing?.nextAttemptAt?`aiRetrying`:d===`organizing`?`analyzing`:d===`sealing`?`transcribing`:a===`recording`&&(!e.liveAvailable||e.pendingText>0||(e.transcript?.stats?.failed??0)>0)?`textDelayed`:a===`recording`?`liveText`:`waitingSource`,m=!!r?.chunkCount&&(o===null||r?.mediaCoverage?.status!==`verified`);return{capture:a,save:c,sync:u,ai:p,hasInterruptions:(r?.epochs?.length??0)>1,savedThroughMs:o,localComplete:s,interrupted:i,timingUncertain:m}}var m=new Set([408125543,357149030,374648427,174,524531317,160]),h=16*1024*1024;function g(e,t,n=!1){if(t>=e.length)return;let r=1;for(;r<=8&&!(e[t]&128>>r-1);)r++;if(r>(n?4:8))throw Error(`Invalid EBML integer`);if(t+r>e.length)return;let i=n?e[t]:e[t]&255>>r,a=!n&&i===255>>r;for(let n=1;n<r;n++)i=i*256+e[t+n],a&&=e[t+n]===255;if(!a&&!Number.isSafeInteger(i))throw Error(`Oversized EBML integer`);return{value:i,width:r,unknown:a}}function _(e){if(!e.length||e.length>6)throw Error(`Invalid media timestamp`);return e.reduce((e,t)=>e*256+t,0)}var v=class{mimeType;pending=new Uint8Array;offset=0;stack=[];timeScaleMs=1;clusterTime=0;track=0;trackType=0;opus=!1;audioTrack=0;observed=0;decoded=0;lastStart=-1/0;prefix=0;failed=!1;gap=!1;constructor(e){this.mimeType=e}snapshot(){return{version:1,verifiedThroughMs:Math.floor(this.prefix),observedThroughMs:Math.floor(this.observed),status:this.gap?`gap`:this.failed||!this.audioTrack||!this.observed?`unknown`:`verified`}}packetClock(){return{durationMs:Math.floor(this.decoded),verified:!this.failed&&!!this.audioTrack&&this.decoded>0}}append(e){if(this.failed||!this.mimeType.includes(`webm`))return this.failed=!0,this.snapshot();let t=new Uint8Array(this.pending.length+e.length);t.set(this.pending),t.set(e,this.pending.length),this.pending=t;let n=0;try{for(;n<t.length;){let e=this.offset+n;for(;this.stack.length&&e>=this.stack.at(-1).end;)this.stack.pop();let r=g(t,n,!0);if(!r)break;let i=g(t,n+r.width);if(!i)break;let a=n+r.width+i.width;if(this.stack.length&&this.offset+a+(i.unknown?0:i.value)>this.stack.at(-1).end)throw Error(`Element exceeds its container`);if(m.has(r.value)){if(r.value===160)throw Error(`BlockGroup padding needs separate verification`);if(r.value===524531317){let e=this.stack.findIndex(e=>e.id===524531317);e>=0&&(this.stack.length=e),this.clusterTime=0}if(r.value===174&&(this.track=0,this.trackType=0,this.opus=!1),this.stack.length>12)throw Error(`Excessive media nesting`);this.stack.push({id:r.value,end:i.unknown?1/0:this.offset+a+i.value}),n=a;continue}if(i.unknown||i.value>h)throw Error(`Unsupported media element`);if(a+i.value>t.length)break;let o=t.subarray(a,a+i.value);if(r.value===2807729&&(this.timeScaleMs=_(o)/1e6,!this.timeScaleMs))throw Error(`Invalid media time scale`);if(r.value===22186&&_(o)!==0)throw Error(`Codec delay needs separate verification`);if(r.value===215&&(this.track=_(o)),r.value===131&&(this.trackType=_(o)),r.value===134&&(this.opus=new TextDecoder().decode(o)===`A_OPUS`),this.track&&this.trackType===2&&this.opus){if(this.audioTrack&&this.audioTrack!==this.track)throw Error(`Multiple audio tracks`);this.audioTrack=this.track}r.value===231&&(this.clusterTime=_(o)),(r.value===163||r.value===161)&&this.block(o),n=a+i.value}if(t.length-n>h)throw Error(`Incomplete oversized media element`)}catch{this.failed=!0}return this.offset+=n,this.pending=this.failed?new Uint8Array:t.slice(n),this.snapshot()}block(e){let t=g(e,0);if(!t||e.length<t.width+4||t.value!==this.audioTrack)throw Error(`Unsupported media block`);let n=t.width;if(e[n+2]&6)throw Error(`Laced audio needs separate verification`);let r=new DataView(e.buffer,e.byteOffset+n,2).getInt16(0),i=e.subarray(n+3),a=i[0]>>3,o=a>=16?2.5*2**(a&3):a>=12?10*2**(a&1):[10,20,40,60][a&3],s=i[0]&3,c=s===0?1:s===3?(i[1]??0)&63:2,l=o*c;if(!c||l>120||s===3&&i.length<2)throw Error(`Invalid Opus packet`);let u=(this.clusterTime+r)*this.timeScaleMs,d=u+l;if(!Number.isFinite(d)||u<0||u<=this.lastStart)throw Error(`Non-monotonic media time`);let f=Math.min(1,this.timeScaleMs),p=u-this.decoded;(p>0||p<-f)&&(this.gap=!0),this.lastStart=u,this.decoded+=l,this.observed=Math.max(this.observed,d),this.gap||(this.prefix=Math.min(this.decoded,this.observed))}},y=`xopc-discussion-drafts`,b=2,x=`drafts`,S=`chunks`,C=`segments`;function w(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error??Error(`IndexedDB request failed`))})}function T(e){return new Promise((t,n)=>{e.oncomplete=()=>t(),e.onabort=()=>n(e.error??Error(`IndexedDB transaction aborted`)),e.onerror=()=>n(e.error??Error(`IndexedDB transaction failed`))})}function E(){return typeof indexedDB>`u`?Promise.reject(Error(`Local recording storage is unavailable`)):new Promise((e,t)=>{let n=indexedDB.open(y,b);n.onupgradeneeded=e=>{if(e.oldVersion!==0){n.transaction?.abort(),t(Error(`Unsupported recording database version`));return}let r=n.result;r.objectStoreNames.contains(x)||r.createObjectStore(x,{keyPath:`id`}),r.objectStoreNames.contains(S)||r.createObjectStore(S,{keyPath:[`draftId`,`index`]}).createIndex(`draftId`,`draftId`),r.objectStoreNames.contains(C)||r.createObjectStore(C,{keyPath:[`draftId`,`sequence`]}).createIndex(`draftId`,`draftId`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error??Error(`Could not open local recording storage`))})}async function D(e){let t=await E();try{let n=t.transaction(x,`readwrite`,{durability:`strict`});n.objectStore(x).put(e),await T(n)}finally{t.close()}}async function O(e,t){let n=await E();try{let r=n.transaction(t?[S,x]:[S],`readwrite`,{durability:`strict`}),i=T(r);try{r.objectStore(S).add(e),t&&r.objectStore(x).put(t),await i}catch(e){try{r.abort()}catch{}throw await i.catch(()=>void 0),e}}finally{n.close()}}async function k(){let e=await E();try{let t=e.transaction(x,`readonly`),n=T(t),r=await w(t.objectStore(x).getAll());return await n,r.sort((e,t)=>t.updatedAt-e.updatedAt)}finally{e.close()}}async function A(e,t){let n=await E();try{let r=n.transaction(S,`readonly`),i=T(r),a=await w(r.objectStore(S).get([e,t]));return await i,a}finally{n.close()}}async function j(e){let t=await E();try{let n=t.transaction(C,`readwrite`);n.objectStore(C).put(e),await T(n)}finally{t.close()}}async function M(e){let t=await E();try{let n=t.transaction(C,`readonly`),r=T(n),i=await w(n.objectStore(C).index(`draftId`).getAll(e));return await r,i.sort((e,t)=>e.sequence-t.sequence)}finally{t.close()}}async function N(e,t){let n=await E();try{let r=n.transaction(C,`readwrite`);r.objectStore(C).delete([e,t]),await T(r)}finally{n.close()}}async function P(e){let t=await E();try{let n=t.transaction([x,S,C],`readwrite`);n.objectStore(x).delete(e);let r=n.objectStore(S),i=r.index(`draftId`).openKeyCursor(IDBKeyRange.only(e));i.onsuccess=()=>{let e=i.result;e&&(r.delete(e.primaryKey),e.continue())};let a=n.objectStore(C),o=a.index(`draftId`).openKeyCursor(IDBKeyRange.only(e));o.onsuccess=()=>{let e=o.result;e&&(a.delete(e.primaryKey),e.continue())},await T(n)}finally{t.close()}}async function F(e){let t=await E();try{let n=t.transaction([x,S],`readonly`),r=T(n),i=n.objectStore(x).get(e),a=n.objectStore(S).index(`draftId`).openKeyCursor(IDBKeyRange.only(e)),o=0,s=!1,c=new Promise((e,t)=>{a.onerror=()=>t(a.error),a.onsuccess=()=>{let t=a.result;if(!t){e();return}let[,n]=t.primaryKey;n!==o&&(s=!0),o+=1,t.continue()}}),[l]=await Promise.all([w(i),c,r]);if(!l)throw Error(`The recording draft is missing`);if(s||o!==l.chunkCount)throw Error(`Local recording has missing chunks. Retained audio has not been deleted.`);if(!o)throw Error(`No audio was saved before the recording stopped`);let u=f(l)===null?void 0:l.mediaCoverage,d=l.epochs;if(l.mediaCoverage?.status===`gap`||(d?.length??0)>1){let n=(d?.length?d:[{firstChunk:0,mimeType:l.mimeType,startedAt:l.startedAt}]).map(e=>({...e}));for(let r=0;r<n.length;r++){let i=n[r],a=n[r+1]?.firstChunk??o;if(!Number.isInteger(i.firstChunk)||r===0&&i.firstChunk!==0||i.firstChunk<0||i.firstChunk>a||a>o)throw Error(`Local recording has invalid audio boundaries. Retained audio has not been deleted.`);let s=new v(i.mimeType);for(let n=i.firstChunk;n<a;n++){let r=t.transaction(S,`readonly`),i=T(r),a=await w(r.objectStore(S).get([e,n]));if(await i,!a)throw Error(`Local recording has missing chunks. Retained audio has not been deleted.`);s.append(new Uint8Array(await a.blob.arrayBuffer()))}r<n.length-1?i.savedThroughMs=s.snapshot().verifiedThroughMs:u={...s.snapshot(),committedChunkCount:o}}d?.length&&(d=n)}return{...l,epochs:d,mediaCoverage:u,saveOutcome:l.state===`recording`?`interrupted`:l.saveOutcome}}finally{t.close()}}async function I(e){let t=await crypto.subtle.digest(`SHA-256`,await e.arrayBuffer());return Array.from(new Uint8Array(t),e=>e.toString(16).padStart(2,`0`)).join(``)}async function L(e,t){let i=t,a=performance.now()+5*6e4;for(;i.state===`queued`||i.state===`running`;){if(performance.now()>=a)throw Error(`Recording is still processing. Your draft is saved; retry to check its result.`);await new Promise(e=>setTimeout(e,1e3)),i=await r(e)}if(i.state!==`completed`)throw Error(i.error??`Recording processing was cancelled`);return n(e)}async function R(e,r,o,s=!0,c){if(c?.(`uploading`),s){let e=await n(r);if(e.discussion.audioDeletedAt)throw Error(`Original recording was deleted`);if(e.discussion.audioAttachmentId)return c?.(`available`),e;if(e.recordingJob?.state===`queued`||e.recordingJob?.state===`running`){c?.(`verifying`);let t=await L(r,e.recordingJob);if(!t.discussion.audioAttachmentId||t.discussion.audioDeletedAt)throw Error(`Original audio attachment is not confirmed`);return c?.(`available`),t}}let l=new Map((await i(r)).map(e=>[e.sequence,e]));for(let t=0;t<e.chunkCount;t+=1){let n=await A(e.id,t);if(!n)throw Error(`Missing local recording chunk ${t}`);if(n.blob.size>8388608)throw Error(`Recording chunk exceeds the supported size`);let i=await I(n.blob);if(l.has(t)&&l.get(t).sha256!==i)throw Error(`Stored recording differs from this draft`);l.has(t)||await a(r,t,n.blob,i),o(Math.round((t+1)/e.chunkCount*100))}if(s){c?.(`verifying`),await D({...e,serverDiscussionId:r,sealRequested:!0});let n=await L(r,await t(r,{lastSequence:e.lastSequence,chunkCount:e.chunkCount,...e.epochs&&e.epochs.length>1?{epochs:e.epochs}:{},mimeType:e.mimeType,fileName:e.fileName??`meeting-${e.startedAt}.${e.mimeType.includes(`mp4`)?`m4a`:e.mimeType.includes(`ogg`)?`ogg`:`webm`}`}));if(!n.discussion.audioAttachmentId||n.discussion.audioDeletedAt)throw Error(`Original audio attachment is not confirmed`);return c?.(`available`),n}c?.(`pending`)}async function z(e,t){let n=await navigator.storage?.estimate?.();if(n?.quota&&n.usage!==void 0&&n.quota-n.usage<e.size*1.1)throw Error(`Not enough local storage to safely import this recording`);let r={id:t,mimeType:e.type||(/\.mp3$/i.test(e.name)?`audio/mpeg`:/\.wav$/i.test(e.name)?`audio/wav`:/\.(m4a|mp4)$/i.test(e.name)?`audio/mp4`:/\.ogg$/i.test(e.name)?`audio/ogg`:`audio/webm`),fileName:e.name,startedAt:Date.now(),updatedAt:Date.now(),durationMs:1e3,chunkCount:0,lastSequence:-1,state:`stopped`};try{for(let n=0;n<e.size;n+=d)await O({draftId:t,index:r.chunkCount,blob:e.slice(n,n+d),createdAt:Date.now()}),r.chunkCount+=1;return await D(r),r}catch(e){throw await P(t),e}}export{l as _,A as a,o as b,F as c,j as d,v as f,d as g,u as h,N as i,D as l,f as m,R as n,k as o,p,P as r,M as s,z as t,O as u,c as v,s as y};
|
package/dist/gateway/static/root/assets/{registry-api-BfXzBR1D.js → registry-api-Vy7LfH6E.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-swr-CdRzEUwF.js","assets/rolldown-runtime-aKtaBQYM.js","assets/vendor-react-BOUWij0V.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{t as e}from"./preload-helper-Czpn1I53.js";import{i as t}from"./locale-store-
|
|
2
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";import{i as t}from"./locale-store-Bg_XR36n.js";import{t as n}from"./gateway-startup-retry-9YQllbw2.js";async function r(){let e=await n(t(`/api/models`));if(!e.ok)throw Error(`Models: HTTP ${e.status}`);return(await e.json()).payload?.models??[]}var i=null,a=0,o=null,s=6e4,c=`gateway-configured-models`;async function l(){i=null,a=0;let{mutate:t}=await e(async()=>{let{mutate:e}=await import(`./vendor-swr-CdRzEUwF.js`).then(e=>e.r);return{mutate:e}},__vite__mapDeps([0,1,2]));await t(c)}async function u(e=!1){if(!e&&i&&Date.now()<a)return i;if(e){let e=await r();return i=e,a=Date.now()+s,e}return o||(o=r().then(e=>(i=e,a=Date.now()+s,e)).finally(()=>{o=null}),o)}export{u as n,l as r,c as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{m as i,t as a,u as o}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{l as s,n as c}from"./locale-store-TQcz_Vjt.js";import{t as l}from"./messages-DaLmc4W1.js";import{t as u}from"./arrow-right-DSSvoX71.js";import{t as d}from"./check-DUBLcKHA.js";import{t as f}from"./chevron-down-ccbiQQz_.js";import{t as p}from"./chevron-right-BweFrslA.js";import{t as m}from"./circle-BoO4YvTx.js";import{t as h}from"./copy-Dv6d4Dvw.js";import{t as g}from"./external-link-DjqjBmc3.js";import{t as _}from"./secret-input-BQvFXqzz.js";import{t as v}from"./globe-DSSGFWFn.js";import{t as y}from"./key-round-DWbpyU2U.js";import{t as b}from"./loader-circle-CifKLtgG.js";import{t as x}from"./network-BUQLY1BV.js";import{t as S}from"./power-ZI-pBczI.js";import{t as C}from"./server-BlHCBjiE.js";import{t as w}from"./shield-B1sI_cxl.js";import{t as T}from"./smartphone-DSSsQFqA.js";import{t as E}from"./terminal-oKqqZdiG.js";import{t as D}from"./triangle-alert-2JXFNNKU.js";import{t as O}from"./cn-0WouolD0.js";import{t as k}from"./button-CnRSIP6m.js";import{a as A,i as j,o as M,r as N,s as P,t as F}from"./dist-DfWfZ9iu.js";import{i as I,o as L}from"./settings-shell-dialog-layer-BU3UuiJr.js";import{i as R}from"./vendor-swr-CdRzEUwF.js";import{t as z}from"./copy-to-clipboard-HOJ79TWv.js";import{n as B,r as V}from"./gateway-config-swr-Dmt5JhZU.js";import{t as H}from"./page-tabs-oeTY7z3_.js";import{r as U}from"./settings-form-draft-Dy10ldo8.js";import{t as W}from"./confirm-dialog-XGclfBqe.js";import{t as ee}from"./copy-text-row-CYIv7RfP.js";import{n as G}from"./settings-mode-store-CtJ8pEfm.js";import{r as K}from"./providers-api-D6JJRlJb.js";import{a as q,n as te,r as ne}from"./oauth-api-CfKjRVnb.js";import{t as J}from"./settings-advanced-section-ZKRIuk7h.js";import{n as re,r as ie,t as ae}from"./oauth-authorization-window-o6URRos4.js";import{n as oe,t as se}from"./settings-page-header-DuNCn8i-.js";import{t as ce}from"./settings-page-layout-DeNC8YHJ.js";import{n as Y,r as le,t as ue}from"./settings-form-section-num14vSv.js";import{S as de,_ as X,a as fe,b as pe,c as me,d as he,i as ge,n as _e,o as ve,r as ye,s as be,t as xe,x as Se,y as Ce}from"./tunnel-api-COoVEdV9.js";import{t as we}from"./settings-advanced-gate-CYDQybNF.js";var Z=e(t(),1),Q=n(),$=r();function Te(e){switch(e){case`active`:return`text-emerald-700 dark:text-emerald-400`;case`connecting`:return`text-amber-700 dark:text-amber-400`;default:return`text-fg-muted`}}function Ee(e){let t=(0,Q.c)(11),{label:n,kind:r}=e,i;t[0]===r?i=t[1]:(i=O(`inline-flex items-center gap-1.5 text-xs font-medium`,Te(r)),t[0]=r,t[1]=i);let a=r===`active`&&`bg-emerald-500`,o=r===`connecting`&&`bg-amber-500`,s;t[2]!==a||t[3]!==o?(s=O(`size-1.5 rounded-full bg-fg-subtle/50`,a,o),t[2]=a,t[3]=o,t[4]=s):s=t[4];let c;t[5]===s?c=t[6]:(c=(0,$.jsx)(`span`,{className:s,"aria-hidden":!0}),t[5]=s,t[6]=c);let l;return t[7]!==n||t[8]!==i||t[9]!==c?(l=(0,$.jsxs)(`span`,{className:i,children:[c,n]}),t[7]=n,t[8]=i,t[9]=c,t[10]=l):l=t[10],l}function De(e){let t=(0,Q.c)(31),{onOpenTab:n}=e,r=c(ke),i;t[0]===r?i=t[1]:(i=l(r),t[0]=r,t[1]=i);let a=i.remoteAccess.guide,o=!!s(Oe),u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u={refreshInterval:3e4},t[2]=u):u=t[2];let{data:d}=R(o?`exposure-status`:null,Se,u),f;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(f={refreshInterval:15e3},t[3]=f):f=t[3];let{data:p}=R(o?`tunnel-status`:null,_e,f),m=V(o);if(!o)return null;let h=d?.tailscale.active===!0,g=p?.state,_=p?.enabled&&g===`connected`,y=p?.enabled&&(g===`connecting`||g===`reconnecting`||!!p?.startProgress||!!p?.frpcDownload),b=m.data?.payload?.config,S=!!(b&&typeof b==`object`&&!Array.isArray(b)&&b.gateway?.publicUrl),T=h?`active`:`off`,D=h?a.statusActive:a.statusOff,k;t[4]!==a.tailscaleCardTitle||t[5]!==T||t[6]!==D?(k={tab:`tailscale`,icon:v,title:a.tailscaleCardTitle,kind:T,statusLabel:D},t[4]=a.tailscaleCardTitle,t[5]=T,t[6]=D,t[7]=k):k=t[7];let A=_?`active`:y?`connecting`:`off`,j=_?a.statusActive:y?a.statusConnecting:a.statusOff,M;t[8]!==a.publicCardTitle||t[9]!==A||t[10]!==j?(M={tab:`public`,icon:x,title:a.publicCardTitle,kind:A,statusLabel:j},t[8]=a.publicCardTitle,t[9]=A,t[10]=j,t[11]=M):M=t[11];let N=S?`active`:`off`,P=S?a.statusActive:a.statusOff,F;t[12]!==a.reverseProxyCardTitle||t[13]!==N||t[14]!==P?(F={tab:`reverse-proxy`,icon:w,title:a.reverseProxyCardTitle,kind:N,statusLabel:P},t[12]=a.reverseProxyCardTitle,t[13]=N,t[14]=P,t[15]=F):F=t[15];let I;t[16]!==a.sshCardStatus||t[17]!==a.sshCardTitle?(I={tab:`ssh`,icon:E,title:a.sshCardTitle,kind:`off`,statusLabel:a.sshCardStatus},t[16]=a.sshCardStatus,t[17]=a.sshCardTitle,t[18]=I):I=t[18];let L;t[19]!==a.lanCardStatus||t[20]!==a.lanCardTitle?(L={tab:`lan`,icon:C,title:a.lanCardTitle,kind:`off`,statusLabel:a.lanCardStatus},t[19]=a.lanCardStatus,t[20]=a.lanCardTitle,t[21]=L):L=t[21];let z;t[22]!==F||t[23]!==I||t[24]!==L||t[25]!==k||t[26]!==M?(z=[k,M,F,I,L],t[22]=F,t[23]=I,t[24]=L,t[25]=k,t[26]=M,t[27]=z):z=t[27];let B=z,H;return t[28]!==B||t[29]!==n?(H=(0,$.jsx)(`div`,{className:`grid gap-1 rounded-xl bg-surface-hover/20 p-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5`,children:B.map(e=>{let t=e.icon;return(0,$.jsxs)(`button`,{type:`button`,onClick:()=>n(e.tab),className:O(`flex items-start gap-3 rounded-lg bg-surface-base/45 px-2 py-3 text-left transition-colors`,`hover:bg-surface-hover/30`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:[(0,$.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center text-fg-muted`,children:(0,$.jsx)(t,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})}),(0,$.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`span`,{className:`block truncate text-sm font-medium text-fg`,children:e.title}),(0,$.jsx)(Ee,{label:e.statusLabel,kind:e.kind})]})]},`${e.tab}-${e.title}`)})}),t[28]=B,t[29]=n,t[30]=H):H=t[30],H}function Oe(e){return e.conversationId}function ke(e){return e.language}function Ae(e){let t=(0,Q.c)(21),{title:n,description:r,recommended:i,icon:a,onOpen:o,recommendedLabel:s}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=O(`group flex w-full items-start gap-3 px-3 py-4 text-left transition-colors`,`hover:bg-surface-hover/30`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),t[0]=c):c=t[0];let l;t[1]===a?l=t[2]:(l=(0,$.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover/70 text-fg-muted`,children:(0,$.jsx)(a,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})}),t[1]=a,t[2]=l);let u;t[3]===n?u=t[4]:(u=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n}),t[3]=n,t[4]=u);let d;t[5]!==i||t[6]!==s?(d=i&&s?(0,$.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:s}):null,t[5]=i,t[6]=s,t[7]=d):d=t[7];let f;t[8]!==u||t[9]!==d?(f=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10];let m;t[11]===r?m=t[12]:(m=(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:r}),t[11]=r,t[12]=m);let h;t[13]!==f||t[14]!==m?(h=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[f,m]}),t[13]=f,t[14]=m,t[15]=h):h=t[15];let g;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,$.jsx)(p,{className:`mt-2 size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5 group-hover:text-fg-muted`,"aria-hidden":!0}),t[16]=g):g=t[16];let _;return t[17]!==o||t[18]!==l||t[19]!==h?(_=(0,$.jsxs)(`button`,{type:`button`,onClick:o,className:c,children:[l,h,g]}),t[17]=o,t[18]=l,t[19]=h,t[20]=_):_=t[20],_}function je(e){let t=(0,Q.c)(78),{onOpenTab:n}=e,r=c(Pe),i;t[0]===r?i=t[1]:(i=l(r),t[0]=r,t[1]=i);let a=i.remoteAccess,o=a.guide,u=!!s(Ne),d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d={refreshInterval:3e4},t[2]=d):d=t[2];let{data:f}=R(u?`exposure-status`:null,Se,d),p;t[3]===f?.conflicts?p=t[4]:(p=f?.conflicts??[],t[3]=f?.conflicts,t[4]=p);let m=p;if(!u){let e;return t[5]===o.needToken?e=t[6]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:o.needToken}),t[5]=o.needToken,t[6]=e),e}let h;t[7]===n?h=t[8]:(h=(0,$.jsx)(De,{onOpenTab:n}),t[7]=n,t[8]=h);let g;t[9]!==m||t[10]!==o.conflictsHint||t[11]!==o.conflictsTitle?(g=m.length>0?(0,$.jsxs)(`div`,{className:`rounded-xl bg-amber-500/10 px-4 py-3 text-sm text-fg-muted`,children:[(0,$.jsx)(`p`,{className:`font-medium text-fg`,children:o.conflictsTitle}),(0,$.jsx)(`p`,{className:`mt-1`,children:o.conflictsHint}),(0,$.jsx)(`ul`,{className:`mt-2 list-inside list-disc text-xs`,children:m.map(Me)})]}):null,t[9]=m,t[10]=o.conflictsHint,t[11]=o.conflictsTitle,t[12]=g):g=t[12];let _;t[13]===o.pickMethod?_=t[14]:(_=(0,$.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:o.pickMethod}),t[13]=o.pickMethod,t[14]=_);let y;t[15]===n?y=t[16]:(y=()=>n(`tailscale`),t[15]=n,t[16]=y);let b;t[17]!==o.recommended||t[18]!==o.tailscaleCardDesc||t[19]!==o.tailscaleCardTitle||t[20]!==y?(b=(0,$.jsx)(Ae,{icon:v,title:o.tailscaleCardTitle,description:o.tailscaleCardDesc,recommended:!0,recommendedLabel:o.recommended,onOpen:y}),t[17]=o.recommended,t[18]=o.tailscaleCardDesc,t[19]=o.tailscaleCardTitle,t[20]=y,t[21]=b):b=t[21];let S;t[22]===n?S=t[23]:(S=()=>n(`public`),t[22]=n,t[23]=S);let T;t[24]!==o.publicCardDesc||t[25]!==o.publicCardTitle||t[26]!==S?(T=(0,$.jsx)(Ae,{icon:x,title:o.publicCardTitle,description:o.publicCardDesc,onOpen:S}),t[24]=o.publicCardDesc,t[25]=o.publicCardTitle,t[26]=S,t[27]=T):T=t[27];let D;t[28]===n?D=t[29]:(D=()=>n(`reverse-proxy`),t[28]=n,t[29]=D);let O;t[30]!==o.reverseProxyCardDesc||t[31]!==o.reverseProxyCardTitle||t[32]!==D?(O=(0,$.jsx)(Ae,{icon:w,title:o.reverseProxyCardTitle,description:o.reverseProxyCardDesc,onOpen:D}),t[30]=o.reverseProxyCardDesc,t[31]=o.reverseProxyCardTitle,t[32]=D,t[33]=O):O=t[33];let k;t[34]===n?k=t[35]:(k=()=>n(`ssh`),t[34]=n,t[35]=k);let A;t[36]!==o.sshCardDesc||t[37]!==o.sshCardTitle||t[38]!==k?(A=(0,$.jsx)(Ae,{icon:E,title:o.sshCardTitle,description:o.sshCardDesc,onOpen:k}),t[36]=o.sshCardDesc,t[37]=o.sshCardTitle,t[38]=k,t[39]=A):A=t[39];let j;t[40]!==a.advanced.proxyBody||t[41]!==a.advanced.proxyTitle||t[42]!==O||t[43]!==A?(j=(0,$.jsxs)(J,{title:a.advanced.proxyTitle,summary:a.advanced.proxyBody,children:[O,A]}),t[40]=a.advanced.proxyBody,t[41]=a.advanced.proxyTitle,t[42]=O,t[43]=A,t[44]=j):j=t[44];let M;t[45]===n?M=t[46]:(M=()=>n(`lan`),t[45]=n,t[46]=M);let N;t[47]!==o.lanCardDesc||t[48]!==o.lanCardTitle||t[49]!==M?(N=(0,$.jsx)(Ae,{icon:C,title:o.lanCardTitle,description:o.lanCardDesc,onOpen:M}),t[47]=o.lanCardDesc,t[48]=o.lanCardTitle,t[49]=M,t[50]=N):N=t[50];let P;t[51]!==T||t[52]!==j||t[53]!==N||t[54]!==b?(P=(0,$.jsxs)(`div`,{className:`mt-2 flex max-w-3xl flex-col gap-1 rounded-xl bg-surface-hover/20 p-1 [&>*]:rounded-lg [&>*]:bg-surface-base/45`,children:[b,T,j,N]}),t[51]=T,t[52]=j,t[53]=N,t[54]=b,t[55]=P):P=t[55];let F;t[56]!==P||t[57]!==_?(F=(0,$.jsxs)(`div`,{children:[_,P]}),t[56]=P,t[57]=_,t[58]=F):F=t[58];let I;t[59]===o.oneAtATimeHint?I=t[60]:(I=(0,$.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-subtle`,children:o.oneAtATimeHint}),t[59]=o.oneAtATimeHint,t[60]=I);let L;t[61]===a.advanced.proxyTitle?L=t[62]:(L=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:a.advanced.proxyTitle}),t[61]=a.advanced.proxyTitle,t[62]=L);let z;t[63]===a.advanced.proxyBody?z=t[64]:(z=(0,$.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:a.advanced.proxyBody}),t[63]=a.advanced.proxyBody,t[64]=z);let B;t[65]!==r||t[66]!==a.advanced.proxyDocs?(B=(0,$.jsx)(de,{language:r,label:a.advanced.proxyDocs,section:`advanced`,className:`mt-2`}),t[65]=r,t[66]=a.advanced.proxyDocs,t[67]=B):B=t[67];let V;t[68]!==L||t[69]!==z||t[70]!==B?(V=(0,$.jsxs)(`div`,{className:`max-w-3xl rounded-xl bg-surface-hover/20 px-4 py-4`,children:[L,z,B]}),t[68]=L,t[69]=z,t[70]=B,t[71]=V):V=t[71];let H;return t[72]!==F||t[73]!==I||t[74]!==V||t[75]!==h||t[76]!==g?(H=(0,$.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[h,g,F,I,V]}),t[72]=F,t[73]=I,t[74]=V,t[75]=h,t[76]=g,t[77]=H):H=t[77],H}function Me(e){return(0,$.jsx)(`li`,{children:e.message},e.code)}function Ne(e){return e.conversationId}function Pe(e){return e.language}function Fe(){let e=(0,Q.c)(16),t=c(Ie),n;e[0]===t?n=e[1]:(n=l(t),e[0]=t,e[1]=n);let r=n.remoteAccess.lan,i;e[2]!==r.subtitle||e[3]!==r.title?(i=(0,$.jsx)(Y,{icon:C,title:r.title,subtitle:r.subtitle}),e[2]=r.subtitle,e[3]=r.title,e[4]=i):i=e[4];let o;e[5]===r.body?o=e[6]:(o=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:r.body}),e[5]=r.body,e[6]=o);let s;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(g,{className:`size-3.5`,"aria-hidden":!0}),e[7]=s):s=e[7];let u;e[8]===r.link?u=e[9]:(u=(0,$.jsxs)(a,{to:`/settings/gateway`,className:`inline-flex items-center gap-1.5 text-sm font-medium text-accent hover:underline`,children:[r.link,s]}),e[8]=r.link,e[9]=u);let d;e[10]!==o||e[11]!==u?(d=(0,$.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[o,u]}),e[10]=o,e[11]=u,e[12]=d):d=e[12];let f;return e[13]!==i||e[14]!==d?(f=(0,$.jsx)(`div`,{className:`flex flex-col gap-4`,children:(0,$.jsxs)(ue,{children:[i,d]})}),e[13]=i,e[14]=d,e[15]=f):f=e[15],f}function Ie(e){return e.language}function Le(e){let t=(0,Q.c)(30),{embedded:n}=e,r=n!==void 0&&n,i=c(Re),a;t[0]===i?a=t[1]:(a=l(i),t[0]=i,t[1]=a);let o=a.remoteAccess.ssh,[s,u]=(0,Z.useState)(!1),d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=async()=>{await z(`xopc gateway ssh-tunnel --target user@your-host --local-port 18790 --remote-port 18790`)&&(u(!0),setTimeout(()=>u(!1),2e3))},t[2]=d):d=t[2];let f=d,p;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(`pre`,{className:`overflow-x-auto rounded-lg bg-surface-base/55 px-3 py-2 text-xs text-fg-muted`,children:`xopc gateway ssh-tunnel --target user@your-host --local-port 18790 --remote-port 18790`}),t[3]=p):p=t[3];let m,g;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>void f(),g=(0,$.jsx)(h,{className:`mr-1 size-4`}),t[4]=m,t[5]=g):(m=t[4],g=t[5]);let _=s?o.copied:o.copy,v;t[6]===_?v=t[7]:(v=(0,$.jsx)(`div`,{className:`mt-2`,children:(0,$.jsxs)(k,{type:`button`,variant:`ghost`,onClick:m,children:[g,_]})}),t[6]=_,t[7]=v);let y;t[8]!==r||t[9]!==o.hint?(y=r?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-subtle`,children:o.hint}):null,t[8]=r,t[9]=o.hint,t[10]=y):y=t[10];let b;t[11]!==v||t[12]!==y?(b=(0,$.jsxs)($.Fragment,{children:[p,v,y]}),t[11]=v,t[12]=y,t[13]=b):b=t[13];let x=b;if(r){let e;t[14]!==o.subtitle||t[15]!==o.title?(e=(0,$.jsx)(Y,{icon:E,title:o.title,subtitle:o.subtitle}),t[14]=o.subtitle,t[15]=o.title,t[16]=e):e=t[16];let n;t[17]===x?n=t[18]:(n=(0,$.jsx)(`div`,{className:`mt-4 space-y-2`,children:x}),t[17]=x,t[18]=n);let r;return t[19]!==e||t[20]!==n?(r=(0,$.jsxs)(ue,{children:[e,n]}),t[19]=e,t[20]=n,t[21]=r):r=t[21],r}let S;t[22]!==o.subtitle||t[23]!==o.title?(S=(0,$.jsx)(Y,{icon:E,title:o.title,subtitle:o.subtitle}),t[22]=o.subtitle,t[23]=o.title,t[24]=S):S=t[24];let C;t[25]===x?C=t[26]:(C=(0,$.jsx)(`div`,{className:`mt-4`,children:x}),t[25]=x,t[26]=C);let w;return t[27]!==S||t[28]!==C?(w=(0,$.jsxs)(ue,{children:[S,C]}),t[27]=S,t[28]=C,t[29]=w):w=t[29],w}function Re(e){return e.language}function ze(){let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(Le,{embedded:!0}),e[0]=t):t=e[0],t}var Be=[`guide`,`tailscale`,`public`,`reverse-proxy`,`ssh`,`lan`];function Ve(e){return e&&Be.includes(e)?e:`guide`}function He(e){let t=(0,Q.c)(32),{showLabel:n,hideLabel:r,icon:i,hint:a,children:o,className:s,defaultOpen:c,advancedOnly:l}=e,u=l!==void 0&&l,[d,p]=(0,Z.useState)(c??!1),m;t[0]===s?m=t[1]:(m=O(`rounded-xl bg-surface-hover/20`,s),t[0]=s,t[1]=m);let h;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>p(Ue),t[2]=h):h=t[2];let g=d&&`rotate-180`,_;t[3]===g?_=t[4]:(_=O(`size-4 shrink-0 text-fg-muted transition-transform duration-200 motion-reduce:transition-none`,g),t[3]=g,t[4]=_);let v;t[5]===_?v=t[6]:(v=(0,$.jsx)(f,{className:_,"aria-hidden":!0}),t[5]=_,t[6]=v);let y;t[7]===i?y=t[8]:(y=i?(0,$.jsx)(i,{className:`size-4 shrink-0 text-accent`,strokeWidth:1.75,"aria-hidden":!0}):null,t[7]=i,t[8]=y);let b=d?r:n,x;t[9]===b?x=t[10]:(x=(0,$.jsx)(`span`,{children:b}),t[9]=b,t[10]=x);let S;t[11]!==d||t[12]!==v||t[13]!==y||t[14]!==x?(S=(0,$.jsxs)(`button`,{type:`button`,"aria-expanded":d,onClick:h,className:`flex w-full items-center gap-2 rounded-2xl px-4 py-3.5 text-left text-sm font-medium text-fg transition-colors hover:text-fg`,children:[v,y,x]}),t[11]=d,t[12]=v,t[13]=y,t[14]=x,t[15]=S):S=t[15];let C=d?`grid-rows-[1fr] opacity-100`:`grid-rows-[0fr] opacity-0`,w;t[16]===C?w=t[17]:(w=O(`grid transition-[grid-template-rows,opacity] duration-200 ease-out motion-reduce:transition-none`,C),t[16]=C,t[17]=w);let T;t[18]===a?T=t[19]:(T=a?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:a}):null,t[18]=a,t[19]=T);let E;t[20]!==o||t[21]!==T?(E=(0,$.jsx)(`div`,{className:`overflow-hidden`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-4 px-4 pb-4 pt-1`,children:[T,o]})}),t[20]=o,t[21]=T,t[22]=E):E=t[22];let D;t[23]!==w||t[24]!==E?(D=(0,$.jsx)(`div`,{className:w,children:E}),t[23]=w,t[24]=E,t[25]=D):D=t[25];let k;t[26]!==S||t[27]!==D||t[28]!==m?(k=(0,$.jsxs)(`section`,{className:m,children:[S,D]}),t[26]=S,t[27]=D,t[28]=m,t[29]=k):k=t[29];let A=k;if(u){let e;return t[30]===A?e=t[31]:(e=(0,$.jsx)(we,{children:A}),t[30]=A,t[31]=e),e}return A}function Ue(e){return!e}function We(e){let t=(0,Q.c)(40),{open:n,title:r,intro:i,bullets:a,checkboxLabel:o,confirmLabel:s,cancelLabel:c,onConfirm:l,onCancel:u}=e,[d,f]=(0,Z.useState)(!1),p;t[0]===u?p=t[1]:(p=e=>{e||(f(!1),u())},t[0]=u,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,$.jsx)(A,{className:O(`xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]`,L)}),t[2]=m):m=t[2];let h;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(h=O(`xopc-dialog-content fixed left-1/2 top-1/2 max-h-[min(90vh,40rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2`,`overflow-y-auto rounded-2xl border border-edge bg-surface-overlay p-6 shadow-popover outline-none dark:border-edge`,I),t[3]=h):h=t[3];let g;t[4]===r?g=t[5]:(g=(0,$.jsx)(P,{className:`text-base font-semibold text-fg`,children:r}),t[4]=r,t[5]=g);let _;t[6]===i?_=t[7]:(_=(0,$.jsx)(j,{className:`mt-2 text-sm text-fg-muted`,children:i}),t[6]=i,t[7]=_);let v;t[8]===a?v=t[9]:(v=a.map(Ge),t[8]=a,t[9]=v);let y;t[10]===v?y=t[11]:(y=(0,$.jsx)(`ul`,{className:`mt-4 list-disc space-y-2 pl-5 text-sm text-fg-muted`,children:v}),t[10]=v,t[11]=y);let b;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>f(e.target.checked),t[12]=b):b=t[12];let x;t[13]===d?x=t[14]:(x=(0,$.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 size-4 shrink-0 rounded border-edge accent-accent`,checked:d,onChange:b}),t[13]=d,t[14]=x);let S;t[15]===o?S=t[16]:(S=(0,$.jsx)(`span`,{children:o}),t[15]=o,t[16]=S);let C;t[17]!==S||t[18]!==x?(C=(0,$.jsxs)(`label`,{className:`mt-5 flex cursor-pointer items-start gap-3 text-sm text-fg`,children:[x,S]}),t[17]=S,t[18]=x,t[19]=C):C=t[19];let w;t[20]!==c||t[21]!==u?(w=(0,$.jsx)(k,{type:`button`,variant:`secondary`,onClick:u,children:c}),t[20]=c,t[21]=u,t[22]=w):w=t[22];let T=!d,E;t[23]!==s||t[24]!==l||t[25]!==T?(E=(0,$.jsx)(k,{type:`button`,disabled:T,onClick:l,children:s}),t[23]=s,t[24]=l,t[25]=T,t[26]=E):E=t[26];let D;t[27]!==w||t[28]!==E?(D=(0,$.jsxs)(`div`,{className:`mt-6 flex justify-end gap-2`,children:[w,E]}),t[27]=w,t[28]=E,t[29]=D):D=t[29];let R;t[30]!==C||t[31]!==D||t[32]!==g||t[33]!==_||t[34]!==y?(R=(0,$.jsxs)(M,{children:[m,(0,$.jsxs)(N,{className:h,onOpenAutoFocus:Ke,children:[g,_,y,C,D]})]}),t[30]=C,t[31]=D,t[32]=g,t[33]=_,t[34]=y,t[35]=R):R=t[35];let z;return t[36]!==n||t[37]!==p||t[38]!==R?(z=(0,$.jsx)(F,{open:n,onOpenChange:p,children:R}),t[36]=n,t[37]=p,t[38]=R,t[39]=z):z=t[39],z}function Ge(e){return(0,$.jsx)(`li`,{children:e},e)}function Ke(e){return e.preventDefault()}function qe(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var Je=[`preparing_frpc`,`registering`,`starting_frpc`];function Ye(e){return e?e===`reconnecting_frpc`?Je.indexOf(`starting_frpc`):Je.indexOf(e):-1}function Xe(e,t){if(t.state===`connected`)return`done`;let n=t.startProgress?.phase,r=Je.indexOf(e),i=Ye(n);return i<0?t.state===`connecting`||t.state===`reconnecting`?`active`:`pending`:r<i?`done`:r===i?`active`:`pending`}function Ze(e,t,n){let r=n.startProgress;return Xe(t,n)===`active`?t===`preparing_frpc`&&n.frpcDownload?n.frpcDownload.phase===`extracting`?e.frpcExtracting:n.frpcDownload.percent==null?e.frpcDownloading:e.frpcDownloadingPercent.replace(`{{percent}}`,String(n.frpcDownload.percent)):t===`registering`&&r?.publicUrl?e.stepRegisterDetail:t===`starting_frpc`?r?.phase===`reconnecting_frpc`?e.stepReconnectDetail:e.stepFrpcDetail:null:null}function Qe(e,t){switch(t){case`preparing_frpc`:return e.stepPrepareFrpc;case`registering`:return e.stepRegister;case`starting_frpc`:return e.stepFrpcLogin}}function $e(e){if(!e)return null;let t=Math.max(0,Math.floor((Date.now()-new Date(e).getTime())/1e3));return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function et(e){let t=(0,Q.c)(31),{status:n,t:r}=e,[,i]=(0,Z.useState)(0),a;t[0]!==i||t[1]!==n.state?(a=()=>{if(n.state!==`connecting`&&n.state!==`reconnecting`)return;let e=window.setInterval(()=>i(tt),1e3);return()=>window.clearInterval(e)},t[0]=i,t[1]=n.state,t[2]=a):a=t[2];let o=n.startProgress?.startedAt,s;if(t[3]!==n.state||t[4]!==o?(s=[n.state,o],t[3]=n.state,t[4]=o,t[5]=s):s=t[5],(0,Z.useEffect)(a,s),!(n.state===`connecting`||n.state===`reconnecting`||n.state===`connected`&&n.startProgress))return null;let c,l,u,f,p;if(t[6]!==n||t[7]!==r){let e=$e(n.startProgress?.startedAt);c=!!n.publicUrl&&n.state!==`connected`&&n.startProgress?.phase!==`registering`,l=`mt-3 space-y-3 rounded-lg bg-surface-panel/80 p-3 shadow-surface`;let i;t[13]===r.startProgressTitle?i=t[14]:(i=(0,$.jsx)(`p`,{className:`text-xs font-medium text-fg`,children:r.startProgressTitle}),t[13]=r.startProgressTitle,t[14]=i);let a;t[15]===r.startProgressHint?a=t[16]:(a=(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:r.startProgressHint}),t[15]=r.startProgressHint,t[16]=a),t[17]!==i||t[18]!==a?(u=(0,$.jsxs)(`div`,{children:[i,a]}),t[17]=i,t[18]=a,t[19]=u):u=t[19];let o=Je.map(e=>{let t=Xe(e,n),i=Ze(r,e,n);return(0,$.jsxs)(`li`,{className:`flex gap-2 text-xs`,children:[(0,$.jsx)(`span`,{className:`mt-0.5 shrink-0 text-fg-subtle`,"aria-hidden":!0,children:t===`done`?(0,$.jsx)(d,{className:`size-3.5 text-emerald-600 dark:text-emerald-400`}):t===`active`?(0,$.jsx)(b,{className:`size-3.5 animate-spin text-accent`}):(0,$.jsx)(m,{className:`size-3.5`})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:O(`font-medium`,t===`active`?`text-fg`:t===`done`?`text-fg-muted`:`text-fg-subtle`),children:Qe(r,e)}),i?(0,$.jsx)(`div`,{className:`mt-0.5 text-fg-muted`,children:i}):null,e===`preparing_frpc`&&t===`active`&&n.frpcDownload&&n.frpcDownload.phase===`downloading`?(0,$.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,$.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-surface-panel`,children:(0,$.jsx)(`div`,{className:O(`h-full rounded-full bg-accent transition-[width] duration-300`,n.frpcDownload.percent==null&&`w-1/3 animate-pulse`),style:n.frpcDownload.percent==null?void 0:{width:`${n.frpcDownload.percent}%`}})}),n.frpcDownload.bytesReceived!=null&&n.frpcDownload.totalBytes?(0,$.jsxs)(`p`,{className:`text-fg-subtle`,children:[qe(n.frpcDownload.bytesReceived),` /`,` `,qe(n.frpcDownload.totalBytes)]}):null]}):null,e===`preparing_frpc`&&t===`active`&&n.frpcDownload?.url?(0,$.jsxs)(`p`,{className:`mt-2 text-fg-subtle`,children:[(0,$.jsxs)(`span`,{className:`font-sans`,children:[r.frpcDownloadingUrlLabel,`: `]}),(0,$.jsx)(`a`,{href:n.frpcDownload.url,target:`_blank`,rel:`noopener noreferrer`,className:`break-all font-mono text-[11px] text-accent hover:underline`,children:n.frpcDownload.url})]}):null]})]},e)});t[20]===o?f=t[21]:(f=(0,$.jsx)(`ol`,{className:`space-y-2`,children:o}),t[20]=o,t[21]=f),p=e&&n.startProgress?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:r.startProgressElapsed.replace(`{{elapsed}}`,e)}):null,t[6]=n,t[7]=r,t[8]=c,t[9]=l,t[10]=u,t[11]=f,t[12]=p}else c=t[8],l=t[9],u=t[10],f=t[11],p=t[12];let h;t[22]!==c||t[23]!==r.publicUrlPendingNotice?(h=c?(0,$.jsx)(`p`,{className:`text-xs text-fg-muted`,children:r.publicUrlPendingNotice}):null,t[22]=c,t[23]=r.publicUrlPendingNotice,t[24]=h):h=t[24];let g;return t[25]!==l||t[26]!==u||t[27]!==f||t[28]!==p||t[29]!==h?(g=(0,$.jsxs)(`div`,{className:l,children:[u,f,p,h]}),t[25]=l,t[26]=u,t[27]=f,t[28]=p,t[29]=h,t[30]=g):g=t[30],g}function tt(e){return e+1}function nt(e,t){return t.state===`connected`?e.statusConnected:t.state===`error`?e.statusError:t.startProgress?.phase===`reconnecting_frpc`?e.statusReconnecting:t.startProgress?.phase===`starting_frpc`?e.statusStartingFrpc:t.startProgress?.phase===`registering`?e.statusRegistering:t.startProgress?.phase===`preparing_frpc`||t.frpcDownload?e.statusPreparingFrpc:t.state===`connecting`||t.state===`reconnecting`?e.statusConnecting:e.statusOff}function rt(e){return e.state===`connected`?`connected`:e.state===`error`?`error`:e.state===`connecting`||e.state===`reconnecting`||e.startProgress||e.frpcDownload?`progress`:`off`}function it(e){switch(e){case`connected`:return`bg-emerald-500/15 text-emerald-700 dark:text-emerald-400`;case`progress`:return`bg-amber-500/15 text-amber-700 dark:text-amber-400`;case`error`:return`bg-red-500/15 text-red-700 dark:text-red-400`;default:return`bg-surface-hover text-fg-muted`}}function at(e){if(!e)return`—`;let t=Date.now()-new Date(e).getTime();if(t<0)return`—`;let n=Math.floor(t/6e4);return n<60?`${n}m`:`${Math.floor(n/60)}h ${n%60}m`}function ot(e){let t=(0,Q.c)(69),{t:n,status:r,isLoading:i,statusErr:a,starting:o,stopping:s,showConsentExpired:c,copyLabels:l,startDisabled:u,startDisabledReason:d,stepLabel:f,onStart:p,onStop:m}=e,h=u!==void 0&&u,g;t[0]!==r.lastError||t[1]!==r.state?(g=r.state===`error`&&he(Error(r.lastError??``)),t[0]=r.lastError,t[1]=r.state,t[2]=g):g=t[2];let _=g,y,x,C,w,T,E,A;t[3]!==r||t[4]!==o?(A=rt(r),y=r.enabled||o,x=o||r.state===`connecting`||r.state===`reconnecting`||!!r.startProgress||!!r.frpcDownload,t[12]===Symbol.for(`react.memo_cache_sentinel`)?(E=O(le(),`space-y-4`),t[12]=E):E=t[12],T=`flex flex-wrap items-start justify-between gap-3`,w=`flex items-center gap-2`,C=O(`inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-medium`,it(A)),t[3]=r,t[4]=o,t[5]=y,t[6]=x,t[7]=C,t[8]=w,t[9]=T,t[10]=E,t[11]=A):(y=t[5],x=t[6],C=t[7],w=t[8],T=t[9],E=t[10],A=t[11]);let j=A===`connected`&&`bg-emerald-500`,M=A===`progress`&&`bg-amber-500 animate-pulse`,N=A===`error`&&`bg-red-500`,P=A===`off`&&`bg-fg-subtle`,F;t[13]!==P||t[14]!==j||t[15]!==M||t[16]!==N?(F=O(`size-1.5 rounded-full`,j,M,N,P),t[13]=P,t[14]=j,t[15]=M,t[16]=N,t[17]=F):F=t[17];let I;t[18]===F?I=t[19]:(I=(0,$.jsx)(`span`,{className:F,"aria-hidden":!0}),t[18]=F,t[19]=I);let L;t[20]!==i||t[21]!==r||t[22]!==n?(L=i&&!r.enabled?(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block h-3 w-16 animate-pulse rounded-full bg-surface-hover/70 motion-reduce:animate-none`}):nt(n,r),t[20]=i,t[21]=r,t[22]=n,t[23]=L):L=t[23];let R;t[24]!==I||t[25]!==L||t[26]!==C?(R=(0,$.jsxs)(`span`,{className:C,children:[I,L]}),t[24]=I,t[25]=L,t[26]=C,t[27]=R):R=t[27];let z;t[28]!==r.connectedSince||t[29]!==r.state||t[30]!==n.uptime?(z=r.connectedSince&&r.state===`connected`?(0,$.jsxs)(`span`,{className:`text-xs text-fg-subtle`,children:[n.uptime,` `,at(r.connectedSince)]}):null,t[28]=r.connectedSince,t[29]=r.state,t[30]=n.uptime,t[31]=z):z=t[31];let B;t[32]!==R||t[33]!==z||t[34]!==w?(B=(0,$.jsxs)(`div`,{className:w,children:[R,z]}),t[32]=R,t[33]=z,t[34]=w,t[35]=B):B=t[35];let V;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,$.jsx)(v,{className:`size-4 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0}),t[36]=V):V=t[36];let H;t[37]!==B||t[38]!==T?(H=(0,$.jsxs)(`div`,{className:T,children:[B,V]}),t[37]=B,t[38]=T,t[39]=H):H=t[39];let U;t[40]===a?U=t[41]:(U=a?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:a instanceof Error?a.message:String(a)}):null,t[40]=a,t[41]=U);let W;t[42]!==c||t[43]!==n.consentExpiredBanner?(W=c?(0,$.jsx)(`p`,{className:`rounded-lg bg-amber-500/10 px-3 py-2 text-xs text-fg-muted`,children:n.consentExpiredBanner}):null,t[42]=c,t[43]=n.consentExpiredBanner,t[44]=W):W=t[44];let G;t[45]!==_||t[46]!==n.recoverConnectionHint?(G=_?(0,$.jsx)(`p`,{role:`alert`,className:`text-sm text-fg-muted`,children:n.recoverConnectionHint}):null,t[45]=_,t[46]=n.recoverConnectionHint,t[47]=G):G=t[47];let K;t[48]!==y||t[49]!==l||t[50]!==p||t[51]!==m||t[52]!==_||t[53]!==x||t[54]!==r||t[55]!==h||t[56]!==d||t[57]!==o||t[58]!==f||t[59]!==s||t[60]!==n?(K=y?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[r.publicUrl?(0,$.jsx)(`div`,{className:`rounded-xl bg-surface-panel/80 p-3 shadow-surface`,children:(0,$.jsx)(ee,{label:n.publicUrlLabel,text:r.publicUrl,labels:l})}):null,x?(0,$.jsx)(et,{status:r,t:n}):null,r.lastError&&r.state===`error`?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:r.lastError}):null,(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:r.enabled?(0,$.jsxs)(k,{type:`button`,variant:`secondary`,disabled:s,onClick:m,children:[s?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,n.stop]}):(0,$.jsxs)(k,{type:`button`,disabled:o,onClick:p,children:[o?(0,$.jsx)(b,{className:`size-4 animate-spin`}):(0,$.jsx)(S,{className:`size-4`}),_?n.recoverConnection:n.start]})})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[f?(0,$.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:f}):null,(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:n.emptyStateTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:n.emptyStateBody})]}),(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg bg-amber-500/10 px-3 py-2.5 text-xs text-fg-muted`,children:[(0,$.jsx)(D,{className:`mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-400`}),(0,$.jsx)(`p`,{children:n.riskBannerBody})]}),h&&d?(0,$.jsx)(`p`,{className:`text-sm text-amber-800 dark:text-amber-200`,children:d}):null,(0,$.jsxs)(k,{type:`button`,disabled:o||h,onClick:p,className:`w-full sm:w-auto`,children:[o?(0,$.jsx)(b,{className:`size-4 animate-spin`}):(0,$.jsx)(S,{className:`size-4`}),_?n.recoverConnection:n.start]})]}),t[48]=y,t[49]=l,t[50]=p,t[51]=m,t[52]=_,t[53]=x,t[54]=r,t[55]=h,t[56]=d,t[57]=o,t[58]=f,t[59]=s,t[60]=n,t[61]=K):K=t[61];let q;return t[62]!==H||t[63]!==U||t[64]!==W||t[65]!==G||t[66]!==K||t[67]!==E?(q=(0,$.jsxs)(`section`,{className:E,children:[H,U,W,G,K]}),t[62]=H,t[63]=U,t[64]=W,t[65]=G,t[66]=K,t[67]=E,t[68]=q):q=t[68],q}var st={reconfiguring:!1};function ct(e){let t=(0,Q.c)(89),{t:n,brokerSecretReady:r,brokerSecretConfiguredInConfig:i,brokerSecretMaskedValue:a,brokerSecretDraft:o,savingBrokerSecret:s,authorizingBrokerSecret:c,brokerSecretAuthorizationUrl:l,brokerSecretNotice:u,copyFailedLabel:f,onDraftChange:p,onSave:m,onAuthorize:h,onClear:v,sectionRef:x}=e,S=(0,Z.useId)(),C=r,w=!C,[T,E]=(0,Z.useReducer)(U,st),{reconfiguring:D}=T,A;t[0]!==i||t[1]!==o||t[2]!==D?(A=i&&!D&&!o.trim(),t[0]=i,t[1]=o,t[2]=D,t[3]=A):A=t[3];let j=A,M;t[4]!==n.copied||t[5]!==n.copyKey||t[6]!==n.hideKey||t[7]!==n.showKey?(M={show:n.showKey,hide:n.hideKey,copy:n.copyKey,copied:n.copied},t[4]=n.copied,t[5]=n.copyKey,t[6]=n.hideKey,t[7]=n.showKey,t[8]=M):M=t[8];let N=M,P;t[9]===o?P=t[10]:(P=o.trim().length>0&&!K(o.trim()),t[9]=o,t[10]=P);let F=P,I;t[11]===p?I=t[12]:(I=()=>{E({type:`patch`,patch:{reconfiguring:!1}}),p(``)},t[11]=p,t[12]=I);let L=I,R=w&&`ring-1 ring-amber-500/30`,z;t[13]===R?z=t[14]:(z=O(R),t[13]=R,t[14]=z);let B=C?`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`:w?`bg-amber-500/10 text-amber-700 dark:text-amber-400`:`bg-surface-hover text-fg-muted`,V;t[15]===B?V=t[16]:(V=O(`flex size-9 shrink-0 items-center justify-center rounded-lg`,B),t[15]=B,t[16]=V);let H;t[17]===C?H=t[18]:(H=C?(0,$.jsx)(d,{className:`size-4`,strokeWidth:2,"aria-hidden":!0}):(0,$.jsx)(y,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),t[17]=C,t[18]=H);let W;t[19]!==V||t[20]!==H?(W=(0,$.jsx)(`span`,{className:V,children:H}),t[19]=V,t[20]=H,t[21]=W):W=t[21];let ee=C?n.brokerSecretReadyTitle:n.brokerSecretStepTitle,G;t[22]===ee?G=t[23]:(G=(0,$.jsx)(`p`,{className:`text-sm font-semibold text-fg`,children:ee}),t[22]=ee,t[23]=G);let q=C?n.brokerSecretReadyHint:n.brokerSecretHint,te;t[24]===q?te=t[25]:(te=(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:q}),t[24]=q,t[25]=te);let ne;t[26]!==w||t[27]!==n.brokerSecretMissingHint?(ne=w?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-amber-800 dark:text-amber-200`,children:n.brokerSecretMissingHint}):null,t[26]=w,t[27]=n.brokerSecretMissingHint,t[28]=ne):ne=t[28];let J;t[29]!==G||t[30]!==te||t[31]!==ne?(J=(0,$.jsxs)(`div`,{children:[G,te,ne]}),t[29]=G,t[30]=te,t[31]=ne,t[32]=J):J=t[32];let re;t[33]!==c||t[34]!==w||t[35]!==h||t[36]!==D||t[37]!==s||t[38]!==n.brokerSecretAuthorize||t[39]!==n.brokerSecretAuthorizing||t[40]!==n.brokerSecretConsoleLink?(re=w||D?(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsxs)(k,{type:`button`,disabled:s||c,onClick:h,children:[c?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,c?n.brokerSecretAuthorizing:n.brokerSecretAuthorize]}),(0,$.jsxs)(`a`,{href:xe,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[n.brokerSecretConsoleLink,(0,$.jsx)(g,{className:`size-3`,"aria-hidden":!0})]})]}):null,t[33]=c,t[34]=w,t[35]=h,t[36]=D,t[37]=s,t[38]=n.brokerSecretAuthorize,t[39]=n.brokerSecretAuthorizing,t[40]=n.brokerSecretConsoleLink,t[41]=re):re=t[41];let ie;t[42]!==c||t[43]!==l||t[44]!==n.brokerSecretOpenAuthorization?(ie=c&&l?(0,$.jsxs)(`a`,{href:l,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline`,children:[n.brokerSecretOpenAuthorization,(0,$.jsx)(g,{className:`size-3`,"aria-hidden":!0})]}):null,t[42]=c,t[43]=l,t[44]=n.brokerSecretOpenAuthorization,t[45]=ie):ie=t[45];let ae;t[46]!==i||t[47]!==o||t[48]!==a||t[49]!==F||t[50]!==L||t[51]!==f||t[52]!==S||t[53]!==w||t[54]!==v||t[55]!==p||t[56]!==m||t[57]!==D||t[58]!==s||t[59]!==N||t[60]!==j||t[61]!==n.brokerSecretCancelReconfigure||t[62]!==n.brokerSecretClear||t[63]!==n.brokerSecretMaskedHelp||t[64]!==n.brokerSecretNotInConfigFile||t[65]!==n.brokerSecretPlaceholder||t[66]!==n.brokerSecretReconfigure||t[67]!==n.brokerSecretRevealFailed||t[68]!==n.brokerSecretSave||t[69]!==n.brokerSecretSaveAndContinue||t[70]!==n.brokerSecretTitle?(ae=j?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`label`,{className:`sr-only`,htmlFor:S,children:n.brokerSecretTitle}),(0,$.jsx)(_,{id:S,value:a,labels:N,reveal:lt,loadFailedLabel:f||n.brokerSecretRevealFailed,maskedHelp:n.brokerSecretMaskedHelp,notInConfigFile:n.brokerSecretNotInConfigFile,readOnly:!0}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsx)(k,{type:`button`,variant:`secondary`,disabled:s,onClick:()=>{E({type:`patch`,patch:{reconfiguring:!0}})},children:n.brokerSecretReconfigure}),(0,$.jsx)(k,{type:`button`,variant:`ghost`,disabled:s,onClick:v,children:n.brokerSecretClear})]})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`label`,{className:`sr-only`,htmlFor:S,children:n.brokerSecretTitle}),(0,$.jsx)(_,{id:S,value:o,onChange:p,placeholder:n.brokerSecretPlaceholder,labels:N,disabled:s}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsxs)(k,{type:`button`,disabled:s||!F,onClick:m,children:[s?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,w?n.brokerSecretSaveAndContinue:n.brokerSecretSave]}),i?(0,$.jsx)(k,{type:`button`,variant:`ghost`,disabled:s,onClick:v,children:n.brokerSecretClear}):null,D?(0,$.jsx)(k,{type:`button`,variant:`ghost`,disabled:s,onClick:L,children:n.brokerSecretCancelReconfigure}):null]})]}),t[46]=i,t[47]=o,t[48]=a,t[49]=F,t[50]=L,t[51]=f,t[52]=S,t[53]=w,t[54]=v,t[55]=p,t[56]=m,t[57]=D,t[58]=s,t[59]=N,t[60]=j,t[61]=n.brokerSecretCancelReconfigure,t[62]=n.brokerSecretClear,t[63]=n.brokerSecretMaskedHelp,t[64]=n.brokerSecretNotInConfigFile,t[65]=n.brokerSecretPlaceholder,t[66]=n.brokerSecretReconfigure,t[67]=n.brokerSecretRevealFailed,t[68]=n.brokerSecretSave,t[69]=n.brokerSecretSaveAndContinue,t[70]=n.brokerSecretTitle,t[71]=ae):ae=t[71];let oe;t[72]===u?oe=t[73]:(oe=u?(0,$.jsx)(`p`,{className:`text-xs text-emerald-700 dark:text-emerald-400`,children:u}):null,t[72]=u,t[73]=oe);let se;t[74]!==J||t[75]!==re||t[76]!==ie||t[77]!==ae||t[78]!==oe?(se=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[J,re,ie,ae,oe]}),t[74]=J,t[75]=re,t[76]=ie,t[77]=ae,t[78]=oe,t[79]=se):se=t[79];let ce;t[80]!==W||t[81]!==se?(ce=(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[W,se]}),t[80]=W,t[81]=se,t[82]=ce):ce=t[82];let Y;t[83]!==ce||t[84]!==z?(Y=(0,$.jsx)(ue,{className:z,children:ce}),t[83]=ce,t[84]=z,t[85]=Y):Y=t[85];let le;return t[86]!==x||t[87]!==Y?(le=(0,$.jsx)(`div`,{ref:x,id:`tunnel-broker-secret-setup`,children:Y}),t[86]=x,t[87]=Y,t[88]=le):le=t[88],le}function lt(){return ve().then(ut)}function ut(e){return e.registrationSecret??null}var dt={actionError:null,starting:!1,stopping:!1,savingAutoStart:!1,consentOpen:!1,autoStartConfirmOpen:!1,releaseConfirmOpen:!1,releasing:!1,brokerSecretDraft:``,savingBrokerSecret:!1,authorizingBrokerSecret:!1,brokerSecretAuthorizationUrl:null,brokerSecretNotice:null};function ft({embedded:e=!1}){let t=c(e=>e.language),n=l(t).tunnelSettings,r=!!s(e=>e.conversationId),[i,a]=(0,Z.useReducer)(U,dt),{actionError:o,starting:u,stopping:d,savingAutoStart:f,consentOpen:p,autoStartConfirmOpen:m,releaseConfirmOpen:h,releasing:g,brokerSecretDraft:_,savingBrokerSecret:y,authorizingBrokerSecret:x,brokerSecretAuthorizationUrl:S,brokerSecretNotice:C}=i,w=(0,Z.useRef)(null),{data:T}=V(r),{data:E,error:D,isLoading:A,mutate:j}=R(r?`tunnel-status`:null,_e,{refreshInterval:e=>u?1e3:e?.frpcDownload||e?.state===`connecting`||e?.state===`reconnecting`?2e3:6e4}),M=(0,Z.useMemo)(()=>{let e=T?.payload?.config;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e.tunnel;if(t&&typeof t==`object`&&!Array.isArray(t)&&t.autoStart===!0)return!0}return E?.config?.autoStart===!0},[T,E?.config?.autoStart]),N=(0,Z.useMemo)(()=>{let e=T?.payload?.config;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e.tunnel;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t.registrationSecret;if(typeof e==`string`)return e}}return``},[T]),P=K(N),F=E?.registrationSecret?.configured??P;(0,Z.useEffect)(()=>{let e=()=>{j()};return window.addEventListener(`tunnel-status`,e),()=>window.removeEventListener(`tunnel-status`,e)},[j]);let I=(0,Z.useMemo)(()=>[n.consentBullet1,n.consentBullet2,n.consentBullet3],[n.consentBullet1,n.consentBullet2,n.consentBullet3]),L=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{actionError:null}}),a({type:`patch`,patch:{starting:!0}});try{await be(E?.state===`error`&&he(Error(E.lastError??``))?{recoverActiveLease:!0}:void 0),await j(),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}}),await j().catch(()=>{})}finally{a({type:`patch`,patch:{starting:!1}})}},[j,E]),z=(0,Z.useCallback)(()=>{if(!F){a({type:`patch`,patch:{actionError:n.brokerSecretRequiredBeforeStart}}),w.current?.scrollIntoView({behavior:`smooth`,block:`start`});return}if(E?.consentRequired){a({type:`patch`,patch:{consentOpen:!0}});return}L()},[F,E?.consentRequired,L,n.brokerSecretRequiredBeforeStart]),H=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{consentOpen:!1}}),a({type:`patch`,patch:{actionError:null}});try{await fe(),await Promise.all([j(),L()])}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}},[j,L]),ee=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{actionError:null}}),a({type:`patch`,patch:{stopping:!0}});try{await me(),await j(),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{stopping:!1}})}},[j]),G=(0,Z.useCallback)(async e=>{a({type:`patch`,patch:{savingAutoStart:!0}}),a({type:`patch`,patch:{actionError:null}});try{await ye({autoStart:e}),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{savingAutoStart:!1}})}},[]),J=(0,Z.useCallback)(()=>{if(M){G(!1);return}if(E?.consentRequired){a({type:`patch`,patch:{actionError:n.consentExpiredBanner}});return}if(!E?.canAutoStart){a({type:`patch`,patch:{actionError:n.autoStartHint}});return}a({type:`patch`,patch:{autoStartConfirmOpen:!0}})},[G,E?.canAutoStart,E?.consentRequired,n,M]),oe=(0,Z.useCallback)(async()=>{let e=_.trim();if(e){a({type:`patch`,patch:{savingBrokerSecret:!0,actionError:null,brokerSecretNotice:null}});try{await ye({registrationSecret:e}),a({type:`patch`,patch:{brokerSecretDraft:``,brokerSecretNotice:n.brokerSecretSaved}}),B(),await j(),a({type:`patch`,patch:{actionError:null}})}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{savingBrokerSecret:!1}})}}},[_,j,n.brokerSecretSaved]),se=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{savingBrokerSecret:!0,actionError:null,brokerSecretNotice:null}});try{await ye({registrationSecret:null}),a({type:`patch`,patch:{brokerSecretDraft:``,brokerSecretNotice:n.brokerSecretCleared}}),B(),await j()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{savingBrokerSecret:!1}})}},[j,n.brokerSecretCleared]),ce=(0,Z.useCallback)(async()=>{let e=ie(),t=null,r=null;a({type:`patch`,patch:{authorizingBrokerSecret:!0,brokerSecretAuthorizationUrl:null,brokerSecretNotice:null,actionError:null}});try{for(t=(await q(`xopc-tunnel`)).sessionId;;){await new Promise(e=>window.setTimeout(e,1e3));let i=await ne(t);if(i.authUrl&&i.authUrl!==r&&(r=i.authUrl,a({type:`patch`,patch:{brokerSecretAuthorizationUrl:i.authUrl}}),await re(i.authUrl,e)),i.status===`failed`||i.status===`cancelled`)throw Error(i.error??i.message??`OAuth authorization failed`);if(i.status===`completed`){await ge(),await Promise.all([j(),B()]),a({type:`patch`,patch:{brokerSecretNotice:n.brokerSecretSaved,brokerSecretDraft:``}});return}}}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{ae(e),t&&te(t).catch(()=>void 0),a({type:`patch`,patch:{authorizingBrokerSecret:!1,brokerSecretAuthorizationUrl:null}})}},[j,n.brokerSecretSaved]),Y=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{releaseConfirmOpen:!1,actionError:null,releasing:!0}});try{await me({release:!0}),await j(),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{releasing:!1}})}},[j]),le=(0,Z.useMemo)(()=>({copy:n.copyUrl,copied:n.copied,copyFailed:l(t).clipboard.copyFailed}),[t,n.copyUrl,n.copied]);if(!r)return(0,$.jsx)(`div`,{className:e?void 0:`w-full px-3 py-8 sm:px-5 xl:px-6`,children:(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.needToken})});let X=E??{enabled:!1,state:`disconnected`,subdomain:null,publicUrl:null,connectedSince:null,frpcPid:null,lastHeartbeatAt:null,lastError:null,consentRequired:!0,config:{autoStart:M,brokerUrl:`https://frp.xopc.ai/api`}},pe=E?.consentRequired&&(X.enabled||M||E?.consent?.acceptedAt),ve=(0,$.jsx)(ct,{t:n,brokerSecretReady:F,brokerSecretConfiguredInConfig:P,brokerSecretMaskedValue:P?N:``,brokerSecretDraft:_,savingBrokerSecret:y,authorizingBrokerSecret:x,brokerSecretAuthorizationUrl:S,brokerSecretNotice:C,copyFailedLabel:l(t).clipboard.copyFailed,onDraftChange:e=>a({type:`patch`,patch:{brokerSecretDraft:e}}),onSave:()=>void oe(),onAuthorize:()=>void ce(),onClear:()=>void se(),sectionRef:w}),xe=(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(We,{open:p,title:n.consentTitle,intro:n.consentIntro,bullets:I,checkboxLabel:n.consentCheckbox,confirmLabel:pe?n.consentReconfirm:n.consentConfirm,cancelLabel:n.consentCancel,onConfirm:()=>void H(),onCancel:()=>a({type:`patch`,patch:{consentOpen:!1}})},p?`consent-open`:`consent-closed`),(0,$.jsx)(W,{open:m,title:n.autoStartConfirmTitle,description:n.autoStartConfirmBody,confirmLabel:n.autoStartConfirmLabel,cancelLabel:n.consentCancel,onConfirm:()=>{a({type:`patch`,patch:{autoStartConfirmOpen:!1}}),G(!0)},onCancel:()=>a({type:`patch`,patch:{autoStartConfirmOpen:!1}})}),(0,$.jsx)(W,{open:h,title:n.releaseConfirmTitle,description:n.releaseConfirmBody,confirmLabel:n.releaseConfirmLabel,cancelLabel:n.consentCancel,destructive:!0,onConfirm:()=>void Y(),onCancel:()=>a({type:`patch`,patch:{releaseConfirmOpen:!1}})})]});return e?(0,$.jsxs)(`div`,{className:`flex w-full flex-col gap-4`,children:[o?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:o}):null,ve,(0,$.jsx)(ot,{t:n,status:X,isLoading:A,statusErr:D,starting:u,stopping:d,showConsentExpired:!!pe,copyLabels:le,startDisabled:!F,startDisabledReason:F?void 0:n.brokerSecretRequiredBeforeStart,stepLabel:n.flowStepStart,onStart:z,onStop:()=>void ee()}),(0,$.jsxs)(He,{showLabel:n.showOptions,hideLabel:n.hideOptions,children:[(0,$.jsxs)(`label`,{className:O(`flex items-center gap-3 text-sm text-fg`,!M&&!E?.canAutoStart?`cursor-not-allowed opacity-60`:`cursor-pointer`),children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border-edge accent-accent`,checked:M,disabled:f||!M&&!E?.canAutoStart,onChange:J}),n.autoStart]}),!E?.canAutoStart&&!M?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.autoStartHint}):null,X.subdomain||X.publicUrl?(0,$.jsxs)(`div`,{className:`space-y-2 rounded-xl bg-surface-base/45 p-4`,children:[(0,$.jsxs)(k,{type:`button`,variant:`secondary`,disabled:g||d,className:`border-danger/40 text-danger hover:bg-danger/10`,onClick:()=>a({type:`patch`,patch:{releaseConfirmOpen:!0}}),children:[g?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,n.release]}),(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.releaseHint})]}):null]}),(0,$.jsx)(He,{showLabel:n.showAdvanced,hideLabel:n.hideAdvanced,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-xl bg-surface-base/45 p-4 text-xs text-fg-subtle`,children:[(0,$.jsxs)(`p`,{className:`flex items-start gap-2`,children:[(0,$.jsx)(v,{className:`mt-0.5 size-4 shrink-0 text-accent`}),(0,$.jsx)(`span`,{children:n.brokerNote})]}),(0,$.jsx)(de,{language:t,label:n.brokerDocsLink,section:`public-tunnel`,className:`text-xs`})]})}),xe]}):(0,$.jsxs)(`div`,{className:e?`flex w-full flex-col gap-6`:`flex w-full flex-col gap-6 px-3 py-8 sm:px-5 xl:px-6`,children:[e?null:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h1`,{className:`text-lg font-semibold text-fg`,children:n.title}),(0,$.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:n.subtitle})]}),o?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:o}):null,ve,(0,$.jsx)(ot,{t:n,status:X,isLoading:A,statusErr:D,starting:u,stopping:d,showConsentExpired:!!pe,copyLabels:le,startDisabled:!F,startDisabledReason:F?void 0:n.brokerSecretRequiredBeforeStart,onStart:z,onStop:()=>void ee()}),X.subdomain||X.publicUrl?(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(0,$.jsxs)(k,{type:`button`,variant:`secondary`,disabled:g||d,className:`border-danger/40 text-danger hover:bg-danger/10`,onClick:()=>a({type:`patch`,patch:{releaseConfirmOpen:!0}}),children:[g?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,n.release]})}):null,X.subdomain||X.publicUrl?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.releaseHint}):null,(0,$.jsxs)(ue,{children:[(0,$.jsx)(`h2`,{className:`mb-3 text-sm font-semibold text-fg`,children:n.optionsTitle}),(0,$.jsxs)(`label`,{className:O(`flex items-center gap-3 text-sm text-fg`,!M&&!E?.canAutoStart?`cursor-not-allowed opacity-60`:`cursor-pointer`),children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border-edge accent-accent`,checked:M,disabled:f||!M&&!E?.canAutoStart,onChange:J}),n.autoStart]}),!E?.canAutoStart&&!M?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-subtle`,children:n.autoStartHint}):null]}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg bg-surface-panel/80 px-3 py-2 text-xs text-fg-subtle shadow-surface`,children:[(0,$.jsxs)(`p`,{className:`flex items-start gap-2`,children:[(0,$.jsx)(v,{className:`mt-0.5 size-4 shrink-0 text-accent`}),(0,$.jsx)(`span`,{children:n.brokerNote})]}),(0,$.jsx)(de,{language:t,label:n.brokerDocsLink,section:`public-tunnel`,className:`text-xs`})]}),xe]})}function pt(e,t){return e.tabs[t]}function mt(e,t){return e.tabIntro[t]}function ht(e){switch(e){case`tailscale`:return`tailscale-serve`;case`public`:return`public-tunnel`;case`reverse-proxy`:return`reverse-proxy`;case`ssh`:return`ssh-tunnel`;case`lan`:return`lan`;default:return}}function gt(e){let t=(0,Q.c)(7),{tab:n,onOpenTab:r}=e;switch(n){case`guide`:{let e;return t[0]===r?e=t[1]:(e=(0,$.jsx)(je,{onOpenTab:r}),t[0]=r,t[1]=e),e}case`tailscale`:{let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(pe,{embedded:!0}),t[2]=e):e=t[2],e}case`public`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(ft,{embedded:!0}),t[3]=e):e=t[3],e}case`reverse-proxy`:{let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Ce,{}),t[4]=e):e=t[4],e}case`ssh`:{let e;return t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(ze,{}),t[5]=e):e=t[5],e}case`lan`:{let e;return t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Fe,{}),t[6]=e):e=t[6],e}}}function _t(){let e=(0,Q.c)(3),t=o(),n=c(yt),r=l(n).remoteAccess,a=!!s(vt),[d,f]=i(),p=G(),m=Ve(d.get(`tab`)),h=d.get(`intent`)===`mobile-pairing`,g;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(g={refreshInterval:2e3},e[0]=g):g=e[0];let _=R(h?`device-pairing-readiness`:null,X,g),v;e[1]===f?v=e[2]:(v=e=>{f(t=>{let n=new URLSearchParams(t);return e===`guide`?n.delete(`tab`):n.set(`tab`,e),n},{replace:!0})},e[1]=f,e[2]=v);let y=v,b=mt(r,m),x=Be.filter(e=>p||e!==`ssh`&&e!==`reverse-proxy`||e===m).map(e=>({id:e,label:pt(r,e)}));return(0,$.jsxs)(oe,{children:[(0,$.jsx)(se,{title:r.pageTitle,meta:(0,$.jsx)(de,{language:n,label:r.docsLink,section:ht(m),className:`mt-1`})}),a?(0,$.jsxs)($.Fragment,{children:[h?(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl bg-accent-soft px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,$.jsx)(T,{className:`mt-0.5 size-5 shrink-0 text-accent`,"aria-hidden":!0}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:r.mobilePairingFlow.title}),(0,$.jsx)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:_.data?.ready?r.mobilePairingFlow.ready:r.mobilePairingFlow.hint})]})]}),(0,$.jsxs)(k,{variant:`primary`,disabled:!_.data?.ready,onClick:()=>t(`/settings/devices?startDevicePairing=mobile`),children:[_.data?.ready?r.mobilePairingFlow.continue:r.mobilePairingFlow.waiting,(0,$.jsx)(u,{className:`size-4`,"aria-hidden":!0})]})]}):null,(0,$.jsx)(H,{items:x,activeTab:m,onChange:y,ariaLabel:r.tabsAria,tabIdPrefix:`remote-access-tab`,panelIdPrefix:`remote-access-panel`}),(0,$.jsx)(ce,{id:m,activeTab:m,tabIdPrefix:`remote-access-tab`,panelIdPrefix:`remote-access-panel`,title:pt(r,m),hint:m===`public`?void 0:b,showHeading:!1,framed:!1,children:(0,$.jsx)(gt,{tab:m,onOpenTab:y})})]}):(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:r.guide.needToken})]})}function vt(e){return e.conversationId}function yt(e){return e.language}export{_t as RemoteAccessHub};
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{m as i,t as a,u as o}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{l as s,n as c}from"./locale-store-Bg_XR36n.js";import{t as l}from"./messages-DG4HLOER.js";import{t as u}from"./arrow-right-DSSvoX71.js";import{t as d}from"./check-DUBLcKHA.js";import{t as f}from"./chevron-down-ccbiQQz_.js";import{t as p}from"./chevron-right-BweFrslA.js";import{t as m}from"./circle-BoO4YvTx.js";import{t as h}from"./copy-Dv6d4Dvw.js";import{t as g}from"./external-link-DjqjBmc3.js";import{t as _}from"./secret-input-BQvFXqzz.js";import{t as v}from"./globe-DSSGFWFn.js";import{t as y}from"./key-round-DWbpyU2U.js";import{t as b}from"./loader-circle-CifKLtgG.js";import{t as x}from"./network-BUQLY1BV.js";import{t as S}from"./power-ZI-pBczI.js";import{t as C}from"./server-BlHCBjiE.js";import{t as w}from"./shield-B1sI_cxl.js";import{t as T}from"./smartphone-DSSsQFqA.js";import{t as E}from"./terminal-oKqqZdiG.js";import{t as D}from"./triangle-alert-2JXFNNKU.js";import{t as O}from"./cn-0WouolD0.js";import{t as k}from"./button-CnRSIP6m.js";import{a as A,i as j,o as M,r as N,s as P,t as F}from"./dist-DfWfZ9iu.js";import{i as I,o as L}from"./settings-shell-dialog-layer-BU3UuiJr.js";import{i as R}from"./vendor-swr-CdRzEUwF.js";import{t as z}from"./copy-to-clipboard-HOJ79TWv.js";import{n as B,r as V}from"./gateway-config-swr-DfPQIHOL.js";import{t as H}from"./page-tabs-oeTY7z3_.js";import{r as U}from"./settings-form-draft-Dy10ldo8.js";import{t as W}from"./confirm-dialog-XGclfBqe.js";import{t as ee}from"./copy-text-row-CYIv7RfP.js";import{n as G}from"./settings-mode-store-CaoRh2gt.js";import{r as K}from"./providers-api-rwQ4LWzr.js";import{a as q,n as te,r as ne}from"./oauth-api-D2t9HXoC.js";import{t as J}from"./settings-advanced-section-BxUuF_yi.js";import{n as re,r as ie,t as ae}from"./oauth-authorization-window-o6URRos4.js";import{n as oe,t as se}from"./settings-page-header-CyUHrn7c.js";import{t as ce}from"./settings-page-layout-DGVqXrlp.js";import{n as Y,r as le,t as ue}from"./settings-form-section-num14vSv.js";import{S as de,_ as X,a as fe,b as pe,c as me,d as he,i as ge,n as _e,o as ve,r as ye,s as be,t as xe,x as Se,y as Ce}from"./tunnel-api-C9u9E3UQ.js";import{t as we}from"./settings-advanced-gate-CjAFqg2U.js";var Z=e(t(),1),Q=n(),$=r();function Te(e){switch(e){case`active`:return`text-emerald-700 dark:text-emerald-400`;case`connecting`:return`text-amber-700 dark:text-amber-400`;default:return`text-fg-muted`}}function Ee(e){let t=(0,Q.c)(11),{label:n,kind:r}=e,i;t[0]===r?i=t[1]:(i=O(`inline-flex items-center gap-1.5 text-xs font-medium`,Te(r)),t[0]=r,t[1]=i);let a=r===`active`&&`bg-emerald-500`,o=r===`connecting`&&`bg-amber-500`,s;t[2]!==a||t[3]!==o?(s=O(`size-1.5 rounded-full bg-fg-subtle/50`,a,o),t[2]=a,t[3]=o,t[4]=s):s=t[4];let c;t[5]===s?c=t[6]:(c=(0,$.jsx)(`span`,{className:s,"aria-hidden":!0}),t[5]=s,t[6]=c);let l;return t[7]!==n||t[8]!==i||t[9]!==c?(l=(0,$.jsxs)(`span`,{className:i,children:[c,n]}),t[7]=n,t[8]=i,t[9]=c,t[10]=l):l=t[10],l}function De(e){let t=(0,Q.c)(31),{onOpenTab:n}=e,r=c(ke),i;t[0]===r?i=t[1]:(i=l(r),t[0]=r,t[1]=i);let a=i.remoteAccess.guide,o=!!s(Oe),u;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(u={refreshInterval:3e4},t[2]=u):u=t[2];let{data:d}=R(o?`exposure-status`:null,Se,u),f;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(f={refreshInterval:15e3},t[3]=f):f=t[3];let{data:p}=R(o?`tunnel-status`:null,_e,f),m=V(o);if(!o)return null;let h=d?.tailscale.active===!0,g=p?.state,_=p?.enabled&&g===`connected`,y=p?.enabled&&(g===`connecting`||g===`reconnecting`||!!p?.startProgress||!!p?.frpcDownload),b=m.data?.payload?.config,S=!!(b&&typeof b==`object`&&!Array.isArray(b)&&b.gateway?.publicUrl),T=h?`active`:`off`,D=h?a.statusActive:a.statusOff,k;t[4]!==a.tailscaleCardTitle||t[5]!==T||t[6]!==D?(k={tab:`tailscale`,icon:v,title:a.tailscaleCardTitle,kind:T,statusLabel:D},t[4]=a.tailscaleCardTitle,t[5]=T,t[6]=D,t[7]=k):k=t[7];let A=_?`active`:y?`connecting`:`off`,j=_?a.statusActive:y?a.statusConnecting:a.statusOff,M;t[8]!==a.publicCardTitle||t[9]!==A||t[10]!==j?(M={tab:`public`,icon:x,title:a.publicCardTitle,kind:A,statusLabel:j},t[8]=a.publicCardTitle,t[9]=A,t[10]=j,t[11]=M):M=t[11];let N=S?`active`:`off`,P=S?a.statusActive:a.statusOff,F;t[12]!==a.reverseProxyCardTitle||t[13]!==N||t[14]!==P?(F={tab:`reverse-proxy`,icon:w,title:a.reverseProxyCardTitle,kind:N,statusLabel:P},t[12]=a.reverseProxyCardTitle,t[13]=N,t[14]=P,t[15]=F):F=t[15];let I;t[16]!==a.sshCardStatus||t[17]!==a.sshCardTitle?(I={tab:`ssh`,icon:E,title:a.sshCardTitle,kind:`off`,statusLabel:a.sshCardStatus},t[16]=a.sshCardStatus,t[17]=a.sshCardTitle,t[18]=I):I=t[18];let L;t[19]!==a.lanCardStatus||t[20]!==a.lanCardTitle?(L={tab:`lan`,icon:C,title:a.lanCardTitle,kind:`off`,statusLabel:a.lanCardStatus},t[19]=a.lanCardStatus,t[20]=a.lanCardTitle,t[21]=L):L=t[21];let z;t[22]!==F||t[23]!==I||t[24]!==L||t[25]!==k||t[26]!==M?(z=[k,M,F,I,L],t[22]=F,t[23]=I,t[24]=L,t[25]=k,t[26]=M,t[27]=z):z=t[27];let B=z,H;return t[28]!==B||t[29]!==n?(H=(0,$.jsx)(`div`,{className:`grid gap-1 rounded-xl bg-surface-hover/20 p-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5`,children:B.map(e=>{let t=e.icon;return(0,$.jsxs)(`button`,{type:`button`,onClick:()=>n(e.tab),className:O(`flex items-start gap-3 rounded-lg bg-surface-base/45 px-2 py-3 text-left transition-colors`,`hover:bg-surface-hover/30`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),children:[(0,$.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center text-fg-muted`,children:(0,$.jsx)(t,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})}),(0,$.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(`span`,{className:`block truncate text-sm font-medium text-fg`,children:e.title}),(0,$.jsx)(Ee,{label:e.statusLabel,kind:e.kind})]})]},`${e.tab}-${e.title}`)})}),t[28]=B,t[29]=n,t[30]=H):H=t[30],H}function Oe(e){return e.conversationId}function ke(e){return e.language}function Ae(e){let t=(0,Q.c)(21),{title:n,description:r,recommended:i,icon:a,onOpen:o,recommendedLabel:s}=e,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=O(`group flex w-full items-start gap-3 px-3 py-4 text-left transition-colors`,`hover:bg-surface-hover/30`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),t[0]=c):c=t[0];let l;t[1]===a?l=t[2]:(l=(0,$.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover/70 text-fg-muted`,children:(0,$.jsx)(a,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})}),t[1]=a,t[2]=l);let u;t[3]===n?u=t[4]:(u=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n}),t[3]=n,t[4]=u);let d;t[5]!==i||t[6]!==s?(d=i&&s?(0,$.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:s}):null,t[5]=i,t[6]=s,t[7]=d):d=t[7];let f;t[8]!==u||t[9]!==d?(f=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10];let m;t[11]===r?m=t[12]:(m=(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:r}),t[11]=r,t[12]=m);let h;t[13]!==f||t[14]!==m?(h=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[f,m]}),t[13]=f,t[14]=m,t[15]=h):h=t[15];let g;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,$.jsx)(p,{className:`mt-2 size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5 group-hover:text-fg-muted`,"aria-hidden":!0}),t[16]=g):g=t[16];let _;return t[17]!==o||t[18]!==l||t[19]!==h?(_=(0,$.jsxs)(`button`,{type:`button`,onClick:o,className:c,children:[l,h,g]}),t[17]=o,t[18]=l,t[19]=h,t[20]=_):_=t[20],_}function je(e){let t=(0,Q.c)(78),{onOpenTab:n}=e,r=c(Pe),i;t[0]===r?i=t[1]:(i=l(r),t[0]=r,t[1]=i);let a=i.remoteAccess,o=a.guide,u=!!s(Ne),d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d={refreshInterval:3e4},t[2]=d):d=t[2];let{data:f}=R(u?`exposure-status`:null,Se,d),p;t[3]===f?.conflicts?p=t[4]:(p=f?.conflicts??[],t[3]=f?.conflicts,t[4]=p);let m=p;if(!u){let e;return t[5]===o.needToken?e=t[6]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:o.needToken}),t[5]=o.needToken,t[6]=e),e}let h;t[7]===n?h=t[8]:(h=(0,$.jsx)(De,{onOpenTab:n}),t[7]=n,t[8]=h);let g;t[9]!==m||t[10]!==o.conflictsHint||t[11]!==o.conflictsTitle?(g=m.length>0?(0,$.jsxs)(`div`,{className:`rounded-xl bg-amber-500/10 px-4 py-3 text-sm text-fg-muted`,children:[(0,$.jsx)(`p`,{className:`font-medium text-fg`,children:o.conflictsTitle}),(0,$.jsx)(`p`,{className:`mt-1`,children:o.conflictsHint}),(0,$.jsx)(`ul`,{className:`mt-2 list-inside list-disc text-xs`,children:m.map(Me)})]}):null,t[9]=m,t[10]=o.conflictsHint,t[11]=o.conflictsTitle,t[12]=g):g=t[12];let _;t[13]===o.pickMethod?_=t[14]:(_=(0,$.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:o.pickMethod}),t[13]=o.pickMethod,t[14]=_);let y;t[15]===n?y=t[16]:(y=()=>n(`tailscale`),t[15]=n,t[16]=y);let b;t[17]!==o.recommended||t[18]!==o.tailscaleCardDesc||t[19]!==o.tailscaleCardTitle||t[20]!==y?(b=(0,$.jsx)(Ae,{icon:v,title:o.tailscaleCardTitle,description:o.tailscaleCardDesc,recommended:!0,recommendedLabel:o.recommended,onOpen:y}),t[17]=o.recommended,t[18]=o.tailscaleCardDesc,t[19]=o.tailscaleCardTitle,t[20]=y,t[21]=b):b=t[21];let S;t[22]===n?S=t[23]:(S=()=>n(`public`),t[22]=n,t[23]=S);let T;t[24]!==o.publicCardDesc||t[25]!==o.publicCardTitle||t[26]!==S?(T=(0,$.jsx)(Ae,{icon:x,title:o.publicCardTitle,description:o.publicCardDesc,onOpen:S}),t[24]=o.publicCardDesc,t[25]=o.publicCardTitle,t[26]=S,t[27]=T):T=t[27];let D;t[28]===n?D=t[29]:(D=()=>n(`reverse-proxy`),t[28]=n,t[29]=D);let O;t[30]!==o.reverseProxyCardDesc||t[31]!==o.reverseProxyCardTitle||t[32]!==D?(O=(0,$.jsx)(Ae,{icon:w,title:o.reverseProxyCardTitle,description:o.reverseProxyCardDesc,onOpen:D}),t[30]=o.reverseProxyCardDesc,t[31]=o.reverseProxyCardTitle,t[32]=D,t[33]=O):O=t[33];let k;t[34]===n?k=t[35]:(k=()=>n(`ssh`),t[34]=n,t[35]=k);let A;t[36]!==o.sshCardDesc||t[37]!==o.sshCardTitle||t[38]!==k?(A=(0,$.jsx)(Ae,{icon:E,title:o.sshCardTitle,description:o.sshCardDesc,onOpen:k}),t[36]=o.sshCardDesc,t[37]=o.sshCardTitle,t[38]=k,t[39]=A):A=t[39];let j;t[40]!==a.advanced.proxyBody||t[41]!==a.advanced.proxyTitle||t[42]!==O||t[43]!==A?(j=(0,$.jsxs)(J,{title:a.advanced.proxyTitle,summary:a.advanced.proxyBody,children:[O,A]}),t[40]=a.advanced.proxyBody,t[41]=a.advanced.proxyTitle,t[42]=O,t[43]=A,t[44]=j):j=t[44];let M;t[45]===n?M=t[46]:(M=()=>n(`lan`),t[45]=n,t[46]=M);let N;t[47]!==o.lanCardDesc||t[48]!==o.lanCardTitle||t[49]!==M?(N=(0,$.jsx)(Ae,{icon:C,title:o.lanCardTitle,description:o.lanCardDesc,onOpen:M}),t[47]=o.lanCardDesc,t[48]=o.lanCardTitle,t[49]=M,t[50]=N):N=t[50];let P;t[51]!==T||t[52]!==j||t[53]!==N||t[54]!==b?(P=(0,$.jsxs)(`div`,{className:`mt-2 flex max-w-3xl flex-col gap-1 rounded-xl bg-surface-hover/20 p-1 [&>*]:rounded-lg [&>*]:bg-surface-base/45`,children:[b,T,j,N]}),t[51]=T,t[52]=j,t[53]=N,t[54]=b,t[55]=P):P=t[55];let F;t[56]!==P||t[57]!==_?(F=(0,$.jsxs)(`div`,{children:[_,P]}),t[56]=P,t[57]=_,t[58]=F):F=t[58];let I;t[59]===o.oneAtATimeHint?I=t[60]:(I=(0,$.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-subtle`,children:o.oneAtATimeHint}),t[59]=o.oneAtATimeHint,t[60]=I);let L;t[61]===a.advanced.proxyTitle?L=t[62]:(L=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:a.advanced.proxyTitle}),t[61]=a.advanced.proxyTitle,t[62]=L);let z;t[63]===a.advanced.proxyBody?z=t[64]:(z=(0,$.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:a.advanced.proxyBody}),t[63]=a.advanced.proxyBody,t[64]=z);let B;t[65]!==r||t[66]!==a.advanced.proxyDocs?(B=(0,$.jsx)(de,{language:r,label:a.advanced.proxyDocs,section:`advanced`,className:`mt-2`}),t[65]=r,t[66]=a.advanced.proxyDocs,t[67]=B):B=t[67];let V;t[68]!==L||t[69]!==z||t[70]!==B?(V=(0,$.jsxs)(`div`,{className:`max-w-3xl rounded-xl bg-surface-hover/20 px-4 py-4`,children:[L,z,B]}),t[68]=L,t[69]=z,t[70]=B,t[71]=V):V=t[71];let H;return t[72]!==F||t[73]!==I||t[74]!==V||t[75]!==h||t[76]!==g?(H=(0,$.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[h,g,F,I,V]}),t[72]=F,t[73]=I,t[74]=V,t[75]=h,t[76]=g,t[77]=H):H=t[77],H}function Me(e){return(0,$.jsx)(`li`,{children:e.message},e.code)}function Ne(e){return e.conversationId}function Pe(e){return e.language}function Fe(){let e=(0,Q.c)(16),t=c(Ie),n;e[0]===t?n=e[1]:(n=l(t),e[0]=t,e[1]=n);let r=n.remoteAccess.lan,i;e[2]!==r.subtitle||e[3]!==r.title?(i=(0,$.jsx)(Y,{icon:C,title:r.title,subtitle:r.subtitle}),e[2]=r.subtitle,e[3]=r.title,e[4]=i):i=e[4];let o;e[5]===r.body?o=e[6]:(o=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:r.body}),e[5]=r.body,e[6]=o);let s;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,$.jsx)(g,{className:`size-3.5`,"aria-hidden":!0}),e[7]=s):s=e[7];let u;e[8]===r.link?u=e[9]:(u=(0,$.jsxs)(a,{to:`/settings/gateway`,className:`inline-flex items-center gap-1.5 text-sm font-medium text-accent hover:underline`,children:[r.link,s]}),e[8]=r.link,e[9]=u);let d;e[10]!==o||e[11]!==u?(d=(0,$.jsxs)(`div`,{className:`mt-4 space-y-3`,children:[o,u]}),e[10]=o,e[11]=u,e[12]=d):d=e[12];let f;return e[13]!==i||e[14]!==d?(f=(0,$.jsx)(`div`,{className:`flex flex-col gap-4`,children:(0,$.jsxs)(ue,{children:[i,d]})}),e[13]=i,e[14]=d,e[15]=f):f=e[15],f}function Ie(e){return e.language}function Le(e){let t=(0,Q.c)(30),{embedded:n}=e,r=n!==void 0&&n,i=c(Re),a;t[0]===i?a=t[1]:(a=l(i),t[0]=i,t[1]=a);let o=a.remoteAccess.ssh,[s,u]=(0,Z.useState)(!1),d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=async()=>{await z(`xopc gateway ssh-tunnel --target user@your-host --local-port 18790 --remote-port 18790`)&&(u(!0),setTimeout(()=>u(!1),2e3))},t[2]=d):d=t[2];let f=d,p;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,$.jsx)(`pre`,{className:`overflow-x-auto rounded-lg bg-surface-base/55 px-3 py-2 text-xs text-fg-muted`,children:`xopc gateway ssh-tunnel --target user@your-host --local-port 18790 --remote-port 18790`}),t[3]=p):p=t[3];let m,g;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=()=>void f(),g=(0,$.jsx)(h,{className:`mr-1 size-4`}),t[4]=m,t[5]=g):(m=t[4],g=t[5]);let _=s?o.copied:o.copy,v;t[6]===_?v=t[7]:(v=(0,$.jsx)(`div`,{className:`mt-2`,children:(0,$.jsxs)(k,{type:`button`,variant:`ghost`,onClick:m,children:[g,_]})}),t[6]=_,t[7]=v);let y;t[8]!==r||t[9]!==o.hint?(y=r?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-subtle`,children:o.hint}):null,t[8]=r,t[9]=o.hint,t[10]=y):y=t[10];let b;t[11]!==v||t[12]!==y?(b=(0,$.jsxs)($.Fragment,{children:[p,v,y]}),t[11]=v,t[12]=y,t[13]=b):b=t[13];let x=b;if(r){let e;t[14]!==o.subtitle||t[15]!==o.title?(e=(0,$.jsx)(Y,{icon:E,title:o.title,subtitle:o.subtitle}),t[14]=o.subtitle,t[15]=o.title,t[16]=e):e=t[16];let n;t[17]===x?n=t[18]:(n=(0,$.jsx)(`div`,{className:`mt-4 space-y-2`,children:x}),t[17]=x,t[18]=n);let r;return t[19]!==e||t[20]!==n?(r=(0,$.jsxs)(ue,{children:[e,n]}),t[19]=e,t[20]=n,t[21]=r):r=t[21],r}let S;t[22]!==o.subtitle||t[23]!==o.title?(S=(0,$.jsx)(Y,{icon:E,title:o.title,subtitle:o.subtitle}),t[22]=o.subtitle,t[23]=o.title,t[24]=S):S=t[24];let C;t[25]===x?C=t[26]:(C=(0,$.jsx)(`div`,{className:`mt-4`,children:x}),t[25]=x,t[26]=C);let w;return t[27]!==S||t[28]!==C?(w=(0,$.jsxs)(ue,{children:[S,C]}),t[27]=S,t[28]=C,t[29]=w):w=t[29],w}function Re(e){return e.language}function ze(){let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsx)(Le,{embedded:!0}),e[0]=t):t=e[0],t}var Be=[`guide`,`tailscale`,`public`,`reverse-proxy`,`ssh`,`lan`];function Ve(e){return e&&Be.includes(e)?e:`guide`}function He(e){let t=(0,Q.c)(32),{showLabel:n,hideLabel:r,icon:i,hint:a,children:o,className:s,defaultOpen:c,advancedOnly:l}=e,u=l!==void 0&&l,[d,p]=(0,Z.useState)(c??!1),m;t[0]===s?m=t[1]:(m=O(`rounded-xl bg-surface-hover/20`,s),t[0]=s,t[1]=m);let h;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(h=()=>p(Ue),t[2]=h):h=t[2];let g=d&&`rotate-180`,_;t[3]===g?_=t[4]:(_=O(`size-4 shrink-0 text-fg-muted transition-transform duration-200 motion-reduce:transition-none`,g),t[3]=g,t[4]=_);let v;t[5]===_?v=t[6]:(v=(0,$.jsx)(f,{className:_,"aria-hidden":!0}),t[5]=_,t[6]=v);let y;t[7]===i?y=t[8]:(y=i?(0,$.jsx)(i,{className:`size-4 shrink-0 text-accent`,strokeWidth:1.75,"aria-hidden":!0}):null,t[7]=i,t[8]=y);let b=d?r:n,x;t[9]===b?x=t[10]:(x=(0,$.jsx)(`span`,{children:b}),t[9]=b,t[10]=x);let S;t[11]!==d||t[12]!==v||t[13]!==y||t[14]!==x?(S=(0,$.jsxs)(`button`,{type:`button`,"aria-expanded":d,onClick:h,className:`flex w-full items-center gap-2 rounded-2xl px-4 py-3.5 text-left text-sm font-medium text-fg transition-colors hover:text-fg`,children:[v,y,x]}),t[11]=d,t[12]=v,t[13]=y,t[14]=x,t[15]=S):S=t[15];let C=d?`grid-rows-[1fr] opacity-100`:`grid-rows-[0fr] opacity-0`,w;t[16]===C?w=t[17]:(w=O(`grid transition-[grid-template-rows,opacity] duration-200 ease-out motion-reduce:transition-none`,C),t[16]=C,t[17]=w);let T;t[18]===a?T=t[19]:(T=a?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:a}):null,t[18]=a,t[19]=T);let E;t[20]!==o||t[21]!==T?(E=(0,$.jsx)(`div`,{className:`overflow-hidden`,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-4 px-4 pb-4 pt-1`,children:[T,o]})}),t[20]=o,t[21]=T,t[22]=E):E=t[22];let D;t[23]!==w||t[24]!==E?(D=(0,$.jsx)(`div`,{className:w,children:E}),t[23]=w,t[24]=E,t[25]=D):D=t[25];let k;t[26]!==S||t[27]!==D||t[28]!==m?(k=(0,$.jsxs)(`section`,{className:m,children:[S,D]}),t[26]=S,t[27]=D,t[28]=m,t[29]=k):k=t[29];let A=k;if(u){let e;return t[30]===A?e=t[31]:(e=(0,$.jsx)(we,{children:A}),t[30]=A,t[31]=e),e}return A}function Ue(e){return!e}function We(e){let t=(0,Q.c)(40),{open:n,title:r,intro:i,bullets:a,checkboxLabel:o,confirmLabel:s,cancelLabel:c,onConfirm:l,onCancel:u}=e,[d,f]=(0,Z.useState)(!1),p;t[0]===u?p=t[1]:(p=e=>{e||(f(!1),u())},t[0]=u,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,$.jsx)(A,{className:O(`xopc-dialog-overlay fixed inset-0 bg-scrim backdrop-blur-[1px]`,L)}),t[2]=m):m=t[2];let h;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(h=O(`xopc-dialog-content fixed left-1/2 top-1/2 max-h-[min(90vh,40rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2`,`overflow-y-auto rounded-2xl border border-edge bg-surface-overlay p-6 shadow-popover outline-none dark:border-edge`,I),t[3]=h):h=t[3];let g;t[4]===r?g=t[5]:(g=(0,$.jsx)(P,{className:`text-base font-semibold text-fg`,children:r}),t[4]=r,t[5]=g);let _;t[6]===i?_=t[7]:(_=(0,$.jsx)(j,{className:`mt-2 text-sm text-fg-muted`,children:i}),t[6]=i,t[7]=_);let v;t[8]===a?v=t[9]:(v=a.map(Ge),t[8]=a,t[9]=v);let y;t[10]===v?y=t[11]:(y=(0,$.jsx)(`ul`,{className:`mt-4 list-disc space-y-2 pl-5 text-sm text-fg-muted`,children:v}),t[10]=v,t[11]=y);let b;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>f(e.target.checked),t[12]=b):b=t[12];let x;t[13]===d?x=t[14]:(x=(0,$.jsx)(`input`,{type:`checkbox`,className:`mt-0.5 size-4 shrink-0 rounded border-edge accent-accent`,checked:d,onChange:b}),t[13]=d,t[14]=x);let S;t[15]===o?S=t[16]:(S=(0,$.jsx)(`span`,{children:o}),t[15]=o,t[16]=S);let C;t[17]!==S||t[18]!==x?(C=(0,$.jsxs)(`label`,{className:`mt-5 flex cursor-pointer items-start gap-3 text-sm text-fg`,children:[x,S]}),t[17]=S,t[18]=x,t[19]=C):C=t[19];let w;t[20]!==c||t[21]!==u?(w=(0,$.jsx)(k,{type:`button`,variant:`secondary`,onClick:u,children:c}),t[20]=c,t[21]=u,t[22]=w):w=t[22];let T=!d,E;t[23]!==s||t[24]!==l||t[25]!==T?(E=(0,$.jsx)(k,{type:`button`,disabled:T,onClick:l,children:s}),t[23]=s,t[24]=l,t[25]=T,t[26]=E):E=t[26];let D;t[27]!==w||t[28]!==E?(D=(0,$.jsxs)(`div`,{className:`mt-6 flex justify-end gap-2`,children:[w,E]}),t[27]=w,t[28]=E,t[29]=D):D=t[29];let R;t[30]!==C||t[31]!==D||t[32]!==g||t[33]!==_||t[34]!==y?(R=(0,$.jsxs)(M,{children:[m,(0,$.jsxs)(N,{className:h,onOpenAutoFocus:Ke,children:[g,_,y,C,D]})]}),t[30]=C,t[31]=D,t[32]=g,t[33]=_,t[34]=y,t[35]=R):R=t[35];let z;return t[36]!==n||t[37]!==p||t[38]!==R?(z=(0,$.jsx)(F,{open:n,onOpenChange:p,children:R}),t[36]=n,t[37]=p,t[38]=R,t[39]=z):z=t[39],z}function Ge(e){return(0,$.jsx)(`li`,{children:e},e)}function Ke(e){return e.preventDefault()}function qe(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var Je=[`preparing_frpc`,`registering`,`starting_frpc`];function Ye(e){return e?e===`reconnecting_frpc`?Je.indexOf(`starting_frpc`):Je.indexOf(e):-1}function Xe(e,t){if(t.state===`connected`)return`done`;let n=t.startProgress?.phase,r=Je.indexOf(e),i=Ye(n);return i<0?t.state===`connecting`||t.state===`reconnecting`?`active`:`pending`:r<i?`done`:r===i?`active`:`pending`}function Ze(e,t,n){let r=n.startProgress;return Xe(t,n)===`active`?t===`preparing_frpc`&&n.frpcDownload?n.frpcDownload.phase===`extracting`?e.frpcExtracting:n.frpcDownload.percent==null?e.frpcDownloading:e.frpcDownloadingPercent.replace(`{{percent}}`,String(n.frpcDownload.percent)):t===`registering`&&r?.publicUrl?e.stepRegisterDetail:t===`starting_frpc`?r?.phase===`reconnecting_frpc`?e.stepReconnectDetail:e.stepFrpcDetail:null:null}function Qe(e,t){switch(t){case`preparing_frpc`:return e.stepPrepareFrpc;case`registering`:return e.stepRegister;case`starting_frpc`:return e.stepFrpcLogin}}function $e(e){if(!e)return null;let t=Math.max(0,Math.floor((Date.now()-new Date(e).getTime())/1e3));return t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}function et(e){let t=(0,Q.c)(31),{status:n,t:r}=e,[,i]=(0,Z.useState)(0),a;t[0]!==i||t[1]!==n.state?(a=()=>{if(n.state!==`connecting`&&n.state!==`reconnecting`)return;let e=window.setInterval(()=>i(tt),1e3);return()=>window.clearInterval(e)},t[0]=i,t[1]=n.state,t[2]=a):a=t[2];let o=n.startProgress?.startedAt,s;if(t[3]!==n.state||t[4]!==o?(s=[n.state,o],t[3]=n.state,t[4]=o,t[5]=s):s=t[5],(0,Z.useEffect)(a,s),!(n.state===`connecting`||n.state===`reconnecting`||n.state===`connected`&&n.startProgress))return null;let c,l,u,f,p;if(t[6]!==n||t[7]!==r){let e=$e(n.startProgress?.startedAt);c=!!n.publicUrl&&n.state!==`connected`&&n.startProgress?.phase!==`registering`,l=`mt-3 space-y-3 rounded-lg bg-surface-panel/80 p-3 shadow-surface`;let i;t[13]===r.startProgressTitle?i=t[14]:(i=(0,$.jsx)(`p`,{className:`text-xs font-medium text-fg`,children:r.startProgressTitle}),t[13]=r.startProgressTitle,t[14]=i);let a;t[15]===r.startProgressHint?a=t[16]:(a=(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:r.startProgressHint}),t[15]=r.startProgressHint,t[16]=a),t[17]!==i||t[18]!==a?(u=(0,$.jsxs)(`div`,{children:[i,a]}),t[17]=i,t[18]=a,t[19]=u):u=t[19];let o=Je.map(e=>{let t=Xe(e,n),i=Ze(r,e,n);return(0,$.jsxs)(`li`,{className:`flex gap-2 text-xs`,children:[(0,$.jsx)(`span`,{className:`mt-0.5 shrink-0 text-fg-subtle`,"aria-hidden":!0,children:t===`done`?(0,$.jsx)(d,{className:`size-3.5 text-emerald-600 dark:text-emerald-400`}):t===`active`?(0,$.jsx)(b,{className:`size-3.5 animate-spin text-accent`}):(0,$.jsx)(m,{className:`size-3.5`})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:O(`font-medium`,t===`active`?`text-fg`:t===`done`?`text-fg-muted`:`text-fg-subtle`),children:Qe(r,e)}),i?(0,$.jsx)(`div`,{className:`mt-0.5 text-fg-muted`,children:i}):null,e===`preparing_frpc`&&t===`active`&&n.frpcDownload&&n.frpcDownload.phase===`downloading`?(0,$.jsxs)(`div`,{className:`mt-2 space-y-1`,children:[(0,$.jsx)(`div`,{className:`h-1.5 w-full overflow-hidden rounded-full bg-surface-panel`,children:(0,$.jsx)(`div`,{className:O(`h-full rounded-full bg-accent transition-[width] duration-300`,n.frpcDownload.percent==null&&`w-1/3 animate-pulse`),style:n.frpcDownload.percent==null?void 0:{width:`${n.frpcDownload.percent}%`}})}),n.frpcDownload.bytesReceived!=null&&n.frpcDownload.totalBytes?(0,$.jsxs)(`p`,{className:`text-fg-subtle`,children:[qe(n.frpcDownload.bytesReceived),` /`,` `,qe(n.frpcDownload.totalBytes)]}):null]}):null,e===`preparing_frpc`&&t===`active`&&n.frpcDownload?.url?(0,$.jsxs)(`p`,{className:`mt-2 text-fg-subtle`,children:[(0,$.jsxs)(`span`,{className:`font-sans`,children:[r.frpcDownloadingUrlLabel,`: `]}),(0,$.jsx)(`a`,{href:n.frpcDownload.url,target:`_blank`,rel:`noopener noreferrer`,className:`break-all font-mono text-[11px] text-accent hover:underline`,children:n.frpcDownload.url})]}):null]})]},e)});t[20]===o?f=t[21]:(f=(0,$.jsx)(`ol`,{className:`space-y-2`,children:o}),t[20]=o,t[21]=f),p=e&&n.startProgress?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:r.startProgressElapsed.replace(`{{elapsed}}`,e)}):null,t[6]=n,t[7]=r,t[8]=c,t[9]=l,t[10]=u,t[11]=f,t[12]=p}else c=t[8],l=t[9],u=t[10],f=t[11],p=t[12];let h;t[22]!==c||t[23]!==r.publicUrlPendingNotice?(h=c?(0,$.jsx)(`p`,{className:`text-xs text-fg-muted`,children:r.publicUrlPendingNotice}):null,t[22]=c,t[23]=r.publicUrlPendingNotice,t[24]=h):h=t[24];let g;return t[25]!==l||t[26]!==u||t[27]!==f||t[28]!==p||t[29]!==h?(g=(0,$.jsxs)(`div`,{className:l,children:[u,f,p,h]}),t[25]=l,t[26]=u,t[27]=f,t[28]=p,t[29]=h,t[30]=g):g=t[30],g}function tt(e){return e+1}function nt(e,t){return t.state===`connected`?e.statusConnected:t.state===`error`?e.statusError:t.startProgress?.phase===`reconnecting_frpc`?e.statusReconnecting:t.startProgress?.phase===`starting_frpc`?e.statusStartingFrpc:t.startProgress?.phase===`registering`?e.statusRegistering:t.startProgress?.phase===`preparing_frpc`||t.frpcDownload?e.statusPreparingFrpc:t.state===`connecting`||t.state===`reconnecting`?e.statusConnecting:e.statusOff}function rt(e){return e.state===`connected`?`connected`:e.state===`error`?`error`:e.state===`connecting`||e.state===`reconnecting`||e.startProgress||e.frpcDownload?`progress`:`off`}function it(e){switch(e){case`connected`:return`bg-emerald-500/15 text-emerald-700 dark:text-emerald-400`;case`progress`:return`bg-amber-500/15 text-amber-700 dark:text-amber-400`;case`error`:return`bg-red-500/15 text-red-700 dark:text-red-400`;default:return`bg-surface-hover text-fg-muted`}}function at(e){if(!e)return`—`;let t=Date.now()-new Date(e).getTime();if(t<0)return`—`;let n=Math.floor(t/6e4);return n<60?`${n}m`:`${Math.floor(n/60)}h ${n%60}m`}function ot(e){let t=(0,Q.c)(69),{t:n,status:r,isLoading:i,statusErr:a,starting:o,stopping:s,showConsentExpired:c,copyLabels:l,startDisabled:u,startDisabledReason:d,stepLabel:f,onStart:p,onStop:m}=e,h=u!==void 0&&u,g;t[0]!==r.lastError||t[1]!==r.state?(g=r.state===`error`&&he(Error(r.lastError??``)),t[0]=r.lastError,t[1]=r.state,t[2]=g):g=t[2];let _=g,y,x,C,w,T,E,A;t[3]!==r||t[4]!==o?(A=rt(r),y=r.enabled||o,x=o||r.state===`connecting`||r.state===`reconnecting`||!!r.startProgress||!!r.frpcDownload,t[12]===Symbol.for(`react.memo_cache_sentinel`)?(E=O(le(),`space-y-4`),t[12]=E):E=t[12],T=`flex flex-wrap items-start justify-between gap-3`,w=`flex items-center gap-2`,C=O(`inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-medium`,it(A)),t[3]=r,t[4]=o,t[5]=y,t[6]=x,t[7]=C,t[8]=w,t[9]=T,t[10]=E,t[11]=A):(y=t[5],x=t[6],C=t[7],w=t[8],T=t[9],E=t[10],A=t[11]);let j=A===`connected`&&`bg-emerald-500`,M=A===`progress`&&`bg-amber-500 animate-pulse`,N=A===`error`&&`bg-red-500`,P=A===`off`&&`bg-fg-subtle`,F;t[13]!==P||t[14]!==j||t[15]!==M||t[16]!==N?(F=O(`size-1.5 rounded-full`,j,M,N,P),t[13]=P,t[14]=j,t[15]=M,t[16]=N,t[17]=F):F=t[17];let I;t[18]===F?I=t[19]:(I=(0,$.jsx)(`span`,{className:F,"aria-hidden":!0}),t[18]=F,t[19]=I);let L;t[20]!==i||t[21]!==r||t[22]!==n?(L=i&&!r.enabled?(0,$.jsx)(`span`,{"aria-hidden":`true`,className:`inline-block h-3 w-16 animate-pulse rounded-full bg-surface-hover/70 motion-reduce:animate-none`}):nt(n,r),t[20]=i,t[21]=r,t[22]=n,t[23]=L):L=t[23];let R;t[24]!==I||t[25]!==L||t[26]!==C?(R=(0,$.jsxs)(`span`,{className:C,children:[I,L]}),t[24]=I,t[25]=L,t[26]=C,t[27]=R):R=t[27];let z;t[28]!==r.connectedSince||t[29]!==r.state||t[30]!==n.uptime?(z=r.connectedSince&&r.state===`connected`?(0,$.jsxs)(`span`,{className:`text-xs text-fg-subtle`,children:[n.uptime,` `,at(r.connectedSince)]}):null,t[28]=r.connectedSince,t[29]=r.state,t[30]=n.uptime,t[31]=z):z=t[31];let B;t[32]!==R||t[33]!==z||t[34]!==w?(B=(0,$.jsxs)(`div`,{className:w,children:[R,z]}),t[32]=R,t[33]=z,t[34]=w,t[35]=B):B=t[35];let V;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,$.jsx)(v,{className:`size-4 text-fg-subtle`,strokeWidth:1.75,"aria-hidden":!0}),t[36]=V):V=t[36];let H;t[37]!==B||t[38]!==T?(H=(0,$.jsxs)(`div`,{className:T,children:[B,V]}),t[37]=B,t[38]=T,t[39]=H):H=t[39];let U;t[40]===a?U=t[41]:(U=a?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:a instanceof Error?a.message:String(a)}):null,t[40]=a,t[41]=U);let W;t[42]!==c||t[43]!==n.consentExpiredBanner?(W=c?(0,$.jsx)(`p`,{className:`rounded-lg bg-amber-500/10 px-3 py-2 text-xs text-fg-muted`,children:n.consentExpiredBanner}):null,t[42]=c,t[43]=n.consentExpiredBanner,t[44]=W):W=t[44];let G;t[45]!==_||t[46]!==n.recoverConnectionHint?(G=_?(0,$.jsx)(`p`,{role:`alert`,className:`text-sm text-fg-muted`,children:n.recoverConnectionHint}):null,t[45]=_,t[46]=n.recoverConnectionHint,t[47]=G):G=t[47];let K;t[48]!==y||t[49]!==l||t[50]!==p||t[51]!==m||t[52]!==_||t[53]!==x||t[54]!==r||t[55]!==h||t[56]!==d||t[57]!==o||t[58]!==f||t[59]!==s||t[60]!==n?(K=y?(0,$.jsxs)(`div`,{className:`space-y-4`,children:[r.publicUrl?(0,$.jsx)(`div`,{className:`rounded-xl bg-surface-panel/80 p-3 shadow-surface`,children:(0,$.jsx)(ee,{label:n.publicUrlLabel,text:r.publicUrl,labels:l})}):null,x?(0,$.jsx)(et,{status:r,t:n}):null,r.lastError&&r.state===`error`?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:r.lastError}):null,(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:r.enabled?(0,$.jsxs)(k,{type:`button`,variant:`secondary`,disabled:s,onClick:m,children:[s?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,n.stop]}):(0,$.jsxs)(k,{type:`button`,disabled:o,onClick:p,children:[o?(0,$.jsx)(b,{className:`size-4 animate-spin`}):(0,$.jsx)(S,{className:`size-4`}),_?n.recoverConnection:n.start]})})]}):(0,$.jsxs)(`div`,{className:`space-y-4`,children:[f?(0,$.jsx)(`p`,{className:`text-xs font-medium uppercase tracking-wide text-fg-subtle`,children:f}):null,(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:n.emptyStateTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:n.emptyStateBody})]}),(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg bg-amber-500/10 px-3 py-2.5 text-xs text-fg-muted`,children:[(0,$.jsx)(D,{className:`mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-400`}),(0,$.jsx)(`p`,{children:n.riskBannerBody})]}),h&&d?(0,$.jsx)(`p`,{className:`text-sm text-amber-800 dark:text-amber-200`,children:d}):null,(0,$.jsxs)(k,{type:`button`,disabled:o||h,onClick:p,className:`w-full sm:w-auto`,children:[o?(0,$.jsx)(b,{className:`size-4 animate-spin`}):(0,$.jsx)(S,{className:`size-4`}),_?n.recoverConnection:n.start]})]}),t[48]=y,t[49]=l,t[50]=p,t[51]=m,t[52]=_,t[53]=x,t[54]=r,t[55]=h,t[56]=d,t[57]=o,t[58]=f,t[59]=s,t[60]=n,t[61]=K):K=t[61];let q;return t[62]!==H||t[63]!==U||t[64]!==W||t[65]!==G||t[66]!==K||t[67]!==E?(q=(0,$.jsxs)(`section`,{className:E,children:[H,U,W,G,K]}),t[62]=H,t[63]=U,t[64]=W,t[65]=G,t[66]=K,t[67]=E,t[68]=q):q=t[68],q}var st={reconfiguring:!1};function ct(e){let t=(0,Q.c)(89),{t:n,brokerSecretReady:r,brokerSecretConfiguredInConfig:i,brokerSecretMaskedValue:a,brokerSecretDraft:o,savingBrokerSecret:s,authorizingBrokerSecret:c,brokerSecretAuthorizationUrl:l,brokerSecretNotice:u,copyFailedLabel:f,onDraftChange:p,onSave:m,onAuthorize:h,onClear:v,sectionRef:x}=e,S=(0,Z.useId)(),C=r,w=!C,[T,E]=(0,Z.useReducer)(U,st),{reconfiguring:D}=T,A;t[0]!==i||t[1]!==o||t[2]!==D?(A=i&&!D&&!o.trim(),t[0]=i,t[1]=o,t[2]=D,t[3]=A):A=t[3];let j=A,M;t[4]!==n.copied||t[5]!==n.copyKey||t[6]!==n.hideKey||t[7]!==n.showKey?(M={show:n.showKey,hide:n.hideKey,copy:n.copyKey,copied:n.copied},t[4]=n.copied,t[5]=n.copyKey,t[6]=n.hideKey,t[7]=n.showKey,t[8]=M):M=t[8];let N=M,P;t[9]===o?P=t[10]:(P=o.trim().length>0&&!K(o.trim()),t[9]=o,t[10]=P);let F=P,I;t[11]===p?I=t[12]:(I=()=>{E({type:`patch`,patch:{reconfiguring:!1}}),p(``)},t[11]=p,t[12]=I);let L=I,R=w&&`ring-1 ring-amber-500/30`,z;t[13]===R?z=t[14]:(z=O(R),t[13]=R,t[14]=z);let B=C?`bg-emerald-500/10 text-emerald-600 dark:text-emerald-400`:w?`bg-amber-500/10 text-amber-700 dark:text-amber-400`:`bg-surface-hover text-fg-muted`,V;t[15]===B?V=t[16]:(V=O(`flex size-9 shrink-0 items-center justify-center rounded-lg`,B),t[15]=B,t[16]=V);let H;t[17]===C?H=t[18]:(H=C?(0,$.jsx)(d,{className:`size-4`,strokeWidth:2,"aria-hidden":!0}):(0,$.jsx)(y,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),t[17]=C,t[18]=H);let W;t[19]!==V||t[20]!==H?(W=(0,$.jsx)(`span`,{className:V,children:H}),t[19]=V,t[20]=H,t[21]=W):W=t[21];let ee=C?n.brokerSecretReadyTitle:n.brokerSecretStepTitle,G;t[22]===ee?G=t[23]:(G=(0,$.jsx)(`p`,{className:`text-sm font-semibold text-fg`,children:ee}),t[22]=ee,t[23]=G);let q=C?n.brokerSecretReadyHint:n.brokerSecretHint,te;t[24]===q?te=t[25]:(te=(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-relaxed text-fg-muted`,children:q}),t[24]=q,t[25]=te);let ne;t[26]!==w||t[27]!==n.brokerSecretMissingHint?(ne=w?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-amber-800 dark:text-amber-200`,children:n.brokerSecretMissingHint}):null,t[26]=w,t[27]=n.brokerSecretMissingHint,t[28]=ne):ne=t[28];let J;t[29]!==G||t[30]!==te||t[31]!==ne?(J=(0,$.jsxs)(`div`,{children:[G,te,ne]}),t[29]=G,t[30]=te,t[31]=ne,t[32]=J):J=t[32];let re;t[33]!==c||t[34]!==w||t[35]!==h||t[36]!==D||t[37]!==s||t[38]!==n.brokerSecretAuthorize||t[39]!==n.brokerSecretAuthorizing||t[40]!==n.brokerSecretConsoleLink?(re=w||D?(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsxs)(k,{type:`button`,disabled:s||c,onClick:h,children:[c?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,c?n.brokerSecretAuthorizing:n.brokerSecretAuthorize]}),(0,$.jsxs)(`a`,{href:xe,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[n.brokerSecretConsoleLink,(0,$.jsx)(g,{className:`size-3`,"aria-hidden":!0})]})]}):null,t[33]=c,t[34]=w,t[35]=h,t[36]=D,t[37]=s,t[38]=n.brokerSecretAuthorize,t[39]=n.brokerSecretAuthorizing,t[40]=n.brokerSecretConsoleLink,t[41]=re):re=t[41];let ie;t[42]!==c||t[43]!==l||t[44]!==n.brokerSecretOpenAuthorization?(ie=c&&l?(0,$.jsxs)(`a`,{href:l,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline`,children:[n.brokerSecretOpenAuthorization,(0,$.jsx)(g,{className:`size-3`,"aria-hidden":!0})]}):null,t[42]=c,t[43]=l,t[44]=n.brokerSecretOpenAuthorization,t[45]=ie):ie=t[45];let ae;t[46]!==i||t[47]!==o||t[48]!==a||t[49]!==F||t[50]!==L||t[51]!==f||t[52]!==S||t[53]!==w||t[54]!==v||t[55]!==p||t[56]!==m||t[57]!==D||t[58]!==s||t[59]!==N||t[60]!==j||t[61]!==n.brokerSecretCancelReconfigure||t[62]!==n.brokerSecretClear||t[63]!==n.brokerSecretMaskedHelp||t[64]!==n.brokerSecretNotInConfigFile||t[65]!==n.brokerSecretPlaceholder||t[66]!==n.brokerSecretReconfigure||t[67]!==n.brokerSecretRevealFailed||t[68]!==n.brokerSecretSave||t[69]!==n.brokerSecretSaveAndContinue||t[70]!==n.brokerSecretTitle?(ae=j?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`label`,{className:`sr-only`,htmlFor:S,children:n.brokerSecretTitle}),(0,$.jsx)(_,{id:S,value:a,labels:N,reveal:lt,loadFailedLabel:f||n.brokerSecretRevealFailed,maskedHelp:n.brokerSecretMaskedHelp,notInConfigFile:n.brokerSecretNotInConfigFile,readOnly:!0}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsx)(k,{type:`button`,variant:`secondary`,disabled:s,onClick:()=>{E({type:`patch`,patch:{reconfiguring:!0}})},children:n.brokerSecretReconfigure}),(0,$.jsx)(k,{type:`button`,variant:`ghost`,disabled:s,onClick:v,children:n.brokerSecretClear})]})]}):(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`label`,{className:`sr-only`,htmlFor:S,children:n.brokerSecretTitle}),(0,$.jsx)(_,{id:S,value:o,onChange:p,placeholder:n.brokerSecretPlaceholder,labels:N,disabled:s}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsxs)(k,{type:`button`,disabled:s||!F,onClick:m,children:[s?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,w?n.brokerSecretSaveAndContinue:n.brokerSecretSave]}),i?(0,$.jsx)(k,{type:`button`,variant:`ghost`,disabled:s,onClick:v,children:n.brokerSecretClear}):null,D?(0,$.jsx)(k,{type:`button`,variant:`ghost`,disabled:s,onClick:L,children:n.brokerSecretCancelReconfigure}):null]})]}),t[46]=i,t[47]=o,t[48]=a,t[49]=F,t[50]=L,t[51]=f,t[52]=S,t[53]=w,t[54]=v,t[55]=p,t[56]=m,t[57]=D,t[58]=s,t[59]=N,t[60]=j,t[61]=n.brokerSecretCancelReconfigure,t[62]=n.brokerSecretClear,t[63]=n.brokerSecretMaskedHelp,t[64]=n.brokerSecretNotInConfigFile,t[65]=n.brokerSecretPlaceholder,t[66]=n.brokerSecretReconfigure,t[67]=n.brokerSecretRevealFailed,t[68]=n.brokerSecretSave,t[69]=n.brokerSecretSaveAndContinue,t[70]=n.brokerSecretTitle,t[71]=ae):ae=t[71];let oe;t[72]===u?oe=t[73]:(oe=u?(0,$.jsx)(`p`,{className:`text-xs text-emerald-700 dark:text-emerald-400`,children:u}):null,t[72]=u,t[73]=oe);let se;t[74]!==J||t[75]!==re||t[76]!==ie||t[77]!==ae||t[78]!==oe?(se=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[J,re,ie,ae,oe]}),t[74]=J,t[75]=re,t[76]=ie,t[77]=ae,t[78]=oe,t[79]=se):se=t[79];let ce;t[80]!==W||t[81]!==se?(ce=(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[W,se]}),t[80]=W,t[81]=se,t[82]=ce):ce=t[82];let Y;t[83]!==ce||t[84]!==z?(Y=(0,$.jsx)(ue,{className:z,children:ce}),t[83]=ce,t[84]=z,t[85]=Y):Y=t[85];let le;return t[86]!==x||t[87]!==Y?(le=(0,$.jsx)(`div`,{ref:x,id:`tunnel-broker-secret-setup`,children:Y}),t[86]=x,t[87]=Y,t[88]=le):le=t[88],le}function lt(){return ve().then(ut)}function ut(e){return e.registrationSecret??null}var dt={actionError:null,starting:!1,stopping:!1,savingAutoStart:!1,consentOpen:!1,autoStartConfirmOpen:!1,releaseConfirmOpen:!1,releasing:!1,brokerSecretDraft:``,savingBrokerSecret:!1,authorizingBrokerSecret:!1,brokerSecretAuthorizationUrl:null,brokerSecretNotice:null};function ft({embedded:e=!1}){let t=c(e=>e.language),n=l(t).tunnelSettings,r=!!s(e=>e.conversationId),[i,a]=(0,Z.useReducer)(U,dt),{actionError:o,starting:u,stopping:d,savingAutoStart:f,consentOpen:p,autoStartConfirmOpen:m,releaseConfirmOpen:h,releasing:g,brokerSecretDraft:_,savingBrokerSecret:y,authorizingBrokerSecret:x,brokerSecretAuthorizationUrl:S,brokerSecretNotice:C}=i,w=(0,Z.useRef)(null),{data:T}=V(r),{data:E,error:D,isLoading:A,mutate:j}=R(r?`tunnel-status`:null,_e,{refreshInterval:e=>u?1e3:e?.frpcDownload||e?.state===`connecting`||e?.state===`reconnecting`?2e3:6e4}),M=(0,Z.useMemo)(()=>{let e=T?.payload?.config;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e.tunnel;if(t&&typeof t==`object`&&!Array.isArray(t)&&t.autoStart===!0)return!0}return E?.config?.autoStart===!0},[T,E?.config?.autoStart]),N=(0,Z.useMemo)(()=>{let e=T?.payload?.config;if(e&&typeof e==`object`&&!Array.isArray(e)){let t=e.tunnel;if(t&&typeof t==`object`&&!Array.isArray(t)){let e=t.registrationSecret;if(typeof e==`string`)return e}}return``},[T]),P=K(N),F=E?.registrationSecret?.configured??P;(0,Z.useEffect)(()=>{let e=()=>{j()};return window.addEventListener(`tunnel-status`,e),()=>window.removeEventListener(`tunnel-status`,e)},[j]);let I=(0,Z.useMemo)(()=>[n.consentBullet1,n.consentBullet2,n.consentBullet3],[n.consentBullet1,n.consentBullet2,n.consentBullet3]),L=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{actionError:null}}),a({type:`patch`,patch:{starting:!0}});try{await be(E?.state===`error`&&he(Error(E.lastError??``))?{recoverActiveLease:!0}:void 0),await j(),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}}),await j().catch(()=>{})}finally{a({type:`patch`,patch:{starting:!1}})}},[j,E]),z=(0,Z.useCallback)(()=>{if(!F){a({type:`patch`,patch:{actionError:n.brokerSecretRequiredBeforeStart}}),w.current?.scrollIntoView({behavior:`smooth`,block:`start`});return}if(E?.consentRequired){a({type:`patch`,patch:{consentOpen:!0}});return}L()},[F,E?.consentRequired,L,n.brokerSecretRequiredBeforeStart]),H=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{consentOpen:!1}}),a({type:`patch`,patch:{actionError:null}});try{await fe(),await Promise.all([j(),L()])}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}},[j,L]),ee=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{actionError:null}}),a({type:`patch`,patch:{stopping:!0}});try{await me(),await j(),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{stopping:!1}})}},[j]),G=(0,Z.useCallback)(async e=>{a({type:`patch`,patch:{savingAutoStart:!0}}),a({type:`patch`,patch:{actionError:null}});try{await ye({autoStart:e}),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{savingAutoStart:!1}})}},[]),J=(0,Z.useCallback)(()=>{if(M){G(!1);return}if(E?.consentRequired){a({type:`patch`,patch:{actionError:n.consentExpiredBanner}});return}if(!E?.canAutoStart){a({type:`patch`,patch:{actionError:n.autoStartHint}});return}a({type:`patch`,patch:{autoStartConfirmOpen:!0}})},[G,E?.canAutoStart,E?.consentRequired,n,M]),oe=(0,Z.useCallback)(async()=>{let e=_.trim();if(e){a({type:`patch`,patch:{savingBrokerSecret:!0,actionError:null,brokerSecretNotice:null}});try{await ye({registrationSecret:e}),a({type:`patch`,patch:{brokerSecretDraft:``,brokerSecretNotice:n.brokerSecretSaved}}),B(),await j(),a({type:`patch`,patch:{actionError:null}})}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{savingBrokerSecret:!1}})}}},[_,j,n.brokerSecretSaved]),se=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{savingBrokerSecret:!0,actionError:null,brokerSecretNotice:null}});try{await ye({registrationSecret:null}),a({type:`patch`,patch:{brokerSecretDraft:``,brokerSecretNotice:n.brokerSecretCleared}}),B(),await j()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{savingBrokerSecret:!1}})}},[j,n.brokerSecretCleared]),ce=(0,Z.useCallback)(async()=>{let e=ie(),t=null,r=null;a({type:`patch`,patch:{authorizingBrokerSecret:!0,brokerSecretAuthorizationUrl:null,brokerSecretNotice:null,actionError:null}});try{for(t=(await q(`xopc-tunnel`)).sessionId;;){await new Promise(e=>window.setTimeout(e,1e3));let i=await ne(t);if(i.authUrl&&i.authUrl!==r&&(r=i.authUrl,a({type:`patch`,patch:{brokerSecretAuthorizationUrl:i.authUrl}}),await re(i.authUrl,e)),i.status===`failed`||i.status===`cancelled`)throw Error(i.error??i.message??`OAuth authorization failed`);if(i.status===`completed`){await ge(),await Promise.all([j(),B()]),a({type:`patch`,patch:{brokerSecretNotice:n.brokerSecretSaved,brokerSecretDraft:``}});return}}}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{ae(e),t&&te(t).catch(()=>void 0),a({type:`patch`,patch:{authorizingBrokerSecret:!1,brokerSecretAuthorizationUrl:null}})}},[j,n.brokerSecretSaved]),Y=(0,Z.useCallback)(async()=>{a({type:`patch`,patch:{releaseConfirmOpen:!1,actionError:null,releasing:!0}});try{await me({release:!0}),await j(),B()}catch(e){a({type:`patch`,patch:{actionError:e instanceof Error?e.message:String(e)}})}finally{a({type:`patch`,patch:{releasing:!1}})}},[j]),le=(0,Z.useMemo)(()=>({copy:n.copyUrl,copied:n.copied,copyFailed:l(t).clipboard.copyFailed}),[t,n.copyUrl,n.copied]);if(!r)return(0,$.jsx)(`div`,{className:e?void 0:`w-full px-3 py-8 sm:px-5 xl:px-6`,children:(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.needToken})});let X=E??{enabled:!1,state:`disconnected`,subdomain:null,publicUrl:null,connectedSince:null,frpcPid:null,lastHeartbeatAt:null,lastError:null,consentRequired:!0,config:{autoStart:M,brokerUrl:`https://frp.xopc.ai/api`}},pe=E?.consentRequired&&(X.enabled||M||E?.consent?.acceptedAt),ve=(0,$.jsx)(ct,{t:n,brokerSecretReady:F,brokerSecretConfiguredInConfig:P,brokerSecretMaskedValue:P?N:``,brokerSecretDraft:_,savingBrokerSecret:y,authorizingBrokerSecret:x,brokerSecretAuthorizationUrl:S,brokerSecretNotice:C,copyFailedLabel:l(t).clipboard.copyFailed,onDraftChange:e=>a({type:`patch`,patch:{brokerSecretDraft:e}}),onSave:()=>void oe(),onAuthorize:()=>void ce(),onClear:()=>void se(),sectionRef:w}),xe=(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(We,{open:p,title:n.consentTitle,intro:n.consentIntro,bullets:I,checkboxLabel:n.consentCheckbox,confirmLabel:pe?n.consentReconfirm:n.consentConfirm,cancelLabel:n.consentCancel,onConfirm:()=>void H(),onCancel:()=>a({type:`patch`,patch:{consentOpen:!1}})},p?`consent-open`:`consent-closed`),(0,$.jsx)(W,{open:m,title:n.autoStartConfirmTitle,description:n.autoStartConfirmBody,confirmLabel:n.autoStartConfirmLabel,cancelLabel:n.consentCancel,onConfirm:()=>{a({type:`patch`,patch:{autoStartConfirmOpen:!1}}),G(!0)},onCancel:()=>a({type:`patch`,patch:{autoStartConfirmOpen:!1}})}),(0,$.jsx)(W,{open:h,title:n.releaseConfirmTitle,description:n.releaseConfirmBody,confirmLabel:n.releaseConfirmLabel,cancelLabel:n.consentCancel,destructive:!0,onConfirm:()=>void Y(),onCancel:()=>a({type:`patch`,patch:{releaseConfirmOpen:!1}})})]});return e?(0,$.jsxs)(`div`,{className:`flex w-full flex-col gap-4`,children:[o?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:o}):null,ve,(0,$.jsx)(ot,{t:n,status:X,isLoading:A,statusErr:D,starting:u,stopping:d,showConsentExpired:!!pe,copyLabels:le,startDisabled:!F,startDisabledReason:F?void 0:n.brokerSecretRequiredBeforeStart,stepLabel:n.flowStepStart,onStart:z,onStop:()=>void ee()}),(0,$.jsxs)(He,{showLabel:n.showOptions,hideLabel:n.hideOptions,children:[(0,$.jsxs)(`label`,{className:O(`flex items-center gap-3 text-sm text-fg`,!M&&!E?.canAutoStart?`cursor-not-allowed opacity-60`:`cursor-pointer`),children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border-edge accent-accent`,checked:M,disabled:f||!M&&!E?.canAutoStart,onChange:J}),n.autoStart]}),!E?.canAutoStart&&!M?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.autoStartHint}):null,X.subdomain||X.publicUrl?(0,$.jsxs)(`div`,{className:`space-y-2 rounded-xl bg-surface-base/45 p-4`,children:[(0,$.jsxs)(k,{type:`button`,variant:`secondary`,disabled:g||d,className:`border-danger/40 text-danger hover:bg-danger/10`,onClick:()=>a({type:`patch`,patch:{releaseConfirmOpen:!0}}),children:[g?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,n.release]}),(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.releaseHint})]}):null]}),(0,$.jsx)(He,{showLabel:n.showAdvanced,hideLabel:n.hideAdvanced,children:(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-xl bg-surface-base/45 p-4 text-xs text-fg-subtle`,children:[(0,$.jsxs)(`p`,{className:`flex items-start gap-2`,children:[(0,$.jsx)(v,{className:`mt-0.5 size-4 shrink-0 text-accent`}),(0,$.jsx)(`span`,{children:n.brokerNote})]}),(0,$.jsx)(de,{language:t,label:n.brokerDocsLink,section:`public-tunnel`,className:`text-xs`})]})}),xe]}):(0,$.jsxs)(`div`,{className:e?`flex w-full flex-col gap-6`:`flex w-full flex-col gap-6 px-3 py-8 sm:px-5 xl:px-6`,children:[e?null:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h1`,{className:`text-lg font-semibold text-fg`,children:n.title}),(0,$.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:n.subtitle})]}),o?(0,$.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:o}):null,ve,(0,$.jsx)(ot,{t:n,status:X,isLoading:A,statusErr:D,starting:u,stopping:d,showConsentExpired:!!pe,copyLabels:le,startDisabled:!F,startDisabledReason:F?void 0:n.brokerSecretRequiredBeforeStart,onStart:z,onStop:()=>void ee()}),X.subdomain||X.publicUrl?(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(0,$.jsxs)(k,{type:`button`,variant:`secondary`,disabled:g||d,className:`border-danger/40 text-danger hover:bg-danger/10`,onClick:()=>a({type:`patch`,patch:{releaseConfirmOpen:!0}}),children:[g?(0,$.jsx)(b,{className:`size-4 animate-spin`}):null,n.release]})}):null,X.subdomain||X.publicUrl?(0,$.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.releaseHint}):null,(0,$.jsxs)(ue,{children:[(0,$.jsx)(`h2`,{className:`mb-3 text-sm font-semibold text-fg`,children:n.optionsTitle}),(0,$.jsxs)(`label`,{className:O(`flex items-center gap-3 text-sm text-fg`,!M&&!E?.canAutoStart?`cursor-not-allowed opacity-60`:`cursor-pointer`),children:[(0,$.jsx)(`input`,{type:`checkbox`,className:`size-4 rounded border-edge accent-accent`,checked:M,disabled:f||!M&&!E?.canAutoStart,onChange:J}),n.autoStart]}),!E?.canAutoStart&&!M?(0,$.jsx)(`p`,{className:`mt-2 text-xs text-fg-subtle`,children:n.autoStartHint}):null]}),(0,$.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg bg-surface-panel/80 px-3 py-2 text-xs text-fg-subtle shadow-surface`,children:[(0,$.jsxs)(`p`,{className:`flex items-start gap-2`,children:[(0,$.jsx)(v,{className:`mt-0.5 size-4 shrink-0 text-accent`}),(0,$.jsx)(`span`,{children:n.brokerNote})]}),(0,$.jsx)(de,{language:t,label:n.brokerDocsLink,section:`public-tunnel`,className:`text-xs`})]}),xe]})}function pt(e,t){return e.tabs[t]}function mt(e,t){return e.tabIntro[t]}function ht(e){switch(e){case`tailscale`:return`tailscale-serve`;case`public`:return`public-tunnel`;case`reverse-proxy`:return`reverse-proxy`;case`ssh`:return`ssh-tunnel`;case`lan`:return`lan`;default:return}}function gt(e){let t=(0,Q.c)(7),{tab:n,onOpenTab:r}=e;switch(n){case`guide`:{let e;return t[0]===r?e=t[1]:(e=(0,$.jsx)(je,{onOpenTab:r}),t[0]=r,t[1]=e),e}case`tailscale`:{let e;return t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(pe,{embedded:!0}),t[2]=e):e=t[2],e}case`public`:{let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(ft,{embedded:!0}),t[3]=e):e=t[3],e}case`reverse-proxy`:{let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Ce,{}),t[4]=e):e=t[4],e}case`ssh`:{let e;return t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(ze,{}),t[5]=e):e=t[5],e}case`lan`:{let e;return t[6]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Fe,{}),t[6]=e):e=t[6],e}}}function _t(){let e=(0,Q.c)(3),t=o(),n=c(yt),r=l(n).remoteAccess,a=!!s(vt),[d,f]=i(),p=G(),m=Ve(d.get(`tab`)),h=d.get(`intent`)===`mobile-pairing`,g;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(g={refreshInterval:2e3},e[0]=g):g=e[0];let _=R(h?`device-pairing-readiness`:null,X,g),v;e[1]===f?v=e[2]:(v=e=>{f(t=>{let n=new URLSearchParams(t);return e===`guide`?n.delete(`tab`):n.set(`tab`,e),n},{replace:!0})},e[1]=f,e[2]=v);let y=v,b=mt(r,m),x=Be.filter(e=>p||e!==`ssh`&&e!==`reverse-proxy`||e===m).map(e=>({id:e,label:pt(r,e)}));return(0,$.jsxs)(oe,{children:[(0,$.jsx)(se,{title:r.pageTitle,meta:(0,$.jsx)(de,{language:n,label:r.docsLink,section:ht(m),className:`mt-1`})}),a?(0,$.jsxs)($.Fragment,{children:[h?(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl bg-accent-soft px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,$.jsx)(T,{className:`mt-0.5 size-5 shrink-0 text-accent`,"aria-hidden":!0}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:r.mobilePairingFlow.title}),(0,$.jsx)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:_.data?.ready?r.mobilePairingFlow.ready:r.mobilePairingFlow.hint})]})]}),(0,$.jsxs)(k,{variant:`primary`,disabled:!_.data?.ready,onClick:()=>t(`/settings/devices?startDevicePairing=mobile`),children:[_.data?.ready?r.mobilePairingFlow.continue:r.mobilePairingFlow.waiting,(0,$.jsx)(u,{className:`size-4`,"aria-hidden":!0})]})]}):null,(0,$.jsx)(H,{items:x,activeTab:m,onChange:y,ariaLabel:r.tabsAria,tabIdPrefix:`remote-access-tab`,panelIdPrefix:`remote-access-panel`}),(0,$.jsx)(ce,{id:m,activeTab:m,tabIdPrefix:`remote-access-tab`,panelIdPrefix:`remote-access-panel`,title:pt(r,m),hint:m===`public`?void 0:b,showHeading:!1,framed:!1,children:(0,$.jsx)(gt,{tab:m,onOpenTab:y})})]}):(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:r.guide.needToken})]})}function vt(e){return e.conversationId}function yt(e){return e.language}export{_t as RemoteAccessHub};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{n as r}from"./locale-store-
|
|
1
|
+
import{n as e,t}from"./vendor-react-BOUWij0V.js";import{t as n}from"./chunk-KS7C4IRE-CiwuuyV8.js";import{n as r}from"./locale-store-Bg_XR36n.js";var i=e(),a=t();function o(e){let t=(0,i.c)(18),{kind:o,missing:c,backTo:l,retry:u}=e,d=c===void 0||c,f=r(s)===`zh`,p;if(t[0]!==o||t[1]!==d||t[2]!==f){let e=f?{project:`项目`,app:`应用`,plugin:`插件`,"plugin-page":`插件页面`,"plugin-settings":`插件设置`,desktop:`桌面功能`}:{project:`Project`,app:`App`,plugin:`Plugin`,"plugin-page":`Plugin page`,"plugin-settings":`Plugin settings`,desktop:`Desktop feature`};p=o===`desktop`?f?`此功能需要 xopc 桌面版`:`This feature requires xopc desktop`:o===`plugin-page`||o===`plugin-settings`?f?`此插件未提供${o===`plugin-page`?`独立页面`:`设置页面`}`:`This plugin does not provide a ${o===`plugin-page`?`standalone page`:`settings page`}`:d?f?`找不到${e[o]}`:`${e[o]} not found`:f?`暂时无法加载${e[o]}`:`Unable to load ${e[o].toLowerCase()}`,t[0]=o,t[1]=d,t[2]=f,t[3]=p}else p=t[3];let m=p,h;t[4]===m?h=t[5]:(h=(0,a.jsx)(`h2`,{className:`text-base font-semibold text-fg`,children:m}),t[4]=m,t[5]=h);let g=l===`/`?f?`返回工作台`:`Back to work`:l.startsWith(`/settings/`)?f?`返回设置`:`Back to settings`:f?`返回列表`:`Back to list`,_;t[6]!==l||t[7]!==g?(_=(0,a.jsx)(n,{className:`text-accent hover:underline`,to:l,children:g}),t[6]=l,t[7]=g,t[8]=_):_=t[8];let v;t[9]!==u||t[10]!==f?(v=u?(0,a.jsx)(`button`,{className:`text-accent hover:underline`,onClick:u,children:f?`重试`:`Retry`}):null,t[9]=u,t[10]=f,t[11]=v):v=t[11];let y;t[12]!==_||t[13]!==v?(y=(0,a.jsxs)(`div`,{className:`flex gap-4 text-sm`,children:[_,v]}),t[12]=_,t[13]=v,t[14]=y):y=t[14];let b;return t[15]!==h||t[16]!==y?(b=(0,a.jsxs)(`section`,{className:`mx-auto my-8 w-full max-w-xl space-y-3 rounded-xl border border-edge bg-surface-panel p-6`,role:`status`,children:[h,y]}),t[15]=h,t[16]=y,t[17]=b):b=t[17],b}function s(e){return e.language}export{o as t};
|