@xopcai/xopc 0.0.396 → 0.0.397
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DwTaeL1e.js → agent-avatar-dicebear-CIEGrioy.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-D8Q9Cpge.js → agent-defaults-settings-panel-CzKNVkRn.js} +1 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-mpA9rwYd.js +1 -0
- package/dist/gateway/static/root/assets/{agents-DOv68iBN.js → agents-7VMa7Rzo.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-B1ApwlFh.js → app-management-settings-panel-DIJ0ii-n.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-Avd_jVji.js → appearance-settings-BGnyHS-p.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-CvqDUvof.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-C26WGbj9.js → archive-plugin-CR8FcRAa.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-T3FSuURJ.js → automations-page-BLInZo7N.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-B9r27rPk.js → automations-workspace-DvTSHLt3.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-CLaLkM3M.js → binary-plugins-DW9pu205.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CB4oRyM5.js → block-editor-ClgTc5v8.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-0nkk3bLA.js → browser-automation-inputs-Bn7kDuUB.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-KLG8IXvl.js → browser-automations-page-CJGBhDnv.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-Tcejw5fF.js → browser-settings-page-tsi5W-cJ.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-CfbGk8q_.js +2 -0
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-kEvUR6Yu.js → capabilities-settings-panel-BkO7QEyA.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-header-actions-Br5PchG2.js → capability-header-actions-9ZG71-BO.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-DRaE6_ub.js → channels-D0CwJktG.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-Cl0hAav9.js → chat-terminal-dock-x1W2_hwc.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-B6JI2S1b.js → computer-settings-page-D_b_bFVz.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-AqsoqTnF.js → connector-service-page-Kf8kaNm_.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-cDRZ8bqm.js → connectors-page-DlpfL2Rc.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-CyFehuto.js → date-picker-d5kiPUG0.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-Vu_5QGGJ.js → dependency-picker-BcH76tQC.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-Dw9k0Z2p.js → desktop-pet-B-925tPX.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DKqkhvxu.js → desktop-pet-settings-3XJ4qR65.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-12m5Z9-8.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-7svbL2tR.js → directory-picker-path-field-B-qZCjGR.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CFa6PCBV.js → extension-debug-page-BlQu1u6X.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BD4nZ9sf.js → extension-page-CXxM1M62.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CxPIMrmn.js → extension-settings-page-AF5nvsPP.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-Da2CtQ7c.js → gateway-settings-ABXvW_yL.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-DzEeyJpH.js → highlighted-body-KQOG7T2V-Czdbbi0H.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-Cp4-sTfX.js → home-page-LXGxGwVl.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-Zo56ZmKs.js → image-generation-api-DPFPJ2ps.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-C_PPaOFv.js → imports-page-Bwyotfbt.js} +1 -1
- package/dist/gateway/static/root/assets/index-BKHxJaGD.css +1 -0
- package/dist/gateway/static/root/assets/{index-XRbEWVyZ.js → index-Dsp_gNdl.js} +116 -116
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BGtrzFT6.js → keyboard-shortcuts-settings-C20gl-l7.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-Cu80fCA0.js → local-app-workbench-page-o0M_OSjC.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-Zsu8FnwP.js → local-apps-page-DoWJCmOq.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DlIhfEW_.js → logs-page-BFTL93RX.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-CDV-xItG.js → management-settings-C52cuMg1.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Ba1_QMmZ.js → media-plugins-DLrTRF0a.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-CPYJsRUJ.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-BXi6BrXd.js → note-detail-panel-CNN41byS.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-page-ClR9R90o.js → notes-page-BsfBp_8z.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-BqNWtf_f.js → page-context-capture-button-YTVWZ02-.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-CSF-sn8w.js → personal-page-N4KoCZYG.js} +1 -1
- package/dist/gateway/static/root/assets/plugin-details-page-DcrrzQI-.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-kkbrbiVd.js → preview-open-alternatives-DzA__S54.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Dheqo_4J.js → product-open-page-DvlMKj0T.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-B9Y6dIuh.js → product-preview-content-qdFyo4NG.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-l5dXxnSq.js → project-detail-page-y67s_fA8.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-95Od8gLy.js → projects-page-D5iYgi0O.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-DPEpPFax.js → remote-access-hub-DeFF7Re-.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BjyZGNP3.js → runtime-tools-settings-panel-BCHLh-KQ.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-DelMOLjg.js → schema-form-CJvaVHkx.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-BN0nMm0w.js → sessions-page-DZ93_D5M.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-F1WX7vxq.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DNWEDA71.js → settings-form-section-B3eODxNv.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-DJ27gC7J.js → settings-page-Dg86uCnr.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BWA_puDN.js → setup-status-panel-ruFzAArp.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-Du4mumVM.js → share-preview-page-DCy1f25V.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-C0ixka9_.js → shares-settings-DeIVZvpJ.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-zOxHjU7m.js → skill-api-RisyPAMA.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-743oJIiS.js → skill-reload-api-Dwkm1Fof.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-DBYhEjP9.js → skills-page-UiTLsrFc.js} +1 -1
- package/dist/gateway/static/root/assets/{style-DsnKw5jo.js → style-CwMX73G7.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-mz9hWo_H.js → system-settings-panel-Cma37Pfm.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-Brp2wrEc.js → task-detail-page-BKOF_kxS.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-aC-ziRbY.js → tracing-settings-page-DC-kLysq.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-Ch2Veztk.js → tunnel-api-BgdhbR1L.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-KfKZ2a3t.js → usage-page-BSlFg3Xj.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BLW3t_OK.js → use-autosave-iKvZ1pvC.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-BSsT8WjA.js → user-model-page-D4GB8QsM.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-DulF6Cm4.js → voice-api-key-field-CESbtuwM.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-bBMZM8tN.js → work-discovery-overlay-dtPpmYyh.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CsxXS1WI.js → workflow-run-setup-panel-DmFn3E_B.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-a-mfjQ2h.js → workflows-page-DEtaRuxH.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-wwIRBFCs.js → xopc-cloud-account-card-DTZnabfg.js} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/agent/embedded/codemode-extension.d.ts +1 -0
- package/dist/src/agent/embedded/codemode-extension.js +6 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/embedded/run-turn.js +34 -2
- package/dist/src/agent/embedded/session-runner.js +1 -1
- package/dist/src/agent/mcp/config.d.ts +2 -0
- package/dist/src/agent/mcp/config.js +2 -2
- package/dist/src/agent/mcp/connection-setup.js +13 -1
- package/dist/src/agent/mcp/effective-server.d.ts +3 -0
- package/dist/src/agent/mcp/effective-server.js +27 -0
- package/dist/src/agent/mcp/native-mcp.d.ts +1 -1
- package/dist/src/agent/mcp/native-mcp.js +13 -4
- package/dist/src/agent/mcp/tool-catalog.js +2 -1
- package/dist/src/agent/skills/index.d.ts +1 -0
- package/dist/src/agent/skills/index.js +6 -2
- package/dist/src/agent/skills/skill-manager.d.ts +1 -0
- package/dist/src/agent/skills/skill-manager.js +6 -1
- package/dist/src/agent/skills/skill-sources.d.ts +1 -0
- package/dist/src/agent/skills/skill-sources.js +4 -3
- package/dist/src/agent/skills/types.d.ts +1 -0
- package/dist/src/agent/workspace-runtime/registry.js +6 -2
- package/dist/src/browser/native-messaging-host.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +2 -2
- package/dist/src/channels/index.js +1 -1
- package/dist/src/channels/manager.js +1 -1
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-agent-plugin.js +92 -7
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension.js +1 -1
- package/dist/src/cli/commands/mcp.js +6 -4
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/extensions/agent-plugins/auth.d.ts +7 -1
- package/dist/src/extensions/agent-plugins/auth.js +53 -12
- package/dist/src/extensions/agent-plugins/branding.d.ts +6 -0
- package/dist/src/extensions/agent-plugins/branding.js +44 -0
- package/dist/src/extensions/agent-plugins/cli-authorization.d.ts +22 -0
- package/dist/src/extensions/agent-plugins/cli-authorization.js +198 -0
- package/dist/src/extensions/agent-plugins/connection-reuse.d.ts +10 -0
- package/dist/src/extensions/agent-plugins/connection-reuse.js +23 -0
- package/dist/src/extensions/agent-plugins/credentials.js +24 -1
- package/dist/src/extensions/agent-plugins/formats.d.ts +27 -0
- package/dist/src/extensions/agent-plugins/formats.js +208 -0
- package/dist/src/extensions/agent-plugins/inventory.d.ts +142 -2
- package/dist/src/extensions/agent-plugins/inventory.js +39 -5
- package/dist/src/extensions/agent-plugins/mcp-adapter.d.ts +2 -1
- package/dist/src/extensions/agent-plugins/mcp-adapter.js +42 -8
- package/dist/src/extensions/agent-plugins/mcp-format.d.ts +2 -0
- package/dist/src/extensions/agent-plugins/mcp-format.js +82 -0
- package/dist/src/extensions/agent-plugins/resources.d.ts +14 -0
- package/dist/src/extensions/agent-plugins/resources.js +112 -0
- package/dist/src/extensions/agent-plugins/setup-contract.d.ts +54 -0
- package/dist/src/extensions/agent-plugins/setup-contract.js +58 -0
- package/dist/src/extensions/agent-plugins/setup.d.ts +119 -0
- package/dist/src/extensions/agent-plugins/setup.js +491 -0
- package/dist/src/extensions/agent-plugins/source-catalog.d.ts +21 -0
- package/dist/src/extensions/agent-plugins/source-catalog.js +175 -0
- package/dist/src/extensions/agent-plugins/sources.d.ts +1 -1
- package/dist/src/extensions/agent-plugins/sources.js +12 -3
- package/dist/src/extensions/agent-plugins/store.d.ts +33 -2
- package/dist/src/extensions/agent-plugins/store.js +175 -25
- package/dist/src/extensions/agent-plugins/user-config.d.ts +5 -0
- package/dist/src/extensions/agent-plugins/user-config.js +49 -0
- package/dist/src/extensions/agent-plugins/validation.d.ts +26 -1
- package/dist/src/extensions/agent-plugins/validation.js +142 -27
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/gateway/hono/app.js +1 -1
- package/dist/src/gateway/hono/routes/agent-plugins.js +120 -9
- package/dist/src/gateway/hono/routes/browser-install.js +1 -1
- package/dist/src/gateway/hono/routes/composer-history.js +22 -4
- package/dist/src/gateway/hono/routes/mcp.js +6 -4
- package/dist/src/gateway/service.js +5 -3
- package/dist/src/gateway/session-context-summary.js +1 -1
- package/dist/src/storage/sqlite/composer-input-history-repository.d.ts +4 -3
- package/dist/src/storage/sqlite/composer-input-history-repository.js +10 -8
- package/dist/src/storage/sqlite/device-pairing-approval.js +1 -1
- package/dist/src/storage/sqlite/migrations/257_session_composer_history.sql +11 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +2 -2
- package/dist/src/tui/backends/embedded-backend.js +4 -4
- package/dist/src/tui/backends/gateway-realtime-backend.d.ts +2 -2
- package/dist/src/tui/backends/gateway-realtime-backend.js +7 -4
- package/dist/src/tui/composer-history.d.ts +14 -0
- package/dist/src/tui/composer-history.js +85 -0
- package/dist/src/tui/tui-backend.d.ts +4 -3
- package/dist/src/tui/tui.js +19 -46
- package/package.json +12 -4
- package/dist/gateway/static/root/assets/agent-plugin-dialog-C-UKhDkS.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-Da6Ar2U3.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-page-BJlw9rhA.js +0 -2
- package/dist/gateway/static/root/assets/device-pairing-wizard-4l4ESMon.js +0 -1
- package/dist/gateway/static/root/assets/index-zIgp-ZTu.css +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-CpK57Kgp.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BvfEKyfy.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{g as i}from"./chunk-KS7C4IRE-B2HK1psj.js";import{t as a}from"./plus-Q2yW6OE7.js";import{t as o}from"./x-B_N4OPjy.js";import{t as s}from"./messages-DPxcWxfD.js";import{t as c}from"./cn-0WouolD0.js";import{i as l,n as u,r as d}from"./locale-store-Djl2FW6_.js";import{a as f,n as p,o as m,r as h,s as g,t as _}from"./dist-BGTk37IG.js";import{s as v}from"./session-api-DbNNQps9.js";import{i as y}from"./vendor-swr-BIWyz7Rc.js";import{Af as b,Kl as x,Nu as S,On as C,Rc as w,Wc as T,Xa as E,Yl as ee,Za as D,ad as O,cf as k,fo as te,is as A,nu as j,sf as M,us as N,vs as ne,ys as re}from"./index-XRbEWVyZ.js";import{n as P,r as F,t as I}from"./settings-page-layout-Dx5S-Msc.js";import{t as L}from"./device-pairing-wizard-4l4ESMon.js";var R=n(),z=e(t(),1),B=r();async function V(e=`GET`,t,n){let r=await l(d(`/api/endpoint-tools/target-authorizations`+(n?`/`+encodeURIComponent(n):``)),{method:e,...t?{body:JSON.stringify(t)}:{}});if(!r.ok)throw Error(r.status===403?`owner`:`unavailable`);return(await r.json()).payload}function ie({devices:e,zh:t}){let n=y(`device-single-call-grants`,()=>V(),{refreshInterval:5e3,shouldRetryOnError:!1}),r=y(n.error?null:`device-grant-conversations`,()=>v({limit:100}),{shouldRetryOnError:!1}),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)(``),[u,d]=(0,z.useState)(`weather`),[f,p]=(0,z.useState)(`approximate`),[m,h]=(0,z.useState)(`restaurant`),[g,_]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1);if(n.error)return null;let S=e.flatMap(e=>e.endpoints.map(t=>({...t,label:e.displayName+` · `+e.platform+` · `+e.id.slice(-8)}))),C=S.find(e=>e.endpointId===c)?.tools.find(e=>e.descriptor.name.endsWith(`.device.get_location`))?.descriptor.name,E=async()=>{if(!(!C||!i||!o)){_(!0),x(!1);try{await V(`POST`,{conversationId:i,requestorPrincipalId:o,targetEndpointId:c,toolName:C,arguments:{purpose:u,precision:f,...u===`nearby`?{category:m}:{}}}),await n.mutate()}catch{x(!0)}finally{_(!1)}}};return(0,B.jsxs)(`section`,{className:`mb-5 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,B.jsx)(`h3`,{className:`font-semibold text-fg`,children:t?`跨设备单次授权`:`Single-call device authorization`}),(0,B.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:t?`为指定会话和来源设备授权一次定位查询,60 秒后失效。目标设备仍需确认;授权后请在来源设备继续请求。`:`Authorize one location query for a conversation and source device. Expires in 60 seconds; target-device consent is still required. Continue the request from the source device.`}),n.isLoading||r.isLoading?(0,B.jsx)(w,{className:`mt-3 h-28`}):(0,B.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,B.jsx)(N,{value:i,onChange:a,placeholder:t?`选择会话`:`Conversation`,ariaLabel:t?`会话`:`Conversation`,options:(r.data?.items??[]).map(e=>({value:e.key,label:e.name||e.key}))}),(0,B.jsx)(N,{value:o,onChange:s,placeholder:t?`消息来源设备`:`Source device`,ariaLabel:t?`消息来源设备`:`Source device`,options:e.filter(e=>e.endpoints.length>0).map(e=>({value:e.id,label:e.displayName+` · `+e.platform+` · `+e.id.slice(-8)}))}),(0,B.jsx)(N,{value:c,onChange:l,placeholder:t?`使用哪台设备的位置`:`Location device`,ariaLabel:t?`目标设备`:`Target device`,options:S.filter(e=>e.tools.some(e=>e.descriptor.name.endsWith(`.device.get_location`))).map(e=>({value:e.endpointId,label:e.label}))}),(0,B.jsx)(N,{placeholder:t?`用途`:`Purpose`,value:u,onChange:e=>d(e),ariaLabel:t?`用途`:`Purpose`,options:[{value:`weather`,label:t?`查询天气`:`Weather`},{value:`nearby`,label:t?`附近地点`:`Nearby places`}],allowEmpty:!1}),(0,B.jsx)(N,{placeholder:t?`精度`:`Precision`,value:f,onChange:e=>p(e),ariaLabel:t?`精度`:`Precision`,options:[{value:`approximate`,label:t?`大致位置`:`Approximate`},{value:`precise`,label:t?`精确位置`:`Precise`}],allowEmpty:!1}),u===`nearby`?(0,B.jsx)(N,{placeholder:t?`地点类型`:`Category`,value:m,onChange:h,ariaLabel:t?`附近地点类型`:`Place category`,options:[`restaurant`,`cafe`,`pharmacy`,`park`].map((e,n)=>({value:e,label:t?[`餐厅`,`咖啡馆`,`药店`,`公园`][n]:e})),allowEmpty:!1}):null,(0,B.jsx)(T,{variant:`primary`,disabled:g||!i||!o||!C,onClick:()=>void E(),children:t?`允许一次`:`Allow once`})]}),b?(0,B.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-fg-muted`,children:t?`授权失败,请检查设备连接后重试。`:`Authorization failed. Check the device connection.`}):null,(0,B.jsx)(`div`,{className:`mt-3 space-y-2`,children:n.data?.map(r=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-sm text-fg-muted`,children:[(0,B.jsxs)(`span`,{children:[e.find(e=>e.endpoints.some(e=>e.endpointId===r.targetEndpointId))?.displayName??(t?`设备`:`Device`),` · `,r.state===`running`?t?`执行中`:`Running`:t?`等待本次调用`:`Awaiting one call`]}),(0,B.jsx)(T,{disabled:g,onClick:()=>{_(!0),V(`DELETE`,void 0,r.id).then(()=>n.mutate()).catch(()=>x(!0)).finally(()=>_(!1))},children:t?`撤销`:`Revoke`})]},r.id))})]})}var H=720*60*60*1e3;function U(e){let t=[e.access,e.principal].filter(e=>e!==null);return t.length>0&&t.every(e=>e.revokedAt!==void 0)}function W(e){return U(e)?`revoked`:e.endpoints.length>0?`online`:`offline`}function ae(e){return new Set(e.endpoints.flatMap(e=>e.tools.map(({descriptor:e})=>e.name))).size}function oe(e,t=Date.now()){return W(e)===`offline`?(e.lastSeenAt??e.createdAt)<t-H:!1}function se(e,t,n=Date.now()){let r=t.query.trim().toLocaleLowerCase();return e.filter(e=>{let i=W(e),a=t.status===`all`||(t.status===`active`?i!==`revoked`:t.status===`stale`?oe(e,n):i===t.status),o=!t.platform||e.platform===t.platform,s=!r||[e.displayName,e.id,e.kind,e.platform].some(e=>e.toLocaleLowerCase().includes(r));return a&&o&&s})}function ce(e){return e.length>8?e.slice(-8):e}function le(e){let t=(0,R.c)(61),{device:n,busy:r,onClose:i,onRevoke:a,onRename:l}=e,d=u(ue),v;t[0]===d?v=t[1]:(v=s(d),t[0]=d,t[1]=v);let y=v.endpointToolsSettings,b=d===`zh`?`zh-CN`:`en`,x;t[2]===b?x=t[3]:(x=new Intl.DateTimeFormat(b,{dateStyle:`medium`,timeStyle:`short`}),t[2]=b,t[3]=x);let S=x,C;t[4]===n?C=t[5]:(C=n?W(n):`offline`,t[4]=n,t[5]=C);let w=C,E=n!==null,D;t[6]===i?D=t[7]:(D=e=>!e&&i(),t[6]=i,t[7]=D);let O;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,B.jsx)(f,{className:c(`xopc-dialog-overlay fixed inset-0 bg-scrim`,re)}),t[8]=O):O=t[8];let k;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(k=c(`xopc-drawer-right fixed right-0 top-0 flex size-full max-w-lg flex-col border-l border-edge bg-surface-overlay shadow-popover outline-none`,ne),t[9]=k):k=t[9];let te=n?.displayName??y.deviceDetails,A;t[10]===te?A=t[11]:(A=(0,B.jsx)(g,{className:`truncate text-base font-semibold text-fg`,children:te}),t[10]=te,t[11]=A);let j;t[12]===n?j=t[13]:(j=n?(0,B.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[n.kind,` · `,n.platform,` · `,ce(n.id)]}):null,t[12]=n,t[13]=j);let M;t[14]!==A||t[15]!==j?(M=(0,B.jsxs)(`div`,{className:`min-w-0`,children:[A,j]}),t[14]=A,t[15]=j,t[16]=M):M=t[16];let N;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,B.jsx)(o,{className:`size-5`,"aria-hidden":!0}),t[17]=N):N=t[17];let P;t[18]===y.close?P=t[19]:(P=(0,B.jsx)(p,{asChild:!0,children:(0,B.jsx)(T,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":y.close,children:N})}),t[18]=y.close,t[19]=P);let F;t[20]!==M||t[21]!==P?(F=(0,B.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-b border-edge px-4 py-3`,children:[M,P]}),t[20]=M,t[21]=P,t[22]=F):F=t[22];let I;t[23]!==y.accessActive||t[24]!==y.accessRevoked||t[25]!==y.accessTitle||t[26]!==y.createdAt||t[27]!==y.endpointCount||t[28]!==y.endpointsTitle||t[29]!==y.identityId||t[30]!==y.identityTitle||t[31]!==y.lastSeen||t[32]!==y.never||t[33]!==y.noAccessIdentity||t[34]!==y.noOnlineEndpoints||t[35]!==y.noPermissions||t[36]!==y.permissions||t[37]!==y.status||t[38]!==y.statusLabel||t[39]!==y.toolCount||t[40]!==n||t[41]!==S||t[42]!==d||t[43]!==l||t[44]!==w?(I=n?(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-4`,children:[n.principal&&w!==`revoked`&&l?(0,B.jsx)(de,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,B.jsxs)(`dl`,{className:`grid grid-cols-2 gap-3 rounded-xl bg-surface-hover/40 p-4`,children:[(0,B.jsx)(G,{label:y.statusLabel,value:y.status[w]}),(0,B.jsx)(G,{label:y.lastSeen,value:n.lastSeenAt?S.format(n.lastSeenAt):y.never}),(0,B.jsx)(G,{label:y.endpointCount,value:String(n.endpoints.length)}),(0,B.jsx)(G,{label:y.toolCount,value:String(ae(n))})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.accessTitle}),(0,B.jsx)(`div`,{className:`mt-2 rounded-xl border border-edge-subtle bg-surface-base p-3 text-xs text-fg-muted`,children:n.access?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{children:n.access.revokedAt?y.accessRevoked:y.accessActive}),(0,B.jsx)(`p`,{className:`mt-1`,children:n.access.requestProofVersion===1?d===`zh`?`设备请求签名已启用`:`Device request signing enabled`:d===`zh`?`旧版兼容:尚未启用请求签名`:`Legacy compatibility: request signing not enabled`}),(0,B.jsxs)(`p`,{className:`mt-1 break-words`,children:[y.permissions,`: `,n.access.scopes.join(`, `)||y.noPermissions]})]}):(0,B.jsx)(`p`,{children:y.noAccessIdentity})})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.endpointsTitle}),(0,B.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[n.endpoints.length===0?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:y.noOnlineEndpoints}):null,n.endpoints.map(e=>(0,B.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-base p-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,B.jsx)(`p`,{className:`min-w-0 break-all text-xs font-medium text-fg`,children:e.endpointId}),(0,B.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[y.status[e.availability],` · v`,e.appVersion]})]}),(0,B.jsx)(`div`,{className:`mt-3 space-y-2`,children:e.tools.map(e=>{let{descriptor:t}=e;return(0,B.jsxs)(`div`,{className:`rounded-lg bg-surface-hover/50 px-3 py-2`,children:[(0,B.jsx)(`p`,{className:`break-all text-xs font-medium text-fg`,children:t.title}),(0,B.jsxs)(`p`,{className:`mt-0.5 break-words text-xs text-fg-subtle`,children:[t.requiresForeground?d===`zh`?`需要设备在前台 · `:`Requires foreground · `:``,t.confirmation===`always`?d===`zh`?`每次确认`:`Confirm each time`:d===`zh`?`按已授权范围调用`:`Uses the authorized scope`]})]},t.name)})})]},e.connectionId))]})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.identityTitle}),n.principal&&w!==`revoked`&&l?(0,B.jsx)(de,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,B.jsxs)(`dl`,{className:`mt-2 rounded-xl border border-edge-subtle bg-surface-base p-3 text-xs`,children:[(0,B.jsx)(G,{label:y.identityId,value:n.id,breakAll:!0}),(0,B.jsx)(`div`,{className:`mt-3`,children:(0,B.jsx)(G,{label:y.createdAt,value:S.format(n.createdAt)})})]})]})]}):null,t[23]=y.accessActive,t[24]=y.accessRevoked,t[25]=y.accessTitle,t[26]=y.createdAt,t[27]=y.endpointCount,t[28]=y.endpointsTitle,t[29]=y.identityId,t[30]=y.identityTitle,t[31]=y.lastSeen,t[32]=y.never,t[33]=y.noAccessIdentity,t[34]=y.noOnlineEndpoints,t[35]=y.noPermissions,t[36]=y.permissions,t[37]=y.status,t[38]=y.statusLabel,t[39]=y.toolCount,t[40]=n,t[41]=S,t[42]=d,t[43]=l,t[44]=w,t[45]=I):I=t[45];let L;t[46]!==r||t[47]!==y.removeDevice||t[48]!==y.revoking||t[49]!==n||t[50]!==a||t[51]!==w?(L=n&&w!==`revoked`?(0,B.jsx)(`div`,{className:`shrink-0 border-t border-edge px-4 py-3`,children:(0,B.jsxs)(T,{variant:`secondary`,className:`w-full text-danger`,disabled:r,onClick:()=>a(n),children:[(0,B.jsx)(ee,{className:`size-4`,"aria-hidden":!0}),r?y.revoking:y.removeDevice]})}):null,t[46]=r,t[47]=y.removeDevice,t[48]=y.revoking,t[49]=n,t[50]=a,t[51]=w,t[52]=L):L=t[52];let z;t[53]!==F||t[54]!==I||t[55]!==L?(z=(0,B.jsxs)(m,{children:[O,(0,B.jsxs)(h,{className:k,"aria-describedby":void 0,children:[F,I,L]})]}),t[53]=F,t[54]=I,t[55]=L,t[56]=z):z=t[56];let V;return t[57]!==z||t[58]!==E||t[59]!==D?(V=(0,B.jsx)(_,{open:E,onOpenChange:D,children:z}),t[57]=z,t[58]=E,t[59]=D,t[60]=V):V=t[60],V}function ue(e){return e.language}function G(e){let t=(0,R.c)(10),{label:n,value:r,breakAll:i}=e,a=i===void 0?!1:i,o;t[0]===n?o=t[1]:(o=(0,B.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=o);let s=a&&`break-all font-mono text-xs`,l;t[2]===s?l=t[3]:(l=c(`mt-1 text-sm text-fg`,s),t[2]=s,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,B.jsx)(`dd`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;return t[7]!==o||t[8]!==u?(d=(0,B.jsxs)(`div`,{className:`min-w-0`,children:[o,u]}),t[7]=o,t[8]=u,t[9]=d):d=t[9],d}function de({device:e,zh:t,onRename:n}){let[r,i]=(0,z.useState)(e.displayName),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(!1);return(0,B.jsxs)(`form`,{className:`space-y-2`,onSubmit:async t=>{if(t.preventDefault(),!(a||!r.trim())){o(!0),c(!1);try{await n(e,r.trim())}catch{c(!0)}finally{o(!1)}}},children:[(0,B.jsxs)(`label`,{className:`block text-sm text-fg`,children:[t?`设备名称`:`Device name`,(0,B.jsx)(`input`,{value:r,maxLength:80,onChange:e=>i(e.target.value),className:`mt-2 h-10 w-full rounded-lg border border-edge bg-surface-inset px-3 text-fg`})]}),(0,B.jsx)(T,{type:`submit`,variant:`secondary`,disabled:a||!r.trim()||r.trim()===e.displayName,children:a?t?`保存中…`:`Saving…`:t?`保存名称`:`Save name`}),s?(0,B.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:t?`保存失败,请刷新设备信息后重试。`:`Unable to save. Refresh device information and retry.`}):null]})}function fe(e){let t=(0,R.c)(19),{onPaired:n}=e,[r,o]=i(),c=u(me),l;t[0]===c?l=t[1]:(l=s(c),t[0]=c,t[1]=l);let d=l.endpointToolsSettings.deviceAccess,f;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(f={open:!1},t[2]=f):f=t[2];let[p,m]=(0,z.useState)(f),h,g;t[3]!==r||t[4]!==o?(h=()=>{let e=r.get(`startDevicePairing`);e!==`mobile`&&e!==`browser`||(m({open:!0,target:e}),o(pe,{replace:!0}))},g=[r,o],t[3]=r,t[4]=o,t[5]=h,t[6]=g):(h=t[5],g=t[6]),(0,z.useEffect)(h,g);let _,v;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>m({open:!0}),v=(0,B.jsx)(a,{className:`size-4`,"aria-hidden":!0}),t[7]=_,t[8]=v):(_=t[7],v=t[8]);let y;t[9]===d.addDevice?y=t[10]:(y=(0,B.jsxs)(T,{variant:`primary`,onClick:_,children:[v,d.addDevice]}),t[9]=d.addDevice,t[10]=y);let b;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>m(t=>({...t,open:e})),t[11]=b):b=t[11];let x;t[12]!==p.open||t[13]!==p.target||t[14]!==n?(x=(0,B.jsx)(L,{open:p.open,onOpenChange:b,onPaired:n,targetKind:p.target}),t[12]=p.open,t[13]=p.target,t[14]=n,t[15]=x):x=t[15];let S;return t[16]!==y||t[17]!==x?(S=(0,B.jsxs)(B.Fragment,{children:[y,x]}),t[16]=y,t[17]=x,t[18]=S):S=t[18],S}function pe(e){let t=new URLSearchParams(e);return t.delete(`startDevicePairing`),t}function me(e){return e.language}async function K(e){let t=await e.json().catch(()=>null);if(!e.ok||t?.payload===void 0)throw Error(t?.error?.message??`Endpoint management request failed: ${e.status}`);return t.payload}function he(){return d(`/api/endpoint-tools/devices`)}function ge(e){let t=new URLSearchParams({page:String(e.page),pageSize:String(e.pageSize)});return e.query.trim()&&t.set(`query`,e.query.trim()),e.principalId&&t.set(`principalId`,e.principalId),e.status&&t.set(`status`,e.status),e.effect&&t.set(`effect`,e.effect),d(`/api/endpoint-tools/invocations?${t}`)}async function _e(){return K(await l(he()))}async function ve(e){let t=Array.from({length:Math.ceil(e.length/100)},(t,n)=>e.slice(n*100,(n+1)*100));await Promise.all(t.map(async e=>{await K(await l(d(`/api/endpoint-tools/devices/revoke`),{method:`POST`,body:JSON.stringify({ids:e})}))}))}async function ye(e){return K(await l(ge(e)))}async function be(e,t,n){await K(await l(d(`/api/endpoint-tools/devices/${encodeURIComponent(e)}`),{method:`PATCH`,body:JSON.stringify({nickname:t,expectedRevision:n})}))}var xe=5e3,q=20,Se=20;function Ce(e){return e===`online`||e===`succeeded`?`bg-success-soft text-success`:e===`running`?`bg-accent-soft text-accent-fg`:e===`failed`||e===`revoked`?`bg-danger-soft text-danger`:`bg-surface-hover text-fg-muted`}function we(e){let t=(0,R.c)(5),{status:n,label:r}=e,i;t[0]===n?i=t[1]:(i=c(`rounded-full px-2 py-0.5 text-xs font-medium`,Ce(n)),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,B.jsx)(`span`,{className:i,children:r}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function Te(){let e=u(e=>e.language),t=s(e).endpointToolsSettings,[n,r]=i(),a=n.get(`view`)===`activity`?`activity`:`devices`,[o,l]=(0,z.useState)(null),[d,f]=(0,z.useState)([]),[p,m]=(0,z.useState)(!1),[h,g]=(0,z.useState)(!1),[_,v]=(0,z.useState)(``),[w,ne]=(0,z.useState)(`active`),[re,L]=(0,z.useState)(``),[R,V]=(0,z.useState)(1),[H,U]=(0,z.useState)(()=>new Set),[ue,G]=(0,z.useState)(``),[de]=te(ue,250),[pe,me]=(0,z.useState)(``),[K,Ce]=(0,z.useState)(``),[Te,Ee]=(0,z.useState)(``),[De,J]=(0,z.useState)(1),Oe={page:De,pageSize:Se,query:de,principalId:pe,status:K,effect:Te},Y=y(he(),_e,{refreshInterval:xe}),X=y(a===`activity`?ge(Oe):null,()=>ye(Oe),{refreshInterval:xe,keepPreviousData:!0}),ke=(0,z.useMemo)(()=>new Intl.DateTimeFormat(e===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,timeStyle:`short`}),[e]);if(Y.isLoading&&!Y.data)return(0,B.jsx)(F,{children:(0,B.jsx)(C,{sections:2})});let Z=Y.data??[],Ae=X.data?.items??[],je=Z.filter(e=>W(e)===`online`).length,Me=Z.filter(e=>W(e)!==`revoked`).length,Ne=Z.filter(e=>oe(e)).length,Pe=[...new Set(Z.map(e=>e.platform))].toSorted(),Q=se(Z,{query:_,status:w,platform:re}),Fe=Math.max(1,Math.ceil(Q.length/q)),$=Math.min(R,Fe),Ie=Q.slice(($-1)*q,$*q),Le=Ie.reduce((e,t)=>(W(t)!==`revoked`&&e.push(t.id),e),[]),Re=Le.length>0&&Le.every(e=>H.has(e)),ze=e=>{r(t=>{let n=new URLSearchParams(t);return e===`devices`?n.delete(`view`):n.set(`view`,e),n},{replace:!0})},Be=async()=>{await Promise.all([Y.mutate(),a===`activity`?X.mutate():Promise.resolve()])},Ve=async()=>{if(!(d.length===0||p)){m(!0),g(!1);try{await ve(d.map(e=>e.id)),f([]),U(new Set),await Y.mutate()}catch{g(!0)}finally{m(!1)}}},He=e=>{e(),V(1),U(new Set)};return(0,B.jsxs)(F,{children:[(0,B.jsx)(P,{title:t.title,subtitle:t.subtitle,actions:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(E,{className:`size-9 shrink-0 p-0`,label:t.refresh,onClick:Be}),(0,B.jsx)(fe,{onPaired:()=>void Y.mutate()})]})}),Y.error||X.error?(0,B.jsx)(`div`,{className:`rounded-xl bg-danger-soft px-4 py-3 text-sm text-danger`,children:t.loadError}):null,(0,B.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-3`,children:[{label:t.activeDevices,value:Me,filter:`active`},{label:t.onlineDevices,value:je,filter:`online`},{label:t.staleDevices,value:Ne,filter:`stale`}].map(({label:e,value:t,filter:n})=>(0,B.jsxs)(`button`,{type:`button`,className:c(`touch-target rounded-xl px-4 py-3 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,w===n?`bg-surface-active`:`bg-surface-hover/20 hover:bg-surface-hover/50`),"aria-pressed":w===n,onClick:()=>{He(()=>ne(n)),ze(`devices`)},children:[(0,B.jsx)(`span`,{className:`text-xs text-fg-muted`,children:e}),(0,B.jsx)(`span`,{className:`mt-1 block text-2xl font-semibold text-fg`,children:t})]},n))}),(0,B.jsx)(A,{items:[{id:`devices`,label:t.devicesTab,icon:S,count:Me},{id:`activity`,label:t.activityTab,icon:b,count:X.data?.total}],activeTab:a,onChange:ze,ariaLabel:t.viewsAria,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`}),(0,B.jsxs)(I,{id:`devices`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.devicesTitle,hint:t.devicesHint,children:[(0,B.jsx)(ie,{devices:Z,zh:e===`zh`}),(0,B.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-[minmax(0,1fr)_11rem_11rem]`,children:[(0,B.jsxs)(`label`,{className:`relative block`,children:[(0,B.jsx)(`span`,{className:`sr-only`,children:t.searchDevices}),(0,B.jsx)(j,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,B.jsx)(`input`,{type:`search`,"aria-label":t.searchDevices,value:_,placeholder:t.searchDevices,className:`h-10 w-full rounded-lg border border-edge bg-surface-inset pl-9 pr-3 text-base text-fg placeholder:text-fg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent sm:text-sm`,onChange:e=>He(()=>v(e.target.value))})]}),(0,B.jsx)(N,{value:w,options:[{value:`active`,label:t.filterActive},{value:`online`,label:t.status.online},{value:`offline`,label:t.status.offline},{value:`stale`,label:t.filterStale},{value:`revoked`,label:t.status.revoked},{value:`all`,label:t.filterAll}],placeholder:t.statusLabel,allowEmpty:!1,ariaLabel:t.statusLabel,onChange:e=>He(()=>ne(e))}),(0,B.jsx)(N,{value:re,options:Pe.map(e=>({value:e,label:e})),placeholder:t.allPlatforms,emptyLabel:t.allPlatforms,ariaLabel:t.platformLabel,onChange:e=>He(()=>L(e))})]}),H.size>0?(0,B.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3 rounded-xl bg-accent-soft px-3 py-2`,children:[(0,B.jsx)(`p`,{className:`text-sm font-medium text-accent-fg`,children:t.selectedCount.replace(`{{count}}`,String(H.size))}),(0,B.jsxs)(T,{variant:`secondary`,className:`text-danger`,onClick:()=>{g(!1),f(Z.filter(e=>H.has(e.id)))},children:[(0,B.jsx)(ee,{className:`size-4`,"aria-hidden":!0}),t.removeSelected]})]}):null,Z.length===0?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noDevices}):Q.length===0?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingDevices}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`flex min-h-10 items-center gap-3 border-b border-edge-subtle px-1`,children:(0,B.jsxs)(`label`,{className:c(`touch-target flex items-center gap-2 text-xs text-fg-muted`,Le.length>0?`cursor-pointer`:`cursor-not-allowed opacity-50`),children:[(0,B.jsx)(`input`,{type:`checkbox`,"aria-label":t.selectPage,checked:Re,disabled:Le.length===0,className:`size-4 accent-accent`,onChange:e=>{U(t=>{let n=new Set(t);for(let t of Le)e.target.checked?n.add(t):n.delete(t);return n})}}),t.selectPage]})}),(0,B.jsx)(`ul`,{className:`divide-y divide-edge-subtle`,children:Ie.map(e=>{let n=W(e),r=e.kind===`mobile`?x:O;return(0,B.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`label`,{className:c(`touch-target flex size-10 shrink-0 items-center justify-center`,n===`revoked`?`cursor-not-allowed opacity-40`:`cursor-pointer`),children:(0,B.jsx)(`input`,{type:`checkbox`,checked:H.has(e.id),disabled:n===`revoked`,"aria-label":t.selectDevice.replace(`{{name}}`,e.displayName),className:`size-4 accent-accent`,onChange:t=>{U(n=>{let r=new Set(n);return t.target.checked?r.add(e.id):r.delete(e.id),r})}})}),(0,B.jsxs)(`button`,{type:`button`,className:`touch-target flex min-w-0 flex-1 items-center gap-3 py-3 text-left hover:bg-surface-hover/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,onClick:()=>l(e),children:[(0,B.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-inset text-fg-muted`,children:(0,B.jsx)(r,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`truncate text-sm font-medium text-fg`,children:e.displayName}),(0,B.jsx)(we,{status:n,label:t.status[n]})]}),(0,B.jsxs)(`span`,{className:`mt-1 block text-xs text-fg-muted`,children:[e.platform,` · `,ce(e.id),` · `,t.lastSeen,`: `,e.lastSeenAt?ke.format(e.lastSeenAt):t.never]})]}),(0,B.jsx)(`span`,{className:`hidden shrink-0 text-right text-xs text-fg-muted sm:block`,children:t.endpointSummary.replace(`{{endpoints}}`,String(e.endpoints.length)).replace(`{{tools}}`,String(ae(e)))}),(0,B.jsx)(M,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0})]})]},e.id)})}),(0,B.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,B.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String(($-1)*q+1)).replace(`{{to}}`,String(Math.min($*q,Q.length))).replace(`{{total}}`,String(Q.length))}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:$<=1,onClick:()=>V(e=>Math.max(1,e-1)),children:(0,B.jsx)(k,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:$>=Fe,onClick:()=>V(e=>Math.min(Fe,e+1)),children:(0,B.jsx)(M,{className:`size-4`,"aria-hidden":!0})})]})]})]})]}),(0,B.jsxs)(I,{id:`activity`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.callsTitle,hint:t.callsHint,children:[(0,B.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,B.jsxs)(`label`,{className:`relative block sm:col-span-2 lg:col-span-1`,children:[(0,B.jsx)(`span`,{className:`sr-only`,children:t.searchActivity}),(0,B.jsx)(j,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,B.jsx)(`input`,{type:`search`,"aria-label":t.searchActivity,value:ue,placeholder:t.searchActivity,className:`h-10 w-full rounded-lg border border-edge bg-surface-inset pl-9 pr-3 text-base text-fg placeholder:text-fg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent sm:text-sm`,onChange:e=>{G(e.target.value),J(1)}})]}),(0,B.jsx)(N,{value:pe,options:Z.map(e=>({value:e.id,label:`${e.displayName} · ${ce(e.id)}`})),placeholder:t.allDevices,emptyLabel:t.allDevices,ariaLabel:t.deviceLabel,onChange:e=>{me(e),J(1)}}),(0,B.jsx)(N,{value:K,options:[{value:`running`,label:t.status.running},{value:`succeeded`,label:t.status.succeeded},{value:`failed`,label:t.status.failed}],placeholder:t.allStatuses,emptyLabel:t.allStatuses,ariaLabel:t.statusLabel,onChange:e=>{Ce(e),J(1)}}),(0,B.jsx)(N,{value:Te,options:[{value:`read`,label:t.effects.read},{value:`write`,label:t.effects.write},{value:`destructive`,label:t.effects.destructive}],placeholder:t.allEffects,emptyLabel:t.allEffects,ariaLabel:t.effectLabel,onChange:e=>{Ee(e),J(1)}})]}),X.isLoading&&!X.data?(0,B.jsx)(C,{sections:1}):null,Ae.length===0&&!X.isLoading?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingCalls}):null,(0,B.jsx)(`div`,{className:`space-y-2`,children:Ae.map(e=>(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg bg-surface-base/55 px-3 py-2.5`,children:[(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsx)(`p`,{className:`break-all text-sm font-medium text-fg`,children:e.toolName}),(0,B.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[ke.format(e.startedAt),` · `,t.effects[e.effect],` · `,e.endpointId]}),e.errorMessage?(0,B.jsx)(`p`,{className:`mt-1 text-xs text-danger`,children:e.errorMessage}):null]}),(0,B.jsx)(we,{status:e.status,label:t.status[e.status]})]},e.id))}),X.data&&X.data.total>0?(0,B.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,B.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String((X.data.page-1)*X.data.pageSize+1)).replace(`{{to}}`,String(Math.min(X.data.page*X.data.pageSize,X.data.total))).replace(`{{total}}`,String(X.data.total))}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:X.data.page<=1,onClick:()=>J(e=>Math.max(1,e-1)),children:(0,B.jsx)(k,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:X.data.page>=X.data.totalPages,onClick:()=>J(e=>Math.min(X.data.totalPages,e+1)),children:(0,B.jsx)(M,{className:`size-4`,"aria-hidden":!0})})]})]}):null]}),(0,B.jsx)(le,{device:o,busy:p,onRename:async(e,t)=>{await be(e.id,t,e.settingsRevision??0),l((await Y.mutate())?.find(t=>t.id===e.id)??null)},onClose:()=>l(null),onRevoke:e=>{l(null),g(!1),f([e])}}),(0,B.jsx)(D,{open:d.length>0,title:d.length>1?t.removeManyTitle:t.removeTitle,description:`${d.length>1?t.removeManyDescription.replace(`{{count}}`,String(d.length)):t.removeDescription.replace(`{{name}}`,d[0]?.displayName??``)}${h?`\n\n${t.revokeError}`:``}`,confirmLabel:p?t.revoking:t.removeDevice,cancelLabel:t.cancel,destructive:!0,onConfirm:()=>void Ve(),onCancel:()=>{p||f([])}})]})}export{Te as EndpointToolsManagementSettings};
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{g as i}from"./chunk-KS7C4IRE-B2HK1psj.js";import{t as a}from"./plus-Q2yW6OE7.js";import{t as o}from"./x-B_N4OPjy.js";import{t as s}from"./messages-DPxcWxfD.js";import{t as c}from"./cn-0WouolD0.js";import{i as l,n as u,r as d}from"./locale-store-Djl2FW6_.js";import{a as f,n as p,o as m,r as h,s as g,t as _}from"./dist-BGTk37IG.js";import{s as v}from"./session-api-DbNNQps9.js";import{i as y}from"./vendor-swr-BIWyz7Rc.js";import{Af as b,Kl as x,Nu as S,On as C,Rc as w,Wc as T,Xa as E,Yl as ee,Za as D,ad as O,cf as k,fo as te,is as A,nu as j,sf as M,us as N,vs as ne,ys as re}from"./index-Dsp_gNdl.js";import{n as P,r as F,t as I}from"./settings-page-layout-Dx5S-Msc.js";import{t as L}from"./device-pairing-wizard-12m5Z9-8.js";var R=n(),z=e(t(),1),B=r();async function V(e=`GET`,t,n){let r=await l(d(`/api/endpoint-tools/target-authorizations`+(n?`/`+encodeURIComponent(n):``)),{method:e,...t?{body:JSON.stringify(t)}:{}});if(!r.ok)throw Error(r.status===403?`owner`:`unavailable`);return(await r.json()).payload}function ie({devices:e,zh:t}){let n=y(`device-single-call-grants`,()=>V(),{refreshInterval:5e3,shouldRetryOnError:!1}),r=y(n.error?null:`device-grant-conversations`,()=>v({limit:100}),{shouldRetryOnError:!1}),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)(``),[c,l]=(0,z.useState)(``),[u,d]=(0,z.useState)(`weather`),[f,p]=(0,z.useState)(`approximate`),[m,h]=(0,z.useState)(`restaurant`),[g,_]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1);if(n.error)return null;let S=e.flatMap(e=>e.endpoints.map(t=>({...t,label:e.displayName+` · `+e.platform+` · `+e.id.slice(-8)}))),C=S.find(e=>e.endpointId===c)?.tools.find(e=>e.descriptor.name.endsWith(`.device.get_location`))?.descriptor.name,E=async()=>{if(!(!C||!i||!o)){_(!0),x(!1);try{await V(`POST`,{conversationId:i,requestorPrincipalId:o,targetEndpointId:c,toolName:C,arguments:{purpose:u,precision:f,...u===`nearby`?{category:m}:{}}}),await n.mutate()}catch{x(!0)}finally{_(!1)}}};return(0,B.jsxs)(`section`,{className:`mb-5 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,B.jsx)(`h3`,{className:`font-semibold text-fg`,children:t?`跨设备单次授权`:`Single-call device authorization`}),(0,B.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:t?`为指定会话和来源设备授权一次定位查询,60 秒后失效。目标设备仍需确认;授权后请在来源设备继续请求。`:`Authorize one location query for a conversation and source device. Expires in 60 seconds; target-device consent is still required. Continue the request from the source device.`}),n.isLoading||r.isLoading?(0,B.jsx)(w,{className:`mt-3 h-28`}):(0,B.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,B.jsx)(N,{value:i,onChange:a,placeholder:t?`选择会话`:`Conversation`,ariaLabel:t?`会话`:`Conversation`,options:(r.data?.items??[]).map(e=>({value:e.key,label:e.name||e.key}))}),(0,B.jsx)(N,{value:o,onChange:s,placeholder:t?`消息来源设备`:`Source device`,ariaLabel:t?`消息来源设备`:`Source device`,options:e.filter(e=>e.endpoints.length>0).map(e=>({value:e.id,label:e.displayName+` · `+e.platform+` · `+e.id.slice(-8)}))}),(0,B.jsx)(N,{value:c,onChange:l,placeholder:t?`使用哪台设备的位置`:`Location device`,ariaLabel:t?`目标设备`:`Target device`,options:S.filter(e=>e.tools.some(e=>e.descriptor.name.endsWith(`.device.get_location`))).map(e=>({value:e.endpointId,label:e.label}))}),(0,B.jsx)(N,{placeholder:t?`用途`:`Purpose`,value:u,onChange:e=>d(e),ariaLabel:t?`用途`:`Purpose`,options:[{value:`weather`,label:t?`查询天气`:`Weather`},{value:`nearby`,label:t?`附近地点`:`Nearby places`}],allowEmpty:!1}),(0,B.jsx)(N,{placeholder:t?`精度`:`Precision`,value:f,onChange:e=>p(e),ariaLabel:t?`精度`:`Precision`,options:[{value:`approximate`,label:t?`大致位置`:`Approximate`},{value:`precise`,label:t?`精确位置`:`Precise`}],allowEmpty:!1}),u===`nearby`?(0,B.jsx)(N,{placeholder:t?`地点类型`:`Category`,value:m,onChange:h,ariaLabel:t?`附近地点类型`:`Place category`,options:[`restaurant`,`cafe`,`pharmacy`,`park`].map((e,n)=>({value:e,label:t?[`餐厅`,`咖啡馆`,`药店`,`公园`][n]:e})),allowEmpty:!1}):null,(0,B.jsx)(T,{variant:`primary`,disabled:g||!i||!o||!C,onClick:()=>void E(),children:t?`允许一次`:`Allow once`})]}),b?(0,B.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-fg-muted`,children:t?`授权失败,请检查设备连接后重试。`:`Authorization failed. Check the device connection.`}):null,(0,B.jsx)(`div`,{className:`mt-3 space-y-2`,children:n.data?.map(r=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-sm text-fg-muted`,children:[(0,B.jsxs)(`span`,{children:[e.find(e=>e.endpoints.some(e=>e.endpointId===r.targetEndpointId))?.displayName??(t?`设备`:`Device`),` · `,r.state===`running`?t?`执行中`:`Running`:t?`等待本次调用`:`Awaiting one call`]}),(0,B.jsx)(T,{disabled:g,onClick:()=>{_(!0),V(`DELETE`,void 0,r.id).then(()=>n.mutate()).catch(()=>x(!0)).finally(()=>_(!1))},children:t?`撤销`:`Revoke`})]},r.id))})]})}var H=720*60*60*1e3;function U(e){let t=[e.access,e.principal].filter(e=>e!==null);return t.length>0&&t.every(e=>e.revokedAt!==void 0)}function W(e){return U(e)?`revoked`:e.endpoints.length>0?`online`:`offline`}function ae(e){return new Set(e.endpoints.flatMap(e=>e.tools.map(({descriptor:e})=>e.name))).size}function oe(e,t=Date.now()){return W(e)===`offline`?(e.lastSeenAt??e.createdAt)<t-H:!1}function se(e,t,n=Date.now()){let r=t.query.trim().toLocaleLowerCase();return e.filter(e=>{let i=W(e),a=t.status===`all`||(t.status===`active`?i!==`revoked`:t.status===`stale`?oe(e,n):i===t.status),o=!t.platform||e.platform===t.platform,s=!r||[e.displayName,e.id,e.kind,e.platform].some(e=>e.toLocaleLowerCase().includes(r));return a&&o&&s})}function ce(e){return e.length>8?e.slice(-8):e}function le(e){let t=(0,R.c)(61),{device:n,busy:r,onClose:i,onRevoke:a,onRename:l}=e,d=u(ue),v;t[0]===d?v=t[1]:(v=s(d),t[0]=d,t[1]=v);let y=v.endpointToolsSettings,b=d===`zh`?`zh-CN`:`en`,x;t[2]===b?x=t[3]:(x=new Intl.DateTimeFormat(b,{dateStyle:`medium`,timeStyle:`short`}),t[2]=b,t[3]=x);let S=x,C;t[4]===n?C=t[5]:(C=n?W(n):`offline`,t[4]=n,t[5]=C);let w=C,E=n!==null,D;t[6]===i?D=t[7]:(D=e=>!e&&i(),t[6]=i,t[7]=D);let O;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(O=(0,B.jsx)(f,{className:c(`xopc-dialog-overlay fixed inset-0 bg-scrim`,re)}),t[8]=O):O=t[8];let k;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(k=c(`xopc-drawer-right fixed right-0 top-0 flex size-full max-w-lg flex-col border-l border-edge bg-surface-overlay shadow-popover outline-none`,ne),t[9]=k):k=t[9];let te=n?.displayName??y.deviceDetails,A;t[10]===te?A=t[11]:(A=(0,B.jsx)(g,{className:`truncate text-base font-semibold text-fg`,children:te}),t[10]=te,t[11]=A);let j;t[12]===n?j=t[13]:(j=n?(0,B.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[n.kind,` · `,n.platform,` · `,ce(n.id)]}):null,t[12]=n,t[13]=j);let M;t[14]!==A||t[15]!==j?(M=(0,B.jsxs)(`div`,{className:`min-w-0`,children:[A,j]}),t[14]=A,t[15]=j,t[16]=M):M=t[16];let N;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,B.jsx)(o,{className:`size-5`,"aria-hidden":!0}),t[17]=N):N=t[17];let P;t[18]===y.close?P=t[19]:(P=(0,B.jsx)(p,{asChild:!0,children:(0,B.jsx)(T,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":y.close,children:N})}),t[18]=y.close,t[19]=P);let F;t[20]!==M||t[21]!==P?(F=(0,B.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-b border-edge px-4 py-3`,children:[M,P]}),t[20]=M,t[21]=P,t[22]=F):F=t[22];let I;t[23]!==y.accessActive||t[24]!==y.accessRevoked||t[25]!==y.accessTitle||t[26]!==y.createdAt||t[27]!==y.endpointCount||t[28]!==y.endpointsTitle||t[29]!==y.identityId||t[30]!==y.identityTitle||t[31]!==y.lastSeen||t[32]!==y.never||t[33]!==y.noAccessIdentity||t[34]!==y.noOnlineEndpoints||t[35]!==y.noPermissions||t[36]!==y.permissions||t[37]!==y.status||t[38]!==y.statusLabel||t[39]!==y.toolCount||t[40]!==n||t[41]!==S||t[42]!==d||t[43]!==l||t[44]!==w?(I=n?(0,B.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-4`,children:[n.principal&&w!==`revoked`&&l?(0,B.jsx)(de,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,B.jsxs)(`dl`,{className:`grid grid-cols-2 gap-3 rounded-xl bg-surface-hover/40 p-4`,children:[(0,B.jsx)(G,{label:y.statusLabel,value:y.status[w]}),(0,B.jsx)(G,{label:y.lastSeen,value:n.lastSeenAt?S.format(n.lastSeenAt):y.never}),(0,B.jsx)(G,{label:y.endpointCount,value:String(n.endpoints.length)}),(0,B.jsx)(G,{label:y.toolCount,value:String(ae(n))})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.accessTitle}),(0,B.jsx)(`div`,{className:`mt-2 rounded-xl border border-edge-subtle bg-surface-base p-3 text-xs text-fg-muted`,children:n.access?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{children:n.access.revokedAt?y.accessRevoked:y.accessActive}),(0,B.jsx)(`p`,{className:`mt-1`,children:n.access.requestProofVersion===1?d===`zh`?`设备请求签名已启用`:`Device request signing enabled`:d===`zh`?`旧版兼容:尚未启用请求签名`:`Legacy compatibility: request signing not enabled`}),(0,B.jsxs)(`p`,{className:`mt-1 break-words`,children:[y.permissions,`: `,n.access.scopes.join(`, `)||y.noPermissions]})]}):(0,B.jsx)(`p`,{children:y.noAccessIdentity})})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.endpointsTitle}),(0,B.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[n.endpoints.length===0?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:y.noOnlineEndpoints}):null,n.endpoints.map(e=>(0,B.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-base p-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,B.jsx)(`p`,{className:`min-w-0 break-all text-xs font-medium text-fg`,children:e.endpointId}),(0,B.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[y.status[e.availability],` · v`,e.appVersion]})]}),(0,B.jsx)(`div`,{className:`mt-3 space-y-2`,children:e.tools.map(e=>{let{descriptor:t}=e;return(0,B.jsxs)(`div`,{className:`rounded-lg bg-surface-hover/50 px-3 py-2`,children:[(0,B.jsx)(`p`,{className:`break-all text-xs font-medium text-fg`,children:t.title}),(0,B.jsxs)(`p`,{className:`mt-0.5 break-words text-xs text-fg-subtle`,children:[t.requiresForeground?d===`zh`?`需要设备在前台 · `:`Requires foreground · `:``,t.confirmation===`always`?d===`zh`?`每次确认`:`Confirm each time`:d===`zh`?`按已授权范围调用`:`Uses the authorized scope`]})]},t.name)})})]},e.connectionId))]})]}),(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.identityTitle}),n.principal&&w!==`revoked`&&l?(0,B.jsx)(de,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,B.jsxs)(`dl`,{className:`mt-2 rounded-xl border border-edge-subtle bg-surface-base p-3 text-xs`,children:[(0,B.jsx)(G,{label:y.identityId,value:n.id,breakAll:!0}),(0,B.jsx)(`div`,{className:`mt-3`,children:(0,B.jsx)(G,{label:y.createdAt,value:S.format(n.createdAt)})})]})]})]}):null,t[23]=y.accessActive,t[24]=y.accessRevoked,t[25]=y.accessTitle,t[26]=y.createdAt,t[27]=y.endpointCount,t[28]=y.endpointsTitle,t[29]=y.identityId,t[30]=y.identityTitle,t[31]=y.lastSeen,t[32]=y.never,t[33]=y.noAccessIdentity,t[34]=y.noOnlineEndpoints,t[35]=y.noPermissions,t[36]=y.permissions,t[37]=y.status,t[38]=y.statusLabel,t[39]=y.toolCount,t[40]=n,t[41]=S,t[42]=d,t[43]=l,t[44]=w,t[45]=I):I=t[45];let L;t[46]!==r||t[47]!==y.removeDevice||t[48]!==y.revoking||t[49]!==n||t[50]!==a||t[51]!==w?(L=n&&w!==`revoked`?(0,B.jsx)(`div`,{className:`shrink-0 border-t border-edge px-4 py-3`,children:(0,B.jsxs)(T,{variant:`secondary`,className:`w-full text-danger`,disabled:r,onClick:()=>a(n),children:[(0,B.jsx)(ee,{className:`size-4`,"aria-hidden":!0}),r?y.revoking:y.removeDevice]})}):null,t[46]=r,t[47]=y.removeDevice,t[48]=y.revoking,t[49]=n,t[50]=a,t[51]=w,t[52]=L):L=t[52];let z;t[53]!==F||t[54]!==I||t[55]!==L?(z=(0,B.jsxs)(m,{children:[O,(0,B.jsxs)(h,{className:k,"aria-describedby":void 0,children:[F,I,L]})]}),t[53]=F,t[54]=I,t[55]=L,t[56]=z):z=t[56];let V;return t[57]!==z||t[58]!==E||t[59]!==D?(V=(0,B.jsx)(_,{open:E,onOpenChange:D,children:z}),t[57]=z,t[58]=E,t[59]=D,t[60]=V):V=t[60],V}function ue(e){return e.language}function G(e){let t=(0,R.c)(10),{label:n,value:r,breakAll:i}=e,a=i===void 0?!1:i,o;t[0]===n?o=t[1]:(o=(0,B.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=o);let s=a&&`break-all font-mono text-xs`,l;t[2]===s?l=t[3]:(l=c(`mt-1 text-sm text-fg`,s),t[2]=s,t[3]=l);let u;t[4]!==l||t[5]!==r?(u=(0,B.jsx)(`dd`,{className:l,children:r}),t[4]=l,t[5]=r,t[6]=u):u=t[6];let d;return t[7]!==o||t[8]!==u?(d=(0,B.jsxs)(`div`,{className:`min-w-0`,children:[o,u]}),t[7]=o,t[8]=u,t[9]=d):d=t[9],d}function de({device:e,zh:t,onRename:n}){let[r,i]=(0,z.useState)(e.displayName),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(!1);return(0,B.jsxs)(`form`,{className:`space-y-2`,onSubmit:async t=>{if(t.preventDefault(),!(a||!r.trim())){o(!0),c(!1);try{await n(e,r.trim())}catch{c(!0)}finally{o(!1)}}},children:[(0,B.jsxs)(`label`,{className:`block text-sm text-fg`,children:[t?`设备名称`:`Device name`,(0,B.jsx)(`input`,{value:r,maxLength:80,onChange:e=>i(e.target.value),className:`mt-2 h-10 w-full rounded-lg border border-edge bg-surface-inset px-3 text-fg`})]}),(0,B.jsx)(T,{type:`submit`,variant:`secondary`,disabled:a||!r.trim()||r.trim()===e.displayName,children:a?t?`保存中…`:`Saving…`:t?`保存名称`:`Save name`}),s?(0,B.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:t?`保存失败,请刷新设备信息后重试。`:`Unable to save. Refresh device information and retry.`}):null]})}function fe(e){let t=(0,R.c)(19),{onPaired:n}=e,[r,o]=i(),c=u(me),l;t[0]===c?l=t[1]:(l=s(c),t[0]=c,t[1]=l);let d=l.endpointToolsSettings.deviceAccess,f;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(f={open:!1},t[2]=f):f=t[2];let[p,m]=(0,z.useState)(f),h,g;t[3]!==r||t[4]!==o?(h=()=>{let e=r.get(`startDevicePairing`);e!==`mobile`&&e!==`browser`||(m({open:!0,target:e}),o(pe,{replace:!0}))},g=[r,o],t[3]=r,t[4]=o,t[5]=h,t[6]=g):(h=t[5],g=t[6]),(0,z.useEffect)(h,g);let _,v;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>m({open:!0}),v=(0,B.jsx)(a,{className:`size-4`,"aria-hidden":!0}),t[7]=_,t[8]=v):(_=t[7],v=t[8]);let y;t[9]===d.addDevice?y=t[10]:(y=(0,B.jsxs)(T,{variant:`primary`,onClick:_,children:[v,d.addDevice]}),t[9]=d.addDevice,t[10]=y);let b;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>m(t=>({...t,open:e})),t[11]=b):b=t[11];let x;t[12]!==p.open||t[13]!==p.target||t[14]!==n?(x=(0,B.jsx)(L,{open:p.open,onOpenChange:b,onPaired:n,targetKind:p.target}),t[12]=p.open,t[13]=p.target,t[14]=n,t[15]=x):x=t[15];let S;return t[16]!==y||t[17]!==x?(S=(0,B.jsxs)(B.Fragment,{children:[y,x]}),t[16]=y,t[17]=x,t[18]=S):S=t[18],S}function pe(e){let t=new URLSearchParams(e);return t.delete(`startDevicePairing`),t}function me(e){return e.language}async function K(e){let t=await e.json().catch(()=>null);if(!e.ok||t?.payload===void 0)throw Error(t?.error?.message??`Endpoint management request failed: ${e.status}`);return t.payload}function he(){return d(`/api/endpoint-tools/devices`)}function ge(e){let t=new URLSearchParams({page:String(e.page),pageSize:String(e.pageSize)});return e.query.trim()&&t.set(`query`,e.query.trim()),e.principalId&&t.set(`principalId`,e.principalId),e.status&&t.set(`status`,e.status),e.effect&&t.set(`effect`,e.effect),d(`/api/endpoint-tools/invocations?${t}`)}async function _e(){return K(await l(he()))}async function ve(e){let t=Array.from({length:Math.ceil(e.length/100)},(t,n)=>e.slice(n*100,(n+1)*100));await Promise.all(t.map(async e=>{await K(await l(d(`/api/endpoint-tools/devices/revoke`),{method:`POST`,body:JSON.stringify({ids:e})}))}))}async function ye(e){return K(await l(ge(e)))}async function be(e,t,n){await K(await l(d(`/api/endpoint-tools/devices/${encodeURIComponent(e)}`),{method:`PATCH`,body:JSON.stringify({nickname:t,expectedRevision:n})}))}var xe=5e3,q=20,Se=20;function Ce(e){return e===`online`||e===`succeeded`?`bg-success-soft text-success`:e===`running`?`bg-accent-soft text-accent-fg`:e===`failed`||e===`revoked`?`bg-danger-soft text-danger`:`bg-surface-hover text-fg-muted`}function we(e){let t=(0,R.c)(5),{status:n,label:r}=e,i;t[0]===n?i=t[1]:(i=c(`rounded-full px-2 py-0.5 text-xs font-medium`,Ce(n)),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,B.jsx)(`span`,{className:i,children:r}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function Te(){let e=u(e=>e.language),t=s(e).endpointToolsSettings,[n,r]=i(),a=n.get(`view`)===`activity`?`activity`:`devices`,[o,l]=(0,z.useState)(null),[d,f]=(0,z.useState)([]),[p,m]=(0,z.useState)(!1),[h,g]=(0,z.useState)(!1),[_,v]=(0,z.useState)(``),[w,ne]=(0,z.useState)(`active`),[re,L]=(0,z.useState)(``),[R,V]=(0,z.useState)(1),[H,U]=(0,z.useState)(()=>new Set),[ue,G]=(0,z.useState)(``),[de]=te(ue,250),[pe,me]=(0,z.useState)(``),[K,Ce]=(0,z.useState)(``),[Te,Ee]=(0,z.useState)(``),[De,J]=(0,z.useState)(1),Oe={page:De,pageSize:Se,query:de,principalId:pe,status:K,effect:Te},Y=y(he(),_e,{refreshInterval:xe}),X=y(a===`activity`?ge(Oe):null,()=>ye(Oe),{refreshInterval:xe,keepPreviousData:!0}),ke=(0,z.useMemo)(()=>new Intl.DateTimeFormat(e===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,timeStyle:`short`}),[e]);if(Y.isLoading&&!Y.data)return(0,B.jsx)(F,{children:(0,B.jsx)(C,{sections:2})});let Z=Y.data??[],Ae=X.data?.items??[],je=Z.filter(e=>W(e)===`online`).length,Me=Z.filter(e=>W(e)!==`revoked`).length,Ne=Z.filter(e=>oe(e)).length,Pe=[...new Set(Z.map(e=>e.platform))].toSorted(),Q=se(Z,{query:_,status:w,platform:re}),Fe=Math.max(1,Math.ceil(Q.length/q)),$=Math.min(R,Fe),Ie=Q.slice(($-1)*q,$*q),Le=Ie.reduce((e,t)=>(W(t)!==`revoked`&&e.push(t.id),e),[]),Re=Le.length>0&&Le.every(e=>H.has(e)),ze=e=>{r(t=>{let n=new URLSearchParams(t);return e===`devices`?n.delete(`view`):n.set(`view`,e),n},{replace:!0})},Be=async()=>{await Promise.all([Y.mutate(),a===`activity`?X.mutate():Promise.resolve()])},Ve=async()=>{if(!(d.length===0||p)){m(!0),g(!1);try{await ve(d.map(e=>e.id)),f([]),U(new Set),await Y.mutate()}catch{g(!0)}finally{m(!1)}}},He=e=>{e(),V(1),U(new Set)};return(0,B.jsxs)(F,{children:[(0,B.jsx)(P,{title:t.title,subtitle:t.subtitle,actions:(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(E,{className:`size-9 shrink-0 p-0`,label:t.refresh,onClick:Be}),(0,B.jsx)(fe,{onPaired:()=>void Y.mutate()})]})}),Y.error||X.error?(0,B.jsx)(`div`,{className:`rounded-xl bg-danger-soft px-4 py-3 text-sm text-danger`,children:t.loadError}):null,(0,B.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-3`,children:[{label:t.activeDevices,value:Me,filter:`active`},{label:t.onlineDevices,value:je,filter:`online`},{label:t.staleDevices,value:Ne,filter:`stale`}].map(({label:e,value:t,filter:n})=>(0,B.jsxs)(`button`,{type:`button`,className:c(`touch-target rounded-xl px-4 py-3 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,w===n?`bg-surface-active`:`bg-surface-hover/20 hover:bg-surface-hover/50`),"aria-pressed":w===n,onClick:()=>{He(()=>ne(n)),ze(`devices`)},children:[(0,B.jsx)(`span`,{className:`text-xs text-fg-muted`,children:e}),(0,B.jsx)(`span`,{className:`mt-1 block text-2xl font-semibold text-fg`,children:t})]},n))}),(0,B.jsx)(A,{items:[{id:`devices`,label:t.devicesTab,icon:S,count:Me},{id:`activity`,label:t.activityTab,icon:b,count:X.data?.total}],activeTab:a,onChange:ze,ariaLabel:t.viewsAria,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`}),(0,B.jsxs)(I,{id:`devices`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.devicesTitle,hint:t.devicesHint,children:[(0,B.jsx)(ie,{devices:Z,zh:e===`zh`}),(0,B.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-[minmax(0,1fr)_11rem_11rem]`,children:[(0,B.jsxs)(`label`,{className:`relative block`,children:[(0,B.jsx)(`span`,{className:`sr-only`,children:t.searchDevices}),(0,B.jsx)(j,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,B.jsx)(`input`,{type:`search`,"aria-label":t.searchDevices,value:_,placeholder:t.searchDevices,className:`h-10 w-full rounded-lg border border-edge bg-surface-inset pl-9 pr-3 text-base text-fg placeholder:text-fg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent sm:text-sm`,onChange:e=>He(()=>v(e.target.value))})]}),(0,B.jsx)(N,{value:w,options:[{value:`active`,label:t.filterActive},{value:`online`,label:t.status.online},{value:`offline`,label:t.status.offline},{value:`stale`,label:t.filterStale},{value:`revoked`,label:t.status.revoked},{value:`all`,label:t.filterAll}],placeholder:t.statusLabel,allowEmpty:!1,ariaLabel:t.statusLabel,onChange:e=>He(()=>ne(e))}),(0,B.jsx)(N,{value:re,options:Pe.map(e=>({value:e,label:e})),placeholder:t.allPlatforms,emptyLabel:t.allPlatforms,ariaLabel:t.platformLabel,onChange:e=>He(()=>L(e))})]}),H.size>0?(0,B.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3 rounded-xl bg-accent-soft px-3 py-2`,children:[(0,B.jsx)(`p`,{className:`text-sm font-medium text-accent-fg`,children:t.selectedCount.replace(`{{count}}`,String(H.size))}),(0,B.jsxs)(T,{variant:`secondary`,className:`text-danger`,onClick:()=>{g(!1),f(Z.filter(e=>H.has(e.id)))},children:[(0,B.jsx)(ee,{className:`size-4`,"aria-hidden":!0}),t.removeSelected]})]}):null,Z.length===0?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noDevices}):Q.length===0?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingDevices}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`div`,{className:`flex min-h-10 items-center gap-3 border-b border-edge-subtle px-1`,children:(0,B.jsxs)(`label`,{className:c(`touch-target flex items-center gap-2 text-xs text-fg-muted`,Le.length>0?`cursor-pointer`:`cursor-not-allowed opacity-50`),children:[(0,B.jsx)(`input`,{type:`checkbox`,"aria-label":t.selectPage,checked:Re,disabled:Le.length===0,className:`size-4 accent-accent`,onChange:e=>{U(t=>{let n=new Set(t);for(let t of Le)e.target.checked?n.add(t):n.delete(t);return n})}}),t.selectPage]})}),(0,B.jsx)(`ul`,{className:`divide-y divide-edge-subtle`,children:Ie.map(e=>{let n=W(e),r=e.kind===`mobile`?x:O;return(0,B.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`label`,{className:c(`touch-target flex size-10 shrink-0 items-center justify-center`,n===`revoked`?`cursor-not-allowed opacity-40`:`cursor-pointer`),children:(0,B.jsx)(`input`,{type:`checkbox`,checked:H.has(e.id),disabled:n===`revoked`,"aria-label":t.selectDevice.replace(`{{name}}`,e.displayName),className:`size-4 accent-accent`,onChange:t=>{U(n=>{let r=new Set(n);return t.target.checked?r.add(e.id):r.delete(e.id),r})}})}),(0,B.jsxs)(`button`,{type:`button`,className:`touch-target flex min-w-0 flex-1 items-center gap-3 py-3 text-left hover:bg-surface-hover/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,onClick:()=>l(e),children:[(0,B.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-inset text-fg-muted`,children:(0,B.jsx)(r,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`truncate text-sm font-medium text-fg`,children:e.displayName}),(0,B.jsx)(we,{status:n,label:t.status[n]})]}),(0,B.jsxs)(`span`,{className:`mt-1 block text-xs text-fg-muted`,children:[e.platform,` · `,ce(e.id),` · `,t.lastSeen,`: `,e.lastSeenAt?ke.format(e.lastSeenAt):t.never]})]}),(0,B.jsx)(`span`,{className:`hidden shrink-0 text-right text-xs text-fg-muted sm:block`,children:t.endpointSummary.replace(`{{endpoints}}`,String(e.endpoints.length)).replace(`{{tools}}`,String(ae(e)))}),(0,B.jsx)(M,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0})]})]},e.id)})}),(0,B.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,B.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String(($-1)*q+1)).replace(`{{to}}`,String(Math.min($*q,Q.length))).replace(`{{total}}`,String(Q.length))}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:$<=1,onClick:()=>V(e=>Math.max(1,e-1)),children:(0,B.jsx)(k,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:$>=Fe,onClick:()=>V(e=>Math.min(Fe,e+1)),children:(0,B.jsx)(M,{className:`size-4`,"aria-hidden":!0})})]})]})]})]}),(0,B.jsxs)(I,{id:`activity`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.callsTitle,hint:t.callsHint,children:[(0,B.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,B.jsxs)(`label`,{className:`relative block sm:col-span-2 lg:col-span-1`,children:[(0,B.jsx)(`span`,{className:`sr-only`,children:t.searchActivity}),(0,B.jsx)(j,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,B.jsx)(`input`,{type:`search`,"aria-label":t.searchActivity,value:ue,placeholder:t.searchActivity,className:`h-10 w-full rounded-lg border border-edge bg-surface-inset pl-9 pr-3 text-base text-fg placeholder:text-fg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent sm:text-sm`,onChange:e=>{G(e.target.value),J(1)}})]}),(0,B.jsx)(N,{value:pe,options:Z.map(e=>({value:e.id,label:`${e.displayName} · ${ce(e.id)}`})),placeholder:t.allDevices,emptyLabel:t.allDevices,ariaLabel:t.deviceLabel,onChange:e=>{me(e),J(1)}}),(0,B.jsx)(N,{value:K,options:[{value:`running`,label:t.status.running},{value:`succeeded`,label:t.status.succeeded},{value:`failed`,label:t.status.failed}],placeholder:t.allStatuses,emptyLabel:t.allStatuses,ariaLabel:t.statusLabel,onChange:e=>{Ce(e),J(1)}}),(0,B.jsx)(N,{value:Te,options:[{value:`read`,label:t.effects.read},{value:`write`,label:t.effects.write},{value:`destructive`,label:t.effects.destructive}],placeholder:t.allEffects,emptyLabel:t.allEffects,ariaLabel:t.effectLabel,onChange:e=>{Ee(e),J(1)}})]}),X.isLoading&&!X.data?(0,B.jsx)(C,{sections:1}):null,Ae.length===0&&!X.isLoading?(0,B.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingCalls}):null,(0,B.jsx)(`div`,{className:`space-y-2`,children:Ae.map(e=>(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg bg-surface-base/55 px-3 py-2.5`,children:[(0,B.jsxs)(`div`,{className:`min-w-0`,children:[(0,B.jsx)(`p`,{className:`break-all text-sm font-medium text-fg`,children:e.toolName}),(0,B.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[ke.format(e.startedAt),` · `,t.effects[e.effect],` · `,e.endpointId]}),e.errorMessage?(0,B.jsx)(`p`,{className:`mt-1 text-xs text-danger`,children:e.errorMessage}):null]}),(0,B.jsx)(we,{status:e.status,label:t.status[e.status]})]},e.id))}),X.data&&X.data.total>0?(0,B.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,B.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String((X.data.page-1)*X.data.pageSize+1)).replace(`{{to}}`,String(Math.min(X.data.page*X.data.pageSize,X.data.total))).replace(`{{total}}`,String(X.data.total))}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:X.data.page<=1,onClick:()=>J(e=>Math.max(1,e-1)),children:(0,B.jsx)(k,{className:`size-4`,"aria-hidden":!0})}),(0,B.jsx)(T,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:X.data.page>=X.data.totalPages,onClick:()=>J(e=>Math.min(X.data.totalPages,e+1)),children:(0,B.jsx)(M,{className:`size-4`,"aria-hidden":!0})})]})]}):null]}),(0,B.jsx)(le,{device:o,busy:p,onRename:async(e,t)=>{await be(e.id,t,e.settingsRevision??0),l((await Y.mutate())?.find(t=>t.id===e.id)??null)},onClose:()=>l(null),onRevoke:e=>{l(null),g(!1),f([e])}}),(0,B.jsx)(D,{open:d.length>0,title:d.length>1?t.removeManyTitle:t.removeTitle,description:`${d.length>1?t.removeManyDescription.replace(`{{count}}`,String(d.length)):t.removeDescription.replace(`{{name}}`,d[0]?.displayName??``)}${h?`\n\n${t.revokeError}`:``}`,confirmLabel:p?t.revoking:t.removeDevice,cancelLabel:t.cancel,destructive:!0,onConfirm:()=>void Ve(),onCancel:()=>{p||f([])}})]})}export{Te as EndpointToolsManagementSettings};
|
package/dist/gateway/static/root/assets/{media-plugins-Ba1_QMmZ.js → media-plugins-DLrTRF0a.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./rolldown-runtime-aKtaBQYM.js";import{a as e,n as t,t as n}from"./vendor-react-BOUWij0V.js";import{t as r}from"./messages-DPxcWxfD.js";import{a as i}from"./attachment-utils-core-BIOUBrpT.js";import{t as a}from"./preview-open-alternatives-
|
|
1
|
+
import"./rolldown-runtime-aKtaBQYM.js";import{a as e,n as t,t as n}from"./vendor-react-BOUWij0V.js";import{t as r}from"./messages-DPxcWxfD.js";import{a as i}from"./attachment-utils-core-BIOUBrpT.js";import{t as a}from"./preview-open-alternatives-DzA__S54.js";import{t as o}from"./use-blob-object-url-D4BFuzZB.js";var s=t();e();var c=n();function l(e){let t=(0,s.c)(2),n;return t[0]===e?n=t[1]:(n=(0,c.jsx)(d,{props:e,kind:`audio`}),t[0]=e,t[1]=n),n}function u(e){let t=(0,s.c)(2),n;return t[0]===e?n=t[1]:(n=(0,c.jsx)(d,{props:e,kind:`video`}),t[0]=e,t[1]=n),n}function d(e){let t=(0,s.c)(8),{props:n,kind:r}=e,a;bb0:{if(!n.binaryBuffer){a=null;break bb0}let e;if(t[0]!==r||t[1]!==n.binaryBuffer||t[2]!==n.descriptor.fileName||t[3]!==n.descriptor.mimeType){let a=i(n.descriptor.fileName)??n.descriptor.mimeType;e=new Blob([n.binaryBuffer],{type:a||`${r}/*`}),t[0]=r,t[1]=n.binaryBuffer,t[2]=n.descriptor.fileName,t[3]=n.descriptor.mimeType,t[4]=e}else e=t[4];a=e}let l=o(a);if(!l)return null;let u;return t[5]!==r||t[6]!==l?(u=(0,c.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center overflow-auto bg-surface-base p-4 dark:bg-surface-hover/20`,children:r===`audio`?(0,c.jsx)(`audio`,{src:l,controls:!0,className:`w-full max-w-2xl`}):(0,c.jsx)(`video`,{src:l,controls:!0,playsInline:!0,className:`max-h-full max-w-full rounded-md bg-black`})}),t[5]=r,t[6]=l,t[7]=u):u=t[7],u}function f(e){let t=(0,s.c)(12),n;t[0]===e.language?n=t[1]:(n=r(e.language),t[0]=e.language,t[1]=n);let i=n,o=e.descriptor.context===`workspace`,l=o?`${i.workspace.cannotPreviewType} ${i.workspace.openElsewhereHint}`:i.chat.attachmentPreviewOpenElsewhereHint,u=o?i.workspace.openSystemApp:void 0,d=o?i.workspace.chooseApp:void 0,f;return t[2]!==i.chat.attachmentPreviewDownloadFull||t[3]!==e.actions.canChooseOpenWithApp||t[4]!==e.actions.canOpenWithSystemApp||t[5]!==e.actions.onChooseOpenWithApp||t[6]!==e.actions.onDownload||t[7]!==e.actions.onOpenWithSystemApp||t[8]!==l||t[9]!==u||t[10]!==d?(f=(0,c.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-3 overflow-auto p-4`,children:(0,c.jsx)(a,{message:l,downloadLabel:i.chat.attachmentPreviewDownloadFull,onDownload:e.actions.onDownload,openSystemLabel:u,onOpenWithSystemApp:e.actions.onOpenWithSystemApp,canOpenWithSystemApp:e.actions.canOpenWithSystemApp,chooseAppLabel:d,onChooseOpenWithApp:e.actions.onChooseOpenWithApp,canChooseOpenWithApp:e.actions.canChooseOpenWithApp})}),t[2]=i.chat.attachmentPreviewDownloadFull,t[3]=e.actions.canChooseOpenWithApp,t[4]=e.actions.canOpenWithSystemApp,t[5]=e.actions.onChooseOpenWithApp,t[6]=e.actions.onDownload,t[7]=e.actions.onOpenWithSystemApp,t[8]=l,t[9]=u,t[10]=d,t[11]=f):f=t[11],f}export{l as AudioPreviewPluginView,f as UnsupportedPreviewPluginView,u as VideoPreviewPluginView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Uc as e}from"./index-Dsp_gNdl.js";export{e as Mermaid};
|