@nextclaw/ui 0.12.10 → 0.12.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +103 -10
- package/dist/assets/api-DnPN4SyA.js +15 -0
- package/dist/assets/app-manager-provider-M7TngYxx.js +1 -0
- package/dist/assets/app-navigation.config-B5YIdRju.js +1 -0
- package/dist/assets/{book-open-DzdUViDm.js → book-open-B4mOKdz8.js} +1 -1
- package/dist/assets/channels-list-page-Cm-Bbu6u.js +8 -0
- package/dist/assets/chat-C0ZNZtS3.js +58 -0
- package/dist/assets/chat-page-CGHNhXaw.js +1 -0
- package/dist/assets/chunk-JZWAC4HX-BJer-fqD.js +3 -0
- package/dist/assets/config-split-page-B3PRA_AV.js +1 -0
- package/dist/assets/{createLucideIcon-dy5ie7Ox.js → createLucideIcon-C_GFKVuW.js} +1 -1
- package/dist/assets/desktop-update-config-Dfh-3uma.js +1 -0
- package/dist/assets/dialog-D-I7ONHQ.js +5 -0
- package/dist/assets/{dist-Cy7_j6hA.js → dist-DreLBS93.js} +1 -1
- package/dist/assets/doc-browser-CoKIUCJj.js +1 -0
- package/dist/assets/doc-browser-CwgI7ipB.js +1 -0
- package/dist/assets/doc-browser-DYKpRqe-.js +1 -0
- package/dist/assets/doc-browser-context-Dib9sS83.js +1 -0
- package/dist/assets/es2015-DMSUl3fm.js +41 -0
- package/dist/assets/{external-link-kZSAO8nT.js → external-link-DP2IJ7AM.js} +1 -1
- package/dist/assets/folder-BPwc278w.js +1 -0
- package/dist/assets/{hash-BHJC2Ovu.js → hash-CvcvtMBq.js} +1 -1
- package/dist/assets/i18n-BnNAQpVM.js +1 -0
- package/dist/assets/index-Bc6c1kIx.js +2 -0
- package/dist/assets/index-mRmSAB-e.css +1 -0
- package/dist/assets/key-round-BQXmPSxD.js +1 -0
- package/dist/assets/loader-circle-C6gg2m2a.js +1 -0
- package/dist/assets/{LogoBadge-hO7tY7hE.js → logo-badge-uB4SwANR.js} +1 -1
- package/dist/assets/{logos-B7gRObP8.js → logos-BcELLmYh.js} +1 -1
- package/dist/assets/marketplace-page-BCrS-jH6.js +49 -0
- package/dist/assets/marketplace-page-DVrlpB68.js +1 -0
- package/dist/assets/mcp-marketplace-page-CjrxT6wI.js +40 -0
- package/dist/assets/mcp-marketplace-page-pQ_A38fH.js +1 -0
- package/dist/assets/message-square-CLVODA23.js +1 -0
- package/dist/assets/model-config-D4myteLK.js +1 -0
- package/dist/assets/notice-card-DX_NEZTQ.js +1 -0
- package/dist/assets/play-DeNVUA5C.js +1 -0
- package/dist/assets/plus-BptLViq1.js +1 -0
- package/dist/assets/popover-Dm_NQ3Cs.js +1 -0
- package/dist/assets/provider-scoped-model-input-BLHImwI5.js +1 -0
- package/dist/assets/providers-list-DsBFslNi.js +1 -0
- package/dist/assets/{refresh-ccw-COVhNHtN.js → refresh-ccw-CeG203yU.js} +1 -1
- package/dist/assets/remote-CQQykOYe.js +1 -0
- package/dist/assets/{rotate-cw-oHMKJMC8.js → rotate-cw-F7aThvYj.js} +1 -1
- package/dist/assets/runtime-config-page-Bz9r68Rf.js +1 -0
- package/dist/assets/{save-EqJPOF0G.js → save-7ztImRj7.js} +1 -1
- package/dist/assets/search-DZSNKEGp.js +1 -0
- package/dist/assets/search-config-C-6KpgRQ.js +1 -0
- package/dist/assets/secrets-config-MiMElvpm.js +3 -0
- package/dist/assets/select-RgeHgn_-.js +1 -0
- package/dist/assets/sessions-config-page-0KNW9QC_.js +2 -0
- package/dist/assets/setting-row-vwm4XKv2.js +1 -0
- package/dist/assets/settings-DjvNMJde.js +1 -0
- package/dist/assets/skeleton-5Mg6vZHN.js +1 -0
- package/dist/assets/sparkles-CyDTgTM4.js +1 -0
- package/dist/assets/{status-dot-DpPtVzQT.js → status-dot-aQU9Mia4.js} +1 -1
- package/dist/assets/{tabs-custom-YcZUWn3o.js → tabs-custom-C4P7g4vR.js} +1 -1
- package/dist/assets/tag-chip-DGqz3TON.js +1 -0
- package/dist/assets/theme-provider-CUppbOyN.js +1 -0
- package/dist/assets/tooltip-DQlSKhZ_.js +1 -0
- package/dist/assets/{trash-2-mJT6oWa2.js → trash-2-C1cdqL6V.js} +1 -1
- package/dist/assets/use-config-CrsavfWZ.js +1 -0
- package/dist/assets/use-confirm-dialog-D1AnLFlc.js +1 -0
- package/dist/assets/use-infinite-scroll-loader-DZhv-rmv.js +1 -0
- package/dist/assets/use-viewport-layout-CytJAPWM.js +1 -0
- package/dist/assets/x-BjMO7v8q.js +1 -0
- package/dist/index.html +39 -22
- package/module-structure.config.json +7 -0
- package/package.json +5 -5
- package/src/app/components/app-manager-provider.tsx +20 -0
- package/src/{components/providers/I18nProvider.tsx → app/components/i18n-provider.tsx} +1 -1
- package/src/{components → app/components}/layout/app-layout.test.tsx +50 -3
- package/src/app/components/layout/app-layout.tsx +54 -0
- package/src/{components → app/components}/layout/page-layout.tsx +1 -1
- package/src/app/components/layout/runtime-status-entry.test.tsx +101 -0
- package/src/app/components/layout/runtime-status-entry.tsx +95 -0
- package/src/app/components/layout/settings-entry-page.test.tsx +65 -0
- package/src/app/components/layout/settings-entry-page.tsx +13 -0
- package/src/{components → app/components}/layout/sidebar-items.tsx +2 -2
- package/src/{components → app/components}/layout/sidebar.layout.test.tsx +19 -12
- package/src/{components/layout/Sidebar.tsx → app/components/layout/sidebar.tsx} +25 -89
- package/src/{components/providers/ThemeProvider.tsx → app/components/theme-provider.tsx} +2 -2
- package/src/app/configs/app-navigation.config.ts +246 -0
- package/src/{hooks → app/hooks}/use-realtime-query-bridge.ts +36 -20
- package/src/app/hooks/use-viewport-layout.ts +15 -0
- package/src/app/index.tsx +261 -0
- package/src/app/managers/app.manager.ts +12 -0
- package/src/app/managers/viewport-layout.manager.ts +73 -0
- package/src/app/stores/viewport-layout.store.ts +32 -0
- package/src/{test/setup.ts → app/test/vitest-setup.ts} +3 -3
- package/src/{account → features/account}/components/account-panel.tsx +19 -19
- package/src/{components/auth → features/account/components}/login-page.tsx +4 -4
- package/src/{hooks → features/account/hooks}/use-auth.test.ts +1 -1
- package/src/{hooks → features/account/hooks}/use-auth.ts +3 -3
- package/src/features/account/index.ts +7 -0
- package/src/{account → features/account}/managers/account.manager.ts +6 -6
- package/src/{components/agents → features/agents/components}/agent-dialogs.tsx +11 -11
- package/src/{components/agents → features/agents/components}/agents-page.test.tsx +12 -9
- package/src/{components/agents → features/agents/components}/agents-page.tsx +17 -17
- package/src/features/agents/index.ts +1 -0
- package/src/{components/config → features/channels/components}/channel-form-fields-section.tsx +11 -32
- package/src/{components/config/ChannelForm.test.tsx → features/channels/components/config/channel-form.test.tsx} +4 -4
- package/src/features/channels/components/config/channel-form.tsx +382 -0
- package/src/{components → features/channels/components}/config/weixin-channel-auth-section.test.tsx +6 -3
- package/src/features/channels/components/config/weixin-channel-auth-section.tsx +245 -0
- package/src/{hooks → features/channels/hooks}/use-channel-auth.ts +1 -1
- package/src/features/channels/index.ts +5 -0
- package/src/features/channels/pages/channels-list-page.test.tsx +288 -0
- package/src/{components/config/ChannelsList.tsx → features/channels/pages/channels-list-page.tsx} +57 -83
- package/src/{components/config/channel-form-fields.test.ts → features/channels/utils/channel-form-fields.utils.test.ts} +1 -1
- package/src/{components/config/channel-form-fields.ts → features/channels/utils/channel-form-fields.utils.ts} +1 -1
- package/src/{lib/channel-tutorials.ts → features/channels/utils/channel-tutorials.utils.ts} +2 -2
- package/src/{components/chat → features/chat/components}/chat-session-type-option-item.test.tsx +1 -1
- package/src/{components/chat → features/chat/components}/chat-session-type-option-item.tsx +4 -4
- package/src/{components/chat → features/chat/components}/chat-session-workspace-file-preview.test.tsx +4 -4
- package/src/{components/chat → features/chat/components}/chat-session-workspace-file-preview.tsx +12 -32
- package/src/{components/chat → features/chat/components}/chat-session-workspace-panel-nav.tsx +8 -20
- package/src/{components/chat → features/chat/components}/chat-session-workspace-panel.tsx +105 -65
- package/src/features/chat/components/chat-sidebar-list-mode-switch.tsx +28 -0
- package/src/{components/chat → features/chat/components}/chat-sidebar-project-groups.tsx +6 -6
- package/src/{components/chat → features/chat/components}/chat-sidebar-session-item.tsx +10 -10
- package/src/{components/chat/ChatWelcome.test.tsx → features/chat/components/chat-welcome.test.tsx} +1 -1
- package/src/{components/chat/ChatWelcome.tsx → features/chat/components/chat-welcome.tsx} +5 -10
- package/src/features/chat/components/config/sessions-config-detail-pane.tsx +244 -0
- package/src/{components/chat → features/chat/components/conversation}/chat-attachment-upload-limit.test.ts +1 -4
- package/src/features/chat/components/conversation/chat-conversation-header.tsx +146 -0
- package/src/{components/chat → features/chat/components/conversation}/chat-conversation-panel.test.tsx +41 -19
- package/src/{components/chat → features/chat/components/conversation}/chat-conversation-panel.tsx +28 -140
- package/src/{components/chat/containers → features/chat/components/conversation}/chat-input-bar.container.tsx +137 -128
- package/src/{components/chat/containers → features/chat/components/conversation}/chat-message-list.container.test.tsx +2 -2
- package/src/{components/chat/containers → features/chat/components/conversation}/chat-message-list.container.tsx +6 -6
- package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-header-actions.test.tsx +3 -3
- package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-header-actions.tsx +6 -6
- package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-header-menu-item.tsx +1 -1
- package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-project-badge.test.tsx +3 -3
- package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-project-badge.tsx +5 -5
- package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-project-dialog.tsx +2 -2
- package/src/features/chat/components/layout/chat-page-shell.test.tsx +61 -0
- package/src/{components/chat → features/chat/components/layout}/chat-page-shell.tsx +14 -17
- package/src/features/chat/components/layout/chat-sidebar-session-entry.tsx +82 -0
- package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +205 -0
- package/src/{components/chat/ChatSidebar.test.tsx → features/chat/components/layout/chat-sidebar.test.tsx} +59 -16
- package/src/features/chat/components/layout/chat-sidebar.tsx +415 -0
- package/src/{components/chat/presenter/chat-presenter-context.tsx → features/chat/components/providers/chat-presenter.provider.tsx} +10 -31
- package/src/{components/common → features/chat/components/session}/session-context-icon.tsx +5 -5
- package/src/{components/common/SessionRunBadge.tsx → features/chat/components/session/session-run-badge.tsx} +3 -3
- package/src/{components/chat → features/chat/components}/workspace/chat-session-workspace-file-breadcrumbs.tsx +5 -15
- package/src/{components/chat/chat-input/chat-input-bar.controller.test.tsx → features/chat/hooks/use-chat-input-bar-controller.test.tsx} +1 -1
- package/src/{components → features}/chat/hooks/use-chat-session-label.ts +3 -4
- package/src/{components → features}/chat/hooks/use-chat-session-project.test.tsx +19 -19
- package/src/features/chat/hooks/use-chat-session-project.ts +34 -0
- package/src/{components/chat/useChatSessionTypeState.test.tsx → features/chat/hooks/use-chat-session-type-state.test.tsx} +2 -2
- package/src/{components/chat/useChatSessionTypeState.ts → features/chat/hooks/use-chat-session-type-state.ts} +3 -16
- package/src/{components → features}/chat/hooks/use-chat-session-update.test.tsx +19 -21
- package/src/{components → features}/chat/hooks/use-chat-session-update.ts +5 -7
- package/src/features/chat/hooks/use-chat-sidebar-session-label-editor.ts +49 -0
- package/src/{components/chat/useHydratedNcpAgent.test.tsx → features/chat/hooks/use-hydrated-ncp-agent.test.tsx} +2 -2
- package/src/{components/chat/useNcpAgentRuntime.test.tsx → features/chat/hooks/use-ncp-agent-runtime.test.tsx} +1 -1
- package/src/{components/chat/ncp/page/ncp-chat-derived-state.ts → features/chat/hooks/use-ncp-chat-derived-state.ts} +8 -8
- package/src/{components/chat/ncp/ncp-chat-page-data.ts → features/chat/hooks/use-ncp-chat-page-data.ts} +137 -80
- package/src/{hooks → features/chat/hooks}/use-ncp-chat-session-types.ts +1 -1
- package/src/{components/chat/ncp/session-conversation → features/chat/hooks}/use-ncp-child-session-tabs-view.ts +7 -7
- package/src/{components/chat/ncp/session-conversation → features/chat/hooks}/use-ncp-session-conversation.test.tsx +55 -7
- package/src/features/chat/hooks/use-ncp-session-conversation.ts +121 -0
- package/src/{components/chat/ncp → features/chat/hooks}/use-ncp-session-list-view.ts +6 -6
- package/src/features/chat/index.ts +6 -0
- package/src/{components/chat → features/chat/managers}/chat-recent-models.manager.ts +1 -1
- package/src/{components/chat → features/chat/managers}/chat-recent-skills.manager.ts +1 -1
- package/src/{components → features}/chat/managers/chat-session-list.manager.test.ts +11 -7
- package/src/{components → features}/chat/managers/chat-session-list.manager.ts +8 -10
- package/src/{components/chat/chat-session-preference-sync.test.ts → features/chat/managers/chat-session-preference-sync.manager.test.ts} +18 -14
- package/src/{components/chat/chat-session-preference-sync.ts → features/chat/managers/chat-session-preference-sync.manager.ts} +7 -14
- package/src/{components → features}/chat/managers/chat-stream-actions.manager.ts +3 -2
- package/src/{components → features}/chat/managers/chat-ui.manager.ts +11 -3
- package/src/{components/chat/ncp/tests → features/chat/managers}/ncp-chat-input.manager.test.ts +55 -5
- package/src/{components/chat/ncp → features/chat/managers}/ncp-chat-input.manager.ts +28 -20
- package/src/{components/chat/ncp/ncp-chat.presenter.ts → features/chat/managers/ncp-chat-presenter.manager.ts} +5 -5
- package/src/{components/chat/ncp/tests → features/chat/managers}/ncp-chat-thread.manager.test.ts +11 -10
- package/src/{components/chat/ncp → features/chat/managers}/ncp-chat-thread.manager.ts +11 -13
- package/src/{lib → features/chat/managers}/recent-selection.manager.test.ts +1 -1
- package/src/{lib → features/chat/managers}/recent-selection.manager.ts +14 -14
- package/src/features/chat/pages/chat-page.tsx +6 -0
- package/src/{components/chat/chat-page-runtime.test.ts → features/chat/pages/ncp-chat-page.test.ts} +69 -4
- package/src/{components/chat/ncp → features/chat/pages}/ncp-chat-page.tsx +180 -109
- package/src/features/chat/pages/sessions-config-page.test.tsx +152 -0
- package/src/features/chat/pages/sessions-config-page.tsx +192 -0
- package/src/{components → features}/chat/stores/chat-input.store.ts +3 -3
- package/src/{components → features}/chat/stores/chat-session-list.store.ts +2 -4
- package/src/{components → features}/chat/stores/chat-thread.store.ts +3 -3
- package/src/features/chat/types/chat-input-bar.types.ts +44 -0
- package/src/{components/chat → features/chat/types}/chat-input.types.ts +1 -1
- package/src/features/chat/types/chat-message.types.ts +58 -0
- package/src/{components/chat/chat-stream/types.ts → features/chat/types/chat-stream.types.ts} +1 -1
- package/src/{components/chat/chat-composer-state.test.ts → features/chat/utils/chat-composer-state.utils.test.ts} +1 -1
- package/src/{components/chat/chat-composer-state.ts → features/chat/utils/chat-composer-state.utils.ts} +17 -19
- package/src/features/chat/utils/chat-inline-token.utils.test.ts +87 -0
- package/src/{components/chat → features/chat/utils}/chat-inline-token.utils.ts +22 -39
- package/src/{components/chat/adapters/chat-input-bar.adapter.test.ts → features/chat/utils/chat-input-bar.utils.test.ts} +2 -2
- package/src/{components/chat/adapters/chat-input-bar.adapter.ts → features/chat/utils/chat-input-bar.utils.ts} +18 -196
- package/src/features/chat/utils/chat-input-toolbar.utils.ts +191 -0
- package/src/{lib/chat-message.ts → features/chat/utils/chat-message-core.utils.ts} +1 -1
- package/src/{components/chat/adapters/chat-message-inline-content.adapter.ts → features/chat/utils/chat-message-inline-content.utils.ts} +2 -2
- package/src/features/chat/utils/chat-message-part.utils.ts +233 -0
- package/src/{components/chat/adapters/chat-message.session-request-tool-card.ts → features/chat/utils/chat-message-session-request-tool-card.utils.ts} +2 -2
- package/src/{components/chat/adapters/chat-message.session-spawn-tool-card.test.ts → features/chat/utils/chat-message-session-spawn-tool-card.utils.test.ts} +2 -2
- package/src/{components/chat/adapters/chat-message.summary-truncation.test.ts → features/chat/utils/chat-message-summary-truncation.utils.test.ts} +2 -2
- package/src/{components/chat/adapters/chat-message-tool-agent-id.test.ts → features/chat/utils/chat-message-tool-agent-id.utils.test.ts} +1 -1
- package/src/features/chat/utils/chat-message-tool-card.utils.ts +216 -0
- package/src/{components/chat/adapters/chat-message.adapter.test.ts → features/chat/utils/chat-message.utils.test.ts} +2 -2
- package/src/{components/chat/adapters/chat-message.adapter.ts → features/chat/utils/chat-message.utils.ts} +4 -4
- package/src/features/chat/utils/chat-runtime.utils.ts +235 -0
- package/src/{components/chat/chat-session-display.test.ts → features/chat/utils/chat-session-display.utils.test.ts} +2 -2
- package/src/{components/chat/chat-session-display.ts → features/chat/utils/chat-session-display.utils.ts} +5 -9
- package/src/{components/chat/chat-session-preference-governance.ts → features/chat/utils/chat-session-preference-governance.utils.ts} +51 -64
- package/src/{components/chat/chat-session-route.ts → features/chat/utils/chat-session-route.utils.ts} +1 -1
- package/src/{components/chat/adapters/file-operation/card.ts → features/chat/utils/file-operation/card.utils.ts} +3 -3
- package/src/{components/chat/adapters/file-operation/diff.ts → features/chat/utils/file-operation/diff.utils.ts} +9 -99
- package/src/features/chat/utils/file-operation/parsed-block.utils.ts +98 -0
- package/src/{components/chat/adapters/file-operation/record-readers.ts → features/chat/utils/file-operation/record-readers.utils.ts} +1 -1
- package/src/{components/chat/ncp/ncp-app-client-fetch.test.ts → features/chat/utils/ncp-app-client-fetch.utils.test.ts} +1 -1
- package/src/{components/chat/ncp/ncp-app-client-fetch.ts → features/chat/utils/ncp-app-client-fetch.utils.ts} +3 -0
- package/src/features/chat/utils/ncp-chat-input-availability.utils.test.ts +92 -0
- package/src/features/chat/utils/ncp-chat-input-availability.utils.ts +45 -0
- package/src/{components/chat/ncp/__tests__/ncp-session-adapter.cancelled-tool.test.ts → features/chat/utils/ncp-session-adapter.utils.cancelled-tool.test.ts} +2 -2
- package/src/{components/chat/ncp/ncp-session-adapter.test.ts → features/chat/utils/ncp-session-adapter.utils.test.ts} +3 -3
- package/src/{components/chat/ncp/ncp-session-adapter.ts → features/chat/utils/ncp-session-adapter.utils.ts} +3 -3
- package/src/{lib → features/chat/utils}/session-context.utils.test.ts +3 -3
- package/src/{lib → features/chat/utils}/session-context.utils.ts +3 -3
- package/src/{components/marketplace → features/marketplace/components}/marketplace-list-card.tsx +69 -124
- package/src/{components/marketplace → features/marketplace/components}/marketplace-localization.ts +1 -1
- package/src/{components/marketplace → features/marketplace/components}/marketplace-page-data.ts +2 -2
- package/src/features/marketplace/components/marketplace-page-detail.test.tsx +336 -0
- package/src/features/marketplace/components/marketplace-page-parts.tsx +121 -0
- package/src/{components/marketplace → features/marketplace/components}/marketplace-page.test.tsx +6 -6
- package/src/{components/marketplace → features/marketplace/components}/marketplace-page.tsx +92 -91
- package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-card.tsx +4 -4
- package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-dialogs.tsx +7 -7
- package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-doc.ts +3 -3
- package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-page.test.tsx +13 -9
- package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +446 -0
- package/src/{hooks/useMarketplace.ts → features/marketplace/hooks/use-marketplace.ts} +5 -5
- package/src/{hooks/useMcpMarketplace.ts → features/marketplace/hooks/use-mcp-marketplace.ts} +3 -3
- package/src/features/marketplace/index.ts +26 -0
- package/src/{components/marketplace/marketplace-installed-cache.test.ts → features/marketplace/utils/marketplace-installed-cache.utils.test.ts} +2 -2
- package/src/{components/marketplace/marketplace-installed-cache.ts → features/marketplace/utils/marketplace-installed-cache.utils.ts} +1 -1
- package/src/{hooks/marketplace-list-pages.ts → features/marketplace/utils/marketplace-list-pages.utils.ts} +1 -1
- package/src/{pwa → features/pwa}/components/pwa-install-entry.test.tsx +2 -2
- package/src/{pwa → features/pwa}/components/pwa-install-entry.tsx +7 -7
- package/src/features/pwa/index.ts +4 -0
- package/src/{pwa/register-pwa.ts → features/pwa/managers/pwa-bootstrap.manager.ts} +2 -2
- package/src/{pwa → features/pwa}/managers/pwa-install.manager.test.ts +3 -3
- package/src/{pwa → features/pwa}/managers/pwa-install.manager.ts +5 -5
- package/src/{pwa → features/pwa}/managers/pwa-runtime.manager.ts +1 -1
- package/src/{pwa → features/pwa}/managers/pwa-shell-theme.manager.test.ts +1 -1
- package/src/{pwa → features/pwa}/managers/pwa-shell-theme.manager.ts +1 -1
- package/src/{pwa → features/pwa}/stores/pwa.store.ts +2 -2
- package/src/{components/remote → features/remote/components}/remote-access-page.test.tsx +5 -6
- package/src/{components/remote → features/remote/components}/remote-access-page.tsx +21 -19
- package/src/{hooks/useRemoteAccess.ts → features/remote/hooks/use-remote-access.ts} +3 -3
- package/src/features/remote/index.ts +27 -0
- package/src/{remote → features/remote}/managers/remote-access.manager.ts +6 -7
- package/src/{remote → features/remote/services}/remote-access-feedback.service.test.ts +3 -3
- package/src/{remote → features/remote/services}/remote-access-feedback.service.ts +2 -2
- package/src/{remote/remote-access.query.ts → features/remote/services/remote-access-query.service.ts} +2 -2
- package/src/{remote → features/remote}/stores/remote-access.store.ts +1 -1
- package/src/features/settings/hooks/use-language-preference.ts +30 -0
- package/src/features/settings/index.ts +2 -0
- package/src/features/settings/pages/language-settings-page.test.tsx +36 -0
- package/src/features/settings/pages/language-settings-page.tsx +56 -0
- package/src/features/system-status/components/config/runtime-agent-list-card.tsx +72 -0
- package/src/features/system-status/components/config/runtime-binding-list-card.tsx +85 -0
- package/src/features/system-status/components/config/runtime-config-editor.tsx +131 -0
- package/src/features/system-status/components/config/runtime-config-overview.tsx +16 -0
- package/src/features/system-status/components/config/runtime-entry-list-card.tsx +58 -0
- package/src/features/system-status/components/config/runtime-settings-card.tsx +73 -0
- package/src/{components/config → features/system-status/components}/desktop-update-config.test.tsx +12 -6
- package/src/features/system-status/components/desktop-update-config.tsx +219 -0
- package/src/features/system-status/components/runtime-control-card.test.tsx +213 -0
- package/src/features/system-status/components/runtime-control-card.tsx +260 -0
- package/src/{components/config → features/system-status/components}/runtime-presence-card.test.tsx +12 -16
- package/src/{components/config → features/system-status/components}/runtime-presence-card.tsx +38 -51
- package/src/features/system-status/components/runtime-security-card.tsx +263 -0
- package/src/{components/config → features/system-status/components}/security-config.tsx +3 -3
- package/src/features/system-status/hooks/use-system-status.ts +104 -0
- package/src/features/system-status/index.ts +4 -0
- package/src/features/system-status/managers/system-status.manager.bootstrap-polling.test.ts +126 -0
- package/src/features/system-status/managers/system-status.manager.test.ts +142 -0
- package/src/features/system-status/managers/system-status.manager.ts +511 -0
- package/src/features/system-status/pages/runtime-config-page.test.tsx +140 -0
- package/src/features/system-status/pages/runtime-config-page.tsx +15 -0
- package/src/features/system-status/stores/system-status.store.ts +32 -0
- package/src/features/system-status/types/system-status.types.ts +73 -0
- package/src/features/system-status/utils/runtime-config-agent.utils.ts +152 -0
- package/src/features/system-status/utils/system-status.utils.test.ts +132 -0
- package/src/features/system-status/utils/system-status.utils.ts +202 -0
- package/src/index.css +1 -1
- package/src/platforms/desktop/components/desktop-app-shell.tsx +52 -0
- package/src/platforms/desktop/index.ts +21 -0
- package/src/{desktop → platforms/desktop}/managers/desktop-presence.manager.ts +3 -3
- package/src/{desktop → platforms/desktop}/managers/desktop-update.manager.ts +3 -3
- package/src/{desktop → platforms/desktop}/stores/desktop-presence.store.ts +1 -1
- package/src/{desktop → platforms/desktop}/stores/desktop-update.store.ts +1 -1
- package/src/{desktop → platforms/desktop/types}/desktop-update.types.ts +4 -0
- package/src/platforms/mobile/components/chat-mobile-shell.tsx +20 -0
- package/src/platforms/mobile/components/mobile-app-shell.test.tsx +42 -0
- package/src/platforms/mobile/components/mobile-app-shell.tsx +48 -0
- package/src/platforms/mobile/components/mobile-bottom-nav.test.tsx +45 -0
- package/src/platforms/mobile/components/mobile-bottom-nav.tsx +71 -0
- package/src/platforms/mobile/components/mobile-settings-shell.tsx +39 -0
- package/src/platforms/mobile/components/mobile-topbar.tsx +41 -0
- package/src/platforms/mobile/index.ts +3 -0
- package/src/shared/components/__tests__/config-split-page.test.tsx +47 -0
- package/src/{components/common/AgentAvatar.tsx → shared/components/common/agent-avatar.tsx} +1 -1
- package/src/{components → shared/components}/common/agent-identity/agent-identity-avatar.tsx +2 -2
- package/src/shared/components/common/agent-identity/index.ts +3 -0
- package/src/{components → shared/components}/common/agent-identity/use-agent-identity.ts +3 -3
- package/src/{components/common/BrandHeader.tsx → shared/components/common/brand-header.tsx} +2 -2
- package/src/{components/common/KeyValueEditor.tsx → shared/components/common/key-value-editor.tsx} +4 -4
- package/src/{components/common/LogoBadge.tsx → shared/components/common/logo-badge.tsx} +1 -1
- package/src/{components/common/MaskedInput.tsx → shared/components/common/masked-input.tsx} +3 -3
- package/src/{components/common/ProviderScopedModelInput.tsx → shared/components/common/provider-scoped-model-input.tsx} +6 -6
- package/src/{components/common/SearchableModelInput.tsx → shared/components/common/searchable-model-input.tsx} +2 -2
- package/src/{components/common/StatusBadge.tsx → shared/components/common/status-badge.tsx} +3 -3
- package/src/{components → shared/components}/common/tag-input.tsx +3 -3
- package/src/{components → shared/components}/config/provider-form-support.ts +3 -3
- package/src/{components/config/ProviderForm.tsx → shared/components/config/provider-form.tsx} +14 -14
- package/src/{components → shared/components}/config/provider-models-section.tsx +7 -7
- package/src/{components → shared/components}/config/providers-list.test.tsx +19 -19
- package/src/{components/config/ProvidersList.tsx → shared/components/config/providers-list.tsx} +56 -54
- package/src/shared/components/config/secrets-config-form.tsx +407 -0
- package/src/shared/components/config/secrets-config.test.tsx +90 -0
- package/src/shared/components/config/secrets-config.tsx +25 -0
- package/src/{components/config → shared/components}/config-split-page.tsx +55 -9
- package/src/{components/config/CronConfig.tsx → shared/components/cron-config.tsx} +63 -96
- package/src/shared/components/doc-browser/doc-browser-context.test.tsx +102 -0
- package/src/{components/doc-browser/DocBrowserContext.tsx → shared/components/doc-browser/doc-browser-context.tsx} +98 -45
- package/src/shared/components/doc-browser/doc-browser.test.tsx +72 -0
- package/src/{components/doc-browser/DocBrowser.tsx → shared/components/doc-browser/doc-browser.tsx} +60 -34
- package/src/shared/components/doc-browser/index.ts +3 -0
- package/src/{components/doc-browser/useDocLinkInterceptor.ts → shared/components/doc-browser/use-doc-link-interceptor.ts} +1 -1
- package/src/{components/config/ModelConfig.test.tsx → shared/components/model-config.test.tsx} +4 -4
- package/src/shared/components/model-config.tsx +151 -0
- package/src/{components → shared/components}/path-picker/server-path-picker-dialog.test.tsx +3 -3
- package/src/{components → shared/components}/path-picker/server-path-picker-dialog.tsx +7 -7
- package/src/{components/config → shared/components}/provider-advanced-settings-section.tsx +5 -18
- package/src/{components/config → shared/components}/provider-auth-section.tsx +7 -24
- package/src/{components/config → shared/components}/provider-enabled-field.tsx +4 -8
- package/src/{components/config → shared/components}/provider-pill-selector.tsx +3 -15
- package/src/{components/config → shared/components}/provider-status-badge.tsx +3 -9
- package/src/{components/config/SearchConfig.test.tsx → shared/components/search-config.test.tsx} +3 -3
- package/src/shared/components/search-config.tsx +496 -0
- package/src/{components → shared/components}/ui/action-link.tsx +1 -1
- package/src/{components → shared/components}/ui/button.tsx +1 -1
- package/src/{components → shared/components}/ui/card.tsx +1 -1
- package/src/{components → shared/components}/ui/config-card.tsx +1 -1
- package/src/{components → shared/components}/ui/confirm-dialog.tsx +3 -3
- package/src/{components → shared/components}/ui/dialog.tsx +1 -1
- package/src/{components/ui/HighlightCard.tsx → shared/components/ui/highlight-card.tsx} +1 -1
- package/src/{components → shared/components}/ui/input.tsx +1 -1
- package/src/{components → shared/components}/ui/label.tsx +1 -1
- package/src/{components → shared/components}/ui/notice-card.tsx +1 -1
- package/src/{components → shared/components}/ui/popover.tsx +1 -1
- package/src/{components → shared/components}/ui/scroll-area.tsx +1 -1
- package/src/{components → shared/components}/ui/select.tsx +1 -1
- package/src/{components → shared/components}/ui/setting-row.tsx +1 -1
- package/src/{components → shared/components}/ui/skeleton.tsx +1 -1
- package/src/{components → shared/components}/ui/status-dot.tsx +1 -1
- package/src/{components → shared/components}/ui/switch.tsx +1 -1
- package/src/{components → shared/components}/ui/tabs-custom.tsx +2 -2
- package/src/{components → shared/components}/ui/tabs.tsx +1 -1
- package/src/{components → shared/components}/ui/tag-chip.tsx +1 -1
- package/src/{components → shared/components}/ui/textarea.tsx +1 -1
- package/src/{components → shared/components}/ui/tooltip.tsx +1 -1
- package/src/{hooks/agents/useAgents.ts → shared/hooks/use-agents.ts} +2 -2
- package/src/{hooks/useConfig.ts → shared/hooks/use-config.ts} +4 -4
- package/src/{hooks/useConfirmDialog.tsx → shared/hooks/use-confirm-dialog.tsx} +2 -2
- package/src/{hooks/server-path → shared/hooks}/use-server-path-browse.ts +1 -1
- package/src/{hooks/server-path → shared/hooks}/use-server-path-read.ts +1 -1
- package/src/{api → shared/lib/api}/api-base.test.ts +2 -2
- package/src/{api → shared/lib/api}/client.test.ts +2 -2
- package/src/{api → shared/lib/api}/client.ts +1 -1
- package/src/{api → shared/lib/api}/config.ts +10 -0
- package/src/shared/lib/api/index.ts +20 -0
- package/src/{api → shared/lib/api}/ncp-session-query-cache.test.ts +2 -2
- package/src/{api → shared/lib/api}/ncp-session-query-cache.ts +1 -1
- package/src/{api → shared/lib/api}/ncp-session.test.ts +3 -3
- package/src/{api → shared/lib/api}/raw-client.test.ts +1 -1
- package/src/{api/raw-client.ts → shared/lib/api/raw-client.utils.ts} +2 -0
- package/src/{api → shared/lib/api}/types.ts +40 -0
- package/src/{lib → shared/lib/app-resource-uri}/app-resource-uri.test.ts +1 -1
- package/src/{lib/config-hints.ts → shared/lib/config-hints/index.ts} +1 -1
- package/src/{lib/i18n.chat.ts → shared/lib/i18n/chat.ts} +8 -0
- package/src/{lib/i18n.ts → shared/lib/i18n/index.ts} +11 -11
- package/src/shared/lib/i18n/runtime/i18n-language-owner.test.ts +94 -0
- package/src/{lib/i18n-runtime → shared/lib/i18n/runtime}/i18n-language-owner.ts +15 -1
- package/src/{lib/provider-models.ts → shared/lib/provider-models/index.ts} +1 -1
- package/src/shared/lib/session-project/index.ts +2 -0
- package/src/{lib → shared/lib}/session-project/workspace-file-breadcrumb.test.ts +1 -1
- package/src/{lib → shared/lib}/session-project/workspace-file-breadcrumb.ts +1 -1
- package/src/{transport/app-client.ts → shared/lib/transport/app-client.service.ts} +11 -12
- package/src/{transport → shared/lib/transport}/app-client.test.ts +15 -5
- package/src/{transport → shared/lib/transport}/index.ts +1 -1
- package/src/{transport/local.transport.ts → shared/lib/transport/local-transport.service.ts} +19 -19
- package/src/{transport/remote.transport.ts → shared/lib/transport/remote-transport.service.ts} +14 -15
- package/src/{transport → shared/lib/transport}/remote.transport.test.ts +5 -5
- package/src/{transport → shared/lib/transport}/sse-stream.test.ts +2 -2
- package/src/{transport/sse-stream.ts → shared/lib/transport/sse-stream.utils.ts} +13 -11
- package/src/{transport → shared/lib/transport}/transport.types.ts +1 -1
- package/src/{lib/ui-document-title.ts → shared/lib/ui-document-title/index.ts} +1 -1
- package/tsconfig.json +20 -0
- package/vite.config.ts +62 -2
- package/vitest.config.ts +21 -1
- package/dist/assets/ChannelsList-M9FTK1Ak.js +0 -8
- package/dist/assets/DocBrowser-CH7-GxlL.js +0 -1
- package/dist/assets/DocBrowser-DMfr0Oow.js +0 -1
- package/dist/assets/DocBrowserContext-BXydqby-.js +0 -1
- package/dist/assets/ModelConfig-CNIgLf0e.js +0 -1
- package/dist/assets/ProviderScopedModelInput-B3HWP4oz.js +0 -1
- package/dist/assets/ProvidersList-CHjMnRhX.js +0 -1
- package/dist/assets/RuntimeConfig-psp8nMSG.js +0 -1
- package/dist/assets/SearchConfig-CSoKip1f.js +0 -1
- package/dist/assets/SecretsConfig-MEt6MjuD.js +0 -3
- package/dist/assets/SessionsConfig-DifCiXwR.js +0 -2
- package/dist/assets/app-query-client-9jNewezV.js +0 -1
- package/dist/assets/chat-page-CLp0UV0Y.js +0 -58
- package/dist/assets/chat-session-display-DsYHx0RZ.js +0 -1
- package/dist/assets/chunk-JZWAC4HX-C5dEc8hV.js +0 -3
- package/dist/assets/client-C-8fH7-c.js +0 -7
- package/dist/assets/config-CBScxsdV.js +0 -1
- package/dist/assets/config-split-page-BUout_Ak.js +0 -1
- package/dist/assets/desktop-update-config-2BS6BMkW.js +0 -1
- package/dist/assets/dist-BruyLa92.js +0 -9
- package/dist/assets/download-BD0ETkB-.js +0 -1
- package/dist/assets/i18n-CpTZLchQ.js +0 -1
- package/dist/assets/index-mW8W2FUu.css +0 -1
- package/dist/assets/index-zDZfXoI4.js +0 -6
- package/dist/assets/infiniteQueryBehavior-CyER9hv0.js +0 -1
- package/dist/assets/loader-circle-Bc2gCU33.js +0 -1
- package/dist/assets/marketplace-page-3qVMnF3d.js +0 -1
- package/dist/assets/marketplace-page-BhFIeQzI.js +0 -49
- package/dist/assets/mcp-marketplace-page-DYfteJ1D.js +0 -40
- package/dist/assets/page-layout-0UcO9H9Z.js +0 -1
- package/dist/assets/play-CKDjSQFL.js +0 -1
- package/dist/assets/plus-CG0QrVY_.js +0 -1
- package/dist/assets/refresh-cw-Bcv40SXy.js +0 -1
- package/dist/assets/remote-access-page-CWHG-sug.js +0 -1
- package/dist/assets/search-BCAlB8nz.js +0 -1
- package/dist/assets/security-config-Slh0Mayz.js +0 -1
- package/dist/assets/select-CVz0t7MF.js +0 -41
- package/dist/assets/setting-row-CbVHAuQt.js +0 -1
- package/dist/assets/skeleton-D5rdKvzy.js +0 -1
- package/dist/assets/switch-CM29eCAR.js +0 -1
- package/dist/assets/tag-chip-DMXdnLcj.js +0 -1
- package/dist/assets/use-infinite-scroll-loader-DJ1L81Dz.js +0 -1
- package/dist/assets/useConfirmDialog-BsVuqu1x.js +0 -1
- package/dist/assets/useMutation-CNcz2fgt.js +0 -1
- package/dist/assets/x-Czwxm82I.js +0 -1
- package/src/app.tsx +0 -271
- package/src/components/chat/ChatSidebar.tsx +0 -486
- package/src/components/chat/README.md +0 -2
- package/src/components/chat/adapters/chat-message-part.adapter.ts +0 -472
- package/src/components/chat/chat-inline-token.utils.test.ts +0 -87
- package/src/components/chat/chat-page.tsx +0 -6
- package/src/components/chat/chat-sidebar-list-mode-switch.tsx +0 -43
- package/src/components/chat/hooks/use-chat-session-project.ts +0 -35
- package/src/components/chat/index.ts +0 -1
- package/src/components/chat/ncp/README.md +0 -3
- package/src/components/chat/ncp/ncp-chat-page-data.test.ts +0 -79
- package/src/components/chat/ncp/session-conversation/use-ncp-session-conversation.ts +0 -72
- package/src/components/chat/nextclaw/index.ts +0 -23
- package/src/components/common/agent-identity/index.ts +0 -3
- package/src/components/config/ChannelForm.tsx +0 -338
- package/src/components/config/ChannelsList.test.tsx +0 -309
- package/src/components/config/ModelConfig.tsx +0 -156
- package/src/components/config/README.md +0 -2
- package/src/components/config/RuntimeConfig.tsx +0 -588
- package/src/components/config/SearchConfig.tsx +0 -513
- package/src/components/config/SecretsConfig.tsx +0 -469
- package/src/components/config/SessionsConfig.tsx +0 -437
- package/src/components/config/desktop-update-config.tsx +0 -271
- package/src/components/config/runtime-config-agent.utils.ts +0 -96
- package/src/components/config/runtime-control-card.test.tsx +0 -311
- package/src/components/config/runtime-control-card.tsx +0 -326
- package/src/components/config/runtime-security-card.tsx +0 -276
- package/src/components/config/weixin-channel-auth-section.tsx +0 -305
- package/src/components/doc-browser/index.ts +0 -3
- package/src/components/layout/AppLayout.tsx +0 -82
- package/src/components/layout/runtime-status-entry.test.tsx +0 -157
- package/src/components/layout/runtime-status-entry.tsx +0 -143
- package/src/components/marketplace/marketplace-page-parts.tsx +0 -94
- package/src/components/marketplace/mcp/mcp-marketplace-page.tsx +0 -414
- package/src/hooks/README.md +0 -3
- package/src/hooks/use-runtime-control.ts +0 -24
- package/src/hooks/useObservable.ts +0 -20
- package/src/lib/chat-runtime-utils.ts +0 -250
- package/src/presenter/app-presenter-context.tsx +0 -20
- package/src/presenter/app.presenter.ts +0 -12
- package/src/runtime-control/runtime-control.manager.ts +0 -118
- package/src/stores/ui.store.ts +0 -23
- /package/dist/assets/{config-hints-BhTmc9P1.js → config-hints-CPNzbMEp.js} +0 -0
- /package/src/{components/layout/Header.tsx → app/components/layout/header.tsx} +0 -0
- /package/src/{styles → app/styles}/design-system.css +0 -0
- /package/src/{account → features/account}/stores/account.store.ts +0 -0
- /package/src/{components/chat/chat-input/chat-input-bar.controller.ts → features/chat/hooks/use-chat-input-bar-controller.ts} +0 -0
- /package/src/{lib/session-run-status.ts → features/chat/types/session-run-status.types.ts} +0 -0
- /package/src/{components/chat/adapters/chat-message.partial-json.ts → features/chat/utils/chat-message-partial-json.utils.ts} +0 -0
- /package/src/{components/chat/adapters/chat-message-tool-agent-id.ts → features/chat/utils/chat-message-tool-agent-id.utils.ts} +0 -0
- /package/src/{components/chat/adapters/file-operation/line-builder.ts → features/chat/utils/file-operation/line-builder.utils.ts} +0 -0
- /package/src/{components/marketplace → features/marketplace/components}/marketplace-detail-doc.ts +0 -0
- /package/src/{pwa → features/pwa/types}/pwa.types.ts +0 -0
- /package/src/{pwa/pwa-install-banner.storage.ts → features/pwa/utils/pwa-install-banner.utils.ts} +0 -0
- /package/src/{hooks → shared/hooks}/use-infinite-scroll-loader.ts +0 -0
- /package/src/{api → shared/lib/api}/agents.ts +0 -0
- /package/src/{api → shared/lib/api}/api-base.ts +0 -0
- /package/src/{api → shared/lib/api}/auth.types.ts +0 -0
- /package/src/{api → shared/lib/api}/channel-auth.ts +0 -0
- /package/src/{api → shared/lib/api}/channel-auth.types.ts +0 -0
- /package/src/{api → shared/lib/api}/chat-session-type.types.ts +0 -0
- /package/src/{api → shared/lib/api}/marketplace.ts +0 -0
- /package/src/{api → shared/lib/api}/mcp-marketplace.ts +0 -0
- /package/src/{api → shared/lib/api}/ncp-attachments.ts +0 -0
- /package/src/{api → shared/lib/api}/ncp-session.ts +0 -0
- /package/src/{api → shared/lib/api}/remote.ts +0 -0
- /package/src/{api → shared/lib/api}/remote.types.ts +0 -0
- /package/src/{api → shared/lib/api}/runtime-control.ts +0 -0
- /package/src/{api → shared/lib/api}/runtime-control.types.ts +0 -0
- /package/src/{api → shared/lib/api}/server-path.ts +0 -0
- /package/src/{lib/app-resource-uri.ts → shared/lib/app-resource-uri/index.ts} +0 -0
- /package/src/{lib/i18n.agents.ts → shared/lib/i18n/agents.ts} +0 -0
- /package/src/{lib/i18n.channel-auth.ts → shared/lib/i18n/channel-auth.ts} +0 -0
- /package/src/{lib/i18n.channels.ts → shared/lib/i18n/channels.ts} +0 -0
- /package/src/{lib → shared/lib/i18n}/desktop-update-labels.utils.ts +0 -0
- /package/src/{lib/i18n.marketplace.ts → shared/lib/i18n/marketplace.ts} +0 -0
- /package/src/{lib/i18n.pwa.ts → shared/lib/i18n/pwa.ts} +0 -0
- /package/src/{lib/i18n.remote.ts → shared/lib/i18n/remote.ts} +0 -0
- /package/src/{lib/i18n-runtime → shared/lib/i18n/runtime}/i18n.path-picker.ts +0 -0
- /package/src/{lib/i18n.runtime-control.ts → shared/lib/i18n/runtime-control.ts} +0 -0
- /package/src/{lib/i18n.search.ts → shared/lib/i18n/search.ts} +0 -0
- /package/src/{lib/logos.ts → shared/lib/logos/index.ts} +0 -0
- /package/src/{lib → shared/lib}/session-project/session-project.utils.ts +0 -0
- /package/src/{lib/theme.ts → shared/lib/theme/index.ts} +0 -0
- /package/src/{transport/transport-websocket-url.ts → shared/lib/transport/transport-websocket-url.utils.ts} +0 -0
- /package/src/{lib/utils.ts → shared/lib/utils/index.ts} +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DocBrowser-CH7-GxlL.js","assets/DocBrowser-DMfr0Oow.js","assets/i18n-CpTZLchQ.js","assets/createLucideIcon-dy5ie7Ox.js","assets/book-open-DzdUViDm.js","assets/external-link-kZSAO8nT.js","assets/plus-CG0QrVY_.js","assets/search-BCAlB8nz.js","assets/x-Czwxm82I.js","assets/DocBrowserContext-BXydqby-.js","assets/ModelConfig-CNIgLf0e.js","assets/dist-BruyLa92.js","assets/ProviderScopedModelInput-B3HWP4oz.js","assets/select-CVz0t7MF.js","assets/loader-circle-Bc2gCU33.js","assets/page-layout-0UcO9H9Z.js","assets/skeleton-D5rdKvzy.js","assets/config-hints-BhTmc9P1.js","assets/chat-page-CLp0UV0Y.js","assets/chunk-JZWAC4HX-C5dEc8hV.js","assets/marketplace-page-BhFIeQzI.js","assets/dist-Cy7_j6hA.js","assets/client-C-8fH7-c.js","assets/use-infinite-scroll-loader-DJ1L81Dz.js","assets/infiniteQueryBehavior-CyER9hv0.js","assets/useMutation-CNcz2fgt.js","assets/useConfirmDialog-BsVuqu1x.js","assets/tabs-custom-YcZUWn3o.js","assets/app-query-client-9jNewezV.js","assets/logos-B7gRObP8.js","assets/play-CKDjSQFL.js","assets/refresh-ccw-COVhNHtN.js","assets/refresh-cw-Bcv40SXy.js","assets/trash-2-mJT6oWa2.js","assets/chat-session-display-DsYHx0RZ.js","assets/config-CBScxsdV.js","assets/LogoBadge-hO7tY7hE.js","assets/tag-chip-DMXdnLcj.js","assets/SearchConfig-CSoKip1f.js","assets/config-split-page-BUout_Ak.js","assets/ProvidersList-CHjMnRhX.js","assets/setting-row-CbVHAuQt.js","assets/status-dot-DpPtVzQT.js","assets/switch-CM29eCAR.js","assets/ChannelsList-M9FTK1Ak.js","assets/hash-BHJC2Ovu.js","assets/RuntimeConfig-psp8nMSG.js","assets/rotate-cw-oHMKJMC8.js","assets/save-EqJPOF0G.js","assets/desktop-update-config-2BS6BMkW.js","assets/download-BD0ETkB-.js","assets/security-config-Slh0Mayz.js","assets/SessionsConfig-DifCiXwR.js","assets/SecretsConfig-MEt6MjuD.js","assets/remote-access-page-CWHG-sug.js","assets/marketplace-page-3qVMnF3d.js","assets/mcp-marketplace-page-DYfteJ1D.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{_ as e,a as t,c as n,h as r,i,l as a,m as o,n as s,o as c,p as l,s as u,u as d}from"./i18n-CpTZLchQ.js";import{a as f,i as p,n as m,r as h,t as ee}from"./dist-BruyLa92.js";import{a as te,i as g,l as _,n as ne,o as re,r as v,t as ie}from"./chunk-JZWAC4HX-C5dEc8hV.js";import{i as y,n as ae,o as oe,s as b,t as x}from"./client-C-8fH7-c.js";import{t as S}from"./app-query-client-9jNewezV.js";import{t as C}from"./useMutation-CNcz2fgt.js";import{A as se,B as ce,C as le,E as ue,F as de,G as w,H as fe,I as T,L as pe,M as me,N as he,P as ge,S as _e,T as ve,U as ye,W as E,i as be,j as xe,n as Se,r as Ce,t as we,w as Te,z as Ee}from"./select-CVz0t7MF.js";import{t as D}from"./dist-Cy7_j6hA.js";import{t as O}from"./createLucideIcon-dy5ie7Ox.js";import{n as De}from"./DocBrowser-DMfr0Oow.js";import{t as Oe}from"./book-open-DzdUViDm.js";import{t as ke}from"./download-BD0ETkB-.js";import{t as Ae}from"./refresh-cw-Bcv40SXy.js";import{t as je}from"./search-BCAlB8nz.js";import{t as Me}from"./x-Czwxm82I.js";import{C as Ne,D as Pe,E as Fe,O as Ie,S as Le,T as Re,_ as ze,a as Be,b as Ve,c as He,f as Ue,g as We,h as Ge,i as Ke,l as qe,m as Je,n as Ye,o as Xe,p as Ze,r as Qe,s as $e,t as et,u as tt,v as nt,w as rt,x as it,y as at}from"./config-CBScxsdV.js";import{i as ot,n as st,r as ct}from"./DocBrowserContext-BXydqby-.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var lt=r((e=>{var t=f();e.createRoot=t.createRoot,e.hydrateRoot=t.hydrateRoot}))(),k=e(o(),1),A=l(),ut=`Dialog`,[dt,ft]=ye(ut),[pt,j]=dt(ut),mt=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!0}=e,s=k.useRef(null),c=k.useRef(null),[l,u]=Ee({prop:r,defaultProp:i??!1,onChange:a,caller:ut});return(0,A.jsx)(pt,{scope:t,triggerRef:s,contentRef:c,contentId:ce(),titleId:ce(),descriptionId:ce(),open:l,onOpenChange:u,onOpenToggle:k.useCallback(()=>u(e=>!e),[u]),modal:o,children:n})};mt.displayName=ut;var ht=`DialogTrigger`,gt=k.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(ht,n),a=E(t,i.triggerRef);return(0,A.jsx)(T.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":Ft(i.open),...r,ref:a,onClick:w(e.onClick,i.onOpenToggle)})});gt.displayName=ht;var _t=`DialogPortal`,[vt,yt]=dt(_t,{forceMount:void 0}),bt=e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=j(_t,t);return(0,A.jsx)(vt,{scope:t,forceMount:n,children:k.Children.map(r,e=>(0,A.jsx)(D,{present:n||a.open,children:(0,A.jsx)(he,{asChild:!0,container:i,children:e})}))})};bt.displayName=_t;var xt=`DialogOverlay`,St=k.forwardRef((e,t)=>{let n=yt(xt,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=j(xt,e.__scopeDialog);return a.modal?(0,A.jsx)(D,{present:r||a.open,children:(0,A.jsx)(wt,{...i,ref:t})}):null});St.displayName=xt;var Ct=pe(`DialogOverlay.RemoveScroll`),wt=k.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(xt,n);return(0,A.jsx)(xe,{as:Ct,allowPinchZoom:!0,shards:[i.contentRef],children:(0,A.jsx)(T.div,{"data-state":Ft(i.open),...r,ref:t,style:{pointerEvents:`auto`,...r.style}})})}),M=`DialogContent`,Tt=k.forwardRef((e,t)=>{let n=yt(M,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=j(M,e.__scopeDialog);return(0,A.jsx)(D,{present:r||a.open,children:a.modal?(0,A.jsx)(Et,{...i,ref:t}):(0,A.jsx)(Dt,{...i,ref:t})})});Tt.displayName=M;var Et=k.forwardRef((e,t)=>{let n=j(M,e.__scopeDialog),r=k.useRef(null),i=E(t,n.contentRef,r);return k.useEffect(()=>{let e=r.current;if(e)return se(e)},[]),(0,A.jsx)(Ot,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:w(e.onCloseAutoFocus,e=>{e.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:w(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;(t.button===2||n)&&e.preventDefault()}),onFocusOutside:w(e.onFocusOutside,e=>e.preventDefault())})}),Dt=k.forwardRef((e,t)=>{let n=j(M,e.__scopeDialog),r=k.useRef(!1),i=k.useRef(!1);return(0,A.jsx)(Ot,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),Ot=k.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=j(M,n),c=k.useRef(null),l=E(t,c);return me(),(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(ge,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,A.jsx)(de,{role:`dialog`,id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":Ft(s.open),...o,ref:l,onDismiss:()=>s.onOpenChange(!1)})}),(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(zt,{titleId:s.titleId}),(0,A.jsx)(Vt,{contentRef:c,descriptionId:s.descriptionId})]})]})}),kt=`DialogTitle`,At=k.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(kt,n);return(0,A.jsx)(T.h2,{id:i.titleId,...r,ref:t})});At.displayName=kt;var jt=`DialogDescription`,Mt=k.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(jt,n);return(0,A.jsx)(T.p,{id:i.descriptionId,...r,ref:t})});Mt.displayName=jt;var Nt=`DialogClose`,Pt=k.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=j(Nt,n);return(0,A.jsx)(T.button,{type:`button`,...r,ref:t,onClick:w(e.onClick,()=>i.onOpenChange(!1))})});Pt.displayName=Nt;function Ft(e){return e?`open`:`closed`}var It=`DialogTitleWarning`,[Lt,Rt]=fe(It,{contentName:M,titleName:kt,docsSlug:`dialog`}),zt=({titleId:e})=>{let t=Rt(It),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
|
3
|
-
|
|
4
|
-
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
|
5
|
-
|
|
6
|
-
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return k.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},Bt=`DialogDescriptionWarning`,Vt=({contentRef:e,descriptionId:t})=>{let n=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Rt(Bt).contentName}}.`;return k.useEffect(()=>{let r=e.current?.getAttribute(`aria-describedby`);t&&r&&(document.getElementById(t)||console.warn(n))},[n,e,t]),null},Ht=mt,Ut=bt,Wt=St,Gt=Tt,Kt=At,qt=Mt,Jt=Pt,Yt=O(`AlarmClock`,[[`circle`,{cx:`12`,cy:`13`,r:`8`,key:`3y4lt7`}],[`path`,{d:`M12 9v4l2 2`,key:`1c63tq`}],[`path`,{d:`M5 3 2 6`,key:`18tl5t`}],[`path`,{d:`m22 6-3-3`,key:`1opdir`}],[`path`,{d:`M6.38 18.7 4 21`,key:`17xu3x`}],[`path`,{d:`M17.64 18.67 20 21`,key:`kv2oe2`}]]),Xt=O(`Bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),Zt=O(`BrainCircuit`,[[`path`,{d:`M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z`,key:`l5xja`}],[`path`,{d:`M9 13a4.5 4.5 0 0 0 3-4`,key:`10igwf`}],[`path`,{d:`M6.003 5.125A3 3 0 0 0 6.401 6.5`,key:`105sqy`}],[`path`,{d:`M3.477 10.896a4 4 0 0 1 .585-.396`,key:`ql3yin`}],[`path`,{d:`M6 18a4 4 0 0 1-1.967-.516`,key:`2e4loj`}],[`path`,{d:`M12 13h4`,key:`1ku699`}],[`path`,{d:`M12 18h6a2 2 0 0 1 2 2v1`,key:`105ag5`}],[`path`,{d:`M12 8h8`,key:`1lhi5i`}],[`path`,{d:`M16 8V5a2 2 0 0 1 2-2`,key:`u6izg6`}],[`circle`,{cx:`16`,cy:`13`,r:`.5`,key:`ry7gng`}],[`circle`,{cx:`18`,cy:`3`,r:`.5`,key:`1aiba7`}],[`circle`,{cx:`20`,cy:`21`,r:`.5`,key:`yhc1fs`}],[`circle`,{cx:`20`,cy:`8`,r:`.5`,key:`1e43v0`}]]),Qt=O(`Cpu`,[[`rect`,{width:`16`,height:`16`,x:`4`,y:`4`,rx:`2`,key:`14l7u7`}],[`rect`,{width:`6`,height:`6`,x:`9`,y:`9`,rx:`1`,key:`5aljv4`}],[`path`,{d:`M15 2v2`,key:`13l42r`}],[`path`,{d:`M15 20v2`,key:`15mkzm`}],[`path`,{d:`M2 15h2`,key:`1gxd5l`}],[`path`,{d:`M2 9h2`,key:`1bbxkp`}],[`path`,{d:`M20 15h2`,key:`19e6y8`}],[`path`,{d:`M20 9h2`,key:`19tzq7`}],[`path`,{d:`M9 2v2`,key:`165o2o`}],[`path`,{d:`M9 20v2`,key:`i2bqo8`}]]),$t=O(`GitBranch`,[[`line`,{x1:`6`,x2:`6`,y1:`3`,y2:`15`,key:`17qcm7`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M18 9a9 9 0 0 1-9 9`,key:`n2h4wq`}]]),en=O(`History`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}],[`path`,{d:`M12 7v5l4 2`,key:`1fdv2h`}]]),N=O(`KeyRound`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),tn=O(`Languages`,[[`path`,{d:`m5 8 6 6`,key:`1wu5hv`}],[`path`,{d:`m4 14 6-6 2-3`,key:`1k1g8d`}],[`path`,{d:`M2 5h12`,key:`or177f`}],[`path`,{d:`M7 2h1`,key:`1t2jsx`}],[`path`,{d:`m22 22-5-10-5 10`,key:`don7ne`}],[`path`,{d:`M14 18h6`,key:`1m8k6r`}]]),nn=O(`LogOut`,[[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}],[`polyline`,{points:`16 17 21 12 16 7`,key:`1gabdz`}],[`line`,{x1:`21`,x2:`9`,y1:`12`,y2:`12`,key:`1uyos4`}]]),rn=O(`MessageCircle`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}]]),an=O(`MessageSquare`,[[`path`,{d:`M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z`,key:`1lielz`}]]),on=O(`Palette`,[[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`path`,{d:`M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z`,key:`12rzf8`}]]),sn=O(`Plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M9 8V2`,key:`14iosj`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`,key:`osxo6l`}]]),cn=O(`Settings`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),ln=O(`Shield`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]),un=O(`Smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),dn=O(`Sparkles`,[[`path`,{d:`M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z`,key:`4pj2yx`}],[`path`,{d:`M20 3v4`,key:`1olli1`}],[`path`,{d:`M22 5h-4`,key:`1gvqau`}],[`path`,{d:`M4 17v2`,key:`vumght`}],[`path`,{d:`M5 18H3`,key:`zchphs`}]]),fn=O(`SquareArrowOutUpRight`,[[`path`,{d:`M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6`,key:`y09zxi`}],[`path`,{d:`m21 3-9 9`,key:`mpx6sq`}],[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}]]),pn=O(`Wifi`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M2 8.82a15 15 0 0 1 20 0`,key:`dnpr2z`}],[`path`,{d:`M5 12.859a10 10 0 0 1 14 0`,key:`1x1e6c`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}]]),mn=O(`Wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`,key:`cbrjhi`}]]),hn=Ht,gn=Ut,_n=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(Wt,{ref:n,className:d(`fixed inset-0 z-50 bg-black/40 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));_n.displayName=Wt.displayName;var vn=k.forwardRef(({className:e,children:t,...n},r)=>(0,A.jsxs)(gn,{children:[(0,A.jsx)(_n,{}),(0,A.jsxs)(Gt,{ref:r,className:d(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-gray-200/50 bg-white p-6 shadow-xl duration-base data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] rounded-2xl`,e),...n,children:[t,(0,A.jsxs)(Jt,{className:`absolute right-4 top-4 rounded-lg p-1 opacity-70 ring-offset-white transition-all duration-fast hover:opacity-100 hover:bg-gray-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:pointer-events-none`,children:[(0,A.jsx)(Me,{className:`h-4 w-4 text-gray-500`}),(0,A.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]}));vn.displayName=Gt.displayName;var yn=({className:e,...t})=>(0,A.jsx)(`div`,{className:d(`flex flex-col space-y-2 text-center sm:text-left`,e),...t});yn.displayName=`DialogHeader`;var bn=({className:e,...t})=>(0,A.jsx)(`div`,{className:d(`flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-3`,e),...t});bn.displayName=`DialogFooter`;var xn=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(Kt,{ref:n,className:d(`text-lg font-semibold leading-tight tracking-tight text-gray-900`,e),...t}));xn.displayName=Kt.displayName;var Sn=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(qt,{ref:n,className:d(`text-sm text-gray-500 leading-relaxed`,e),...t}));Sn.displayName=qt.displayName;var P=k.forwardRef(({className:e,type:t,...n},r)=>(0,A.jsx)(`input`,{type:t,className:d(`flex h-9 w-full rounded-xl border border-gray-200/80 bg-white px-3.5 py-2 text-sm text-gray-900 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-300 placeholder:font-normal focus:outline-none focus:ring-1 focus:ring-primary/40 focus:border-primary/40 transition-colors disabled:cursor-not-allowed disabled:opacity-50`,e),ref:r,...n}));P.displayName=`Input`;var Cn=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(`label`,{ref:n,className:d(`text-sm font-medium leading-none text-gray-700 peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));Cn.displayName=`Label`;var wn=p(`rounded-2xl border px-4 py-3`,{variants:{tone:{neutral:`border-gray-200 bg-gray-50 text-gray-900`,success:`border-emerald-200 bg-emerald-50 text-emerald-900`,warning:`border-amber-200 bg-amber-50 text-amber-900`,danger:`border-rose-200 bg-rose-50 text-rose-700`,info:`border-primary/20 bg-primary/10 text-primary`},borderStyle:{solid:``,dashed:`border-dashed`}},defaultVariants:{tone:`neutral`,borderStyle:`solid`}}),Tn={neutral:`text-gray-900`,success:`text-emerald-800`,warning:`text-amber-900`,danger:`text-rose-700`,info:`text-primary`},En={neutral:`text-gray-600`,success:`text-emerald-700`,warning:`text-amber-800`,danger:`text-rose-700`,info:`text-primary/90`},F=k.forwardRef(({className:e,tone:t=`neutral`,borderStyle:n=`solid`,title:r,description:i,icon:a,actions:o,children:s,...c},l)=>{let u=t??`neutral`,f=!!r||!!i||!!a||!!o;return(0,A.jsxs)(`div`,{ref:l,className:d(wn({tone:u,borderStyle:n}),e),...c,children:[f?(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,A.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,A.jsxs)(`div`,{className:`flex items-start gap-2`,children:[a?(0,A.jsx)(`div`,{className:`mt-0.5 shrink-0`,children:a}):null,(0,A.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[r?(0,A.jsx)(`p`,{className:d(`text-sm font-medium`,Tn[u]),children:r}):null,i?(0,A.jsx)(`p`,{className:d(r?`mt-1`:``,`text-sm leading-6`,En[u]),children:i}):null]})]})}),o?(0,A.jsx)(`div`,{className:`shrink-0`,children:o}):null]}):null,s?(0,A.jsx)(`div`,{className:d(f?`mt-3`:``),children:s}):null]})});F.displayName=`NoticeCard`;async function Dn(){let e=await x.get(`/api/remote/status`);if(!e.ok)throw Error(e.error.message);return e.data}async function On(){let e=await x.get(`/api/remote/doctor`);if(!e.ok)throw Error(e.error.message);return e.data}async function kn(e){let t=await x.post(`/api/remote/auth/start`,e);if(!t.ok)throw Error(t.error.message);return t.data}async function An(e){let t=await x.post(`/api/remote/auth/poll`,e);if(!t.ok)throw Error(t.error.message);return t.data}async function jn(){let e=await x.post(`/api/remote/logout`,{});if(!e.ok)throw Error(e.error.message);return e.data}async function Mn(e){let t=await x.put(`/api/remote/account/profile`,e);if(!t.ok)throw Error(t.error.message);return t.data}async function Nn(e){let t=await x.put(`/api/remote/settings`,e);if(!t.ok)throw Error(t.error.message);return t.data}async function I(e){let t=await x.post(`/api/remote/service/${e}`,{});if(!t.ok)throw Error(t.error.message);return t.data}var Pn=[`remote-status`],Fn=`https://platform.nextclaw.io`,In=`https://nextclaw-platform-console.pages.dev`,L=async()=>await S.fetchQuery({queryKey:Pn,queryFn:Dn,staleTime:5e3}),R=async()=>(await S.invalidateQueries({queryKey:Pn}),await L()),Ln=(e,t)=>t?.trim()||e?.settings.platformApiBase?.trim()||e?.account.apiBase?.trim()||void 0;function z(e){let t=e?.trim();if(!t)return;let n;try{n=new URL(t)}catch{return}if(n.hostname===`platform.nextclaw.io`||n.hostname===`nextclaw-platform-console.pages.dev`)return n.origin;if(n.hostname===`ai-gateway-api.nextclaw.io`)return Fn;if(n.hostname.includes(`nextclaw-provider-gateway-api`)&&n.hostname.endsWith(`.workers.dev`))return In}var Rn=e=>z(e?.account.apiBase)||z(e?.settings.platformApiBase)||z(e?.platformBase)||z(e?.account.platformBase)||void 0;function zn(){return y({queryKey:Pn,queryFn:Dn,staleTime:5e3,refetchOnWindowFocus:!0})}var Bn=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},Vn=(e=>e?Bn(e):Bn),Hn=e=>e;function Un(e,t=Hn){let n=k.useSyncExternalStore(e.subscribe,k.useCallback(()=>t(e.getState()),[e,t]),k.useCallback(()=>t(e.getInitialState()),[e,t]));return k.useDebugValue(n),n}var Wn=e=>{let t=Vn(e),n=e=>Un(t,e);return Object.assign(n,t),n},B=(e=>e?Wn(e):Wn),V=B(e=>({panelOpen:!1,authSessionId:null,authVerificationUri:null,authExpiresAt:null,authStatusMessage:``,authPollIntervalMs:1500,pendingAction:null,openPanel:()=>e({panelOpen:!0}),closePanel:()=>e({panelOpen:!1}),setPendingAction:t=>e({pendingAction:t}),clearPendingAction:()=>e({pendingAction:null}),beginBrowserAuth:({sessionId:t,verificationUri:n,expiresAt:r,intervalMs:i,statusMessage:a})=>e({panelOpen:!0,authSessionId:t,authVerificationUri:n,authExpiresAt:r,authPollIntervalMs:i,authStatusMessage:a}),updateBrowserAuth:({statusMessage:t,intervalMs:n})=>e(e=>({authStatusMessage:t??e.authStatusMessage,authPollIntervalMs:n??e.authPollIntervalMs})),clearBrowserAuth:()=>e({authSessionId:null,authVerificationUri:null,authExpiresAt:null,authStatusMessage:``,authPollIntervalMs:1500}),setAuthStatusMessage:t=>e({authStatusMessage:t})})),Gn=class{constructor(){this.authPollTimerId=null,this.afterSignedIn=null,this.bindSignedInContinuation=e=>{this.afterSignedIn=e},this.openAccountPanel=()=>{V.getState().openPanel()},this.closeAccountPanel=()=>{V.getState().closePanel()},this.syncRemoteStatus=e=>{e?.account.loggedIn&&(this.clearPollTimer(),V.getState().clearBrowserAuth())},this.ensureSignedIn=async e=>{let t=await L();return t.account.loggedIn?!0:(e?.pendingAction&&V.getState().setPendingAction(e.pendingAction),this.openAccountPanel(),await this.startBrowserSignIn({apiBase:e?.apiBase,status:t}),!1)},this.startBrowserSignIn=async e=>{try{let t=e?.apiBase,n=e?.pendingAction,r=e?.status??await L();n&&V.getState().setPendingAction(n);let a=await kn({apiBase:Ln(r,t)});V.getState().beginBrowserAuth({sessionId:a.sessionId,verificationUri:a.verificationUri,expiresAt:a.expiresAt,intervalMs:a.intervalMs,statusMessage:i(`remoteBrowserAuthWaiting`)}),window.open(a.verificationUri,`_blank`,`noopener,noreferrer`)||V.getState().setAuthStatusMessage(i(`remoteBrowserAuthPopupBlocked`)),this.scheduleBrowserAuthPoll()}catch(e){let t=e instanceof Error?e.message:i(`remoteBrowserAuthStartFailed`);m.error(`${i(`remoteBrowserAuthStartFailed`)}: ${t}`)}},this.resumeBrowserSignIn=()=>{let e=V.getState().authVerificationUri;e&&window.open(e,`_blank`,`noopener,noreferrer`)},this.logout=async()=>{try{await jn(),V.getState().clearPendingAction(),V.getState().clearBrowserAuth(),await R(),m.success(i(`remoteLogoutSuccess`))}catch(e){let t=e instanceof Error?e.message:i(`remoteLogoutFailed`);m.error(`${i(`remoteLogoutFailed`)}: ${t}`)}},this.updateUsername=async e=>{try{await Mn({username:e.trim()}),await R(),m.success(i(`remoteAccountUsernameSetSuccess`))}catch(e){let t=e instanceof Error?e.message:i(`remoteAccountUsernameSetFailed`);m.error(`${i(`remoteAccountUsernameSetFailed`)}: ${t}`)}},this.openNextClawWeb=async(e=`/`)=>{let t=Rn(await L());if(!t){m.error(i(`remoteOpenWebUnavailable`));return}let n=new URL(e,`${t.replace(/\/+$/,``)}/`).toString();window.open(n,`_blank`,`noopener,noreferrer`)},this.scheduleBrowserAuthPoll=()=>{this.clearPollTimer();let{authSessionId:e,authPollIntervalMs:t}=V.getState();e&&(this.authPollTimerId=window.setTimeout(async()=>{await this.pollBrowserSignIn()},t))},this.pollBrowserSignIn=async()=>{let e=V.getState();if(e.authSessionId)try{let t=await L(),n=await An({sessionId:e.authSessionId,apiBase:Ln(t)});if(n.status===`pending`){V.getState().updateBrowserAuth({statusMessage:i(`remoteBrowserAuthWaiting`),intervalMs:n.nextPollMs??1500}),this.scheduleBrowserAuthPoll();return}if(n.status===`expired`){this.clearPollTimer(),V.getState().clearBrowserAuth(),m.error(n.message||i(`remoteBrowserAuthExpired`));return}V.getState().setAuthStatusMessage(i(`remoteBrowserAuthCompleted`));let r=await R(),{pendingAction:a}=V.getState();this.clearPollTimer(),V.getState().clearBrowserAuth(),m.success(i(`remoteLoginSuccess`)),a&&this.afterSignedIn&&await this.afterSignedIn(a,r),V.getState().clearPendingAction()}catch(e){this.clearPollTimer(),V.getState().clearBrowserAuth();let t=e instanceof Error?e.message:i(`remoteBrowserAuthPollFailed`);m.error(`${i(`remoteBrowserAuthPollFailed`)}: ${t}`)}},this.clearPollTimer=()=>{this.authPollTimerId!==null&&(window.clearTimeout(this.authPollTimerId),this.authPollTimerId=null)},this.getBrowserAuthSummary=()=>{let e=V.getState();return{sessionId:e.authSessionId,expiresAt:e.authExpiresAt?s(e.authExpiresAt):`-`}}}},H=B(e=>({enabled:!1,deviceName:``,platformApiBase:``,advancedOpen:!1,draftTouched:!1,actionLabel:null,doctor:null,setEnabled:t=>e({enabled:t,draftTouched:!0}),setDeviceName:t=>e({deviceName:t,draftTouched:!0}),setPlatformApiBase:t=>e({platformApiBase:t,draftTouched:!0}),setAdvancedOpen:t=>e({advancedOpen:t}),hydrateDraft:({enabled:t,deviceName:n,platformApiBase:r})=>e({enabled:t,deviceName:n,platformApiBase:r,draftTouched:!1}),beginAction:t=>e({actionLabel:t}),finishAction:()=>e({actionLabel:null}),setDoctor:t=>e({doctor:t})})),Kn=class{constructor(){this.accountManager=null,this.bindAccountManager=e=>{this.accountManager=e},this.syncStatus=e=>{if(!e)return;let t=H.getState();t.draftTouched||t.actionLabel||this.hydrateDraftFromStatus(e)},this.setEnabled=e=>{H.getState().setEnabled(e)},this.setDeviceName=e=>{H.getState().setDeviceName(e)},this.setPlatformApiBase=e=>{H.getState().setPlatformApiBase(e)},this.setAdvancedOpen=e=>{H.getState().setAdvancedOpen(e)},this.enableRemoteAccess=async e=>{let t=e??await R(),n=H.getState();if(!t.account.loggedIn){await this.accountManager?.ensureSignedIn({pendingAction:{type:`enable-remote`},apiBase:n.platformApiBase});return}await this.applyEnabledState(!0,t)},this.disableRemoteAccess=async e=>{let t=e??await R();await this.applyEnabledState(!1,t)},this.repairRemoteAccess=async e=>{let t=e??await R();if(!t.account.loggedIn){await this.accountManager?.ensureSignedIn({pendingAction:{type:`enable-remote`}});return}let n=t.service.running?`restart`:`start`;await this.runManagedAction({actionLabel:i(n===`restart`?`remoteActionRestarting`:`remoteActionStarting`),job:async()=>{await I(n);let e=await R();this.hydrateDraftFromStatus(e)},successMessage:i(`remoteServiceRecovered`)})},this.reauthorizeRemoteAccess=async e=>{let t=e??await R();await this.accountManager?.startBrowserSignIn({status:t,apiBase:H.getState().platformApiBase,pendingAction:{type:`repair-remote`}})},this.saveAdvancedSettings=async e=>{let t=e??await R(),n=H.getState();await this.runManagedAction({actionLabel:i(`remoteActionSavingAdvanced`),job:async()=>{await Nn({enabled:n.enabled,deviceName:n.deviceName.trim(),platformApiBase:n.platformApiBase.trim()});let e=await R();this.hydrateDraftFromStatus(e)},successMessage:t.settings.enabled===n.enabled?i(`remoteSettingsSaved`):i(`remoteAdvancedSaved`)})},this.runDoctor=async()=>{await this.runManagedAction({actionLabel:i(`remoteDoctorRunning`),job:async()=>{let e=await On();H.getState().setDoctor(e)},successMessage:i(`remoteDoctorCompleted`)})},this.startService=async()=>{await this.runServiceAction(`start`,i(`remoteActionStarting`))},this.restartService=async()=>{await this.runServiceAction(`restart`,i(`remoteActionRestarting`))},this.stopService=async()=>{await this.runServiceAction(`stop`,i(`remoteActionStopping`))},this.resumePendingActionAfterSignIn=async(e,t)=>{if(e){if(e.type===`enable-remote`){await this.applyEnabledState(!0,t);return}e.type===`repair-remote`&&await this.repairRemoteAccess(t)}},this.applyEnabledState=async(e,t)=>{let n=H.getState();await this.runManagedAction({actionLabel:i(e?`remoteActionEnabling`:`remoteActionDisabling`),job:async()=>{await Nn({enabled:e,deviceName:n.deviceName.trim(),platformApiBase:n.platformApiBase.trim()});let r=await R();this.hydrateDraftFromStatus(r),e?await I(r.service.running?`restart`:`start`):t.service.running&&await I(`restart`);let i=await R();this.hydrateDraftFromStatus(i)},successMessage:i(e?`remoteEnabledReady`:`remoteDisabledDone`)})},this.runServiceAction=async(e,t)=>{await this.runManagedAction({actionLabel:t,job:async()=>{let t=await I(e),n=await R();this.hydrateDraftFromStatus(n),m.success(t.message)}})},this.hydrateDraftFromStatus=e=>{H.getState().hydrateDraft({enabled:e.settings.enabled,deviceName:e.settings.deviceName,platformApiBase:e.settings.platformApiBase})},this.runManagedAction=async e=>{H.getState().beginAction(e.actionLabel);try{await e.job(),e.successMessage&&m.success(e.successMessage)}catch(e){let t=e instanceof Error?e.message:i(`error`);throw m.error(t),e}finally{H.getState().finishAction()}}}},U=new class{constructor(){this.accountManager=new Gn,this.remoteAccessManager=new Kn}};U.accountManager.bindSignedInContinuation(U.remoteAccessManager.resumePendingActionAfterSignIn),U.remoteAccessManager.bindAccountManager(U.accountManager);var qn=(0,k.createContext)(null);function Jn({children:e}){return(0,A.jsx)(qn.Provider,{value:U,children:e})}function Yn(){let e=(0,k.useContext)(qn);if(!e)throw Error(`useAppPresenter must be used inside AppPresenterProvider`);return e}function W({label:e,value:t}){return(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-4 py-2 text-sm`,children:[(0,A.jsx)(`span`,{className:`text-gray-500`,children:e}),(0,A.jsx)(`span`,{className:`text-right text-gray-900`,children:t?.trim()||`-`})]})}function Xn(e){let{email:t,username:n,role:r,canSubmitUsername:a,savingUsername:o,usernameDraft:s,onUsernameDraftChange:c,onSubmitUsername:l,onOpenDeviceList:u,onLogout:d}=e;return(0,A.jsxs)(`div`,{className:`space-y-4`,children:[(0,A.jsx)(F,{tone:`success`,title:i(`accountPanelSignedInTitle`),description:i(`accountPanelSignedInDescription`)}),(0,A.jsxs)(F,{tone:`neutral`,children:[(0,A.jsx)(W,{label:i(`remoteAccountEmail`),value:t}),(0,A.jsx)(W,{label:i(`remoteAccountUsername`),value:n}),(0,A.jsx)(W,{label:i(`remoteAccountRole`),value:r})]}),n?(0,A.jsx)(`p`,{className:`text-xs text-gray-500`,children:i(`remoteAccountUsernameLockedHelp`)}):(0,A.jsxs)(F,{tone:`warning`,title:i(`remoteAccountUsernameRequiredTitle`),description:i(`remoteAccountUsernameRequiredDescription`),children:[(0,A.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[(0,A.jsx)(Cn,{htmlFor:`account-panel-username`,children:i(`remoteAccountUsername`)}),(0,A.jsx)(P,{id:`account-panel-username`,value:s,onChange:e=>c(e.target.value),placeholder:i(`remoteAccountUsernamePlaceholder`),autoCapitalize:`none`,autoCorrect:`off`,spellCheck:!1})]}),(0,A.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-3`,children:(0,A.jsx)(h,{disabled:!a,onClick:()=>void l(),children:i(o?`remoteAccountUsernameSaving`:`remoteAccountUsernameSave`)})})]}),(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[(0,A.jsxs)(h,{onClick:()=>void u(),children:[(0,A.jsx)(fn,{className:`mr-2 h-4 w-4`}),i(`remoteOpenDeviceList`)]}),(0,A.jsxs)(h,{variant:`outline`,onClick:()=>void d(),children:[(0,A.jsx)(nn,{className:`mr-2 h-4 w-4`}),i(`remoteLogout`)]})]})]})}function Zn(e){let{authSessionId:t,authExpiresAt:n,authStatusMessage:r,authVerificationUri:a,onStartBrowserSignIn:o,onResumeBrowserSignIn:c}=e;return(0,A.jsxs)(`div`,{className:`space-y-4`,children:[(0,A.jsx)(F,{tone:`neutral`,title:i(`accountPanelSignedOutTitle`),description:i(`accountPanelSignedOutDescription`),children:t?(0,A.jsxs)(`div`,{className:`mt-3 border-t border-white/80 pt-3`,children:[(0,A.jsx)(W,{label:i(`remoteBrowserAuthSession`),value:t}),(0,A.jsx)(W,{label:i(`remoteBrowserAuthExpiresAt`),value:n?s(n):`-`})]}):null}),r?(0,A.jsx)(`p`,{className:`text-sm text-gray-600`,children:r}):null,(0,A.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[(0,A.jsx)(h,{onClick:()=>void o(),children:i(t?`remoteBrowserAuthActionRetry`:`remoteBrowserAuthAction`)}),a?(0,A.jsx)(h,{variant:`outline`,onClick:c,children:i(`remoteBrowserAuthResume`)}):null]})]})}function Qn(){let e=Yn(),t=zn(),n=V(e=>e.panelOpen),r=V(e=>e.authSessionId),a=V(e=>e.authVerificationUri),o=V(e=>e.authExpiresAt),s=V(e=>e.authStatusMessage),c=t.data,[l,u]=(0,k.useState)(``),[d,f]=(0,k.useState)(!1);(0,k.useEffect)(()=>{e.accountManager.syncRemoteStatus(c)},[e,c]);let p=!d&&l.trim().length>0&&!c?.account.username;return(0,A.jsx)(hn,{open:n,onOpenChange:t=>t?e.accountManager.openAccountPanel():e.accountManager.closeAccountPanel(),children:(0,A.jsxs)(vn,{className:`max-w-xl`,children:[(0,A.jsxs)(yn,{children:[(0,A.jsxs)(xn,{className:`flex items-center gap-2`,children:[(0,A.jsx)(N,{className:`h-5 w-5 text-primary`}),i(`accountPanelTitle`)]}),(0,A.jsx)(Sn,{children:i(`accountPanelDescription`)})]}),c?.account.loggedIn?(0,A.jsx)(Xn,{email:c.account.email,username:c.account.username,role:c.account.role,canSubmitUsername:p,savingUsername:d,usernameDraft:l,onUsernameDraftChange:u,onSubmitUsername:async()=>{f(!0);try{await e.accountManager.updateUsername(l)}finally{f(!1)}},onOpenDeviceList:()=>e.accountManager.openNextClawWeb(`/account`),onLogout:()=>e.accountManager.logout()}):(0,A.jsx)(Zn,{authSessionId:r,authExpiresAt:o,authStatusMessage:s,authVerificationUri:a,onStartBrowserSignIn:()=>e.accountManager.startBrowserSignIn(),onResumeBrowserSignIn:()=>e.accountManager.resumeBrowserSignIn()})]})})}var $n=k.forwardRef(({className:e,hover:t=!0,...n},r)=>(0,A.jsx)(`div`,{ref:r,className:d(`rounded-2xl border border-gray-200/50 bg-white text-card-foreground shadow-card transition-all duration-base`,t&&`hover:shadow-card-hover hover:border-gray-200`,e),...n}));$n.displayName=`Card`;var er=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(`div`,{ref:n,className:d(`flex flex-col space-y-1.5 p-6`,e),...t}));er.displayName=`CardHeader`;var tr=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(`h3`,{ref:n,className:d(`text-[15px] font-semibold leading-tight tracking-tight text-gray-900`,e),...t}));tr.displayName=`CardTitle`;var nr=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(`p`,{ref:n,className:d(`text-[13px] text-gray-400 leading-relaxed`,e),...t}));nr.displayName=`CardDescription`;var rr=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(`div`,{ref:n,className:d(`p-6 pt-0`,e),...t}));rr.displayName=`CardContent`;var ir=k.forwardRef(({className:e,...t},n)=>(0,A.jsx)(`div`,{ref:n,className:d(`flex items-center justify-between p-6 pt-0`,e),...t}));ir.displayName=`CardFooter`;var ar=40,or=400;function sr(e){if(!(e instanceof Error))return!1;let t=e.message.trim().toLowerCase();return t?t.includes(`failed to fetch`)||t.includes(`networkerror`)||t.includes(`network request failed`)||t.includes(`load failed`)||t.includes(`request timed out`)||t.includes(`timed out waiting for remote request response`)||t.includes(`remote transport connection closed`):!1}function cr(e,t){return e>=ar?!1:sr(t)}function lr(){let[e,t]=(0,k.useState)(!1),n=y({queryKey:[`auth-status`],queryFn:()=>Xe({timeoutMs:e?5e3:or}),staleTime:5e3,retry:cr,retryDelay:250,refetchOnWindowFocus:!0});return(0,k.useEffect)(()=>{n.isSuccess&&!e&&t(!0)},[e,n.isSuccess]),n}function G(e){return Promise.all([e.invalidateQueries({queryKey:[`auth-status`]}),e.invalidateQueries({queryKey:[`app-meta`]}),e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),e.invalidateQueries({queryKey:[`config-schema`]}),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session-history`]}),e.invalidateQueries({queryKey:[`chat-runs`]}),e.invalidateQueries({queryKey:[`cron-jobs`]})])}function ur(){let e=b();return C({mutationFn:nt,onSuccess:async()=>{await G(e),m.success(i(`authSetupSuccess`))},onError:e=>{m.error(`${i(`authActionFailed`)}: ${e.message}`)}})}function dr(){let e=b();return C({mutationFn:Ze,onSuccess:async()=>{await G(e),m.success(i(`authLoginSuccess`))},onError:e=>{m.error(`${i(`authActionFailed`)}: ${e.message}`)}})}function fr(){let e=b();return C({mutationFn:Je,onSuccess:async()=>{await G(e),m.success(i(`authLogoutSuccess`))},onError:e=>{m.error(`${i(`authActionFailed`)}: ${e.message}`)}})}function pr(){let e=b();return C({mutationFn:Le,onSuccess:async()=>{await G(e),m.success(i(`authPasswordUpdated`))},onError:e=>{m.error(`${i(`authActionFailed`)}: ${e.message}`)}})}function mr(){let e=b();return C({mutationFn:it,onSuccess:async(t,n)=>{await G(e),m.success(n.enabled?i(`authEnabledSuccess`):i(`authDisabledSuccess`))},onError:e=>{m.error(`${i(`authActionFailed`)}: ${e.message}`)}})}function hr({username:e}){let t=dr(),[n,r]=(0,k.useState)(e??``),[a,o]=(0,k.useState)(``),s=n.trim().length>0&&a.length>0&&!t.isPending;return(0,A.jsx)(`main`,{className:`flex min-h-screen items-center justify-center bg-secondary px-6 py-10`,children:(0,A.jsxs)($n,{hover:!1,className:`w-full max-w-md shadow-card-hover`,children:[(0,A.jsxs)(er,{children:[(0,A.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.24em] text-gray-500`,children:i(`authBrand`)}),(0,A.jsx)(tr,{className:`text-2xl`,children:i(`authLoginTitle`)}),(0,A.jsx)(nr,{children:i(`authLoginDescription`)})]}),(0,A.jsx)(rr,{children:(0,A.jsxs)(`form`,{className:`space-y-4`,onSubmit:e=>{e?.preventDefault(),s&&t.mutate({username:n.trim(),password:a})},children:[(0,A.jsxs)(`div`,{className:`space-y-2`,children:[(0,A.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:i(`authUsername`)}),(0,A.jsx)(P,{value:n,onChange:e=>r(e.target.value),placeholder:i(`authUsernamePlaceholder`),autoFocus:!0})]}),(0,A.jsxs)(`div`,{className:`space-y-2`,children:[(0,A.jsx)(`label`,{className:`text-sm font-medium text-gray-800`,children:i(`authPassword`)}),(0,A.jsx)(P,{type:`password`,value:a,onChange:e=>o(e.target.value),placeholder:i(`authPasswordPlaceholder`)})]}),(0,A.jsx)(h,{type:`submit`,className:`w-full`,disabled:!s,children:t.isPending?i(`authLoggingIn`):i(`authLoginAction`)})]})})]})})}var gr=`nextclaw.ui.theme`,_r=[{value:`warm`,labelKey:`themeWarm`},{value:`cool`,labelKey:`themeCool`}],K=`warm`,vr=!1,yr=new Set;function br(e){return e===`warm`||e===`cool`}function xr(e){typeof document>`u`||document.documentElement.setAttribute(`data-theme`,e)}function Sr(){if(typeof window>`u`)return`warm`;try{let e=window.localStorage.getItem(gr);if(br(e))return e}catch{}return`warm`}function Cr(){return vr||=(K=Sr(),xr(K),!0),K}function wr(){return vr?K:Cr()}function Tr(e){if(Cr(),e!==K){if(K=e,xr(K),typeof window<`u`)try{window.localStorage.setItem(gr,K)}catch{}yr.forEach(e=>e(K))}}function Er(e){return yr.add(e),()=>{yr.delete(e)}}function Dr(){let e=ot();(0,k.useEffect)(()=>{let t=t=>{let n=t.target.closest(`a[href]`);if(!n)return;let r=n.getAttribute(`href`)||``;ct(r)&&(n.hasAttribute(`data-doc-external`)||t.ctrlKey||t.metaKey||t.shiftKey||(t.preventDefault(),t.stopPropagation(),e.open(r)))};return document.addEventListener(`click`,t,!0),()=>document.removeEventListener(`click`,t,!0)},[e])}function Or(e){return[...e].sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))}function kr(e,t){let n=t.updatedAt.localeCompare(e.updatedAt);return n>0?!0:n<0?!1:e.status===t.status?!0:t.status===`idle`}function Ar(e,t){if(!e)return e;let n=e.sessions.findIndex(e=>e.sessionId===t.sessionId),r=Or(n>=0?e.sessions.map((e,r)=>r===n&&kr(e,t)?t:e):[...e.sessions,t]);return{...e,sessions:r,total:r.length}}function jr(e,t){if(!e)return e;let n=t.trim();if(!n)return e;let r=e.sessions.filter(e=>e.sessionId!==n);return r.length===e.sessions.length?e:{...e,sessions:r,total:r.length}}function Mr(e,t){e?.setQueriesData({queryKey:[`ncp-sessions`]},e=>Ar(e,t))}function Nr(e,t){if(!e)return e;let n=t.sessionKey.trim();if(!n)return e;let r=!1,i=e.sessions.map(e=>e.sessionId!==n||e.status===t.status?e:(r=!0,{...e,status:t.status}));return r?{...e,sessions:i}:e}function Pr(e,t){e?.setQueriesData({queryKey:[`ncp-sessions`]},e=>Nr(e,t))}function Fr(e,t){e?.setQueriesData({queryKey:[`ncp-sessions`]},e=>jr(e,t))}function Ir(e,t){if(t.type===`session.run-status`){Pr(e,t.payload);return}if(t.type===`session.summary.upsert`){Mr(e,t.payload.summary);return}Fr(e,t.payload.sessionKey)}async function Lr(e){let t=new URLSearchParams;typeof e?.limit==`number`&&Number.isFinite(e.limit)&&t.set(`limit`,String(Math.max(1,Math.trunc(e.limit))));let n=t.toString(),r=await x.get(n?`/api/ncp/sessions?${n}`:`/api/ncp/sessions`);if(!r.ok)throw Error(r.error.message);return r.data}async function Rr(e,t=200){let n=await x.get(`/api/ncp/sessions/${encodeURIComponent(e)}/messages?limit=${Math.max(1,Math.trunc(t))}`);if(!n.ok)throw Error(n.error.message);return n.data}async function zr(e,t){let n=new URLSearchParams,r=t?.projectRoot?.trim();r&&n.set(`projectRoot`,r);let i=n.toString(),a=await x.get(i?`/api/ncp/sessions/${encodeURIComponent(e)}/skills?${i}`:`/api/ncp/sessions/${encodeURIComponent(e)}/skills`);if(!a.ok)throw Error(a.error.message);return a.data}async function Br(e,t){let n=await x.put(`/api/ncp/sessions/${encodeURIComponent(e)}`,t);if(!n.ok)throw Error(n.error.message);return n.data}async function Vr(e){let t=await x.delete(`/api/ncp/sessions/${encodeURIComponent(e)}`);if(!t.ok)throw Error(t.error.message);return t.data}function Hr(){return y({queryKey:[`config`],queryFn:$e,staleTime:3e4,refetchOnWindowFocus:!0})}function Ur(){return y({queryKey:[`app-meta`],queryFn:Be,staleTime:1/0})}function Wr(){return y({queryKey:[`config-meta`],queryFn:He,staleTime:1/0})}function Gr(){return y({queryKey:[`config-schema`],queryFn:qe,staleTime:1/0})}function Kr(){let e=b();return C({mutationFn:rt,onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),m.success(i(`configSaved`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function qr(){let e=b();return C({mutationFn:({data:e})=>Pe(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function Jr(){let e=b();return C({mutationFn:({provider:e,data:t})=>Re(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),m.success(i(`configSaved`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function Yr(){let e=b();return C({mutationFn:({data:e})=>et(e??{}),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),m.success(i(`configSaved`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function Xr(){let e=b();return C({mutationFn:({provider:e})=>Qe(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),m.success(i(`configSaved`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function Zr(){return C({mutationFn:({provider:e,data:t})=>Ve(e,t)})}function Qr(){return C({mutationFn:({provider:e,data:t})=>at(e,t)})}function $r(){return C({mutationFn:({provider:e,data:t})=>Ge(e,t)})}function ei(){return C({mutationFn:({provider:e})=>Ue(e)})}function ti(){let e=b();return C({mutationFn:({channel:e,data:t})=>Ne(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),m.success(i(`configSavedApplying`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function ni(){let e=b();return C({mutationFn:({data:e})=>Fe(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function ri(){let e=b();return C({mutationFn:({data:e})=>Ie(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`config`]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function ii(){return C({mutationFn:({actionId:e,data:t})=>Ke(e,t),onError:e=>{m.error(i(`error`)+`: `+e.message)}})}function ai(e){return y({queryKey:[`ncp-sessions`,e?.limit??null],queryFn:()=>Lr(e),staleTime:5e3,retry:!1})}function oi(e,t=200){return y({queryKey:[`ncp-session-messages`,e,t],queryFn:()=>Rr(e,t),enabled:!!e,staleTime:5e3,retry:!1})}function si(e){return y({queryKey:[`ncp-session-skills`,e.sessionId,e.projectRoot??null],queryFn:()=>zr(e.sessionId,{...Object.prototype.hasOwnProperty.call(e,`projectRoot`)?{projectRoot:e.projectRoot??null}:{}}),enabled:!!e.sessionId,staleTime:5e3,retry:!1})}function ci(){let e=b();return C({mutationFn:({sessionId:e})=>Vr(e),onSuccess:(t,n)=>{Fr(e,n.sessionId),e.removeQueries({queryKey:[`ncp-session-messages`,n.sessionId]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function li(){let e=b();return C({mutationFn:({sessionId:e,data:t})=>Br(e,t),onSuccess:t=>{Mr(e,t),e.invalidateQueries({queryKey:[`ncp-session-skills`,t.sessionId]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function ui(e={all:!0}){return y({queryKey:[`cron`,e],queryFn:()=>tt(e),staleTime:1e4})}function di(){let e=b();return C({mutationFn:({id:e})=>Ye(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`cron`]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function fi(){let e=b();return C({mutationFn:({id:e,enabled:t})=>ze(e,{enabled:t}),onSuccess:()=>{e.invalidateQueries({queryKey:[`cron`]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}function pi(){let e=b();return C({mutationFn:({id:e,force:t})=>We(e,{force:t}),onSuccess:()=>{e.invalidateQueries({queryKey:[`cron`]}),m.success(i(`configSavedApplied`))},onError:e=>{m.error(i(`configSaveFailed`)+`: `+e.message)}})}async function mi(){let e=await x.get(`/api/runtime/control`);if(!e.ok)throw Error(e.error.message);return e.data}async function hi(){let e=await x.post(`/api/runtime/control/start-service`,{});if(!e.ok)throw Error(e.error.message);return e.data}async function gi(){let e=await x.post(`/api/runtime/control/restart-service`,{});if(!e.ok)throw Error(e.error.message);return e.data}async function _i(){let e=await x.post(`/api/runtime/control/stop-service`,{});if(!e.ok)throw Error(e.error.message);return e.data}var vi=new class{constructor(){this.getControl=async()=>this.decorateForCurrentEnvironment(await mi()),this.controlService=async e=>{let t=this.getDesktopBridge();if(e===`restart-service`&&t&&typeof t.restartService==`function`){let e=await t.restartService();return{accepted:e.accepted,action:`restart-service`,lifecycle:e.lifecycle,message:e.message}}return e===`start-service`?await hi():e===`stop-service`?await _i():await gi()},this.restartApp=async()=>{let e=this.getDesktopBridge();if(!e||typeof e.restartApp!=`function`)throw Error(i(`runtimeRestartAppUnavailable`));let t=await e.restartApp();return{accepted:t.accepted,action:`restart-app`,lifecycle:t.lifecycle,message:t.message}},this.waitForRecovery=async(e={})=>{let t=e.timeoutMs??25e3,n=e.pollIntervalMs??1500,r=Date.now()+t,a=null;for(;Date.now()<r;)try{return await this.getControl()}catch(e){a=e,await this.sleep(n)}throw a instanceof Error?a:Error(i(`runtimeRecoveryTimedOut`))},this.decorateForCurrentEnvironment=e=>{let t=this.getDesktopBridge();return!t||typeof t.restartApp!=`function`?e:{...e,environment:`desktop-embedded`,serviceState:`running`,canStartService:{available:!1,requiresConfirmation:!1,impact:`none`},canStopService:{available:!1,requiresConfirmation:!0,impact:`brief-ui-disconnect`},canRestartApp:{available:!0,requiresConfirmation:!0,impact:`full-app-relaunch`},ownerLabel:i(`runtimeControlEnvironmentDesktop`),managementHint:i(`runtimeControlDesktopServiceHint`)}},this.getDesktopBridge=()=>typeof window>`u`?null:window.nextclawDesktop??null,this.sleep=async e=>{await new Promise(t=>{window.setTimeout(t,e)})}}};function yi(){return y({queryKey:[`runtime-control`],queryFn:async()=>await vi.getControl(),staleTime:5e3,refetchOnWindowFocus:!0})}function bi(){let e=b();return C({mutationFn:async e=>await vi.controlService(e),onSuccess:async()=>{await e.invalidateQueries({queryKey:[`runtime-control`]})}})}var xi=`Popover`,[Si,Ci]=ye(xi,[ue]),q=ue(),[wi,J]=Si(xi),Ti=e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,s=q(t),c=k.useRef(null),[l,u]=k.useState(!1),[d,f]=Ee({prop:r,defaultProp:i??!1,onChange:a,caller:xi});return(0,A.jsx)(ve,{...s,children:(0,A.jsx)(wi,{scope:t,contentId:ce(),triggerRef:c,open:d,onOpenChange:f,onOpenToggle:k.useCallback(()=>f(e=>!e),[f]),hasCustomAnchor:l,onCustomAnchorAdd:k.useCallback(()=>u(!0),[]),onCustomAnchorRemove:k.useCallback(()=>u(!1),[]),modal:o,children:n})})};Ti.displayName=xi;var Ei=`PopoverAnchor`,Di=k.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=J(Ei,n),a=q(n),{onCustomAnchorAdd:o,onCustomAnchorRemove:s}=i;return k.useEffect(()=>(o(),()=>s()),[o,s]),(0,A.jsx)(_e,{...a,...r,ref:t})});Di.displayName=Ei;var Oi=`PopoverTrigger`,ki=k.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=J(Oi,n),a=q(n),o=E(t,i.triggerRef),s=(0,A.jsx)(T.button,{type:`button`,"aria-haspopup":`dialog`,"aria-expanded":i.open,"aria-controls":i.contentId,"data-state":Ui(i.open),...r,ref:o,onClick:w(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,A.jsx)(_e,{asChild:!0,...a,children:s})});ki.displayName=Oi;var Ai=`PopoverPortal`,[ji,Mi]=Si(Ai,{forceMount:void 0}),Ni=e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=J(Ai,t);return(0,A.jsx)(ji,{scope:t,forceMount:n,children:(0,A.jsx)(D,{present:n||a.open,children:(0,A.jsx)(he,{asChild:!0,container:i,children:r})})})};Ni.displayName=Ai;var Y=`PopoverContent`,Pi=k.forwardRef((e,t)=>{let n=Mi(Y,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=J(Y,e.__scopePopover);return(0,A.jsx)(D,{present:r||a.open,children:a.modal?(0,A.jsx)(Ii,{...i,ref:t}):(0,A.jsx)(Li,{...i,ref:t})})});Pi.displayName=Y;var Fi=pe(`PopoverContent.RemoveScroll`),Ii=k.forwardRef((e,t)=>{let n=J(Y,e.__scopePopover),r=k.useRef(null),i=E(t,r),a=k.useRef(!1);return k.useEffect(()=>{let e=r.current;if(e)return se(e)},[]),(0,A.jsx)(xe,{as:Fi,allowPinchZoom:!0,children:(0,A.jsx)(Ri,{...e,ref:i,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:w(e.onCloseAutoFocus,e=>{e.preventDefault(),a.current||n.triggerRef.current?.focus()}),onPointerDownOutside:w(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=t.button===0&&t.ctrlKey===!0;a.current=t.button===2||n},{checkForDefaultPrevented:!1}),onFocusOutside:w(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),Li=k.forwardRef((e,t)=>{let n=J(Y,e.__scopePopover),r=k.useRef(!1),i=k.useRef(!1);return(0,A.jsx)(Ri,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||n.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,i.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,t.detail.originalEvent.type===`pointerdown`&&(i.current=!0));let a=t.target;n.triggerRef.current?.contains(a)&&t.preventDefault(),t.detail.originalEvent.type===`focusin`&&i.current&&t.preventDefault()}})}),Ri=k.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onInteractOutside:u,...d}=e,f=J(Y,n),p=q(n);return me(),(0,A.jsx)(ge,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:i,onUnmountAutoFocus:a,children:(0,A.jsx)(de,{asChild:!0,disableOutsidePointerEvents:o,onInteractOutside:u,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:l,onDismiss:()=>f.onOpenChange(!1),children:(0,A.jsx)(Te,{"data-state":Ui(f.open),role:`dialog`,id:f.contentId,...p,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-popover-content-available-width":`var(--radix-popper-available-width)`,"--radix-popover-content-available-height":`var(--radix-popper-available-height)`,"--radix-popover-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-popover-trigger-height":`var(--radix-popper-anchor-height)`}})})})}),zi=`PopoverClose`,Bi=k.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=J(zi,n);return(0,A.jsx)(T.button,{type:`button`,...r,ref:t,onClick:w(e.onClick,()=>i.onOpenChange(!1))})});Bi.displayName=zi;var Vi=`PopoverArrow`,Hi=k.forwardRef((e,t)=>{let{__scopePopover:n,...r}=e,i=q(n);return(0,A.jsx)(le,{...i,...r,ref:t})});Hi.displayName=Vi;function Ui(e){return e?`open`:`closed`}var Wi=Ti,Gi=Di,Ki=ki,qi=Ni,Ji=Pi,Yi=Wi,Xi=Ki,Zi=k.forwardRef(({className:e,sideOffset:t=8,align:n=`start`,...r},i)=>(0,A.jsx)(qi,{children:(0,A.jsx)(Ji,{ref:i,sideOffset:t,align:n,className:d(`z-[var(--z-popover,50)] w-72 overflow-hidden rounded-2xl border border-gray-200/50 bg-white p-4 shadow-lg animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...r})}));Zi.displayName=Ji.displayName;var Qi={healthy:`bg-emerald-500 shadow-[0_0_0_3px_rgba(16,185,129,0.14)]`,attention:`bg-amber-400 shadow-[0_0_0_3px_rgba(251,191,36,0.16)]`,inactive:`bg-gray-300 shadow-[0_0_0_3px_rgba(156,163,175,0.12)]`};function $i(e){return e?e.pendingRestart?{tone:`attention`,title:i(`runtimeStatusPendingRestartTitle`),description:i(`runtimeStatusPendingRestartDescription`),reasonLines:e.pendingRestart.changedPaths.length>0?e.pendingRestart.changedPaths.map(e=>i(`runtimeStatusPendingRestartReasonItem`).replace(`{path}`,e)):[e.pendingRestart.message],actionLabel:e.canRestartService.available?i(`runtimeStatusRestartAction`):null}:{tone:e.lifecycle===`healthy`?`healthy`:`inactive`,title:i(`runtimeStatusHealthyTitle`),description:i(`runtimeStatusHealthyDescription`),reasonLines:[],actionLabel:null}:{tone:`inactive`,title:i(`runtimeStatusLoadingTitle`),description:i(`runtimeStatusLoadingDescription`),reasonLines:[],actionLabel:null}}function ea(){let e=b(),t=yi(),[n,r]=(0,k.useState)(!1),a=t.data,o=$i(a),s=t.isError?i(`runtimeControlLoadFailed`):o.title,c=t.isError&&t.error instanceof Error?t.error.message:o.description,l=!!(a?.pendingRestart&&a.canRestartService.available),u=async()=>{if(l){r(!0);try{let t=await vi.controlService(`restart-service`);m.success(t.message),await e.invalidateQueries({queryKey:[`runtime-control`]})}catch(e){let t=e instanceof Error?e.message:i(`runtimeControlActionFailed`);m.error(`${i(`runtimeControlActionFailed`)}: ${t}`)}finally{r(!1)}}};return(0,A.jsxs)(Yi,{children:[(0,A.jsx)(Xi,{asChild:!0,children:(0,A.jsx)(`button`,{type:`button`,className:`inline-flex items-center justify-center rounded-full p-0.5 transition-transform hover:scale-105`,"aria-label":s,title:s,"data-testid":`runtime-status-entry`,children:(0,A.jsx)(`span`,{className:d(`h-2.5 w-2.5 rounded-full`,Qi[o.tone])})})}),(0,A.jsxs)(Zi,{align:`start`,sideOffset:10,className:`w-[290px] space-y-3 rounded-2xl border border-gray-200 bg-white p-4`,children:[(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsx)(`div`,{className:`text-sm font-semibold text-gray-900`,children:s}),(0,A.jsx)(`p`,{className:`text-xs leading-5 text-gray-600`,children:c})]}),o.reasonLines.length>0?(0,A.jsx)(`div`,{className:`space-y-2`,children:o.reasonLines.map(e=>(0,A.jsx)(`div`,{className:`rounded-xl border border-amber-200 bg-amber-50 px-3 py-2 text-xs leading-5 text-amber-900`,children:e},e))}):null,o.actionLabel?(0,A.jsxs)(`div`,{className:`flex items-center justify-between border-t border-gray-100 pt-1`,children:[(0,A.jsx)(`span`,{className:`text-[11px] text-gray-500`,children:i(`runtimeStatusActionHint`)}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>void u(),disabled:n,className:`text-sm font-semibold text-sky-600 transition-colors hover:text-sky-700 disabled:text-gray-400`,children:n?i(`runtimeStatusRestartingAction`):o.actionLabel})]}):null]})]})}function ta({className:e,suffix:t}){let{data:n}=Ur(),r=n?.name??`NextClaw`,i=n?.productVersion?.trim(),a=t??(0,A.jsx)(ea,{});return(0,A.jsxs)(`div`,{className:e??`flex items-center gap-2.5`,children:[(0,A.jsx)(`div`,{className:`h-7 w-7 rounded-lg overflow-hidden flex items-center justify-center`,children:(0,A.jsx)(`img`,{src:`/logo.svg`,alt:r,className:`h-full w-full object-contain`})}),(0,A.jsxs)(`div`,{className:`flex items-baseline gap-2 min-w-0`,children:[(0,A.jsx)(`span`,{className:`truncate text-[15px] font-semibold tracking-[-0.01em] text-gray-800`,children:r}),i?(0,A.jsxs)(`span`,{className:`text-[13px] font-medium text-gray-500`,children:[`v`,i]}):null,a?(0,A.jsx)(`span`,{className:`inline-flex items-center shrink-0`,children:a}):null]})]})}var na={default:{row:`gap-3 px-3 py-2.5 text-[14px]`,icon:`h-[17px] w-[17px]`,value:`text-xs`,gap:`gap-3`},compact:{row:`gap-2.5 px-3 py-2 text-[13px]`,icon:`h-4 w-4`,value:`text-[11px]`,gap:`gap-2.5`}};function ra(e){return na[e]}function ia({to:e,label:t,icon:n,density:r=`default`,className:i}){let a=ra(r);return(0,A.jsx)(ne,{to:e,className:({isActive:e})=>d(`group flex w-full items-center rounded-xl font-medium transition-colors duration-base`,a.row,e?`bg-gray-200 text-gray-900 shadow-sm`:`text-gray-600 hover:bg-gray-200/60 hover:text-gray-900`,i),children:({isActive:e})=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(n,{className:d(a.icon,`transition-colors`,e?`text-gray-900`:`text-gray-500 group-hover:text-gray-800`)}),(0,A.jsx)(`span`,{className:`min-w-0 flex-1 text-left`,children:t})]})})}function aa({label:e,icon:t,onClick:n,density:r=`default`,className:i,labelClassName:a,trailing:o,trailingClassName:s,testId:c,trailingTestId:l}){let u=ra(r);return(0,A.jsxs)(`button`,{type:`button`,onClick:n,className:d(`flex w-full items-center rounded-xl font-medium text-gray-600 transition-all duration-base hover:bg-gray-200/60 hover:text-gray-800`,u.row,i),"data-testid":c,children:[(0,A.jsx)(t,{className:d(u.icon,`shrink-0 text-gray-400`)}),(0,A.jsx)(`span`,{className:d(`min-w-0 flex-1 text-left`,a),children:e}),o?(0,A.jsx)(`span`,{className:d(`shrink-0 text-gray-500`,u.value,s),"data-testid":l,children:o}):null]})}function oa({label:e,icon:t,value:n,valueLabel:r,onValueChange:i,density:a=`default`,children:o}){let s=ra(a);return(0,A.jsxs)(we,{value:n,onValueChange:i,children:[(0,A.jsxs)(be,{className:d(`h-auto w-full rounded-xl border-0 bg-transparent font-medium text-gray-600 shadow-none hover:bg-gray-200/60 focus:ring-0`,s.row),children:[(0,A.jsxs)(`div`,{className:d(`flex min-w-0 items-center`,s.gap),children:[(0,A.jsx)(t,{className:d(s.icon,`text-gray-400`)}),(0,A.jsx)(`span`,{className:`text-left`,children:e})]}),(0,A.jsx)(`span`,{className:d(`ml-auto text-gray-500`,s.value),children:r})]}),(0,A.jsx)(Se,{children:o})]})}var sa=(0,k.createContext)(null);function ca({children:e}){let[t,r]=(0,k.useState)(()=>u());(0,k.useEffect)(()=>a(e=>{r(e)}),[]);let i=(0,k.useCallback)(e=>{n(e),r(c())},[]),o=(0,k.useCallback)(()=>{i(t===`en`?`zh`:`en`)},[t,i]),s=(0,k.useMemo)(()=>({language:t,setLanguage:i,toggleLanguage:o}),[t,i,o]);return(0,A.jsx)(sa.Provider,{value:s,children:e})}function la(){let e=(0,k.useContext)(sa);if(!e)throw Error(`useI18n must be used within I18nProvider`);return{...e,t:i}}var ua={warm:`#F9F8F5`,cool:`#F8FAFB`},da=new class{constructor(){this.syncTheme=e=>{if(typeof document>`u`)return;let t=ua[e];this.updateThemeMeta(t),this.updateSurfaceBackgrounds(t),document.documentElement.style.colorScheme=`light`},this.syncCurrentTheme=()=>{if(typeof document>`u`)return;let e=document.documentElement.getAttribute(`data-theme`)===`cool`?`cool`:`warm`;this.syncTheme(e)},this.updateThemeMeta=e=>{let t=document.querySelector(`meta[name="theme-color"]`);t instanceof HTMLMetaElement&&(t.content=e)},this.updateSurfaceBackgrounds=e=>{document.documentElement.style.backgroundColor=e,document.body.style.backgroundColor=e;let t=document.getElementById(`root`);t&&(t.style.backgroundColor=e)}}},fa=(0,k.createContext)(null);function pa({children:e}){let[t,n]=(0,k.useState)(()=>Cr());(0,k.useEffect)(()=>{da.syncTheme(t)},[t]),(0,k.useEffect)(()=>Er(e=>{n(e)}),[]);let r=(0,k.useCallback)(e=>{Tr(e),n(wr())},[]),i=(0,k.useMemo)(()=>({theme:t,setTheme:r}),[t,r]);return(0,A.jsx)(fa.Provider,{value:i,children:e})}function ma(){let e=(0,k.useContext)(fa);if(!e)throw Error(`useTheme must be used within ThemeProvider`);return e}function ha({mode:e}){let n=Yn(),r=ot(),a=zn(),{language:o,setLanguage:s}=la(),{theme:c,setTheme:l}=ma(),u=e===`settings`,f=t.find(e=>e.value===o)?.label??o,p=i(_r.find(e=>e.value===c)?.labelKey??`themeWarm`),m=a.data?.account.email?.trim(),h=!!a.data?.account.loggedIn,ee=e=>{o!==e&&(s(e),window.location.reload())},te=e=>{c!==e&&l(e)},g=[{target:`/chat`,label:i(`chat`),icon:rn},{target:`/chat/cron`,label:i(`cron`),icon:Yt},{target:`/chat/skills`,label:i(`marketplaceFilterSkills`),icon:Zt},{target:`/agents`,label:i(`agentsPageTitle`),icon:Xt}],_=[{target:`/model`,label:i(`model`),icon:Qt},{target:`/providers`,label:i(`providers`),icon:dn},{target:`/channels`,label:i(`channels`),icon:an},{target:`/search`,label:i(`searchChannels`),icon:je},{target:`/marketplace/plugins`,label:i(`marketplaceFilterPlugins`),icon:sn},{target:`/marketplace/mcp`,label:i(`marketplaceFilterMcp`),icon:mn},{target:`/runtime`,label:i(`runtime`),icon:$t},{target:`/updates`,label:i(`updates`),icon:ke},{target:`/remote`,label:i(`remote`),icon:pn},{target:`/security`,label:i(`security`),icon:ln},{target:`/sessions`,label:i(`sessions`),icon:en},{target:`/secrets`,label:i(`secrets`),icon:N}],re=u?_:g,v=u?`compact`:`default`;return(0,A.jsxs)(`aside`,{className:`w-[240px] shrink-0 flex h-full min-h-0 flex-col overflow-hidden bg-secondary px-4 py-6`,children:[u?(0,A.jsx)(`div`,{className:`shrink-0 px-2 pb-3`,children:(0,A.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-1`,"data-testid":`settings-sidebar-header`,children:[(0,A.jsxs)(ne,{to:`/chat`,className:`group inline-flex min-w-0 items-center gap-1.5 rounded-lg px-1 py-1 text-[12px] font-medium text-gray-500 transition-colors hover:bg-gray-200/60 hover:text-gray-900`,children:[(0,A.jsx)(De,{className:`h-3.5 w-3.5 shrink-0 text-gray-400 group-hover:text-gray-700`}),(0,A.jsx)(`span`,{className:`truncate`,children:i(`backToMain`)})]}),(0,A.jsx)(`span`,{className:`h-4 w-px shrink-0 bg-[#dddfe6]`,"aria-hidden":`true`}),(0,A.jsx)(`h1`,{className:`truncate text-[15px] font-semibold tracking-[-0.01em] text-gray-800`,children:i(`settings`)})]})}):(0,A.jsx)(`div`,{className:`shrink-0 px-2 pb-8`,children:(0,A.jsx)(ta,{className:`flex items-center gap-2.5 cursor-pointer`})}),(0,A.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,A.jsx)(`nav`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto pr-1`,children:(0,A.jsx)(`ul`,{className:d(u?`space-y-0.5 pb-3`:`space-y-1 pb-4`),children:re.map(e=>(0,A.jsx)(`li`,{children:(0,A.jsx)(ia,{to:e.target,label:e.label,icon:e.icon,density:v})},e.target))})}),(0,A.jsxs)(`div`,{className:d(`shrink-0 border-t border-[#dde0ea] bg-secondary`,u?`mt-2 pt-3`:`mt-3 pt-3`),children:[u?(0,A.jsx)(aa,{onClick:()=>n.accountManager.openAccountPanel(),icon:N,label:i(`remoteAccountEntryManage`),density:`compact`,className:`mb-1.5`,trailing:h?m||i(`remoteAccountEntryConnected`):i(`remoteAccountEntryDisconnected`),trailingClassName:`max-w-[92px] truncate text-right`,testId:`settings-sidebar-account-entry`,trailingTestId:`settings-sidebar-account-status`}):null,e===`main`&&(0,A.jsx)(`div`,{className:`mb-2`,children:(0,A.jsx)(ia,{to:`/settings`,label:i(`settings`),icon:cn})}),(0,A.jsx)(`div`,{className:`mb-2`,children:(0,A.jsx)(oa,{value:c,onValueChange:e=>te(e),icon:on,label:i(`theme`),valueLabel:p,density:v,children:_r.map(e=>(0,A.jsx)(Ce,{value:e.value,className:`text-xs`,children:i(e.labelKey)},e.value))})}),(0,A.jsx)(`div`,{className:`mb-2`,children:(0,A.jsx)(oa,{value:o,onValueChange:e=>ee(e),icon:tn,label:i(`language`),valueLabel:f,density:v,children:t.map(e=>(0,A.jsx)(Ce,{value:e.value,className:`text-xs`,children:e.label},e.value))})}),(0,A.jsx)(aa,{onClick:()=>r.open(void 0,{kind:`docs`,newTab:!0,title:`Docs`}),icon:Oe,label:i(`docBrowserHelp`),density:v})]})]})]})}var ga=`NextClaw`,_a=[{prefix:`/marketplace/mcp`,key:`marketplaceMcpPageTitle`},{prefix:`/marketplace/plugins`,key:`marketplacePluginsPageTitle`},{prefix:`/marketplace/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/marketplace`,key:`marketplace`},{prefix:`/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/cron`,key:`cronPageTitle`},{prefix:`/agents`,key:`agentsPageTitle`},{prefix:`/chat`,key:`chat`},{prefix:`/model`,key:`modelPageTitle`},{prefix:`/search`,key:`searchPageTitle`},{prefix:`/providers`,key:`providersPageTitle`},{prefix:`/channels`,key:`channelsPageTitle`},{prefix:`/runtime`,key:`runtimePageTitle`},{prefix:`/updates`,key:`desktopUpdatesPageTitle`},{prefix:`/remote`,key:`remotePageTitle`},{prefix:`/security`,key:`authSecurityTitle`},{prefix:`/sessions`,key:`sessionsPageTitle`},{prefix:`/secrets`,key:`secretsPageTitle`}];function va(e,t){return e===t||e.startsWith(`${t}/`)}function ya(e){let t=e.toLowerCase();for(let{prefix:e,key:n}of _a)if(va(t,e))return i(n);return i(`settings`)}function ba(e){return`${ga} - ${ya(e)}`}var xa=(0,k.lazy)(async()=>({default:(await _(async()=>{let{DocBrowser:e}=await import(`./DocBrowser-CH7-GxlL.js`);return{DocBrowser:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))).DocBrowser}));function Sa(e){let t=e.toLowerCase();return t===`/chat`||t.startsWith(`/chat/`)||t===`/skills`||t.startsWith(`/skills/`)||t===`/cron`||t.startsWith(`/cron/`)||t===`/agents`||t.startsWith(`/agents/`)}function Ca({children:e}){let{isOpen:t,mode:n}=ot();Dr();let{pathname:r}=re(),{language:i}=la(),a=Sa(r);return(0,k.useEffect)(()=>{document.title=ba(r)},[r,i]),(0,A.jsxs)(`div`,{className:`h-screen flex bg-background font-sans text-foreground`,children:[!a&&(0,A.jsx)(ha,{mode:`settings`}),(0,A.jsxs)(`div`,{className:`flex-1 flex min-w-0 overflow-hidden relative`,children:[(0,A.jsx)(`div`,{className:`flex-1 flex flex-col min-w-0 overflow-hidden`,children:a?(0,A.jsx)(`div`,{className:`flex-1 h-full overflow-hidden`,children:e}):(0,A.jsx)(`main`,{className:`flex-1 overflow-auto p-8 pb-16 custom-scrollbar`,children:(0,A.jsx)(`div`,{className:`mx-auto h-full max-w-6xl animate-fade-in`,children:e})})}),t&&n===`docked`&&(0,A.jsx)(k.Suspense,{fallback:null,children:(0,A.jsx)(xa,{})})]}),t&&n===`floating`&&(0,A.jsx)(k.Suspense,{fallback:null,children:(0,A.jsx)(xa,{})})]})}function wa({children:e}){return(0,A.jsx)(st,{children:(0,A.jsx)(Ca,{children:e})})}var Ta=B(e=>({connectionStatus:`disconnected`,setConnectionStatus:t=>e({connectionStatus:t}),channelModal:{open:!1},openChannelModal:t=>e({channelModal:{open:!0,channel:t}}),closeChannelModal:()=>e({channelModal:{open:!1}})}));function Ea(e){let t=e.trim().toLowerCase();return t?!(t.startsWith(`plugins`)||t.startsWith(`skills`)):!0}function Da(e,t){t.startsWith(`plugins`)&&(e?.invalidateQueries({queryKey:[`ncp-session-types`]}),e?.invalidateQueries({queryKey:[`marketplace-installed`,`plugin`]}),e?.invalidateQueries({queryKey:[`marketplace-items`]})),t.startsWith(`mcp`)&&(e?.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}))}function Oa(e,t){e&&Ea(t)&&e.invalidateQueries({queryKey:[`config`]}),Da(e,t)}function ka(e,t,n,r){if(r.type===`connection.open`){t(`connected`),n.current&&(n.current=!1,e?.invalidateQueries({queryKey:[`ncp-sessions`]}));return}if(r.type===`connection.close`||r.type===`connection.error`){t(`disconnected`),n.current=!0;return}if(r.type===`config.updated`){Oa(e,typeof r.payload?.path==`string`?r.payload.path:``);return}if(r.type===`session.run-status`||r.type===`session.summary.upsert`||r.type===`session.summary.delete`){Ir(e,r);return}r.type===`error`&&console.error(`Realtime transport error:`,r.payload.message)}function Aa(e){let{setConnectionStatus:t}=Ta(),n=(0,k.useRef)(!1);(0,k.useEffect)(()=>(t(`connecting`),ae.subscribe(r=>ka(e,t,n,r))),[e,t])}var ja=`nextclaw-pwa-install-banner-dismissed`,Ma=`nextclaw-pwa-install-banner-dismissed-until`;function Na(){let e=Ia();return e?e.getItem(`nextclaw-pwa-install-banner-dismissed`)===`1`?!0:La(e):!1}function Pa(){let e=Ia();e?.setItem(ja,`1`),e?.removeItem(Ma)}function Fa(){let e=Ia();e?.removeItem(ja),e?.removeItem(Ma)}function Ia(){if(typeof window>`u`)return null;try{return window.localStorage}catch{return null}}function La(e){let t=e.getItem(Ma);if(!t)return!1;let n=Number.parseInt(t,10);return e.removeItem(Ma),!Number.isFinite(n)||n<=Date.now()?!1:(e.setItem(ja,`1`),!0)}function Ra(){return{initialized:!1,installability:`unsupported`,installMethod:`none`,blockedReason:`missing-browser-support`,dismissedInstallPrompt:Na(),updateAvailable:!1,registrationFailed:!1}}var X=B(()=>Ra()),za=`nextclaw-pwa-dev-sw-reset`,Ba=new class{constructor(){this.started=!1,this.registration=null,this.reloadWhenControllerChanges=!1,this.start=async()=>{if(!(this.started||typeof window>`u`)&&(this.started=!0,!(!(`serviceWorker`in navigator)||!this.isEligibleInstallContext()))){if(this.isDevelopmentServer()){await this.cleanupDevelopmentRegistrations();return}try{let e=await navigator.serviceWorker.register(`/sw.js`);this.registration=e,this.bindRegistration(e),navigator.serviceWorker.addEventListener(`controllerchange`,this.handleControllerChange),await this.syncUpdateAvailability()}catch{X.setState({registrationFailed:!0})}}},this.syncUpdateAvailability=async()=>{if(typeof window>`u`||!(`serviceWorker`in navigator)||typeof navigator.serviceWorker.getRegistration!=`function`){X.setState({updateAvailable:!1});return}let e=this.registration??await navigator.serviceWorker.getRegistration(`/sw.js`)??null;X.setState({updateAvailable:this.shouldSurfaceUpdate(e)})},this.applyUpdate=async()=>{let e=this.registration??await navigator.serviceWorker.getRegistration(`/sw.js`)??null;if(!e){window.location.reload();return}e.waiting||await e.update();let t=e.waiting;if(!t){window.location.reload();return}this.reloadWhenControllerChanges=!0,t.postMessage({type:`SKIP_WAIT`})},this.stop=()=>{!this.started||typeof window>`u`||!(`serviceWorker`in navigator)||(navigator.serviceWorker.removeEventListener(`controllerchange`,this.handleControllerChange),this.started=!1,this.registration=null,this.reloadWhenControllerChanges=!1)},this.bindRegistration=e=>{e.addEventListener(`updatefound`,()=>{let t=e.installing;t&&t.addEventListener(`statechange`,()=>{t.state===`installed`&&this.syncUpdateAvailability()})})},this.handleControllerChange=()=>{this.reloadWhenControllerChanges&&(this.reloadWhenControllerChanges=!1,window.location.reload())},this.isEligibleInstallContext=()=>window.isSecureContext||this.isTrustedLocalhost(window.location.hostname),this.isTrustedLocalhost=e=>e===`localhost`||e===`127.0.0.1`||e===`::1`||e===`[::1]`,this.isDevelopmentServer=()=>!1,this.shouldSurfaceUpdate=e=>!e?.waiting||!navigator.serviceWorker.controller?!1:X.getState().installability===`installed`,this.cleanupDevelopmentRegistrations=async()=>{if(typeof navigator.serviceWorker.getRegistrations!=`function`)return;let e=(await navigator.serviceWorker.getRegistrations()).filter(e=>[e.active?.scriptURL,e.installing?.scriptURL,e.waiting?.scriptURL].filter(e=>!!e).some(e=>e.endsWith(`/sw.js`)));if(e.length===0){this.clearDevResetMarker();return}if(await Promise.all(e.map(async e=>await e.unregister())),await this.clearNextClawCaches(),navigator.serviceWorker.controller&&!this.hasDevResetMarker()){this.setDevResetMarker(),window.location.reload();return}this.clearDevResetMarker()},this.clearNextClawCaches=async()=>{if(typeof window>`u`||!(`caches`in window)||typeof caches.keys!=`function`)return;let e=await caches.keys();await Promise.all(e.filter(e=>e.startsWith(`nextclaw-ui-`)).map(async e=>await caches.delete(e)))},this.hasDevResetMarker=()=>{try{return window.sessionStorage.getItem(za)===`1`}catch{return!1}},this.setDevResetMarker=()=>{try{window.sessionStorage.setItem(za,`1`)}catch{}},this.clearDevResetMarker=()=>{try{window.sessionStorage.removeItem(za)}catch{}}}},Z=new class{constructor(){this.started=!1,this.deferredPrompt=null,this.displayModeMediaQuery=null,this.start=()=>{this.started||typeof window>`u`||(this.started=!0,window.addEventListener(`beforeinstallprompt`,this.handleBeforeInstallPrompt),window.addEventListener(`appinstalled`,this.handleAppInstalled),typeof window.matchMedia==`function`&&(this.displayModeMediaQuery=window.matchMedia(`(display-mode: standalone)`),this.bindDisplayModeListener(this.displayModeMediaQuery,this.handleDisplayModeChanged)),this.refreshState())},this.stop=()=>{!this.started||typeof window>`u`||(window.removeEventListener(`beforeinstallprompt`,this.handleBeforeInstallPrompt),window.removeEventListener(`appinstalled`,this.handleAppInstalled),this.displayModeMediaQuery&&=(this.unbindDisplayModeListener(this.displayModeMediaQuery,this.handleDisplayModeChanged),null),this.deferredPrompt=null,this.started=!1)},this.resetForTests=()=>{this.stop(),X.setState(Ra())},this.refreshState=()=>{let e=this.resolveInstallability();X.setState(t=>({...t,initialized:!0,installability:e.installability,installMethod:e.installMethod,blockedReason:e.blockedReason,dismissedInstallPrompt:Na()})),Ba.syncUpdateAvailability()},this.dismissInstallPrompt=()=>{Pa(),X.setState({dismissedInstallPrompt:!0})},this.promptInstall=async()=>{let e=this.resolveInstallability();if(e.installability!==`available`)return`unavailable`;if(e.installMethod===`manual`||!this.deferredPrompt)return`manual`;this.deferredPrompt.prompt();let t=await this.deferredPrompt.userChoice;return this.deferredPrompt=null,t.outcome===`accepted`?(Fa(),this.refreshState(),m.success(i(`pwaInstallAccepted`)),`accepted`):(this.dismissInstallPrompt(),this.refreshState(),`dismissed`)},this.handleBeforeInstallPrompt=e=>{e.preventDefault(),this.deferredPrompt=e,this.refreshState()},this.handleAppInstalled=()=>{this.deferredPrompt=null,Fa(),X.setState({dismissedInstallPrompt:!0}),m.success(i(`pwaInstalledToast`)),this.refreshState()},this.handleDisplayModeChanged=()=>{this.refreshState()},this.resolveInstallability=()=>this.isDevelopmentServer()?{installability:`unsupported`,installMethod:`none`,blockedReason:`dev-server`}:this.hasDesktopHost()?{installability:`suppressed`,installMethod:`none`,blockedReason:`desktop-host`}:this.isStandalone()?{installability:`installed`,installMethod:`none`,blockedReason:null}:this.hasInstallSurfaceSupport()?this.isEligibleInstallContext()?{installability:`available`,installMethod:this.deferredPrompt?`prompt`:`manual`,blockedReason:null}:{installability:`unsupported`,installMethod:`none`,blockedReason:`insecure-context`}:{installability:`unsupported`,installMethod:`none`,blockedReason:`missing-browser-support`},this.hasDesktopHost=()=>typeof window<`u`&&!!window.nextclawDesktop,this.hasInstallSurfaceSupport=()=>typeof window<`u`&&typeof window.matchMedia==`function`&&`serviceWorker`in navigator,this.isEligibleInstallContext=()=>typeof window>`u`?!1:window.isSecureContext||this.isTrustedLocalhost(window.location.hostname),this.isTrustedLocalhost=e=>e===`localhost`||e===`127.0.0.1`||e===`::1`||e===`[::1]`,this.isDevelopmentServer=()=>typeof window<`u`&&!1,this.isStandalone=()=>{if(typeof window>`u`)return!1;let e=window.navigator;return typeof window.matchMedia==`function`&&window.matchMedia(`(display-mode: standalone)`).matches||e.standalone===!0},this.bindDisplayModeListener=(e,t)=>{if(`addEventListener`in e){e.addEventListener(`change`,t);return}e.addListener?.(t)},this.unbindDisplayModeListener=(e,t)=>{if(`removeEventListener`in e){e.removeEventListener(`change`,t);return}e.removeListener?.(t)}}};function Va(){let e=X(e=>e.installability);return(0,A.jsx)(`span`,{className:d(`inline-flex items-center rounded-full border px-3 py-1 text-xs font-medium`,e===`installed`?`bg-emerald-50 text-emerald-700 border-emerald-200`:e===`available`?`bg-amber-50 text-amber-700 border-amber-200`:`bg-gray-100 text-gray-600 border-gray-200`),children:Ha(e)})}function Ha(e){return i(e===`available`?`pwaInstallStatusAvailable`:e===`installed`?`pwaInstallStatusInstalled`:e===`suppressed`?`pwaInstallStatusDesktopHost`:`pwaInstallStatusUnavailable`)}function Ua(e,t,n){return i(e===`installed`?`pwaInstallCardInstalled`:e===`suppressed`?`pwaInstallCardSuppressed`:e===`available`&&t===`prompt`?`pwaInstallCardPrompt`:e===`available`?`pwaInstallCardManual`:n===`insecure-context`?`pwaInstallCardInsecureContext`:n===`dev-server`?`pwaInstallCardDevServer`:`pwaInstallCardUnsupported`)}function Wa(){let e=X(e=>e.installability),t=X(e=>e.installMethod),n=X(e=>e.blockedReason);return(0,A.jsxs)($n,{children:[(0,A.jsxs)(er,{className:`flex flex-row items-start justify-between gap-4 space-y-0`,children:[(0,A.jsxs)(`div`,{className:`space-y-2`,children:[(0,A.jsx)(tr,{children:i(`pwaInstallTitle`)}),(0,A.jsx)(nr,{children:i(`pwaInstallDescription`)})]}),(0,A.jsx)(Va,{})]}),(0,A.jsxs)(rr,{className:`space-y-4`,children:[(0,A.jsx)(`div`,{className:`rounded-2xl border border-gray-200 bg-gray-50/90 p-4`,children:(0,A.jsx)(`p`,{className:`text-sm leading-6 text-gray-700`,children:Ua(e,t,n)})}),e===`available`&&t===`prompt`?(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,A.jsxs)(h,{type:`button`,className:`gap-2`,onClick:()=>{Z.promptInstall()},children:[(0,A.jsx)(ke,{className:`h-4 w-4`}),i(`pwaInstallAction`)]}),(0,A.jsx)(`p`,{className:`text-sm text-gray-500`,children:i(`pwaInstallPromptHint`)})]}):null,e===`available`&&t===`manual`?(0,A.jsxs)(`div`,{className:`flex items-start gap-3 rounded-2xl border border-dashed border-gray-300 bg-white p-4`,children:[(0,A.jsx)(un,{className:`mt-0.5 h-4 w-4 text-gray-500`}),(0,A.jsx)(`p`,{className:`text-sm leading-6 text-gray-600`,children:i(`pwaInstallManualHint`)})]}):null]})]})}function Ga(){let e=X(e=>e.installability),t=X(e=>e.installMethod),n=X(e=>e.dismissedInstallPrompt);return e!==`available`||t!==`prompt`||n?null:(0,A.jsxs)(`div`,{className:`fixed bottom-5 right-5 z-50 w-[min(420px,calc(100vw-2rem))] rounded-[26px] border border-gray-200 bg-white/95 p-5 shadow-2xl backdrop-blur-xl`,children:[(0,A.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsx)(`p`,{className:`text-sm font-semibold text-gray-900`,children:i(`pwaInstallBannerTitle`)}),(0,A.jsx)(`p`,{className:`text-sm leading-6 text-gray-600`,children:i(`pwaInstallBannerDescription`)})]}),(0,A.jsx)(`button`,{type:`button`,"aria-label":i(`pwaInstallDismiss`),className:`rounded-full p-1 text-gray-400 transition hover:bg-gray-100 hover:text-gray-600`,onClick:()=>{Z.dismissInstallPrompt()},children:(0,A.jsx)(Me,{className:`h-4 w-4`})})]}),(0,A.jsxs)(`div`,{className:`mt-4 flex items-center gap-3`,children:[(0,A.jsxs)(h,{type:`button`,size:`sm`,className:`gap-2`,onClick:()=>{Z.promptInstall()},children:[(0,A.jsx)(ke,{className:`h-4 w-4`}),i(`pwaInstallAction`)]}),(0,A.jsx)(h,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>{Z.dismissInstallPrompt()},children:i(`pwaInstallDismiss`)})]})]})}function Ka(){let e=X(e=>e.updateAvailable),t=X(e=>e.installability);return!e||t!==`installed`?null:(0,A.jsxs)(`div`,{className:`fixed top-5 right-5 z-50 w-[min(420px,calc(100vw-2rem))] rounded-[26px] border border-gray-200 bg-white/95 p-5 shadow-2xl backdrop-blur-xl`,children:[(0,A.jsx)(`div`,{className:`flex items-start justify-between gap-4`,children:(0,A.jsxs)(`div`,{className:`space-y-1`,children:[(0,A.jsx)(`p`,{className:`text-sm font-semibold text-gray-900`,children:i(`pwaUpdateBannerTitle`)}),(0,A.jsx)(`p`,{className:`text-sm leading-6 text-gray-600`,children:i(`pwaUpdateBannerDescription`)})]})}),(0,A.jsx)(`div`,{className:`mt-4`,children:(0,A.jsxs)(h,{type:`button`,size:`sm`,className:`gap-2`,onClick:()=>{Ba.applyUpdate()},children:[(0,A.jsx)(Ae,{className:`h-4 w-4`}),i(`pwaUpdateAction`)]})})]})}var qa=!1;function Ja(){qa||typeof window>`u`||(qa=!0,Z.start(),Ba.start())}var Ya=(0,k.lazy)(async()=>({default:(await _(async()=>{let{ModelConfig:e}=await import(`./ModelConfig-CNIgLf0e.js`);return{ModelConfig:e}},__vite__mapDeps([10,2,11,4,3,12,13,14,9,15,16,17]))).ModelConfig})),Q=(0,k.lazy)(async()=>({default:(await _(async()=>{let{ChatPage:e}=await import(`./chat-page-CLp0UV0Y.js`);return{ChatPage:e}},__vite__mapDeps([18,2,19,13,11,3,20,21,22,23,24,16,25,9,15,26,27,28,1,4,5,6,7,8,12,29,14,30,31,32,33,34,35,36,37]))).ChatPage})),Xa=(0,k.lazy)(async()=>({default:(await _(async()=>{let{SearchConfig:e}=await import(`./SearchConfig-CSoKip1f.js`);return{SearchConfig:e}},__vite__mapDeps([38,2,13,11,3,5,7,39,15]))).SearchConfig})),Za=(0,k.lazy)(async()=>({default:(await _(async()=>{let{ProvidersList:e}=await import(`./ProvidersList-CHjMnRhX.js`);return{ProvidersList:e}},__vite__mapDeps([40,2,13,11,3,22,6,7,33,8,36,39,15,41,42,43,27,17]))).ProvidersList})),Qa=(0,k.lazy)(async()=>({default:(await _(async()=>{let{ChannelsList:e}=await import(`./ChannelsList-M9FTK1Ak.js`);return{ChannelsList:e}},__vite__mapDeps([44,2,13,11,3,22,25,4,5,29,45,14,7,8,36,39,15,42,43,27,37,17]))).ChannelsList})),$a=(0,k.lazy)(async()=>({default:(await _(async()=>{let{RuntimeConfig:e}=await import(`./RuntimeConfig-psp8nMSG.js`);return{RuntimeConfig:e}},__vite__mapDeps([46,2,13,11,3,22,14,30,6,47,48,33,15,41,43,17]))).RuntimeConfig})),eo=(0,k.lazy)(async()=>({default:(await _(async()=>{let{DesktopUpdateConfig:e}=await import(`./desktop-update-config-2BS6BMkW.js`);return{DesktopUpdateConfig:e}},__vite__mapDeps([49,2,13,11,3,50,5,32,47,15,43]))).DesktopUpdateConfig})),to=(0,k.lazy)(async()=>({default:(await _(async()=>{let{SecurityConfig:e}=await import(`./security-config-Slh0Mayz.js`);return{SecurityConfig:e}},__vite__mapDeps([51,2,11,15,43]))).SecurityConfig})),no=(0,k.lazy)(async()=>({default:(await _(async()=>{let{SessionsConfig:e}=await import(`./SessionsConfig-DifCiXwR.js`);return{SessionsConfig:e}},__vite__mapDeps([52,2,13,11,3,45,32,7,34,22,14,15,26]))).SessionsConfig})),ro=(0,k.lazy)(async()=>({default:(await _(async()=>{let{SecretsConfig:e}=await import(`./SecretsConfig-MEt6MjuD.js`);return{SecretsConfig:e}},__vite__mapDeps([53,2,13,11,3,6,48,33,15,43]))).SecretsConfig})),io=(0,k.lazy)(async()=>({default:(await _(async()=>{let{RemoteAccessPage:e}=await import(`./remote-access-page-CWHG-sug.js`);return{RemoteAccessPage:e}},__vite__mapDeps([54,2,11,3,31,15,42]))).RemoteAccessPage})),ao=(0,k.lazy)(async()=>({default:(await _(async()=>{let{MarketplacePage:e}=await import(`./marketplace-page-3qVMnF3d.js`);return{MarketplacePage:e}},__vite__mapDeps([55,20,2,19,13,11,3,21,22,23,24,16,25,9,15,26,27]))).MarketplacePage})),oo=(0,k.lazy)(async()=>({default:(await _(async()=>{let{McpMarketplacePage:e}=await import(`./mcp-marketplace-page-DYfteJ1D.js`);return{McpMarketplacePage:e}},__vite__mapDeps([56,2,13,11,3,22,23,24,16,25,9,15,26,43,27,37]))).McpMarketplacePage}));function so(){return(0,A.jsx)(`div`,{className:`h-full w-full animate-pulse rounded-2xl border border-border/40 bg-card/40`})}function $({children:e}){return(0,A.jsx)(k.Suspense,{fallback:(0,A.jsx)(so,{}),children:e})}function co(){return(0,A.jsxs)(te,{children:[(0,A.jsx)(g,{path:`/chat/skills`,element:(0,A.jsx)(v,{to:`/skills`,replace:!0})}),(0,A.jsx)(g,{path:`/chat/cron`,element:(0,A.jsx)(v,{to:`/cron`,replace:!0})}),(0,A.jsx)(g,{path:`/chat/agents`,element:(0,A.jsx)(v,{to:`/agents`,replace:!0})}),(0,A.jsx)(g,{path:`/chat/:sessionId?`,element:(0,A.jsx)($,{children:(0,A.jsx)(Q,{view:`chat`})})}),(0,A.jsx)(g,{path:`/agents`,element:(0,A.jsx)($,{children:(0,A.jsx)(Q,{view:`agents`})})}),(0,A.jsx)(g,{path:`/skills`,element:(0,A.jsx)($,{children:(0,A.jsx)(Q,{view:`skills`})})}),(0,A.jsx)(g,{path:`/cron`,element:(0,A.jsx)($,{children:(0,A.jsx)(Q,{view:`cron`})})}),(0,A.jsx)(g,{path:`/model`,element:(0,A.jsx)($,{children:(0,A.jsx)(Ya,{})})}),(0,A.jsx)(g,{path:`/search`,element:(0,A.jsx)($,{children:(0,A.jsx)(Xa,{})})}),(0,A.jsx)(g,{path:`/providers`,element:(0,A.jsx)($,{children:(0,A.jsx)(Za,{})})}),(0,A.jsx)(g,{path:`/channels`,element:(0,A.jsx)($,{children:(0,A.jsx)(Qa,{})})}),(0,A.jsx)(g,{path:`/runtime`,element:(0,A.jsx)($,{children:(0,A.jsx)($a,{})})}),(0,A.jsx)(g,{path:`/updates`,element:(0,A.jsx)($,{children:(0,A.jsx)(eo,{})})}),(0,A.jsx)(g,{path:`/remote`,element:(0,A.jsx)($,{children:(0,A.jsx)(io,{})})}),(0,A.jsx)(g,{path:`/security`,element:(0,A.jsx)($,{children:(0,A.jsx)(to,{})})}),(0,A.jsx)(g,{path:`/sessions`,element:(0,A.jsx)($,{children:(0,A.jsx)(no,{})})}),(0,A.jsx)(g,{path:`/secrets`,element:(0,A.jsx)($,{children:(0,A.jsx)(ro,{})})}),(0,A.jsx)(g,{path:`/settings`,element:(0,A.jsx)(v,{to:`/model`,replace:!0})}),(0,A.jsx)(g,{path:`/marketplace/skills`,element:(0,A.jsx)(v,{to:`/skills`,replace:!0})}),(0,A.jsx)(g,{path:`/marketplace`,element:(0,A.jsx)(v,{to:`/marketplace/plugins`,replace:!0})}),(0,A.jsx)(g,{path:`/marketplace/mcp`,element:(0,A.jsx)($,{children:(0,A.jsx)(oo,{})})}),(0,A.jsx)(g,{path:`/marketplace/:type`,element:(0,A.jsx)($,{children:(0,A.jsx)(ao,{})})}),(0,A.jsx)(g,{path:`/`,element:(0,A.jsx)(v,{to:`/chat`,replace:!0})}),(0,A.jsx)(g,{path:`*`,element:(0,A.jsx)(v,{to:`/chat`,replace:!0})})]})}function lo(){return Aa(S),(0,A.jsxs)(Jn,{children:[(0,A.jsx)(wa,{children:(0,A.jsx)(co,{})}),(0,A.jsx)(Qn,{})]})}function uo(){let e=lr(),t=e.isError&&sr(e.error);return e.isLoading&&!e.isError||t||e.isError?(0,A.jsx)(lo,{}):e.data?.enabled&&!e.data.authenticated?(0,A.jsx)(hr,{username:e.data.username}):(0,A.jsx)(lo,{})}function fo(){return(0,k.useEffect)(()=>{Ja()},[]),(0,A.jsxs)(oe,{client:S,children:[(0,A.jsx)(uo,{}),(0,A.jsx)(Ga,{}),(0,A.jsx)(Ka,{}),(0,A.jsx)(ee,{position:`top-right`,richColors:!0})]})}(0,lt.createRoot)(document.getElementById(`root`)).render((0,A.jsx)(k.StrictMode,{children:(0,A.jsx)(pa,{children:(0,A.jsx)(ca,{children:(0,A.jsx)(ie,{children:(0,A.jsx)(fo,{})})})})}));export{ur as $,oi as A,$t as At,li as B,Yr as C,dn as Ct,Xr as D,rn as Dt,ci as E,an as Et,Qr as F,Vr as G,ni as H,Zr as I,Fr as J,Rr as K,fi as L,ai as M,Xt as Mt,$r as N,Yt as Nt,ii as O,tn as Ot,pi as P,fr as Q,ti as R,Gr as S,fn as St,di as T,on as Tt,qr as U,Jr as V,ri as W,_r as X,Mr as Y,lr as Z,yi as _,Sn as _t,aa as a,er as at,Hr as b,xn as bt,ta as c,H as ct,Xi as d,Rn as dt,mr as et,Gi as f,F as ft,Ki as g,vn as gt,Wi as h,hn as ht,la as i,nr as it,si as j,Zt as jt,ei as k,N as kt,Yi as l,B as lt,qi as m,P as mt,Ta as n,$n as nt,ia as o,tr as ot,Ji as p,Cn as pt,Br as q,ma as r,rr as rt,oa as s,Yn as st,Wa as t,pr as tt,Zi as u,zn as ut,bi as v,bn as vt,ui as w,cn as wt,Wr as x,mn as xt,vi as y,yn as yt,Kr as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,g as t,h as n,v as r}from"./client-C-8fH7-c.js";function i(i){return{onFetch:(s,c)=>{let l=s.options,u=s.fetchOptions?.meta?.fetchMore?.direction,d=s.state.data?.pages||[],f=s.state.data?.pageParams||[],p={pages:[],pageParams:[]},m=0,h=async()=>{let c=!1,h=e=>{n(e,()=>s.signal,()=>c=!0)},g=r(s.options,s.fetchOptions),_=async(n,r,i)=>{if(c)return Promise.reject();if(r==null&&n.pages.length)return Promise.resolve(n);let a=await g((()=>{let e={client:s.client,queryKey:s.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:s.options.meta};return h(e),e})()),{maxPages:o}=s.options,l=i?e:t;return{pages:l(n.pages,a,o),pageParams:l(n.pageParams,r,o)}};if(u&&d.length){let e=u===`backward`,t=e?o:a,n={pages:d,pageParams:f};p=await _(n,t(l,n),e)}else{let e=i??d.length;do{let e=m===0?f[0]??l.initialPageParam:a(l,p);if(m>0&&e==null)break;p=await _(p,e),m++}while(m<e)}return p};s.options.persister?s.fetchFn=()=>s.options.persister?.(h,{client:s.client,queryKey:s.queryKey,meta:s.options.meta,signal:s.signal},c):s.fetchFn=h}}}function a(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function o(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}function s(e,t){return t?a(e,t)!=null:!1}function c(e,t){return!t||!e.getPreviousPageParam?!1:o(e,t)!=null}export{c as n,i as r,s as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`LoaderCircle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./marketplace-page-BhFIeQzI.js";export{e as MarketplacePage};
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import{_ as e,i as t,m as n,p as r,u as i}from"./i18n-CpTZLchQ.js";import{n as a,r as o}from"./dist-BruyLa92.js";import{c as s,s as c}from"./chunk-JZWAC4HX-C5dEc8hV.js";import{i as l,s as u,t as d}from"./client-C-8fH7-c.js";import{a as f,c as p,i as m,l as h,n as g,o as _,s as v,t as ee}from"./use-infinite-scroll-loader-DJ1L81Dz.js";import{t as y}from"./useMutation-CNcz2fgt.js";import{B as b,C as x,E as S,F as te,G as C,I as ne,N as re,R as w,S as T,T as ie,U as E,W as D,w as O,x as ae,z as oe}from"./select-CVz0t7MF.js";import{t as se}from"./dist-Cy7_j6hA.js";import{i as ce}from"./DocBrowserContext-BXydqby-.js";import{ft as le,i as ue}from"./index-zDZfXoI4.js";import{n as de,t as fe}from"./page-layout-0UcO9H9Z.js";import{t as pe}from"./useConfirmDialog-BsVuqu1x.js";import{t as me}from"./tabs-custom-YcZUWn3o.js";var k=e(n(),1),A=r(),[j,M]=E(`Tooltip`,[S]),N=S(),P=`TooltipProvider`,F=700,I=`tooltip.open`,[he,L]=j(P),R=e=>{let{__scopeTooltip:t,delayDuration:n=F,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,o=k.useRef(!0),s=k.useRef(!1),c=k.useRef(0);return k.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,A.jsx)(he,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:k.useCallback(()=>{window.clearTimeout(c.current),o.current=!1},[]),onClose:k.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>o.current=!0,r)},[r]),isPointerInTransitRef:s,onPointerInTransitChange:k.useCallback(e=>{s.current=e},[]),disableHoverableContent:i,children:a})};R.displayName=P;var z=`Tooltip`,[ge,B]=j(z),V=e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,c=L(z,e.__scopeTooltip),l=N(t),[u,d]=k.useState(null),f=b(),p=k.useRef(0),m=o??c.disableHoverableContent,h=s??c.delayDuration,g=k.useRef(!1),[_,v]=oe({prop:r,defaultProp:i??!1,onChange:e=>{e?(c.onOpen(),document.dispatchEvent(new CustomEvent(I))):c.onClose(),a?.(e)},caller:z}),ee=k.useMemo(()=>_?g.current?`delayed-open`:`instant-open`:`closed`,[_]),y=k.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g.current=!1,v(!0)},[v]),x=k.useCallback(()=>{window.clearTimeout(p.current),p.current=0,v(!1)},[v]),S=k.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{g.current=!0,v(!0),p.current=0},h)},[h,v]);return k.useEffect(()=>()=>{p.current&&=(window.clearTimeout(p.current),0)},[]),(0,A.jsx)(ie,{...l,children:(0,A.jsx)(ge,{scope:t,contentId:f,open:_,stateAttribute:ee,trigger:u,onTriggerChange:d,onTriggerEnter:k.useCallback(()=>{c.isOpenDelayedRef.current?S():y()},[c.isOpenDelayedRef,S,y]),onTriggerLeave:k.useCallback(()=>{m?x():(window.clearTimeout(p.current),p.current=0)},[x,m]),onOpen:y,onClose:x,disableHoverableContent:m,children:n})})};V.displayName=z;var H=`TooltipTrigger`,U=k.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=B(H,n),a=L(H,n),o=N(n),s=D(t,k.useRef(null),i.onTriggerChange),c=k.useRef(!1),l=k.useRef(!1),u=k.useCallback(()=>c.current=!1,[]);return k.useEffect(()=>()=>document.removeEventListener(`pointerup`,u),[u]),(0,A.jsx)(T,{asChild:!0,...o,children:(0,A.jsx)(ne.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...r,ref:s,onPointerMove:C(e.onPointerMove,e=>{e.pointerType!==`touch`&&!l.current&&!a.isPointerInTransitRef.current&&(i.onTriggerEnter(),l.current=!0)}),onPointerLeave:C(e.onPointerLeave,()=>{i.onTriggerLeave(),l.current=!1}),onPointerDown:C(e.onPointerDown,()=>{i.open&&i.onClose(),c.current=!0,document.addEventListener(`pointerup`,u,{once:!0})}),onFocus:C(e.onFocus,()=>{c.current||i.onOpen()}),onBlur:C(e.onBlur,i.onClose),onClick:C(e.onClick,i.onClose)})})});U.displayName=H;var W=`TooltipPortal`,[_e,ve]=j(W,{forceMount:void 0}),ye=e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=B(W,t);return(0,A.jsx)(_e,{scope:t,forceMount:n,children:(0,A.jsx)(se,{present:n||a.open,children:(0,A.jsx)(re,{asChild:!0,container:i,children:r})})})};ye.displayName=W;var G=`TooltipContent`,be=k.forwardRef((e,t)=>{let n=ve(G,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=B(G,e.__scopeTooltip);return(0,A.jsx)(se,{present:r||o.open,children:o.disableHoverableContent?(0,A.jsx)(Te,{side:i,...a,ref:t}):(0,A.jsx)(xe,{side:i,...a,ref:t})})}),xe=k.forwardRef((e,t)=>{let n=B(G,e.__scopeTooltip),r=L(G,e.__scopeTooltip),i=k.useRef(null),a=D(t,i),[o,s]=k.useState(null),{trigger:c,onClose:l}=n,u=i.current,{onPointerInTransitChange:d}=r,f=k.useCallback(()=>{s(null),d(!1)},[d]),p=k.useCallback((e,t)=>{let n=e.currentTarget,r={x:e.clientX,y:e.clientY},i=ke(r,Oe(r,n.getBoundingClientRect())),a=Ae(t.getBoundingClientRect());s(Me([...i,...a])),d(!0)},[d]);return k.useEffect(()=>()=>f(),[f]),k.useEffect(()=>{if(c&&u){let e=e=>p(e,u),t=e=>p(e,c);return c.addEventListener(`pointerleave`,e),u.addEventListener(`pointerleave`,t),()=>{c.removeEventListener(`pointerleave`,e),u.removeEventListener(`pointerleave`,t)}}},[c,u,p,f]),k.useEffect(()=>{if(o){let e=e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=c?.contains(t)||u?.contains(t),i=!je(n,o);r?f():i&&(f(),l())};return document.addEventListener(`pointermove`,e),()=>document.removeEventListener(`pointermove`,e)}},[c,u,o,l,f]),(0,A.jsx)(Te,{...e,ref:a})}),[Se,Ce]=j(z,{isInside:!1}),we=w(`TooltipContent`),Te=k.forwardRef((e,t)=>{let{__scopeTooltip:n,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,c=B(G,n),l=N(n),{onClose:u}=c;return k.useEffect(()=>(document.addEventListener(I,u),()=>document.removeEventListener(I,u)),[u]),k.useEffect(()=>{if(c.trigger){let e=e=>{e.target?.contains(c.trigger)&&u()};return window.addEventListener(`scroll`,e,{capture:!0}),()=>window.removeEventListener(`scroll`,e,{capture:!0})}},[c.trigger,u]),(0,A.jsx)(te,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:e=>e.preventDefault(),onDismiss:u,children:(0,A.jsxs)(O,{"data-state":c.stateAttribute,...l,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-tooltip-content-available-width":`var(--radix-popper-available-width)`,"--radix-tooltip-content-available-height":`var(--radix-popper-available-height)`,"--radix-tooltip-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-tooltip-trigger-height":`var(--radix-popper-anchor-height)`},children:[(0,A.jsx)(we,{children:r}),(0,A.jsx)(Se,{scope:n,isInside:!0,children:(0,A.jsx)(ae,{id:c.contentId,role:`tooltip`,children:i||r})})]})})});be.displayName=G;var Ee=`TooltipArrow`,De=k.forwardRef((e,t)=>{let{__scopeTooltip:n,...r}=e,i=N(n);return Ce(Ee,n).isInside?null:(0,A.jsx)(x,{...i,...r,ref:t})});De.displayName=Ee;function Oe(e,t){let n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),i=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,i,a)){case a:return`left`;case i:return`right`;case n:return`top`;case r:return`bottom`;default:throw Error(`unreachable`)}}function ke(e,t,n=5){let r=[];switch(t){case`top`:r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case`bottom`:r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case`left`:r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case`right`:r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function Ae(e){let{top:t,right:n,bottom:r,left:i}=e;return[{x:i,y:t},{x:n,y:t},{x:n,y:r},{x:i,y:r}]}function je(e,t){let{x:n,y:r}=e,i=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){let o=t[e],s=t[a],c=o.x,l=o.y,u=s.x,d=s.y;l>r!=d>r&&n<(u-c)*(r-l)/(d-l)+c&&(i=!i)}return i}function Me(e){let t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0),Ne(t)}function Ne(e){if(e.length<=1)return e.slice();let t=[];for(let n=0;n<e.length;n++){let r=e[n];for(;t.length>=2;){let e=t[t.length-1],n=t[t.length-2];if((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x))t.pop();else break}t.push(r)}t.pop();let n=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;n.length>=2;){let e=n[n.length-1],t=n[n.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Pe=R,Fe=V,Ie=U,Le=ye,K=be,Re=Pe,q=Fe,J=Ie,Y=k.forwardRef(({className:e,sideOffset:t=4,...n},r)=>(0,A.jsx)(Le,{children:(0,A.jsx)(K,{ref:r,sideOffset:t,className:i(`z-[var(--z-tooltip)] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...n})}));Y.displayName=K.displayName;function X(e){return e===`plugin`?`plugins`:e===`skill`?`skills`:`mcp`}async function ze(e){let t=new URLSearchParams,n=X(e.type);e.q?.trim()&&t.set(`q`,e.q.trim()),e.tag?.trim()&&t.set(`tag`,e.tag.trim()),e.sort&&t.set(`sort`,e.sort),typeof e.page==`number`&&Number.isFinite(e.page)&&t.set(`page`,String(Math.max(1,Math.trunc(e.page)))),typeof e.pageSize==`number`&&Number.isFinite(e.pageSize)&&t.set(`pageSize`,String(Math.max(1,Math.trunc(e.pageSize))));let r=t.toString(),i=await d.get(r?`/api/marketplace/${n}/items?${r}`:`/api/marketplace/${n}/items`);if(!i.ok)throw Error(i.error.message);return i.data}async function Be(e){let t=await d.get(`/api/marketplace/skills/items/${encodeURIComponent(e)}/content`);if(!t.ok)throw Error(t.error.message);return t.data}async function Ve(e){let t=await d.get(`/api/marketplace/plugins/items/${encodeURIComponent(e)}/content`);if(!t.ok)throw Error(t.error.message);return t.data}async function He(e){let t=X(e.type),n=await d.post(`/api/marketplace/${t}/install`,e);if(!n.ok)throw Error(n.error.message);return n.data}async function Ue(e){let t=X(e),n=await d.get(`/api/marketplace/${t}/installed`);if(!n.ok)throw Error(n.error.message);return n.data}async function We(e){let t=X(e.type),n=await d.post(`/api/marketplace/${t}/manage`,e);if(!n.ok)throw Error(n.error.message);return n.data}function Ge(e){return Array.from(new Set(e.map(e=>e.spec).filter(Boolean)))}function Ke(e){let t=new Date().toISOString();return e.result.type===`skill`?{type:`skill`,spec:e.result.spec,id:e.request.skill??e.result.spec,label:e.request.skill??e.result.name??e.result.spec,source:`workspace`,installPath:e.request.installPath,installedAt:t}:{type:e.result.type,spec:e.result.spec,id:e.result.name??e.result.spec,label:e.result.name??e.result.spec,source:`marketplace`,origin:`marketplace`,enabled:e.request.enabled??!0,runtimeStatus:e.request.enabled===!1?`disabled`:`ready`,installedAt:t}}function qe(e,t){return!!(t.spec&&e.spec===t.spec||t.id&&e.id===t.id)}function Je(e,t){return t??{type:e,total:0,specs:[],records:[]}}function Ye(e){let t=Je(e.result.type,e.view),n=Ke(e),r=t.records.findIndex(e=>qe(e,{id:n.id,spec:n.spec})),i=[...t.records];return r>=0?i[r]={...i[r],...n}:i.unshift(n),{...t,type:e.result.type,records:i,specs:Ge(i),total:i.length}}function Xe(e){let t=Je(e.result.type,e.view);if(e.result.action===`uninstall`||e.result.action===`remove`){let n=t.records.filter(t=>!qe(t,{id:e.result.id,spec:e.request.spec}));return{...t,records:n,specs:Ge(n),total:n.length}}let n=t.records.map(t=>qe(t,{id:e.result.id,spec:e.request.spec})?e.result.action===`disable`?{...t,enabled:!1,runtimeStatus:`disabled`}:{...t,enabled:!0,runtimeStatus:`ready`}:t);return{...t,records:n,specs:Ge(n),total:n.length}}function Ze(e){let t=h({queryKey:[`marketplace-items`,e],initialPageParam:1,queryFn:({pageParam:t})=>ze({...e,page:t}),getNextPageParam:e=>e.page<e.totalPages?e.page+1:void 0,placeholderData:(t,n)=>{let r=n?.queryKey?.[1];if(!(!r||typeof r!=`object`||!r))return(`type`in r?r.type:void 0)===e.type?t:void 0},staleTime:15e3}),n=(0,k.useMemo)(()=>p(t.data),[t.data]);return{...t,data:n}}function Qe(e){return l({queryKey:[`marketplace-installed`,e],queryFn:()=>Ue(e),staleTime:1e4})}function $e(){let e=u();return y({mutationFn:e=>He(e),onSuccess:(n,r)=>{e.setQueryData([`marketplace-installed`,n.type],e=>Ye({view:e,request:r,result:n})),e.invalidateQueries({queryKey:[`marketplace-installed`,n.type],refetchType:`inactive`}),n.type===`plugin`&&e.invalidateQueries({queryKey:[`ncp-session-types`]});let i=n.type===`plugin`?t(`marketplaceInstallSuccessPlugin`):t(`marketplaceInstallSuccessSkill`);a.success(n.message||i)},onError:e=>{a.error(e.message||t(`marketplaceInstallFailed`))}})}function et(){let e=u();return y({mutationFn:e=>We(e),onSuccess:(n,r)=>{e.setQueryData([`marketplace-installed`,n.type],e=>Xe({view:e,request:r,result:n})),e.invalidateQueries({queryKey:[`marketplace-installed`,n.type],refetchType:`inactive`}),n.type===`plugin`&&e.invalidateQueries({queryKey:[`ncp-session-types`]});let i=n.action===`enable`?t(`marketplaceEnableSuccess`):n.action===`disable`?t(`marketplaceDisableSuccess`):t(`marketplaceUninstallSuccess`);a.success(n.message||i)},onError:e=>{a.error(e.message||t(`marketplaceOperationFailed`))}})}function tt(e){return(e??``).trim().toLowerCase()}function Z(e,t){let n=tt(t);return n.length>0?`${e}:${n}`:``}function nt(e){let t=new Map;for(let n of e){let e=[n.install.spec,n.slug,n.id];for(let r of e){let e=Z(n.type,r);!e||t.has(e)||t.set(e,n)}}return t}function rt(e){let t=new Map;for(let n of e){let e=[n.spec,n.id,n.label];for(let r of e){let e=Z(n.type,r);!e||t.has(e)||t.set(e,n)}}return t}function it(e,t){let n=[e.install.spec,e.slug,e.id];for(let r of n){let n=Z(e.type,r);if(!n)continue;let i=t.get(n);if(i)return i}}function at(e,t){return t.get(Z(e.type,e.spec))||t.get(Z(e.type,e.id))||t.get(Z(e.type,e.label))}function ot(e,t,n,r){let i=tt(n);if(!i)return!0;let a=m(t?.summaryI18n,t?.summary,r);return[e.id,e.spec,e.label,t?.name,t?.slug,t?.summary,a,...t?.tags??[]].map(e=>tt(e)).filter(Boolean).some(e=>e.includes(i))}function Q(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function $(e){let{title:t,typeLabel:n,spec:r,summary:i,description:a,metadataRaw:o,contentRaw:s,sourceUrl:c,sourceLabel:l,tags:u,author:d}=e,f=o?.trim()||`-`,p=s?.trim()||`-`,m=i?.trim(),h=a?.trim(),g=!!h&&h!==m,_=`<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<title>${Q(t)}</title>
|
|
7
|
-
<style>
|
|
8
|
-
:root { color-scheme: light; }
|
|
9
|
-
body { margin: 0; background: #f7f9fc; color: #0f172a; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
|
|
10
|
-
.wrap { max-width: 980px; margin: 0 auto; padding: 28px 20px 40px; }
|
|
11
|
-
.hero { border: 1px solid #dbeafe; border-radius: 16px; background: linear-gradient(180deg, #eff6ff, #ffffff); padding: 20px; box-shadow: 0 6px 20px rgba(30, 64, 175, 0.08); }
|
|
12
|
-
.hero h1 { margin: 0; font-size: 26px; }
|
|
13
|
-
.meta { margin-top: 8px; color: #475569; font-size: 13px; overflow-wrap: anywhere; word-break: break-word; }
|
|
14
|
-
.summary { margin-top: 14px; font-size: 14px; line-height: 1.7; color: #334155; }
|
|
15
|
-
.grid { display: grid; grid-template-columns: 260px 1fr; gap: 14px; margin-top: 16px; }
|
|
16
|
-
.card { border: 1px solid #e2e8f0; background: #fff; border-radius: 14px; overflow: hidden; }
|
|
17
|
-
.card h2 { margin: 0; padding: 12px 14px; font-size: 13px; font-weight: 700; color: #1d4ed8; border-bottom: 1px solid #e2e8f0; background: #f8fafc; }
|
|
18
|
-
.card .body { padding: 12px 14px; font-size: 13px; color: #334155; line-height: 1.7; }
|
|
19
|
-
.code { white-space: pre-wrap; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 1.6; margin: 0; }
|
|
20
|
-
.tags { margin-top: 10px; }
|
|
21
|
-
.tag { display: inline-block; margin: 0 6px 6px 0; padding: 4px 9px; border-radius: 999px; background: #e0e7ff; color: #3730a3; font-size: 11px; }
|
|
22
|
-
.source { color: #2563eb; text-decoration: none; overflow-wrap: anywhere; word-break: break-all; }
|
|
23
|
-
@media (max-width: 860px) { .grid { grid-template-columns: 1fr; } }
|
|
24
|
-
</style>
|
|
25
|
-
</head>
|
|
26
|
-
<body>
|
|
27
|
-
<main class="wrap">
|
|
28
|
-
<section class="hero">
|
|
29
|
-
<h1>${Q(t)}</h1>
|
|
30
|
-
<div class="meta">${Q(n)} · ${Q(r)}${d?` · ${Q(d)}`:``}</div>
|
|
31
|
-
${m?`<p class="summary">${Q(m)}</p>`:``}
|
|
32
|
-
${g?`<p class="summary">${Q(h)}</p>`:``}
|
|
33
|
-
${u&&u.length>0?`<div class="tags">${u.map(e=>`<span class="tag">${Q(e)}</span>`).join(``)}</div>`:``}
|
|
34
|
-
${c?`<p class="meta" style="margin-top:12px;">${Q(l??`Source`)}: <a class="source" href="${Q(c)}" target="_blank" rel="noopener noreferrer">${Q(c)}</a></p>`:``}
|
|
35
|
-
</section>
|
|
36
|
-
|
|
37
|
-
<section class="grid">
|
|
38
|
-
<article class="card">
|
|
39
|
-
<h2>Metadata</h2>
|
|
40
|
-
<div class="body"><pre class="code">${Q(f)}</pre></div>
|
|
41
|
-
</article>
|
|
42
|
-
<article class="card">
|
|
43
|
-
<h2>Content</h2>
|
|
44
|
-
<div class="body"><pre class="code">${Q(p)}</pre></div>
|
|
45
|
-
</article>
|
|
46
|
-
</section>
|
|
47
|
-
</main>
|
|
48
|
-
</body>
|
|
49
|
-
</html>`;return`data:text/html;charset=utf-8,${encodeURIComponent(_)}`}var st=[`bg-amber-600`,`bg-orange-500`,`bg-yellow-600`,`bg-emerald-600`,`bg-teal-600`,`bg-cyan-600`,`bg-stone-600`,`bg-rose-500`,`bg-violet-500`];function ct(e){let t=0;for(let n=0;n<e.length;n++)t=e.charCodeAt(n)+((t<<5)-t);return st[Math.abs(t)%st.length]}function lt({name:e,fallback:t}){let n=e||t,r=n.substring(0,2).toUpperCase();return(0,A.jsx)(`div`,{className:i(`flex h-10 w-10 shrink-0 items-center justify-center rounded-xl text-sm font-semibold text-white`,ct(n)),children:r})}function ut(e){let{title:t,spec:n,summary:r}=e;return(0,A.jsxs)(Re,{delayDuration:400,children:[(0,A.jsxs)(q,{children:[(0,A.jsx)(J,{asChild:!0,children:(0,A.jsx)(`div`,{className:`truncate text-[14px] font-semibold leading-tight text-gray-900`,children:t})}),(0,A.jsx)(Y,{className:`max-w-[300px] text-xs`,children:t})]}),(0,A.jsx)(`div`,{className:`mb-1.5 mt-0.5 flex items-center gap-1.5`,children:n?(0,A.jsxs)(q,{children:[(0,A.jsx)(J,{asChild:!0,children:(0,A.jsx)(`span`,{className:`max-w-full truncate font-mono text-[11px] text-gray-400`,children:n})}),(0,A.jsx)(Y,{className:`max-w-[300px] break-all font-mono text-xs`,children:n})]}):null}),(0,A.jsxs)(q,{children:[(0,A.jsx)(J,{asChild:!0,children:(0,A.jsx)(`p`,{className:`line-clamp-1 text-left text-[12px] leading-relaxed text-gray-500/90 transition-colors`,children:r})}),r?(0,A.jsx)(Y,{className:`max-w-[400px] text-xs leading-relaxed`,children:r}):null]})]})}function dt(e,n){return t(e&&e!==`uninstall`?e===`enable`?`marketplaceEnabling`:`marketplaceDisabling`:n?`marketplaceEnable`:`marketplaceDisable`)}function ft(e){let{item:n,record:r,isInstalling:i,busyAction:a,busyForRecord:s,isDisabled:c,onInstall:l,onManage:u}=e,d=r?.type===`plugin`?r:void 0,f=r?.type===`plugin`&&r.origin!==`bundled`||r?.type===`skill`&&r.source===`workspace`;return(0,A.jsxs)(`div`,{className:`flex h-full shrink-0 items-center`,children:[n&&!r?(0,A.jsx)(o,{type:`button`,size:`sm`,variant:`primary`,onClick:e=>{e.stopPropagation(),l(n)},disabled:i,className:`rounded-xl`,children:t(i?`marketplaceInstalling`:`marketplaceInstall`)}):null,d?(0,A.jsx)(o,{type:`button`,size:`sm`,variant:`outline`,disabled:s,onClick:e=>{e.stopPropagation(),u(c?`enable`:`disable`,d)},className:`rounded-xl border-gray-200/80 text-gray-600`,children:dt(a,c)}):null,r&&f?(0,A.jsx)(o,{type:`button`,size:`sm`,variant:`outline`,disabled:s,onClick:e=>{e.stopPropagation(),u(`uninstall`,r)},className:`rounded-xl border-rose-100 text-rose-500 hover:border-rose-200 hover:bg-rose-50 hover:text-rose-600`,children:t(a===`uninstall`?`marketplaceRemoving`:`marketplaceUninstall`)}):null]})}function pt(e){let{item:n,record:r,language:i,installState:a,manageState:o,onOpen:s,onInstall:c,onManage:l}=e,u=g(i),d=n?.name??r?.label??r?.id??r?.spec??t(`marketplaceUnknownItem`),f=m(n?.summaryI18n,n?.summary,u)||(r?t(`marketplaceInstalledLocalSummary`):``),p=n?.install.spec??r?.spec??``,h=r?.id||r?.spec,_=h?o.actionsByTarget.get(h):void 0,v=!!_,ee=r?r.enabled===!1||r.runtimeStatus===`disabled`:!1,y=n?.install.spec,b=typeof y==`string`&&a.installingSpecs.has(y);return(0,A.jsxs)(`article`,{onClick:s,className:`group flex cursor-pointer items-start justify-between gap-3.5 rounded-2xl border border-gray-200/40 bg-white px-5 py-4 shadow-sm transition-all hover:border-blue-300/80 hover:shadow-md`,children:[(0,A.jsxs)(`div`,{className:`flex h-full min-w-0 flex-1 items-start gap-3`,children:[(0,A.jsx)(lt,{name:d,fallback:p||t(`marketplaceTypeExtension`)}),(0,A.jsx)(`div`,{className:`flex h-full min-w-0 flex-1 flex-col justify-center`,children:(0,A.jsx)(ut,{title:d,spec:p,summary:f})})]}),(0,A.jsx)(ft,{item:n,record:r,isInstalling:b,busyAction:_,busyForRecord:v,isDisabled:ee,onInstall:c,onManage:l})]})}var mt=12,ht=mt;function gt(e={}){let{forcedType:n}=e,r=c(),i=s(),{language:a}=ue(),o=ce(),l=(0,k.useMemo)(()=>n===`plugins`||n===`skills`?n:i.type===`plugins`||i.type===`skills`?i.type:null,[n,i.type]);(0,k.useEffect)(()=>{n||l||r(`/marketplace/plugins`,{replace:!0})},[n,l,r]);let u=l===`skills`?`skill`:`plugin`,d=(0,k.useMemo)(()=>g(a),[a]),p=u===`plugin`?{pageTitle:`marketplacePluginsPageTitle`,pageDescription:`marketplacePluginsPageDescription`,tabMarketplace:`marketplaceTabMarketplacePlugins`,tabInstalled:`marketplaceTabInstalledPlugins`,searchPlaceholder:`marketplaceSearchPlaceholderPlugins`,sectionCatalog:`marketplaceSectionPlugins`,sectionInstalled:`marketplaceSectionInstalledPlugins`,errorLoadData:`marketplaceErrorLoadingPluginsData`,errorLoadInstalled:`marketplaceErrorLoadingInstalledPlugins`,emptyData:`marketplaceNoPlugins`,emptyInstalled:`marketplaceNoInstalledPlugins`,installedCountSuffix:`marketplaceInstalledPluginsCountSuffix`}:{pageTitle:`marketplaceSkillsPageTitle`,pageDescription:`marketplaceSkillsPageDescription`,tabMarketplace:`marketplaceTabMarketplaceSkills`,tabInstalled:`marketplaceTabInstalledSkills`,searchPlaceholder:`marketplaceSearchPlaceholderSkills`,sectionCatalog:`marketplaceSectionSkills`,sectionInstalled:`marketplaceSectionInstalledSkills`,errorLoadData:`marketplaceErrorLoadingSkillsData`,errorLoadInstalled:`marketplaceErrorLoadingInstalledSkills`,emptyData:`marketplaceNoSkills`,emptyInstalled:`marketplaceNoInstalledSkills`,installedCountSuffix:`marketplaceInstalledSkillsCountSuffix`},[h,y]=(0,k.useState)(``),[b,x]=(0,k.useState)(``),[S,te]=(0,k.useState)(`all`),[C,ne]=(0,k.useState)(`relevance`),[re,w]=(0,k.useState)(new Set),[T,ie]=(0,k.useState)(new Map);(0,k.useEffect)(()=>{let e=setTimeout(()=>{x(h.trim())},250);return()=>clearTimeout(e)},[h]);let E=Qe(u),D=Ze({q:b||void 0,type:u,sort:C,pageSize:mt}),O=ee({disabled:S!==`all`||D.isError||!D.hasNextPage||D.isFetchingNextPage,onLoadMore:()=>D.fetchNextPage(),watchValue:`${u}:${S}:${b}:${C}:${D.data?.loadedItems??0}:${D.data?.loadedPages??0}`});(0,k.useEffect)(()=>{let e=O.containerRef.current;e&&typeof e.scrollTo==`function`&&e.scrollTo({top:0})},[O.containerRef,b,S,C,u]);let ae=$e(),oe=et(),{confirm:se,ConfirmDialog:j}=pe(),M=(0,k.useMemo)(()=>E.data?.records??[],[E.data?.records]),N=(0,k.useMemo)(()=>D.data?.items??[],[D.data?.items]),P=(0,k.useMemo)(()=>nt(N),[N]),F=(0,k.useMemo)(()=>rt(M),[M]),I=(0,k.useMemo)(()=>{let e=M.filter(e=>e.type===u).map(e=>({key:`${e.type}:${e.spec}:${e.id??``}`,record:e,item:at(e,P)})).filter(e=>ot(e.record,e.item,b,d));return e.sort((e,t)=>{let n=e.record.installedAt?Date.parse(e.record.installedAt):NaN,r=t.record.installedAt?Date.parse(t.record.installedAt):NaN;return!Number.isNaN(n)&&!Number.isNaN(r)&&n!==r?r-n:e.record.spec.localeCompare(t.record.spec)}),e},[M,u,P,b,d]),he=S===`installed`?I.length:D.data?.total??0,L=S===`all`&&D.isLoading&&!D.data,R=S===`installed`&&E.isLoading&&!E.data,z=L||R,ge=(0,k.useMemo)(()=>S===`installed`?E.isLoading&&!E.data?t(`loading`):`${I.length} ${t(p.installedCountSuffix)}`:D.data?`${N.length} / ${he}`:t(`loading`),[S,E.data,E.isLoading,I.length,D.data,N.length,he,p.installedCountSuffix]),B={installingSpecs:re},V={actionsByTarget:T},H=[{id:`all`,label:t(p.tabMarketplace)},{id:`installed`,label:t(p.tabInstalled),count:E.data?.total??0}],U=async e=>{let t=e.install.spec;if(!re.has(t)){w(e=>{let n=new Set(e);return n.add(t),n});try{await ae.mutateAsync({type:e.type,spec:t,kind:e.install.kind,...e.type===`skill`?{skill:e.slug,installPath:`skills/${e.slug}`}:{}})}catch{}finally{w(e=>{if(!e.has(t))return e;let n=new Set(e);return n.delete(t),n})}}},W=async(e,n)=>{let r=n.id||n.spec;if(r&&!T.has(r)&&!(e===`uninstall`&&!await se({title:`${t(`marketplaceUninstallTitle`)} ${r}?`,description:t(`marketplaceUninstallDescription`),confirmLabel:t(`marketplaceUninstall`),variant:`destructive`}))){ie(t=>{let n=new Map(t);return n.set(r,e),n});try{await oe.mutateAsync({type:n.type,action:e,id:r,spec:n.spec})}finally{ie(e=>{if(!e.has(r))return e;let t=new Map(e);return t.delete(r),t})}}},_e=async(e,n)=>{let r=e?.name??n?.label??n?.id??n?.spec??t(`marketplaceUnknownItem`);if(!e){let e=$({title:r,typeLabel:n?.type===`plugin`?t(`marketplaceTypePlugin`):t(`marketplaceTypeSkill`),spec:n?.spec??`-`,summary:t(`marketplaceInstalledLocalSummary`),metadataRaw:JSON.stringify(n??{},null,2),contentRaw:`-`});o.open(e,{newTab:!0,title:r,kind:`content`});return}let i=m(e.summaryI18n,e.summary,d);if(e.type===`skill`){try{let n=await Be(e.slug),a=$({title:r,typeLabel:t(`marketplaceTypeSkill`),spec:e.install.spec,summary:i,metadataRaw:n.metadataRaw,contentRaw:n.bodyRaw||n.raw,sourceUrl:n.sourceUrl,sourceLabel:`Source (${n.source})`,tags:e.tags,author:e.author});o.open(a,{newTab:!0,title:r,kind:`content`})}catch(n){let a=$({title:r,typeLabel:t(`marketplaceTypeSkill`),spec:e.install.spec,summary:i,metadataRaw:JSON.stringify({error:n instanceof Error?n.message:String(n)},null,2),contentRaw:t(`marketplaceOperationFailed`)});o.open(a,{newTab:!0,title:r,kind:`content`})}return}try{let n=await Ve(e.slug),a=$({title:r,typeLabel:t(`marketplaceTypePlugin`),spec:e.install.spec,summary:i,metadataRaw:n.metadataRaw,contentRaw:n.bodyRaw||n.raw||e.summary,sourceUrl:n.sourceUrl,sourceLabel:`Source (${n.source})`,tags:e.tags,author:e.author});o.open(a,{newTab:!0,title:r,kind:`content`})}catch(n){let a=$({title:r,typeLabel:t(`marketplaceTypePlugin`),spec:e.install.spec,summary:i,metadataRaw:JSON.stringify({error:n instanceof Error?n.message:String(n)},null,2),contentRaw:`-`});o.open(a,{newTab:!0,title:r,kind:`content`})}};return(0,A.jsxs)(de,{className:`flex h-full min-h-0 flex-col pb-0`,children:[(0,A.jsx)(fe,{title:t(p.pageTitle),description:t(p.pageDescription)}),(0,A.jsx)(me,{tabs:H,activeTab:S,onChange:e=>te(e),className:`mb-4`}),(0,A.jsx)(f,{scope:S,searchText:h,searchPlaceholder:t(p.searchPlaceholder),sort:C,onSearchTextChange:y,onSortChange:ne}),(0,A.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,A.jsx)(`h3`,{className:`text-[14px] font-semibold text-gray-900`,children:t(S===`installed`?p.sectionInstalled:p.sectionCatalog)}),(0,A.jsx)(`span`,{className:`text-[12px] text-gray-500`,children:ge})]}),S===`all`&&D.isError&&(0,A.jsx)(le,{tone:`danger`,title:t(p.errorLoadData),description:D.error.message}),S===`installed`&&E.isError&&(0,A.jsx)(le,{tone:`danger`,title:t(p.errorLoadInstalled),description:E.error.message}),(0,A.jsxs)(`div`,{ref:O.containerRef,className:`min-h-0 flex-1 overflow-y-auto custom-scrollbar pr-1`,"aria-busy":z||D.isFetchingNextPage,children:[(0,A.jsxs)(`div`,{"data-testid":z?`marketplace-list-skeleton`:void 0,className:`grid grid-cols-1 gap-3 lg:grid-cols-2 2xl:grid-cols-3`,children:[z&&(0,A.jsx)(v,{count:ht}),!z&&S===`all`&&N.map(e=>(0,A.jsx)(pt,{item:e,record:it(e,F),language:a,installState:B,manageState:V,onOpen:()=>void _e(e,it(e,F)),onInstall:U,onManage:W},e.id)),!z&&S===`installed`&&I.map(e=>(0,A.jsx)(pt,{item:e.item,record:e.record,language:a,installState:B,manageState:V,onOpen:()=>void _e(e.item,e.record),onInstall:U,onManage:W},e.key))]}),S===`all`&&!z&&!D.isError&&N.length===0&&(0,A.jsx)(`div`,{className:`text-[13px] text-gray-500 py-8 text-center`,children:t(p.emptyData)}),S===`installed`&&!z&&!E.isError&&I.length===0&&(0,A.jsx)(`div`,{className:`text-[13px] text-gray-500 py-8 text-center`,children:t(p.emptyInstalled)}),S===`all`&&!L&&!D.isError&&(0,A.jsx)(_,{hasMore:!!D.hasNextPage,loading:D.isFetchingNextPage,sentinelRef:O.sentinelRef})]})]}),(0,A.jsx)(j,{})]})}export{J as a,Pe as c,Re as i,Fe as l,q as n,K as o,Y as r,Le as s,gt as t,Ie as u};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import{_ as e,i as t,m as n,p as r}from"./i18n-CpTZLchQ.js";import{n as i,r as a}from"./dist-BruyLa92.js";import{i as o,s,t as c}from"./client-C-8fH7-c.js";import{c as l,i as u,l as d,n as f,o as p,r as m,s as h,t as g}from"./use-infinite-scroll-loader-DJ1L81Dz.js";import{t as _}from"./useMutation-CNcz2fgt.js";import{a as v,i as y,n as b,r as x,t as S}from"./select-CVz0t7MF.js";import{i as ee}from"./DocBrowserContext-BXydqby-.js";import{_t as C,bt as w,ft as T,gt as E,ht as D,i as O,mt as k,vt as A,yt as j}from"./index-zDZfXoI4.js";import{t as M}from"./tag-chip-DMXdnLcj.js";import{n as te,t as ne}from"./page-layout-0UcO9H9Z.js";import{t as re}from"./useConfirmDialog-BsVuqu1x.js";import{t as N}from"./tabs-custom-YcZUWn3o.js";import{t as P}from"./switch-CM29eCAR.js";var F=e(n(),1);async function I(e){let t=new URLSearchParams;e.q?.trim()&&t.set(`q`,e.q.trim()),e.tag?.trim()&&t.set(`tag`,e.tag.trim()),e.sort&&t.set(`sort`,e.sort),typeof e.page==`number`&&Number.isFinite(e.page)&&t.set(`page`,String(Math.max(1,Math.trunc(e.page)))),typeof e.pageSize==`number`&&Number.isFinite(e.pageSize)&&t.set(`pageSize`,String(Math.max(1,Math.trunc(e.pageSize))));let n=t.toString(),r=await c.get(n?`/api/marketplace/mcp/items?${n}`:`/api/marketplace/mcp/items`);if(!r.ok)throw Error(r.error.message);return r.data}async function L(){let e=await c.get(`/api/marketplace/mcp/installed`);if(!e.ok)throw Error(e.error.message);return e.data}async function R(e){let t=await c.get(`/api/marketplace/mcp/items/${encodeURIComponent(e)}/content`);if(!t.ok)throw Error(t.error.message);return t.data}async function z(e){let t=await c.post(`/api/marketplace/mcp/install`,{type:`mcp`,...e});if(!t.ok)throw Error(t.error.message);return t.data}async function B(e){let t=await c.post(`/api/marketplace/mcp/manage`,{type:`mcp`,...e});if(!t.ok)throw Error(t.error.message);return t.data}async function V(e){let t=await c.post(`/api/marketplace/mcp/doctor`,{name:e});if(!t.ok)throw Error(t.error.message);return t.data}function H(e){return(e??``).trim().toLowerCase()}function U(e){let t=new Map;for(let n of e){let e=[n.catalogSlug,n.spec,n.id,n.label];for(let r of e){let e=H(r);!e||t.has(e)||t.set(e,n)}}return t}function W(e,t){let n=[e.slug,e.install.spec,e.id,e.name];for(let e of n){let n=H(e);if(!n)continue;let r=t.get(n);if(r)return r}}function G(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function K(e,t,n,r,i){let a=`<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<title>${G(e)}</title>
|
|
7
|
-
<style>
|
|
8
|
-
body { margin: 0; background: #f8fafc; color: #0f172a; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; }
|
|
9
|
-
.wrap { max-width: 980px; margin: 0 auto; padding: 28px 20px 40px; }
|
|
10
|
-
.hero { border: 1px solid #dbeafe; border-radius: 16px; background: linear-gradient(180deg, #eff6ff, #ffffff); padding: 20px; }
|
|
11
|
-
.hero h1 { margin: 0; font-size: 26px; }
|
|
12
|
-
.grid { display: grid; grid-template-columns: 280px 1fr; gap: 14px; margin-top: 16px; }
|
|
13
|
-
.card { border: 1px solid #e2e8f0; background: #fff; border-radius: 14px; overflow: hidden; }
|
|
14
|
-
.card h2 { margin: 0; padding: 12px 14px; font-size: 13px; font-weight: 700; color: #1d4ed8; border-bottom: 1px solid #e2e8f0; background: #f8fafc; }
|
|
15
|
-
.body { padding: 12px 14px; }
|
|
16
|
-
pre { margin: 0; white-space: pre-wrap; line-height: 1.7; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
|
|
17
|
-
a { color: #2563eb; text-decoration: none; }
|
|
18
|
-
@media (max-width: 860px) { .grid { grid-template-columns: 1fr; } }
|
|
19
|
-
</style>
|
|
20
|
-
</head>
|
|
21
|
-
<body>
|
|
22
|
-
<main class="wrap">
|
|
23
|
-
<section class="hero">
|
|
24
|
-
<h1>${G(e)}</h1>
|
|
25
|
-
${i?`<p>${G(i)}</p>`:``}
|
|
26
|
-
${r?`<p><a href="${G(r)}" target="_blank" rel="noopener noreferrer">${G(r)}</a></p>`:``}
|
|
27
|
-
</section>
|
|
28
|
-
<section class="grid">
|
|
29
|
-
<article class="card">
|
|
30
|
-
<h2>Metadata</h2>
|
|
31
|
-
<div class="body"><pre>${G(t)}</pre></div>
|
|
32
|
-
</article>
|
|
33
|
-
<article class="card">
|
|
34
|
-
<h2>Content</h2>
|
|
35
|
-
<div class="body"><pre>${G(n)}</pre></div>
|
|
36
|
-
</article>
|
|
37
|
-
</section>
|
|
38
|
-
</main>
|
|
39
|
-
</body>
|
|
40
|
-
</html>`;return`data:text/html;charset=utf-8,${encodeURIComponent(a)}`}function q(e,n,r){return u(n?.summaryI18n,n?.summary,e)||m(r,e)||t(`marketplaceInstalledLocalSummary`)}function J(e,t){return t?.transport?t.transport.toUpperCase():(e?.install?.transportTypes??[]).map(e=>e.toUpperCase()).join(` / `)||`MCP`}var Y=r();function X(e){let{item:n,record:r,localeFallbacks:i,onOpen:o,onInstall:s,onToggle:c,onDoctor:l,onRemove:u}=e,d=r,f=n?.name??r?.label??r?.id??`MCP`,p=q(i,n,r),m=J(n,r),h=d?d.enabled===!1?t(`marketplaceDisable`):t(`statusReady`):null;return(0,Y.jsx)(`article`,{onClick:o,className:`cursor-pointer rounded-2xl border border-gray-200/70 bg-white p-4 shadow-sm transition hover:border-blue-300 hover:shadow-md`,children:(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-semibold text-gray-900`,children:f}),(0,Y.jsx)(`div`,{className:`mt-1 text-xs text-gray-500`,children:m}),(0,Y.jsx)(`div`,{className:`mt-2 line-clamp-2 text-sm text-gray-600`,children:p}),(0,Y.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(n?.tags??[]).map(e=>(0,Y.jsx)(M,{children:e},e)),h?(0,Y.jsx)(M,{tone:`success`,children:h}):null]})]}),(0,Y.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2`,children:[!d&&n&&s?(0,Y.jsx)(a,{type:`button`,size:`sm`,variant:`primary`,className:`rounded-xl`,onClick:e=>{e.stopPropagation(),s()},children:t(`marketplaceInstall`)}):null,d?(0,Y.jsxs)(Y.Fragment,{children:[c?(0,Y.jsx)(a,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-gray-200 text-gray-700`,onClick:e=>{e.stopPropagation(),c()},children:d.enabled===!1?t(`marketplaceEnable`):t(`marketplaceDisable`)}):null,l?(0,Y.jsx)(a,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-blue-200 text-blue-700 hover:border-blue-300 hover:bg-blue-50 hover:text-blue-700`,onClick:e=>{e.stopPropagation(),l()},children:t(`marketplaceMcpDoctor`)}):null,u?(0,Y.jsx)(a,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-rose-200 text-rose-600 hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600`,onClick:e=>{e.stopPropagation(),u()},children:t(`marketplaceMcpRemove`)}):null]}):null]})]})})}function ie(e){let{item:t,open:n,pending:r,onOpenChange:i,onSubmit:a}=e;return(0,Y.jsx)(D,{open:n,onOpenChange:i,children:t?(0,Y.jsx)(Z,{item:t,pending:r,onOpenChange:i,onSubmit:a},`${t.slug}:${n?`open`:`closed`}`):null})}function Z(e){let{item:n,pending:r,onOpenChange:i,onSubmit:o}=e,s=n.install,[c,l]=(0,F.useState)(s?.defaultName??``),[u,d]=(0,F.useState)(!0),[f,p]=(0,F.useState)(Object.fromEntries((s?.inputs??[]).map(e=>[e.id,e.defaultValue??``])));return(0,Y.jsxs)(E,{children:[(0,Y.jsxs)(j,{children:[(0,Y.jsx)(w,{children:t(`marketplaceMcpInstallDialogTitle`)}),(0,Y.jsx)(C,{children:n.name})]}),(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:t(`marketplaceMcpServerName`)}),(0,Y.jsx)(k,{value:c,onChange:e=>l(e.target.value),placeholder:s?.defaultName??`mcp-server`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl border border-gray-200 px-3 py-3`,children:[(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:t(`marketplaceMcpAllAgents`)}),(0,Y.jsx)(`div`,{className:`text-xs text-gray-500`,children:t(`marketplaceMcpAllAgentsDescription`)})]}),(0,Y.jsx)(P,{checked:u,onCheckedChange:d})]}),(s?.inputs??[]).map(e=>(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:e.label}),e.description?(0,Y.jsx)(`div`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,Y.jsx)(k,{type:e.secret?`password`:`text`,value:f[e.id]??``,onChange:t=>p(n=>({...n,[e.id]:t.target.value})),placeholder:e.defaultValue??``})]},e.id))]}),(0,Y.jsxs)(A,{children:[(0,Y.jsx)(a,{variant:`outline`,onClick:()=>i(!1),disabled:r,children:t(`cancel`)}),(0,Y.jsx)(a,{onClick:()=>void o({name:c,allAgents:u,inputs:f}),disabled:r||!c.trim(),children:t(r?`marketplaceInstalling`:`marketplaceInstall`)})]})]})}function ae(e){let{result:n,targetName:r,open:i,pending:a,onOpenChange:o}=e;return(0,Y.jsx)(D,{open:i,onOpenChange:o,children:(0,Y.jsxs)(E,{children:[(0,Y.jsxs)(j,{children:[(0,Y.jsx)(w,{children:t(`marketplaceMcpDoctorTitle`)}),(0,Y.jsx)(C,{children:r??`-`})]}),a?(0,Y.jsx)(`div`,{className:`text-sm text-gray-500`,children:t(`loading`)}):null,!a&&n?(0,Y.jsxs)(`div`,{className:`space-y-3 text-sm text-gray-700`,children:[(0,Y.jsxs)(`div`,{children:[t(`marketplaceMcpDoctorAccessible`),`:`,` `,n.accessible?t(`statusReady`):t(`marketplaceOperationFailed`)]}),(0,Y.jsxs)(`div`,{children:[t(`marketplaceMcpDoctorTransport`),`:`,` `,n.transport.toUpperCase()]}),(0,Y.jsxs)(`div`,{children:[t(`marketplaceMcpDoctorTools`),`: `,n.toolCount]}),n.error?(0,Y.jsx)(T,{tone:`danger`,description:n.error,className:`rounded-lg`}):null]}):null]})})}function oe(e){let t=d({queryKey:[`marketplace-mcp-items`,e],initialPageParam:1,queryFn:({pageParam:t})=>I({...e,page:t}),getNextPageParam:e=>e.page<e.totalPages?e.page+1:void 0,staleTime:15e3}),n=(0,F.useMemo)(()=>l(t.data),[t.data]);return{...t,data:n}}function se(){return o({queryKey:[`marketplace-mcp-installed`],queryFn:()=>L(),staleTime:1e4})}function ce(){let e=s();return _({mutationFn:z,onSuccess:n=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),i.success(n.message||t(`marketplaceInstallSuccessMcp`))},onError:e=>{i.error(e.message||t(`marketplaceInstallFailed`))}})}function le(){let e=s();return _({mutationFn:B,onSuccess:n=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),i.success(n.message||t(`marketplaceMcpManageSuccess`))},onError:e=>{i.error(e.message||t(`marketplaceOperationFailed`))}})}var ue=12;function Q(){let[e,n]=(0,F.useState)(`catalog`),[r,i]=(0,F.useState)(``),[a,o]=(0,F.useState)(``),[s,c]=(0,F.useState)(`relevance`),[l,u]=(0,F.useState)(null),[d,m]=(0,F.useState)(null),[C,w]=(0,F.useState)(null),{language:E}=O(),D=ee(),{confirm:A,ConfirmDialog:j}=re(),M=(0,F.useMemo)(()=>f(E),[E]);(0,F.useEffect)(()=>{let e=window.setTimeout(()=>{o(r.trim())},250);return()=>window.clearTimeout(e)},[r]);let P=oe({q:a||void 0,sort:s,pageSize:ue}),I=se(),{containerRef:L,sentinelRef:z}=g({disabled:e!==`catalog`||P.isError||!P.hasNextPage||P.isFetchingNextPage,onLoadMore:()=>P.fetchNextPage(),watchValue:`${e}:${a}:${s}:${P.data?.loadedItems??0}:${P.data?.loadedPages??0}`});(0,F.useEffect)(()=>{let e=L.current;e&&typeof e.scrollTo==`function`&&e.scrollTo({top:0})},[L,a,e,s]);let B=ce(),H=le(),G=_({mutationFn:V,onSuccess:(e,t)=>{m(t),w(e)}}),J=(0,F.useMemo)(()=>U(I.data?.records??[]),[I.data?.records]),Z=(0,F.useMemo)(()=>(I.data?.records??[]).filter(e=>{let t=[e.id??``,e.label??``,e.catalogSlug??``,e.description??``,e.descriptionZh??``].join(` `).toLowerCase();return a?t.includes(a.toLowerCase()):!0}),[I.data?.records,a]),Q=async(e,n)=>{let r=e?.name??n?.label??n?.id??`MCP`,i=q(M,e,n);if(!e){let e=K(r,JSON.stringify(n??{},null,2),t(`marketplaceInstalledLocalSummary`),n?.docsUrl,i);D.open(e,{newTab:!0,title:r,kind:`content`});return}try{let t=await R(e.slug),n=K(r,t.metadataRaw||JSON.stringify(e,null,2),t.bodyRaw||t.raw,t.sourceUrl,i);D.open(n,{newTab:!0,title:r,kind:`content`})}catch(e){let t=K(r,JSON.stringify({error:e instanceof Error?e.message:String(e)},null,2),i,void 0,i);D.open(t,{newTab:!0,title:r,kind:`content`})}},de=async e=>{l&&(await B.mutateAsync({spec:l.slug,name:e.name.trim(),allAgents:e.allAgents,inputs:e.inputs}),u(null))},$=async(e,n)=>{let r=n.id||n.spec;r&&(e===`remove`&&!await A({title:`${t(`marketplaceMcpRemoveTitle`)} ${r}?`,description:t(`marketplaceMcpRemoveDescription`),confirmLabel:t(`marketplaceMcpRemove`),variant:`destructive`})||await H.mutateAsync({action:e,id:r,spec:n.spec}))};return(0,Y.jsxs)(te,{className:`flex h-full min-h-0 flex-col pb-0`,children:[(0,Y.jsx)(ne,{title:t(`marketplaceMcpPageTitle`),description:t(`marketplaceMcpPageDescription`)}),(0,Y.jsx)(N,{tabs:[{id:`catalog`,label:t(`marketplaceMcpTabCatalog`)},{id:`installed`,label:t(`marketplaceMcpTabInstalled`),count:I.data?.total??0}],activeTab:e,onChange:e=>n(e),className:`mb-4`}),(0,Y.jsxs)(`div`,{className:`mb-4 flex flex-col gap-3 md:flex-row md:items-center md:justify-between`,children:[(0,Y.jsx)(k,{value:r,onChange:e=>i(e.target.value),placeholder:t(`marketplaceMcpSearchPlaceholder`),className:`md:max-w-sm`}),(0,Y.jsxs)(S,{value:s,onValueChange:e=>c(e),children:[(0,Y.jsx)(y,{className:`h-9 w-[180px] rounded-lg`,children:(0,Y.jsx)(v,{})}),(0,Y.jsxs)(b,{children:[(0,Y.jsx)(x,{value:`relevance`,children:t(`marketplaceSortRelevance`)}),(0,Y.jsx)(x,{value:`updated`,children:t(`marketplaceSortUpdated`)})]})]})]}),(0,Y.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,Y.jsx)(`h3`,{className:`text-sm font-semibold text-gray-900`,children:t(e===`catalog`?`marketplaceMcpSectionCatalog`:`marketplaceMcpSectionInstalled`)}),(0,Y.jsx)(`span`,{className:`text-xs text-gray-500`,children:e===`catalog`?P.data?.total??0:I.data?.total??0})]}),(0,Y.jsxs)(`div`,{ref:L,className:`min-h-0 flex-1 overflow-y-auto pr-1`,"aria-busy":P.isLoading||P.isFetchingNextPage,children:[(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 lg:grid-cols-2 2xl:grid-cols-3`,children:[e===`catalog`&&P.isLoading&&(0,Y.jsx)(h,{count:6}),e===`catalog`&&!P.isLoading&&(P.data?.items??[]).map(e=>{let t=W(e,J);return(0,Y.jsx)(X,{item:e,record:t,localeFallbacks:M,onOpen:()=>void Q(e,t),onInstall:()=>u(e),onToggle:t?()=>void $(t.enabled===!1?`enable`:`disable`,t):void 0,onDoctor:t?()=>{m(t.id??null),w(null),G.mutateAsync(t.id??``)}:void 0,onRemove:t?()=>void $(`remove`,t):void 0},e.id)}),e===`installed`&&Z.map(e=>(0,Y.jsx)(X,{record:e,localeFallbacks:M,onOpen:()=>void Q(void 0,e),onToggle:()=>void $(e.enabled===!1?`enable`:`disable`,e),onDoctor:()=>{m(e.id??null),w(null),G.mutateAsync(e.id??``)},onRemove:()=>void $(`remove`,e)},e.id??e.spec))]}),e===`catalog`&&P.isError&&(0,Y.jsx)(T,{tone:`danger`,title:t(`marketplaceMcpSectionCatalog`),description:P.error.message}),e===`installed`&&I.isError&&(0,Y.jsx)(T,{tone:`danger`,title:t(`marketplaceMcpSectionInstalled`),description:I.error.message}),e===`catalog`&&!P.isLoading&&(P.data?.items?.length??0)===0&&(0,Y.jsx)(`div`,{className:`py-8 text-center text-sm text-gray-500`,children:t(`marketplaceNoMcp`)}),e===`installed`&&Z.length===0&&(0,Y.jsx)(`div`,{className:`py-8 text-center text-sm text-gray-500`,children:t(`marketplaceNoInstalledMcp`)}),e===`catalog`&&!P.isError&&(0,Y.jsx)(p,{hasMore:!!P.hasNextPage,loading:P.isFetchingNextPage,sentinelRef:z})]})]}),(0,Y.jsx)(ie,{item:l,open:!!l,pending:B.isPending,onOpenChange:e=>!e&&u(null),onSubmit:de}),(0,Y.jsx)(ae,{open:!!d,targetName:d,result:C,pending:G.isPending,onOpenChange:e=>!e&&m(null)}),(0,Y.jsx)(j,{})]})}export{Q as McpMarketplacePage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as e,p as t,u as n}from"./i18n-CpTZLchQ.js";e();var r=t();function i({children:e,fullHeight:t=!1,className:i}){return(0,r.jsx)(`div`,{className:n(`animate-fade-in`,t?`h-[calc(100vh-80px)] w-full flex flex-col`:`pb-16`,i),children:e})}function a({title:e,description:t,actions:i,className:a}){return(0,r.jsxs)(`div`,{className:n(`flex items-center justify-between mb-6 shrink-0`,a),children:[(0,r.jsxs)(`div`,{children:[(0,r.jsx)(`h2`,{className:`text-xl font-semibold text-gray-900`,children:e}),t&&(0,r.jsx)(`p`,{className:`text-sm text-gray-500 mt-1`,children:t})]}),i&&(0,r.jsx)(`div`,{className:`flex items-center gap-2 shrink-0`,children:i})]})}export{i as n,a as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`Play`,[[`polygon`,{points:`6 3 20 12 6 21 6 3`,key:`1oa8hb`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`RefreshCw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,i as t,m as n,n as r,p as i}from"./i18n-CpTZLchQ.js";import{r as a}from"./dist-BruyLa92.js";import{t as o}from"./createLucideIcon-dy5ie7Ox.js";import{t as s}from"./refresh-ccw-COVhNHtN.js";import{St as c,at as l,ct as u,dt as d,ft as f,it as p,nt as m,ot as h,rt as g,st as _,ut as v}from"./index-zDZfXoI4.js";import{n as y,t as b}from"./page-layout-0UcO9H9Z.js";import{t as x}from"./status-dot-DpPtVzQT.js";var S=o(`Laptop`,[[`path`,{d:`M20 16V7a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v9m16 0H4m16 0 1.28 2.55a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45L4 16`,key:`tarvll`}]]),C=[/invalid or expired token/i,/missing bearer token/i,/token expired/i,/token is invalid/i,/run "nextclaw login"/i,/browser sign-in again/i];function w(e){return e?.runtime?.lastError?.trim()||``}function T(e){let n=t(`remoteStatusIssueDetailGeneric`),r=w(e);return r?`${n} (${r})`:n}function E(e){if(!e?.settings.enabled)return!1;let t=w(e);return C.some(e=>e.test(t))}function D(e){return E(e)?{hero:{badgeStatus:`warning`,badgeLabel:t(`remoteStateReauthorizationRequired`),title:t(`remoteStatusReauthorizationTitle`),description:t(`remoteStatusReauthorizationDescription`)},primaryAction:{kind:`reauthorize`,label:t(`remoteReauthorizeNow`),showRefreshIcon:!1},issueHint:{title:t(`remoteStatusRecoveryTitle`),body:t(`remoteStatusReauthorizationHint`)},shouldShowIssueHint:!0,requiresReauthorization:!0}:e?.account.loggedIn?e.settings.enabled?e.service.running?e.runtime?.state===`connected`?{hero:{badgeStatus:`ready`,badgeLabel:t(`statusReady`),title:t(`remoteStatusReadyTitle`),description:t(`remoteStatusReadyDescription`)},primaryAction:{kind:`repair`,label:t(`remoteReconnectNow`),showRefreshIcon:!0},issueHint:null,shouldShowIssueHint:!1,requiresReauthorization:!1}:e.runtime?.state===`connecting`?{hero:{badgeStatus:`active`,badgeLabel:t(`connecting`),title:t(`remoteStatusConnectingTitle`),description:t(`remoteStatusConnectingDescription`)},primaryAction:{kind:`repair`,label:t(`remoteReconnectNow`),showRefreshIcon:!0},issueHint:null,shouldShowIssueHint:!1,requiresReauthorization:!1}:{hero:{badgeStatus:`warning`,badgeLabel:t(`remoteStateDisconnected`),title:t(`remoteStatusIssueTitle`),description:t(`remoteStatusIssueDescription`)},primaryAction:{kind:`repair`,label:t(`remoteReconnectNow`),showRefreshIcon:!0},issueHint:{title:t(`remoteStatusRecoveryTitle`),body:T(e)},shouldShowIssueHint:!!(e.settings.enabled&&e.account.loggedIn),requiresReauthorization:!1}:{hero:{badgeStatus:`warning`,badgeLabel:t(`remoteServiceStopped`),title:t(`remoteStatusNeedsServiceTitle`),description:t(`remoteStatusNeedsServiceDescription`)},primaryAction:{kind:`repair`,label:t(`remoteReconnectNow`),showRefreshIcon:!0},issueHint:{title:t(`remoteStatusRecoveryTitle`),body:t(`remoteStatusIssueDetailServiceStopped`)},shouldShowIssueHint:!0,requiresReauthorization:!1}:{hero:{badgeStatus:`inactive`,badgeLabel:t(`statusInactive`),title:t(`remoteStatusNeedsEnable`),description:t(`remoteStatusNeedsEnableDescription`)},primaryAction:{kind:`enable`,label:t(`remoteEnableNow`),showRefreshIcon:!1},issueHint:null,shouldShowIssueHint:!1,requiresReauthorization:!1}:{hero:{badgeStatus:`setup`,badgeLabel:t(`statusSetup`),title:t(`remoteStatusNeedsSignIn`),description:t(`remoteStatusNeedsSignInDescription`)},primaryAction:{kind:`sign-in-enable`,label:t(`remoteSignInAndEnable`),showRefreshIcon:!1},issueHint:null,shouldShowIssueHint:!1,requiresReauthorization:!1}}var O=e(n(),1),k=i();function A(e){let{label:t,muted:n,value:r}=e;return(0,k.jsxs)(`div`,{className:`flex items-start justify-between gap-4 py-2 text-sm`,children:[(0,k.jsx)(`span`,{className:`text-gray-500`,children:t}),(0,k.jsx)(`span`,{className:n?`text-right text-gray-500`:`text-right text-gray-900`,children:r==null||r===``?`-`:String(r)})]})}function j(){let e=_(),n=v(),i=n.data,o=u(e=>e.actionLabel),C=(0,O.useMemo)(()=>D(i),[i]),w=!!o,T=i?.runtime?.deviceName?.trim()||i?.settings.deviceName?.trim()||t(`remoteDeviceNameAuto`),E=!!(i?.account.loggedIn&&d(i)),{hero:j,issueHint:M}=C;return(0,O.useEffect)(()=>{e.remoteAccessManager.syncStatus(i)},[e,i]),n.isLoading&&!i?(0,k.jsx)(`div`,{className:`p-8 text-gray-400`,children:t(`remoteLoading`)}):(0,k.jsxs)(y,{className:`space-y-6`,children:[(0,k.jsx)(b,{title:t(`remotePageTitle`),description:t(`remotePageDescription`)}),(0,k.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-[1.2fr_0.8fr]`,children:[(0,k.jsxs)(m,{children:[(0,k.jsxs)(l,{className:`space-y-4`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,k.jsx)(h,{children:j.title}),(0,k.jsx)(x,{status:j.badgeStatus,label:j.badgeLabel})]}),(0,k.jsx)(p,{children:j.description})]}),(0,k.jsxs)(g,{className:`space-y-5`,children:[(0,k.jsxs)(f,{tone:`neutral`,children:[(0,k.jsx)(A,{label:t(`remoteSignedInAccount`),value:i?.account.email}),(0,k.jsx)(A,{label:t(`remoteDeviceName`),value:T}),(0,k.jsx)(A,{label:t(`remoteConnectionStatus`),value:j.badgeLabel}),(0,k.jsx)(A,{label:t(`remoteLastConnectedAt`),value:i?.runtime?.lastConnectedAt?r(i.runtime.lastConnectedAt):`-`,muted:!0})]}),(0,k.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[C.primaryAction?(0,k.jsxs)(a,{onClick:()=>{if(C.primaryAction?.kind===`reauthorize`){e.remoteAccessManager.reauthorizeRemoteAccess(i);return}if(C.primaryAction?.kind===`repair`){e.remoteAccessManager.repairRemoteAccess(i);return}e.remoteAccessManager.enableRemoteAccess(i)},disabled:w,children:[C.primaryAction.showRefreshIcon?(0,k.jsx)(s,{className:`mr-2 h-4 w-4`}):null,o||C.primaryAction.label]}):null,(0,k.jsxs)(a,{variant:`outline`,onClick:()=>void e.accountManager.openNextClawWeb(),disabled:w||!E,children:[(0,k.jsx)(c,{className:`mr-2 h-4 w-4`}),t(`remoteOpenDeviceList`)]}),i?.settings.enabled?(0,k.jsx)(a,{variant:`outline`,onClick:()=>void e.remoteAccessManager.disableRemoteAccess(i),disabled:w,children:t(`remoteDisable`)}):null]}),C.shouldShowIssueHint&&M?(0,k.jsx)(f,{tone:`warning`,title:M.title,description:M.body}):null,(0,k.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`remoteOpenWebHint`)})]})]}),(0,k.jsxs)(m,{children:[(0,k.jsxs)(l,{children:[(0,k.jsxs)(h,{className:`flex items-center gap-2`,children:[(0,k.jsx)(S,{className:`h-4 w-4 text-primary`}),t(`remoteDeviceSectionTitle`)]}),(0,k.jsx)(p,{children:t(`remoteDeviceSectionDescription`)})]}),(0,k.jsxs)(g,{className:`space-y-5`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(x,{status:i?.account.loggedIn?`ready`:`inactive`,label:i?.account.loggedIn?t(`remoteAccountConnected`):t(`remoteAccountNotConnected`)}),(0,k.jsx)(x,{status:i?.settings.enabled?`active`:`inactive`,label:i?.settings.enabled?t(`remoteEnabled`):t(`remoteStateDisabled`)}),(0,k.jsx)(x,{status:i?.service.running?`active`:`inactive`,label:i?.service.running?t(`remoteServiceRunning`):t(`remoteServiceStopped`)})]}),(0,k.jsxs)(f,{tone:`neutral`,children:[(0,k.jsx)(A,{label:t(`remoteDeviceName`),value:T}),(0,k.jsx)(A,{label:t(`remoteConnectionStatus`),value:j.badgeLabel}),(0,k.jsx)(A,{label:t(`remoteLastConnectedAt`),value:i?.runtime?.lastConnectedAt?r(i.runtime.lastConnectedAt):`-`,muted:!0})]}),(0,k.jsx)(f,{tone:`neutral`,borderStyle:`dashed`,description:i?.account.loggedIn?t(`remoteOpenWebHint`):t(`remoteStatusNeedsSignInDescription`),className:`text-sm`})]})]})]})]})}export{j as RemoteAccessPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`Search`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as e,i as t,m as n,p as r}from"./i18n-CpTZLchQ.js";import{n as i,r as a}from"./dist-BruyLa92.js";import{$ as o,Q as s,Z as c,at as l,et as u,it as d,mt as f,nt as p,ot as m,pt as h,rt as g,tt as _}from"./index-zDZfXoI4.js";import{n as v,t as y}from"./page-layout-0UcO9H9Z.js";import{t as b}from"./switch-CM29eCAR.js";var x=e(n(),1),S=r(),C=8;function w(e){return e.trim().length>=C}function T(e,n){return e===n?!0:(i.error(t(`authPasswordMismatch`)),!1)}function E(){let e=c(),n=o(),r=u(),i=_(),v=s(),[y,C]=(0,x.useState)(``),[E,D]=(0,x.useState)(``),[O,k]=(0,x.useState)(``),[A,j]=(0,x.useState)(``),[M,N]=(0,x.useState)(``),P=e.data,F=y.trim().length>0&&w(E)&&E===O&&!n.isPending,I=w(A)&&A===M&&!i.isPending,L=async()=>{if(T(E,O))try{await n.mutateAsync({username:y.trim(),password:E}),D(``),k(``)}catch{}},R=async()=>{if(T(A,M))try{await i.mutateAsync({password:A}),j(``),N(``)}catch{}},z=async e=>{try{await r.mutateAsync({enabled:e})}catch{}},B=async()=>{try{await v.mutateAsync()}catch{}};return e.isLoading&&!P?(0,S.jsxs)(p,{children:[(0,S.jsxs)(l,{children:[(0,S.jsx)(m,{children:t(`authSecurityTitle`)}),(0,S.jsx)(d,{children:t(`authSecurityDescription`)})]}),(0,S.jsx)(g,{className:`text-sm text-gray-500`,children:t(`loading`)})]}):e.isError||!P?(0,S.jsxs)(p,{children:[(0,S.jsxs)(l,{children:[(0,S.jsx)(m,{children:t(`authSecurityTitle`)}),(0,S.jsx)(d,{children:t(`authSecurityDescription`)})]}),(0,S.jsxs)(g,{className:`space-y-4`,children:[(0,S.jsx)(`p`,{className:`text-sm text-gray-500`,children:t(`authStatusLoadFailed`)}),(0,S.jsx)(a,{variant:`outline`,onClick:()=>{e.refetch()},children:t(`authRetryStatus`)})]})]}):P.configured?(0,S.jsxs)(p,{children:[(0,S.jsxs)(l,{children:[(0,S.jsx)(m,{children:t(`authSecurityTitle`)}),(0,S.jsx)(d,{children:t(`authSecurityDescription`)})]}),(0,S.jsxs)(g,{className:`space-y-6`,children:[(0,S.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-4`,children:[(0,S.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-start md:justify-between`,children:[(0,S.jsxs)(`div`,{className:`space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authStatusLabel`)}),(0,S.jsx)(`p`,{className:`text-sm text-gray-600`,children:t(`authStatusConfiguredUser`).replace(`{username}`,P.username??``)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authUsernameFixedHelp`)})]}),(0,S.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-medium text-gray-700`,children:P.enabled?t(`enabled`):t(`disabled`)})]}),(0,S.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4 border-t border-gray-200 pt-4 md:flex-row md:items-center md:justify-between`,children:[(0,S.jsxs)(`div`,{className:`space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authEnableLabel`)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:P.enabled?t(`authEnableOnHelp`):t(`authEnableOffHelp`)})]}),(0,S.jsx)(b,{checked:P.enabled,disabled:r.isPending,onCheckedChange:e=>{z(e)}})]})]}),(0,S.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-4 space-y-4`,children:[(0,S.jsxs)(`div`,{className:`space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authPasswordSectionTitle`)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authPasswordSectionDescription`)})]}),(0,S.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-password-next`,children:t(`authPassword`)}),(0,S.jsx)(f,{id:`auth-password-next`,type:`password`,value:A,onChange:e=>j(e.target.value),placeholder:t(`authPasswordPlaceholder`)})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-password-confirm`,children:t(`authConfirmPassword`)}),(0,S.jsx)(f,{id:`auth-password-confirm`,type:`password`,value:M,onChange:e=>N(e.target.value),placeholder:t(`authConfirmPasswordPlaceholder`)})]})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,S.jsx)(a,{type:`button`,disabled:!I,onClick:()=>void R(),children:i.isPending?t(`authPasswordUpdating`):t(`authPasswordAction`)}),P.enabled&&P.authenticated?(0,S.jsx)(a,{type:`button`,variant:`outline`,disabled:v.isPending,onClick:()=>void B(),children:v.isPending?t(`authLoggingOut`):t(`authLogoutAction`)}):null]}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authSessionMemoryNotice`)})]})]})]}):(0,S.jsxs)(p,{children:[(0,S.jsxs)(l,{children:[(0,S.jsx)(m,{children:t(`authSecurityTitle`)}),(0,S.jsx)(d,{children:t(`authSecurityDescription`)})]}),(0,S.jsxs)(g,{className:`space-y-5`,children:[(0,S.jsxs)(`div`,{className:`rounded-xl border border-dashed border-gray-200 bg-gray-50/70 p-4`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authSetupTitle`)}),(0,S.jsx)(`p`,{className:`mt-1 text-sm text-gray-500`,children:t(`authSetupDescription`)})]}),(0,S.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-setup-username`,children:t(`authUsername`)}),(0,S.jsx)(f,{id:`auth-setup-username`,value:y,onChange:e=>C(e.target.value),placeholder:t(`authUsernamePlaceholder`)})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-setup-password`,children:t(`authPassword`)}),(0,S.jsx)(f,{id:`auth-setup-password`,type:`password`,value:E,onChange:e=>D(e.target.value),placeholder:t(`authPasswordPlaceholder`)})]})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-setup-confirm`,children:t(`authConfirmPassword`)}),(0,S.jsx)(f,{id:`auth-setup-confirm`,type:`password`,value:O,onChange:e=>k(e.target.value),placeholder:t(`authConfirmPasswordPlaceholder`)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authPasswordMinLengthHint`)})]}),(0,S.jsx)(a,{type:`button`,disabled:!F,onClick:()=>void L(),children:n.isPending?t(`authSettingUp`):t(`authSetupAction`)})]})]})}function D(){return(0,S.jsxs)(v,{className:`space-y-6`,children:[(0,S.jsx)(y,{title:t(`authSecurityTitle`),description:t(`authSecurityDescription`)}),(0,S.jsx)(E,{})]})}export{D as SecurityConfig};
|