@xopcai/xopc 0.0.402 → 0.0.403
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DF_bLVLU.js → agent-avatar-dicebear-BibqpRFi.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-CB96Cbva.js → agent-defaults-settings-panel-Dj5XE9fO.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-C97HREhT.js → agents-HpKwxi9M.js} +3 -3
- package/dist/gateway/static/root/assets/{app-management-settings-panel-Cr_dcDOi.js → app-management-settings-panel-cRzpsDIP.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-C5TsJu_t.js → appearance-settings-BKnQuWtS.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-erjVBKui.js → apps-page-B_4AiHMy.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-CpsVjh9E.js → archive-plugin-Duhsr1eD.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Db1YnE2r.js → automations-page-OfEhd4vL.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-iTSZBSZf.js → automations-workspace-DyNAy5A1.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-DYdnW_Fa.js → binary-plugins-BDsjWsNb.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-HZ37eyhY.js → block-editor-D_wE8D8_.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-B-V9Vc6B.js → browser-automation-inputs-DlqyI0ez.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-D0lBDbJO.js → browser-automations-page-BlSVIXB6.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-DIbXx7Ux.js → browser-settings-page-BuGBM-PJ.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-page-DEZJFRU_.js → capabilities-page-CYWBkGj0.js} +2 -2
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-BfdoIjPK.js → capabilities-settings-panel-CWoM2AZn.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-header-actions-BBPBfpGd.js → capability-header-actions-DCxxOLIt.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-CapZyaWK.js → channels-DEB1AYkM.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-DQWv9Smb.js → chat-terminal-dock-B0g-YEQo.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-CyPqxL6X.js → computer-settings-page-DNI0SuC-.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-DmCt-Kgx.js → connector-service-page-CDR35YqB.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-3xUE-PGt.js → connectors-page-CW2vHnSK.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-aOgNPu_Y.js → date-picker-B88pKWvd.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-oALjIlhN.js → dependency-picker-ChpYlt2j.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-pp9_jT3M.js → desktop-pet-17hqnL87.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-BZCCh5T4.js → desktop-pet-settings-3jN8S9Zu.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-DpKzQlqA.js → device-pairing-wizard-DIcqqq97.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-LSNVNUaG.js → directory-picker-path-field-CFBLUC-2.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-Bvy_tPme.js → extension-debug-page-CRjY1QeU.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-D3J8-8AM.js → extension-page-or5zrKc7.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-F6KLsxCY.js → extension-settings-page-X8kI665r.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-_YecsQF1.js → gateway-settings-BT6ZMqA4.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-BCCIvIlA.js → highlighted-body-KQOG7T2V-CL6ZYfP_.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-DUoecphg.js → home-page-MxealTDk.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-DjQXmXWa.js → image-generation-api-DPcsBPX7.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-Bg5N_9Vg.js → imports-page-Cpuq7Ri0.js} +1 -1
- package/dist/gateway/static/root/assets/{index-cmsFpzI8.js → index-CzkAd5Su.js} +8 -8
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BxH3LBLL.js → keyboard-shortcuts-settings-BIoPfzm1.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-C7RejhJl.js → local-app-workbench-page-CvY6c0zW.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-CsTZ1d01.js → local-apps-page-Dutmy_H3.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-uLju0b0e.js → logs-page-DFNUn-Lf.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-BkTmllrn.js → management-settings--LHmsgjW.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-CGq_o7tI.js → media-plugins-Brwr53z1.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-CosDs4aI.js +1 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-Cps8VMV6.js → note-detail-panel-1k-swf3p.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-page-CdmoFpQ9.js → notes-page-B1ADIBKj.js} +1 -1
- package/dist/gateway/static/root/assets/{page-context-capture-button-BH9WwSgw.js → page-context-capture-button-CTMrt6Ws.js} +1 -1
- package/dist/gateway/static/root/assets/{personal-page-UKNVJRDn.js → personal-page-MhVNCcRA.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-details-dialog-gvBSFAhm.js → plugin-details-dialog-BAPTOn3F.js} +1 -1
- package/dist/gateway/static/root/assets/{plugin-presentation-C0la7V8t.js → plugin-presentation-D-o-0IeU.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-rJ3l8Ii4.js → preview-open-alternatives-DCffBrFR.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-CuzuFyIk.js → product-open-page--caaVC81.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-Dw2DstzN.js → product-preview-content-B2pgfzxA.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-C0XssfWQ.js → project-detail-page-Cm4cR-TZ.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-cT6yy_Xk.js → projects-page-DPR6478A.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-CpEq4PU0.js → remote-access-hub-Crf01UPK.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CNar1-_V.js → runtime-tools-settings-panel-Bo_vaiIq.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-D_cAMxj5.js → schema-form-BXk8w1q-.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-D5qR92KP.js → sessions-page-DcAxjdZi.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DLLcp7l0.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DvLxOebb.js → settings-form-section-COwDGhbe.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-C6Tl6TD4.js → settings-page-CV_QX35m.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-DuN4e4iO.js → setup-status-panel-BvAAETqm.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-BLraXBAe.js → share-preview-page-BsRSJVHV.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-u2Y5Ljhu.js → shares-settings-Cm0iaWqX.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-BE_i8VdM.js → skill-api-W7NoRL_J.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-1xNCuBFH.js → skill-reload-api-DNp30a6A.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-Clye5gro.js → skills-page-dHlURgRl.js} +1 -1
- package/dist/gateway/static/root/assets/{style-pk3FR76e.js → style-CXJD5Nzd.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-M550B6Mj.js → system-settings-panel-DrdONDJA.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-DqFhFqWu.js → task-detail-page-C7zXj_B9.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-nXw76P46.js → tracing-settings-page-CXI5s3V-.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-CC_TCY7S.js → tunnel-api-Ce4mYarE.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-BZ0t4KYM.js → usage-page-yt14VUPq.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-DrxAqqzV.js → use-autosave-BmbPOiQU.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-BAQOJoHC.js → user-model-page-ne3A7X7a.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-Bu4paIbu.js → voice-api-key-field-DqLKXIfy.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-3TAUYZF4.js → work-discovery-overlay-oUsUigJS.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-sgFaaLoB.js → workflow-run-setup-panel-C3oU639v.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CxNXNDNc.js → workflows-page-szPvZMys.js} +1 -1
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-DMZelX5s.js → xopc-cloud-account-card-DQNlWhsN.js} +1 -1
- package/dist/gateway/static/root/index.html +1 -1
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +1 -1
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/external-tools/cliProvider.js +2 -2
- package/dist/src/agent/external-tools/composio-provider.js +2 -2
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/service.js +1 -1
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/tool-manuals/computer.d.ts +1 -1
- package/dist/src/agent/tool-manuals/computer.js +2 -2
- package/dist/src/agent/tools/personal-read-tool.js +1 -1
- package/dist/src/agent/tools/xopc-use-tool.js +2 -2
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +1 -1
- package/dist/src/agent-catalog/repository.js +1 -1
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/computer/broker.d.ts +2 -0
- package/dist/src/computer/broker.js +64 -19
- package/dist/src/computer/diagnostics.d.ts +6 -0
- package/dist/src/computer/diagnostics.js +7 -2
- package/dist/src/computer/keyboard.d.ts +2 -0
- package/dist/src/computer/keyboard.js +31 -0
- package/dist/src/computer/model-adapter.d.ts +6 -0
- package/dist/src/computer/model-adapter.js +76 -4
- package/dist/src/computer/runtime.d.ts +9 -1
- package/dist/src/computer/runtime.js +73 -5
- package/dist/src/computer/semantic-plan.d.ts +41 -0
- package/dist/src/computer/semantic-plan.js +95 -0
- package/dist/src/computer/task-state.js +3 -2
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/execution-environments/local-worktree-manager.js +1 -1
- package/dist/src/extensions/agent-plugins/skill-catalog.js +1 -1
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/service.js +4 -4
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/imports/importService.js +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/personal-agent/service.js +1 -1
- package/dist/src/runtime-tools/archive.js +1 -1
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/capabilities/write.js +1 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-DdlL1T6J.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-eKqVXNOq.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-DBvKzlCl.js";import{t as c}from"./cn-0WouolD0.js";import{i as l,n as u,r as d}from"./locale-store-Jnhw2WMv.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-CAKgrbgz.js";import{i as y}from"./vendor-swr-BIWyz7Rc.js";import{On as b,Pu as x,Rc as S,Wc as C,Xa as w,Xl as T,Za as E,cf as D,fo as O,is as k,jf as A,lf as ee,od as j,ql as M,ru as N,us as P,vs as te,ys as ne}from"./index-cmsFpzI8.js";import{n as F,r as I,t as L}from"./settings-page-layout-Dx5S-Msc.js";import{t as R}from"./device-pairing-wizard-DpKzQlqA.js";var z=n(),B=e(t(),1),V=r();async function H(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 re({devices:e,zh:t}){let n=y(`device-single-call-grants`,()=>H(),{refreshInterval:5e3,shouldRetryOnError:!1}),r=y(n.error?null:`device-grant-conversations`,()=>v({limit:100}),{shouldRetryOnError:!1}),[i,a]=(0,B.useState)(``),[o,s]=(0,B.useState)(``),[c,l]=(0,B.useState)(``),[u,d]=(0,B.useState)(`weather`),[f,p]=(0,B.useState)(`approximate`),[m,h]=(0,B.useState)(`restaurant`),[g,_]=(0,B.useState)(!1),[b,x]=(0,B.useState)(!1);if(n.error)return null;let w=e.flatMap(e=>e.endpoints.map(t=>({...t,label:e.displayName+` · `+e.platform+` · `+e.id.slice(-8)}))),T=w.find(e=>e.endpointId===c)?.tools.find(e=>e.descriptor.name.endsWith(`.device.get_location`))?.descriptor.name,E=async()=>{if(!(!T||!i||!o)){_(!0),x(!1);try{await H(`POST`,{conversationId:i,requestorPrincipalId:o,targetEndpointId:c,toolName:T,arguments:{purpose:u,precision:f,...u===`nearby`?{category:m}:{}}}),await n.mutate()}catch{x(!0)}finally{_(!1)}}};return(0,V.jsxs)(`section`,{className:`mb-5 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,V.jsx)(`h3`,{className:`font-semibold text-fg`,children:t?`跨设备单次授权`:`Single-call device authorization`}),(0,V.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,V.jsx)(S,{className:`mt-3 h-28`}):(0,V.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,V.jsx)(P,{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,V.jsx)(P,{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,V.jsx)(P,{value:c,onChange:l,placeholder:t?`使用哪台设备的位置`:`Location device`,ariaLabel:t?`目标设备`:`Target device`,options:w.filter(e=>e.tools.some(e=>e.descriptor.name.endsWith(`.device.get_location`))).map(e=>({value:e.endpointId,label:e.label}))}),(0,V.jsx)(P,{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,V.jsx)(P,{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,V.jsx)(P,{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,V.jsx)(C,{variant:`primary`,disabled:g||!i||!o||!T,onClick:()=>void E(),children:t?`允许一次`:`Allow once`})]}),b?(0,V.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-fg-muted`,children:t?`授权失败,请检查设备连接后重试。`:`Authorization failed. Check the device connection.`}):null,(0,V.jsx)(`div`,{className:`mt-3 space-y-2`,children:n.data?.map(r=>(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-sm text-fg-muted`,children:[(0,V.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,V.jsx)(C,{disabled:g,onClick:()=>{_(!0),H(`DELETE`,void 0,r.id).then(()=>n.mutate()).catch(()=>x(!0)).finally(()=>_(!1))},children:t?`撤销`:`Revoke`})]},r.id))})]})}var U=720*60*60*1e3;function W(e){let t=[e.access,e.principal].filter(e=>e!==null);return t.length>0&&t.every(e=>e.revokedAt!==void 0)}function G(e){return W(e)?`revoked`:e.endpoints.length>0?`online`:`offline`}function ie(e){return new Set(e.endpoints.flatMap(e=>e.tools.map(({descriptor:e})=>e.name))).size}function ae(e,t=Date.now()){return G(e)===`offline`?(e.lastSeenAt??e.createdAt)<t-U:!1}function oe(e,t,n=Date.now()){let r=t.query.trim().toLocaleLowerCase();return e.filter(e=>{let i=G(e),a=t.status===`all`||(t.status===`active`?i!==`revoked`:t.status===`stale`?ae(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 se(e){return e.length>8?e.slice(-8):e}function ce(e){let t=(0,z.c)(61),{device:n,busy:r,onClose:i,onRevoke:a,onRename:l}=e,d=u(le),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,w;t[4]===n?w=t[5]:(w=n?G(n):`offline`,t[4]=n,t[5]=w);let E=w,D=n!==null,O;t[6]===i?O=t[7]:(O=e=>!e&&i(),t[6]=i,t[7]=O);let k;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,V.jsx)(f,{className:c(`xopc-dialog-overlay fixed inset-0 bg-scrim`,ne)}),t[8]=k):k=t[8];let A;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(A=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`,te),t[9]=A):A=t[9];let ee=n?.displayName??y.deviceDetails,j;t[10]===ee?j=t[11]:(j=(0,V.jsx)(g,{className:`truncate text-base font-semibold text-fg`,children:ee}),t[10]=ee,t[11]=j);let M;t[12]===n?M=t[13]:(M=n?(0,V.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[n.kind,` · `,n.platform,` · `,se(n.id)]}):null,t[12]=n,t[13]=M);let N;t[14]!==j||t[15]!==M?(N=(0,V.jsxs)(`div`,{className:`min-w-0`,children:[j,M]}),t[14]=j,t[15]=M,t[16]=N):N=t[16];let P;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,V.jsx)(o,{className:`size-5`,"aria-hidden":!0}),t[17]=P):P=t[17];let F;t[18]===y.close?F=t[19]:(F=(0,V.jsx)(p,{asChild:!0,children:(0,V.jsx)(C,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":y.close,children:P})}),t[18]=y.close,t[19]=F);let I;t[20]!==N||t[21]!==F?(I=(0,V.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-b border-edge px-4 py-3`,children:[N,F]}),t[20]=N,t[21]=F,t[22]=I):I=t[22];let L;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]!==E?(L=n?(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-4`,children:[n.principal&&E!==`revoked`&&l?(0,V.jsx)(ue,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,V.jsxs)(`dl`,{className:`grid grid-cols-2 gap-3 rounded-xl bg-surface-hover/40 p-4`,children:[(0,V.jsx)(K,{label:y.statusLabel,value:y.status[E]}),(0,V.jsx)(K,{label:y.lastSeen,value:n.lastSeenAt?S.format(n.lastSeenAt):y.never}),(0,V.jsx)(K,{label:y.endpointCount,value:String(n.endpoints.length)}),(0,V.jsx)(K,{label:y.toolCount,value:String(ie(n))})]}),(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.accessTitle}),(0,V.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,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{children:n.access.revokedAt?y.accessRevoked:y.accessActive}),(0,V.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,V.jsxs)(`p`,{className:`mt-1 break-words`,children:[y.permissions,`: `,n.access.scopes.join(`, `)||y.noPermissions]})]}):(0,V.jsx)(`p`,{children:y.noAccessIdentity})})]}),(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.endpointsTitle}),(0,V.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[n.endpoints.length===0?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:y.noOnlineEndpoints}):null,n.endpoints.map(e=>(0,V.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-base p-3`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,V.jsx)(`p`,{className:`min-w-0 break-all text-xs font-medium text-fg`,children:e.endpointId}),(0,V.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[y.status[e.availability],` · v`,e.appVersion]})]}),(0,V.jsx)(`div`,{className:`mt-3 space-y-2`,children:e.tools.map(e=>{let{descriptor:t}=e;return(0,V.jsxs)(`div`,{className:`rounded-lg bg-surface-hover/50 px-3 py-2`,children:[(0,V.jsx)(`p`,{className:`break-all text-xs font-medium text-fg`,children:t.title}),(0,V.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,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.identityTitle}),n.principal&&E!==`revoked`&&l?(0,V.jsx)(ue,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,V.jsxs)(`dl`,{className:`mt-2 rounded-xl border border-edge-subtle bg-surface-base p-3 text-xs`,children:[(0,V.jsx)(K,{label:y.identityId,value:n.id,breakAll:!0}),(0,V.jsx)(`div`,{className:`mt-3`,children:(0,V.jsx)(K,{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]=E,t[45]=L):L=t[45];let R;t[46]!==r||t[47]!==y.removeDevice||t[48]!==y.revoking||t[49]!==n||t[50]!==a||t[51]!==E?(R=n&&E!==`revoked`?(0,V.jsx)(`div`,{className:`shrink-0 border-t border-edge px-4 py-3`,children:(0,V.jsxs)(C,{variant:`secondary`,className:`w-full text-danger`,disabled:r,onClick:()=>a(n),children:[(0,V.jsx)(T,{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]=E,t[52]=R):R=t[52];let B;t[53]!==I||t[54]!==L||t[55]!==R?(B=(0,V.jsxs)(m,{children:[k,(0,V.jsxs)(h,{className:A,"aria-describedby":void 0,children:[I,L,R]})]}),t[53]=I,t[54]=L,t[55]=R,t[56]=B):B=t[56];let H;return t[57]!==B||t[58]!==D||t[59]!==O?(H=(0,V.jsx)(_,{open:D,onOpenChange:O,children:B}),t[57]=B,t[58]=D,t[59]=O,t[60]=H):H=t[60],H}function le(e){return e.language}function K(e){let t=(0,z.c)(10),{label:n,value:r,breakAll:i}=e,a=i===void 0?!1:i,o;t[0]===n?o=t[1]:(o=(0,V.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,V.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,V.jsxs)(`div`,{className:`min-w-0`,children:[o,u]}),t[7]=o,t[8]=u,t[9]=d):d=t[9],d}function ue({device:e,zh:t,onRename:n}){let[r,i]=(0,B.useState)(e.displayName),[a,o]=(0,B.useState)(!1),[s,c]=(0,B.useState)(!1);return(0,V.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,V.jsxs)(`label`,{className:`block text-sm text-fg`,children:[t?`设备名称`:`Device name`,(0,V.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,V.jsx)(C,{type:`submit`,variant:`secondary`,disabled:a||!r.trim()||r.trim()===e.displayName,children:a?t?`保存中…`:`Saving…`:t?`保存名称`:`Save name`}),s?(0,V.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:t?`保存失败,请刷新设备信息后重试。`:`Unable to save. Refresh device information and retry.`}):null]})}function de(e){let t=(0,z.c)(19),{onPaired:n}=e,[r,o]=i(),c=u(pe),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,B.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(fe,{replace:!0}))},g=[r,o],t[3]=r,t[4]=o,t[5]=h,t[6]=g):(h=t[5],g=t[6]),(0,B.useEffect)(h,g);let _,v;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>m({open:!0}),v=(0,V.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,V.jsxs)(C,{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,V.jsx)(R,{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,V.jsxs)(V.Fragment,{children:[y,x]}),t[16]=y,t[17]=x,t[18]=S):S=t[18],S}function fe(e){let t=new URLSearchParams(e);return t.delete(`startDevicePairing`),t}function pe(e){return e.language}async function q(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 me(){return d(`/api/endpoint-tools/devices`)}function he(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 ge(){return q(await l(me()))}async function _e(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 q(await l(d(`/api/endpoint-tools/devices/revoke`),{method:`POST`,body:JSON.stringify({ids:e})}))}))}async function ve(e){return q(await l(he(e)))}async function ye(e,t,n){await q(await l(d(`/api/endpoint-tools/devices/${encodeURIComponent(e)}`),{method:`PATCH`,body:JSON.stringify({nickname:t,expectedRevision:n})}))}var be=5e3,J=20,xe=20;function Se(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 Ce(e){let t=(0,z.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`,Se(n)),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,V.jsx)(`span`,{className:i,children:r}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function we(){let e=u(e=>e.language),t=s(e).endpointToolsSettings,[n,r]=i(),a=n.get(`view`)===`activity`?`activity`:`devices`,[o,l]=(0,B.useState)(null),[d,f]=(0,B.useState)([]),[p,m]=(0,B.useState)(!1),[h,g]=(0,B.useState)(!1),[_,v]=(0,B.useState)(``),[S,te]=(0,B.useState)(`active`),[ne,R]=(0,B.useState)(``),[z,H]=(0,B.useState)(1),[U,W]=(0,B.useState)(()=>new Set),[le,K]=(0,B.useState)(``),[ue]=O(le,250),[fe,pe]=(0,B.useState)(``),[q,Se]=(0,B.useState)(``),[we,Te]=(0,B.useState)(``),[Ee,Y]=(0,B.useState)(1),De={page:Ee,pageSize:xe,query:ue,principalId:fe,status:q,effect:we},X=y(me(),ge,{refreshInterval:be}),Z=y(a===`activity`?he(De):null,()=>ve(De),{refreshInterval:be,keepPreviousData:!0}),Oe=(0,B.useMemo)(()=>new Intl.DateTimeFormat(e===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,timeStyle:`short`}),[e]);if(X.isLoading&&!X.data)return(0,V.jsx)(I,{children:(0,V.jsx)(b,{sections:2})});let Q=X.data??[],ke=Z.data?.items??[],Ae=Q.filter(e=>G(e)===`online`).length,je=Q.filter(e=>G(e)!==`revoked`).length,Me=Q.filter(e=>ae(e)).length,Ne=[...new Set(Q.map(e=>e.platform))].toSorted(),Pe=oe(Q,{query:_,status:S,platform:ne}),Fe=Math.max(1,Math.ceil(Pe.length/J)),$=Math.min(z,Fe),Ie=Pe.slice(($-1)*J,$*J),Le=Ie.reduce((e,t)=>(G(t)!==`revoked`&&e.push(t.id),e),[]),Re=Le.length>0&&Le.every(e=>U.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([X.mutate(),a===`activity`?Z.mutate():Promise.resolve()])},Ve=async()=>{if(!(d.length===0||p)){m(!0),g(!1);try{await _e(d.map(e=>e.id)),f([]),W(new Set),await X.mutate()}catch{g(!0)}finally{m(!1)}}},He=e=>{e(),H(1),W(new Set)};return(0,V.jsxs)(I,{children:[(0,V.jsx)(F,{title:t.title,subtitle:t.subtitle,actions:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(w,{className:`size-9 shrink-0 p-0`,label:t.refresh,onClick:Be}),(0,V.jsx)(de,{onPaired:()=>void X.mutate()})]})}),X.error||Z.error?(0,V.jsx)(`div`,{className:`rounded-xl bg-danger-soft px-4 py-3 text-sm text-danger`,children:t.loadError}):null,(0,V.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-3`,children:[{label:t.activeDevices,value:je,filter:`active`},{label:t.onlineDevices,value:Ae,filter:`online`},{label:t.staleDevices,value:Me,filter:`stale`}].map(({label:e,value:t,filter:n})=>(0,V.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`,S===n?`bg-surface-active`:`bg-surface-hover/20 hover:bg-surface-hover/50`),"aria-pressed":S===n,onClick:()=>{He(()=>te(n)),ze(`devices`)},children:[(0,V.jsx)(`span`,{className:`text-xs text-fg-muted`,children:e}),(0,V.jsx)(`span`,{className:`mt-1 block text-2xl font-semibold text-fg`,children:t})]},n))}),(0,V.jsx)(k,{items:[{id:`devices`,label:t.devicesTab,icon:x,count:je},{id:`activity`,label:t.activityTab,icon:A,count:Z.data?.total}],activeTab:a,onChange:ze,ariaLabel:t.viewsAria,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`}),(0,V.jsxs)(L,{id:`devices`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.devicesTitle,hint:t.devicesHint,children:[(0,V.jsx)(re,{devices:Q,zh:e===`zh`}),(0,V.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-[minmax(0,1fr)_11rem_11rem]`,children:[(0,V.jsxs)(`label`,{className:`relative block`,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:t.searchDevices}),(0,V.jsx)(N,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,V.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,V.jsx)(P,{value:S,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(()=>te(e))}),(0,V.jsx)(P,{value:ne,options:Ne.map(e=>({value:e,label:e})),placeholder:t.allPlatforms,emptyLabel:t.allPlatforms,ariaLabel:t.platformLabel,onChange:e=>He(()=>R(e))})]}),U.size>0?(0,V.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,V.jsx)(`p`,{className:`text-sm font-medium text-accent-fg`,children:t.selectedCount.replace(`{{count}}`,String(U.size))}),(0,V.jsxs)(C,{variant:`secondary`,className:`text-danger`,onClick:()=>{g(!1),f(Q.filter(e=>U.has(e.id)))},children:[(0,V.jsx)(T,{className:`size-4`,"aria-hidden":!0}),t.removeSelected]})]}):null,Q.length===0?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noDevices}):Pe.length===0?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingDevices}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`flex min-h-10 items-center gap-3 border-b border-edge-subtle px-1`,children:(0,V.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,V.jsx)(`input`,{type:`checkbox`,"aria-label":t.selectPage,checked:Re,disabled:Le.length===0,className:`size-4 accent-accent`,onChange:e=>{W(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,V.jsx)(`ul`,{className:`divide-y divide-edge-subtle`,children:Ie.map(e=>{let n=G(e),r=e.kind===`mobile`?M:j;return(0,V.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,V.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,V.jsx)(`input`,{type:`checkbox`,checked:U.has(e.id),disabled:n===`revoked`,"aria-label":t.selectDevice.replace(`{{name}}`,e.displayName),className:`size-4 accent-accent`,onChange:t=>{W(n=>{let r=new Set(n);return t.target.checked?r.add(e.id):r.delete(e.id),r})}})}),(0,V.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,V.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-inset text-fg-muted`,children:(0,V.jsx)(r,{className:`size-4`,"aria-hidden":!0})}),(0,V.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`truncate text-sm font-medium text-fg`,children:e.displayName}),(0,V.jsx)(Ce,{status:n,label:t.status[n]})]}),(0,V.jsxs)(`span`,{className:`mt-1 block text-xs text-fg-muted`,children:[e.platform,` · `,se(e.id),` · `,t.lastSeen,`: `,e.lastSeenAt?Oe.format(e.lastSeenAt):t.never]})]}),(0,V.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(ie(e)))}),(0,V.jsx)(D,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0})]})]},e.id)})}),(0,V.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,V.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String(($-1)*J+1)).replace(`{{to}}`,String(Math.min($*J,Pe.length))).replace(`{{total}}`,String(Pe.length))}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:$<=1,onClick:()=>H(e=>Math.max(1,e-1)),children:(0,V.jsx)(ee,{className:`size-4`,"aria-hidden":!0})}),(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:$>=Fe,onClick:()=>H(e=>Math.min(Fe,e+1)),children:(0,V.jsx)(D,{className:`size-4`,"aria-hidden":!0})})]})]})]})]}),(0,V.jsxs)(L,{id:`activity`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.callsTitle,hint:t.callsHint,children:[(0,V.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,V.jsxs)(`label`,{className:`relative block sm:col-span-2 lg:col-span-1`,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:t.searchActivity}),(0,V.jsx)(N,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,V.jsx)(`input`,{type:`search`,"aria-label":t.searchActivity,value:le,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=>{K(e.target.value),Y(1)}})]}),(0,V.jsx)(P,{value:fe,options:Q.map(e=>({value:e.id,label:`${e.displayName} · ${se(e.id)}`})),placeholder:t.allDevices,emptyLabel:t.allDevices,ariaLabel:t.deviceLabel,onChange:e=>{pe(e),Y(1)}}),(0,V.jsx)(P,{value:q,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=>{Se(e),Y(1)}}),(0,V.jsx)(P,{value:we,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=>{Te(e),Y(1)}})]}),Z.isLoading&&!Z.data?(0,V.jsx)(b,{sections:1}):null,ke.length===0&&!Z.isLoading?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingCalls}):null,(0,V.jsx)(`div`,{className:`space-y-2`,children:ke.map(e=>(0,V.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,V.jsxs)(`div`,{className:`min-w-0`,children:[(0,V.jsx)(`p`,{className:`break-all text-sm font-medium text-fg`,children:e.toolName}),(0,V.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[Oe.format(e.startedAt),` · `,t.effects[e.effect],` · `,e.endpointId]}),e.errorMessage?(0,V.jsx)(`p`,{className:`mt-1 text-xs text-danger`,children:e.errorMessage}):null]}),(0,V.jsx)(Ce,{status:e.status,label:t.status[e.status]})]},e.id))}),Z.data&&Z.data.total>0?(0,V.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,V.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String((Z.data.page-1)*Z.data.pageSize+1)).replace(`{{to}}`,String(Math.min(Z.data.page*Z.data.pageSize,Z.data.total))).replace(`{{total}}`,String(Z.data.total))}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:Z.data.page<=1,onClick:()=>Y(e=>Math.max(1,e-1)),children:(0,V.jsx)(ee,{className:`size-4`,"aria-hidden":!0})}),(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:Z.data.page>=Z.data.totalPages,onClick:()=>Y(e=>Math.min(Z.data.totalPages,e+1)),children:(0,V.jsx)(D,{className:`size-4`,"aria-hidden":!0})})]})]}):null]}),(0,V.jsx)(ce,{device:o,busy:p,onRename:async(e,t)=>{await ye(e.id,t,e.settingsRevision??0),l((await X.mutate())?.find(t=>t.id===e.id)??null)},onClose:()=>l(null),onRevoke:e=>{l(null),g(!1),f([e])}}),(0,V.jsx)(E,{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{we 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-DBvKzlCl.js";import{t as c}from"./cn-0WouolD0.js";import{i as l,n as u,r as d}from"./locale-store-Jnhw2WMv.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-CAKgrbgz.js";import{i as y}from"./vendor-swr-BIWyz7Rc.js";import{On as b,Pu as x,Rc as S,Wc as C,Xa as w,Xl as T,Za as E,cf as D,fo as O,is as k,jf as A,lf as ee,od as j,ql as M,ru as N,us as P,vs as te,ys as ne}from"./index-CzkAd5Su.js";import{n as F,r as I,t as L}from"./settings-page-layout-Dx5S-Msc.js";import{t as R}from"./device-pairing-wizard-DIcqqq97.js";var z=n(),B=e(t(),1),V=r();async function H(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 re({devices:e,zh:t}){let n=y(`device-single-call-grants`,()=>H(),{refreshInterval:5e3,shouldRetryOnError:!1}),r=y(n.error?null:`device-grant-conversations`,()=>v({limit:100}),{shouldRetryOnError:!1}),[i,a]=(0,B.useState)(``),[o,s]=(0,B.useState)(``),[c,l]=(0,B.useState)(``),[u,d]=(0,B.useState)(`weather`),[f,p]=(0,B.useState)(`approximate`),[m,h]=(0,B.useState)(`restaurant`),[g,_]=(0,B.useState)(!1),[b,x]=(0,B.useState)(!1);if(n.error)return null;let w=e.flatMap(e=>e.endpoints.map(t=>({...t,label:e.displayName+` · `+e.platform+` · `+e.id.slice(-8)}))),T=w.find(e=>e.endpointId===c)?.tools.find(e=>e.descriptor.name.endsWith(`.device.get_location`))?.descriptor.name,E=async()=>{if(!(!T||!i||!o)){_(!0),x(!1);try{await H(`POST`,{conversationId:i,requestorPrincipalId:o,targetEndpointId:c,toolName:T,arguments:{purpose:u,precision:f,...u===`nearby`?{category:m}:{}}}),await n.mutate()}catch{x(!0)}finally{_(!1)}}};return(0,V.jsxs)(`section`,{className:`mb-5 rounded-xl border border-edge bg-surface-base p-4`,children:[(0,V.jsx)(`h3`,{className:`font-semibold text-fg`,children:t?`跨设备单次授权`:`Single-call device authorization`}),(0,V.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,V.jsx)(S,{className:`mt-3 h-28`}):(0,V.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[(0,V.jsx)(P,{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,V.jsx)(P,{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,V.jsx)(P,{value:c,onChange:l,placeholder:t?`使用哪台设备的位置`:`Location device`,ariaLabel:t?`目标设备`:`Target device`,options:w.filter(e=>e.tools.some(e=>e.descriptor.name.endsWith(`.device.get_location`))).map(e=>({value:e.endpointId,label:e.label}))}),(0,V.jsx)(P,{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,V.jsx)(P,{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,V.jsx)(P,{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,V.jsx)(C,{variant:`primary`,disabled:g||!i||!o||!T,onClick:()=>void E(),children:t?`允许一次`:`Allow once`})]}),b?(0,V.jsx)(`p`,{role:`alert`,className:`mt-2 text-sm text-fg-muted`,children:t?`授权失败,请检查设备连接后重试。`:`Authorization failed. Check the device connection.`}):null,(0,V.jsx)(`div`,{className:`mt-3 space-y-2`,children:n.data?.map(r=>(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-sm text-fg-muted`,children:[(0,V.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,V.jsx)(C,{disabled:g,onClick:()=>{_(!0),H(`DELETE`,void 0,r.id).then(()=>n.mutate()).catch(()=>x(!0)).finally(()=>_(!1))},children:t?`撤销`:`Revoke`})]},r.id))})]})}var U=720*60*60*1e3;function W(e){let t=[e.access,e.principal].filter(e=>e!==null);return t.length>0&&t.every(e=>e.revokedAt!==void 0)}function G(e){return W(e)?`revoked`:e.endpoints.length>0?`online`:`offline`}function ie(e){return new Set(e.endpoints.flatMap(e=>e.tools.map(({descriptor:e})=>e.name))).size}function ae(e,t=Date.now()){return G(e)===`offline`?(e.lastSeenAt??e.createdAt)<t-U:!1}function oe(e,t,n=Date.now()){let r=t.query.trim().toLocaleLowerCase();return e.filter(e=>{let i=G(e),a=t.status===`all`||(t.status===`active`?i!==`revoked`:t.status===`stale`?ae(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 se(e){return e.length>8?e.slice(-8):e}function ce(e){let t=(0,z.c)(61),{device:n,busy:r,onClose:i,onRevoke:a,onRename:l}=e,d=u(le),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,w;t[4]===n?w=t[5]:(w=n?G(n):`offline`,t[4]=n,t[5]=w);let E=w,D=n!==null,O;t[6]===i?O=t[7]:(O=e=>!e&&i(),t[6]=i,t[7]=O);let k;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,V.jsx)(f,{className:c(`xopc-dialog-overlay fixed inset-0 bg-scrim`,ne)}),t[8]=k):k=t[8];let A;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(A=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`,te),t[9]=A):A=t[9];let ee=n?.displayName??y.deviceDetails,j;t[10]===ee?j=t[11]:(j=(0,V.jsx)(g,{className:`truncate text-base font-semibold text-fg`,children:ee}),t[10]=ee,t[11]=j);let M;t[12]===n?M=t[13]:(M=n?(0,V.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[n.kind,` · `,n.platform,` · `,se(n.id)]}):null,t[12]=n,t[13]=M);let N;t[14]!==j||t[15]!==M?(N=(0,V.jsxs)(`div`,{className:`min-w-0`,children:[j,M]}),t[14]=j,t[15]=M,t[16]=N):N=t[16];let P;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,V.jsx)(o,{className:`size-5`,"aria-hidden":!0}),t[17]=P):P=t[17];let F;t[18]===y.close?F=t[19]:(F=(0,V.jsx)(p,{asChild:!0,children:(0,V.jsx)(C,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":y.close,children:P})}),t[18]=y.close,t[19]=F);let I;t[20]!==N||t[21]!==F?(I=(0,V.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-b border-edge px-4 py-3`,children:[N,F]}),t[20]=N,t[21]=F,t[22]=I):I=t[22];let L;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]!==E?(L=n?(0,V.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-5 overflow-y-auto p-4`,children:[n.principal&&E!==`revoked`&&l?(0,V.jsx)(ue,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,V.jsxs)(`dl`,{className:`grid grid-cols-2 gap-3 rounded-xl bg-surface-hover/40 p-4`,children:[(0,V.jsx)(K,{label:y.statusLabel,value:y.status[E]}),(0,V.jsx)(K,{label:y.lastSeen,value:n.lastSeenAt?S.format(n.lastSeenAt):y.never}),(0,V.jsx)(K,{label:y.endpointCount,value:String(n.endpoints.length)}),(0,V.jsx)(K,{label:y.toolCount,value:String(ie(n))})]}),(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.accessTitle}),(0,V.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,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`p`,{children:n.access.revokedAt?y.accessRevoked:y.accessActive}),(0,V.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,V.jsxs)(`p`,{className:`mt-1 break-words`,children:[y.permissions,`: `,n.access.scopes.join(`, `)||y.noPermissions]})]}):(0,V.jsx)(`p`,{children:y.noAccessIdentity})})]}),(0,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.endpointsTitle}),(0,V.jsxs)(`div`,{className:`mt-2 space-y-2`,children:[n.endpoints.length===0?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:y.noOnlineEndpoints}):null,n.endpoints.map(e=>(0,V.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-base p-3`,children:[(0,V.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-2`,children:[(0,V.jsx)(`p`,{className:`min-w-0 break-all text-xs font-medium text-fg`,children:e.endpointId}),(0,V.jsxs)(`span`,{className:`text-xs text-fg-muted`,children:[y.status[e.availability],` · v`,e.appVersion]})]}),(0,V.jsx)(`div`,{className:`mt-3 space-y-2`,children:e.tools.map(e=>{let{descriptor:t}=e;return(0,V.jsxs)(`div`,{className:`rounded-lg bg-surface-hover/50 px-3 py-2`,children:[(0,V.jsx)(`p`,{className:`break-all text-xs font-medium text-fg`,children:t.title}),(0,V.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,V.jsxs)(`section`,{children:[(0,V.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.identityTitle}),n.principal&&E!==`revoked`&&l?(0,V.jsx)(ue,{device:n,zh:d===`zh`,onRename:l},`${n.id}:${n.settingsRevision??0}`):null,(0,V.jsxs)(`dl`,{className:`mt-2 rounded-xl border border-edge-subtle bg-surface-base p-3 text-xs`,children:[(0,V.jsx)(K,{label:y.identityId,value:n.id,breakAll:!0}),(0,V.jsx)(`div`,{className:`mt-3`,children:(0,V.jsx)(K,{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]=E,t[45]=L):L=t[45];let R;t[46]!==r||t[47]!==y.removeDevice||t[48]!==y.revoking||t[49]!==n||t[50]!==a||t[51]!==E?(R=n&&E!==`revoked`?(0,V.jsx)(`div`,{className:`shrink-0 border-t border-edge px-4 py-3`,children:(0,V.jsxs)(C,{variant:`secondary`,className:`w-full text-danger`,disabled:r,onClick:()=>a(n),children:[(0,V.jsx)(T,{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]=E,t[52]=R):R=t[52];let B;t[53]!==I||t[54]!==L||t[55]!==R?(B=(0,V.jsxs)(m,{children:[k,(0,V.jsxs)(h,{className:A,"aria-describedby":void 0,children:[I,L,R]})]}),t[53]=I,t[54]=L,t[55]=R,t[56]=B):B=t[56];let H;return t[57]!==B||t[58]!==D||t[59]!==O?(H=(0,V.jsx)(_,{open:D,onOpenChange:O,children:B}),t[57]=B,t[58]=D,t[59]=O,t[60]=H):H=t[60],H}function le(e){return e.language}function K(e){let t=(0,z.c)(10),{label:n,value:r,breakAll:i}=e,a=i===void 0?!1:i,o;t[0]===n?o=t[1]:(o=(0,V.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,V.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,V.jsxs)(`div`,{className:`min-w-0`,children:[o,u]}),t[7]=o,t[8]=u,t[9]=d):d=t[9],d}function ue({device:e,zh:t,onRename:n}){let[r,i]=(0,B.useState)(e.displayName),[a,o]=(0,B.useState)(!1),[s,c]=(0,B.useState)(!1);return(0,V.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,V.jsxs)(`label`,{className:`block text-sm text-fg`,children:[t?`设备名称`:`Device name`,(0,V.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,V.jsx)(C,{type:`submit`,variant:`secondary`,disabled:a||!r.trim()||r.trim()===e.displayName,children:a?t?`保存中…`:`Saving…`:t?`保存名称`:`Save name`}),s?(0,V.jsx)(`p`,{role:`alert`,className:`text-sm text-danger`,children:t?`保存失败,请刷新设备信息后重试。`:`Unable to save. Refresh device information and retry.`}):null]})}function de(e){let t=(0,z.c)(19),{onPaired:n}=e,[r,o]=i(),c=u(pe),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,B.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(fe,{replace:!0}))},g=[r,o],t[3]=r,t[4]=o,t[5]=h,t[6]=g):(h=t[5],g=t[6]),(0,B.useEffect)(h,g);let _,v;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>m({open:!0}),v=(0,V.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,V.jsxs)(C,{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,V.jsx)(R,{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,V.jsxs)(V.Fragment,{children:[y,x]}),t[16]=y,t[17]=x,t[18]=S):S=t[18],S}function fe(e){let t=new URLSearchParams(e);return t.delete(`startDevicePairing`),t}function pe(e){return e.language}async function q(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 me(){return d(`/api/endpoint-tools/devices`)}function he(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 ge(){return q(await l(me()))}async function _e(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 q(await l(d(`/api/endpoint-tools/devices/revoke`),{method:`POST`,body:JSON.stringify({ids:e})}))}))}async function ve(e){return q(await l(he(e)))}async function ye(e,t,n){await q(await l(d(`/api/endpoint-tools/devices/${encodeURIComponent(e)}`),{method:`PATCH`,body:JSON.stringify({nickname:t,expectedRevision:n})}))}var be=5e3,J=20,xe=20;function Se(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 Ce(e){let t=(0,z.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`,Se(n)),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,V.jsx)(`span`,{className:i,children:r}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function we(){let e=u(e=>e.language),t=s(e).endpointToolsSettings,[n,r]=i(),a=n.get(`view`)===`activity`?`activity`:`devices`,[o,l]=(0,B.useState)(null),[d,f]=(0,B.useState)([]),[p,m]=(0,B.useState)(!1),[h,g]=(0,B.useState)(!1),[_,v]=(0,B.useState)(``),[S,te]=(0,B.useState)(`active`),[ne,R]=(0,B.useState)(``),[z,H]=(0,B.useState)(1),[U,W]=(0,B.useState)(()=>new Set),[le,K]=(0,B.useState)(``),[ue]=O(le,250),[fe,pe]=(0,B.useState)(``),[q,Se]=(0,B.useState)(``),[we,Te]=(0,B.useState)(``),[Ee,Y]=(0,B.useState)(1),De={page:Ee,pageSize:xe,query:ue,principalId:fe,status:q,effect:we},X=y(me(),ge,{refreshInterval:be}),Z=y(a===`activity`?he(De):null,()=>ve(De),{refreshInterval:be,keepPreviousData:!0}),Oe=(0,B.useMemo)(()=>new Intl.DateTimeFormat(e===`zh`?`zh-CN`:`en`,{dateStyle:`medium`,timeStyle:`short`}),[e]);if(X.isLoading&&!X.data)return(0,V.jsx)(I,{children:(0,V.jsx)(b,{sections:2})});let Q=X.data??[],ke=Z.data?.items??[],Ae=Q.filter(e=>G(e)===`online`).length,je=Q.filter(e=>G(e)!==`revoked`).length,Me=Q.filter(e=>ae(e)).length,Ne=[...new Set(Q.map(e=>e.platform))].toSorted(),Pe=oe(Q,{query:_,status:S,platform:ne}),Fe=Math.max(1,Math.ceil(Pe.length/J)),$=Math.min(z,Fe),Ie=Pe.slice(($-1)*J,$*J),Le=Ie.reduce((e,t)=>(G(t)!==`revoked`&&e.push(t.id),e),[]),Re=Le.length>0&&Le.every(e=>U.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([X.mutate(),a===`activity`?Z.mutate():Promise.resolve()])},Ve=async()=>{if(!(d.length===0||p)){m(!0),g(!1);try{await _e(d.map(e=>e.id)),f([]),W(new Set),await X.mutate()}catch{g(!0)}finally{m(!1)}}},He=e=>{e(),H(1),W(new Set)};return(0,V.jsxs)(I,{children:[(0,V.jsx)(F,{title:t.title,subtitle:t.subtitle,actions:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(w,{className:`size-9 shrink-0 p-0`,label:t.refresh,onClick:Be}),(0,V.jsx)(de,{onPaired:()=>void X.mutate()})]})}),X.error||Z.error?(0,V.jsx)(`div`,{className:`rounded-xl bg-danger-soft px-4 py-3 text-sm text-danger`,children:t.loadError}):null,(0,V.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-3`,children:[{label:t.activeDevices,value:je,filter:`active`},{label:t.onlineDevices,value:Ae,filter:`online`},{label:t.staleDevices,value:Me,filter:`stale`}].map(({label:e,value:t,filter:n})=>(0,V.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`,S===n?`bg-surface-active`:`bg-surface-hover/20 hover:bg-surface-hover/50`),"aria-pressed":S===n,onClick:()=>{He(()=>te(n)),ze(`devices`)},children:[(0,V.jsx)(`span`,{className:`text-xs text-fg-muted`,children:e}),(0,V.jsx)(`span`,{className:`mt-1 block text-2xl font-semibold text-fg`,children:t})]},n))}),(0,V.jsx)(k,{items:[{id:`devices`,label:t.devicesTab,icon:x,count:je},{id:`activity`,label:t.activityTab,icon:A,count:Z.data?.total}],activeTab:a,onChange:ze,ariaLabel:t.viewsAria,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`}),(0,V.jsxs)(L,{id:`devices`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.devicesTitle,hint:t.devicesHint,children:[(0,V.jsx)(re,{devices:Q,zh:e===`zh`}),(0,V.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-[minmax(0,1fr)_11rem_11rem]`,children:[(0,V.jsxs)(`label`,{className:`relative block`,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:t.searchDevices}),(0,V.jsx)(N,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,V.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,V.jsx)(P,{value:S,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(()=>te(e))}),(0,V.jsx)(P,{value:ne,options:Ne.map(e=>({value:e,label:e})),placeholder:t.allPlatforms,emptyLabel:t.allPlatforms,ariaLabel:t.platformLabel,onChange:e=>He(()=>R(e))})]}),U.size>0?(0,V.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,V.jsx)(`p`,{className:`text-sm font-medium text-accent-fg`,children:t.selectedCount.replace(`{{count}}`,String(U.size))}),(0,V.jsxs)(C,{variant:`secondary`,className:`text-danger`,onClick:()=>{g(!1),f(Q.filter(e=>U.has(e.id)))},children:[(0,V.jsx)(T,{className:`size-4`,"aria-hidden":!0}),t.removeSelected]})]}):null,Q.length===0?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noDevices}):Pe.length===0?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingDevices}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`div`,{className:`flex min-h-10 items-center gap-3 border-b border-edge-subtle px-1`,children:(0,V.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,V.jsx)(`input`,{type:`checkbox`,"aria-label":t.selectPage,checked:Re,disabled:Le.length===0,className:`size-4 accent-accent`,onChange:e=>{W(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,V.jsx)(`ul`,{className:`divide-y divide-edge-subtle`,children:Ie.map(e=>{let n=G(e),r=e.kind===`mobile`?M:j;return(0,V.jsxs)(`li`,{className:`flex items-center gap-3`,children:[(0,V.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,V.jsx)(`input`,{type:`checkbox`,checked:U.has(e.id),disabled:n===`revoked`,"aria-label":t.selectDevice.replace(`{{name}}`,e.displayName),className:`size-4 accent-accent`,onChange:t=>{W(n=>{let r=new Set(n);return t.target.checked?r.add(e.id):r.delete(e.id),r})}})}),(0,V.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,V.jsx)(`span`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-inset text-fg-muted`,children:(0,V.jsx)(r,{className:`size-4`,"aria-hidden":!0})}),(0,V.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,V.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,V.jsx)(`span`,{className:`truncate text-sm font-medium text-fg`,children:e.displayName}),(0,V.jsx)(Ce,{status:n,label:t.status[n]})]}),(0,V.jsxs)(`span`,{className:`mt-1 block text-xs text-fg-muted`,children:[e.platform,` · `,se(e.id),` · `,t.lastSeen,`: `,e.lastSeenAt?Oe.format(e.lastSeenAt):t.never]})]}),(0,V.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(ie(e)))}),(0,V.jsx)(D,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0})]})]},e.id)})}),(0,V.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,V.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String(($-1)*J+1)).replace(`{{to}}`,String(Math.min($*J,Pe.length))).replace(`{{total}}`,String(Pe.length))}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:$<=1,onClick:()=>H(e=>Math.max(1,e-1)),children:(0,V.jsx)(ee,{className:`size-4`,"aria-hidden":!0})}),(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:$>=Fe,onClick:()=>H(e=>Math.min(Fe,e+1)),children:(0,V.jsx)(D,{className:`size-4`,"aria-hidden":!0})})]})]})]})]}),(0,V.jsxs)(L,{id:`activity`,activeTab:a,tabIdPrefix:`endpoint-management-tab`,panelIdPrefix:`endpoint-management-panel`,title:t.callsTitle,hint:t.callsHint,children:[(0,V.jsxs)(`div`,{className:`mb-4 grid gap-2 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,V.jsxs)(`label`,{className:`relative block sm:col-span-2 lg:col-span-1`,children:[(0,V.jsx)(`span`,{className:`sr-only`,children:t.searchActivity}),(0,V.jsx)(N,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),(0,V.jsx)(`input`,{type:`search`,"aria-label":t.searchActivity,value:le,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=>{K(e.target.value),Y(1)}})]}),(0,V.jsx)(P,{value:fe,options:Q.map(e=>({value:e.id,label:`${e.displayName} · ${se(e.id)}`})),placeholder:t.allDevices,emptyLabel:t.allDevices,ariaLabel:t.deviceLabel,onChange:e=>{pe(e),Y(1)}}),(0,V.jsx)(P,{value:q,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=>{Se(e),Y(1)}}),(0,V.jsx)(P,{value:we,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=>{Te(e),Y(1)}})]}),Z.isLoading&&!Z.data?(0,V.jsx)(b,{sections:1}):null,ke.length===0&&!Z.isLoading?(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:t.noMatchingCalls}):null,(0,V.jsx)(`div`,{className:`space-y-2`,children:ke.map(e=>(0,V.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,V.jsxs)(`div`,{className:`min-w-0`,children:[(0,V.jsx)(`p`,{className:`break-all text-sm font-medium text-fg`,children:e.toolName}),(0,V.jsxs)(`p`,{className:`mt-0.5 text-xs text-fg-muted`,children:[Oe.format(e.startedAt),` · `,t.effects[e.effect],` · `,e.endpointId]}),e.errorMessage?(0,V.jsx)(`p`,{className:`mt-1 text-xs text-danger`,children:e.errorMessage}):null]}),(0,V.jsx)(Ce,{status:e.status,label:t.status[e.status]})]},e.id))}),Z.data&&Z.data.total>0?(0,V.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-between gap-3 border-t border-edge-subtle pt-3`,children:[(0,V.jsx)(`p`,{className:`text-xs text-fg-muted`,children:t.paginationSummary.replace(`{{from}}`,String((Z.data.page-1)*Z.data.pageSize+1)).replace(`{{to}}`,String(Math.min(Z.data.page*Z.data.pageSize,Z.data.total))).replace(`{{total}}`,String(Z.data.total))}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.previousPage,disabled:Z.data.page<=1,onClick:()=>Y(e=>Math.max(1,e-1)),children:(0,V.jsx)(ee,{className:`size-4`,"aria-hidden":!0})}),(0,V.jsx)(C,{variant:`ghost`,className:`size-9 p-0`,"aria-label":t.nextPage,disabled:Z.data.page>=Z.data.totalPages,onClick:()=>Y(e=>Math.min(Z.data.totalPages,e+1)),children:(0,V.jsx)(D,{className:`size-4`,"aria-hidden":!0})})]})]}):null]}),(0,V.jsx)(ce,{device:o,busy:p,onRename:async(e,t)=>{await ye(e.id,t,e.settingsRevision??0),l((await X.mutate())?.find(t=>t.id===e.id)??null)},onClose:()=>l(null),onRevoke:e=>{l(null),g(!1),f([e])}}),(0,V.jsx)(E,{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{we as EndpointToolsManagementSettings};
|
package/dist/gateway/static/root/assets/{media-plugins-CGq_o7tI.js → media-plugins-Brwr53z1.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-DBvKzlCl.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-DBvKzlCl.js";import{a as i}from"./attachment-utils-core-BIOUBrpT.js";import{t as a}from"./preview-open-alternatives-DCffBrFR.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-CzkAd5Su.js";export{e as Mermaid};
|