@xopcai/xopc 0.0.214 → 0.0.215
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-B5VyiQ_K.js → agent-avatar-dicebear-0Am1Zsai.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-DM2l0hCI.js → agents-BhWSwa4h.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-Bbul18ij.js → app-management-settings-panel-BCHmLiA7.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-Bvvzgp00.js → appearance-settings-CoB0hGf9.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-BWd2KUkp.js → apps-page-DloObQ8z.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-DjGVsAgd.js → archive-plugin-BczSorEI.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BCuUeuuO.js → attachment-load-D1SDGB0m.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Doof8nA6.js → automations-page-BTgWPOP6.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-B2eTpWQN.js → automations-workspace-CbOSi-Uh.js} +2 -2
- package/dist/gateway/static/root/assets/{binary-plugins-B7WFf-lc.js → binary-plugins-6tFOQHNC.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CVwIwyUT.js → block-editor-Cm7txOU2.js} +1 -1
- package/dist/gateway/static/root/assets/browser-settings-page-UhIguuT0.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflows-page-8a3hnSXE.js → browser-workflows-page-DJGD7LOd.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-DfTpgo4L.js → capabilities-settings-panel-BPe2vu-c.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-DkjsA_Yn.js → capability-presets-settings-panel-v85bB-Lt.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-Cv3pT5iN.js → channels-settings-Dj3wNboO.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BYds3un1.js → chat-terminal-dock-DioZkaaj.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-Cj4deNtI.js → connectors-api-DHBX8LgY.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-CL6PMerr.js → connectors-page-B8Z692Fe.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-expression-DjBh0ZL4.js → cron-expression-BTNvqkwt.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-3cIzKCZU.js → date-picker-wMj_1toq.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-VZFStrz_.js → dependency-picker-PlfH-GH8.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-CRNQ4CKZ.js → desktop-pet-C3nO_ocM.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CJBeLcbV.js → desktop-pet-settings-BZSODwlA.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-Dbq9_c33.js → directory-picker-path-field-BIqsbDII.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CSFZfcz5.js → extension-debug-page-C1o3Jn7L.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-W8vZ3Nl0.js → extension-page-Drjulq3q.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-D5zYR65b.js → extension-settings-page-XsMPJFYn.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-BnA56bxn.js → gateway-config-api-D9xHVpb9.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CCOOGd8A.js → gateway-settings-BaVojQd4.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-dQH2-fGh.js +1 -0
- package/dist/gateway/static/root/assets/home-page-CMqS6l_m.js +1 -0
- package/dist/gateway/static/root/assets/{index-DQzjgIkQ.css → index-BDwfvp1w.css} +1 -1
- package/dist/gateway/static/root/assets/{index-BIBAmAjw.js → index-CjbvsIPf.js} +8 -8
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Bcc08kso.js → keyboard-shortcuts-settings-so_XFXVC.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Dp1zGjrI.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CuwtmiCt.js → local-apps-page-8w0FZ7TD.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-Vq-wDYVv.js → logs-page-FiVowm1N.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-gQwyJgL4.js → management-settings-DdYouU4o.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-DLSvtLDY.js → markdown-split-D_kDeT-f.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DFdpMglM.js → media-plugins-BDgbIz9p.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-BBhONbU4.js → notes-page-Bw2MQ4M8.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-DpMDd8Sm.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-DoQq4tt6.js → page-tabs-B7dlng5v.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BtJkAYOs.js → preview-open-alternatives-Bzi2ia11.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-ClyG8t4A.js → product-open-page--m0DziFF.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-CVeA23NS.js → project-detail-page-D8AglzWN.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-DFj-bwa5.js → projects-page-D0X6kb12.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-MxuXgfuY.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DdTZPRU5.js → runtime-tools-settings-panel-6QadzIxb.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-C3Q03Hyv.js → schema-form-ChJycivC.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-wfBSuhmo.js → sessions-page-DGZbtPXx.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DLg_9-bb.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DdrNtxul.js → settings-form-section-DRazyNED.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-BFvEfK7v.js → settings-loading-skeleton-CdEdSb5L.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-B8iNNrLN.js → settings-page-BL0rlziB.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-DEBPLh04.js → setup-status-panel-D-nQiA7z.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-CrsscJs3.js → share-preview-page-CKK5swgV.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-Cpd3s8-P.js → shares-settings-IDLLIYA5.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-BrDL4HAN.js → skill-reload-api-C_ivBD5y.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page-B1sTkjZH.js → skills-page-t0eKREk9.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-CIcb0h3E.js → skills-page.utils-4_15-T3G.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-MAl91hH_.js → system-settings-panel-CERY3Drp.js} +1 -1
- package/dist/gateway/static/root/assets/tab-completion-input-B-VsxKhC.js +1 -0
- package/dist/gateway/static/root/assets/{task-detail-page-C5wgYuvF.js → task-detail-page-CS9BX5BO.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-Peglr65V.js → typed-models-lib-CzB0r79r.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-C10PZ1OV.js → use-autosave-D_fuJIDo.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-BvBzRI8P.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-bdYmX3ph.js → voice-api-key-field-ztq8iQAp.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-BI4wbLTm.js → work-discovery-overlay-CSgiFeW2.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CfmwGYkr.js → workflow-run-setup-panel-DstMFHA8.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-XD3Pmm1p.js +5 -0
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +4 -4
- package/dist/src/agent/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/ipc/inbox.js +1 -1
- package/dist/src/agent/memory/create-memory-manager.js +1 -1
- package/dist/src/agent/service.js +2 -2
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- package/dist/src/agent-runtime/index.js +1 -1
- package/dist/src/agent-runtime/runtime-profile.js +1 -1
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/cli/commands/agent.js +2 -2
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/models.js +2 -2
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/profile.js +1 -1
- package/dist/src/cli/commands/tunnel.js +1 -1
- package/dist/src/cli/commands/update.js +1 -1
- package/dist/src/cli/extension-cli-register.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/index.js +5 -5
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/run-loop.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service.js +3 -3
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-D6ua52QD.js +0 -8
- package/dist/gateway/static/root/assets/heartbeat-settings-AutxO-ec.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BMpQAeHr.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-ctXGGgj1.js +0 -2
- package/dist/gateway/static/root/assets/notes-workbench-CCFrzDRT.js +0 -4
- package/dist/gateway/static/root/assets/remote-access-hub-BgIrBYNz.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-4zV9nthi.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-DsAfqOJy.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-D7tjtD97.js +0 -5
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{p as i}from"./chunk-KS7C4IRE-BaASWQor.js";import{n as a,r as o}from"./popover-select-BzdnTy3h.js";import{t as s}from"./download-Dk-ZjtO6.js";import{t as c}from"./external-link-DjqjBmc3.js";import{t as l}from"./globe-DSSGFWFn.js";import{t as u}from"./loader-circle-CifKLtgG.js";import{t as d}from"./cn-JdwAhgNB.js";import{t as f}from"./button-CSEbl4zT.js";import{t as p}from"./copy-to-clipboard-HOJ79TWv.js";import{t as m}from"./messages-CbbZKEfO.js";import{l as h,n as g,o as _,r as v,s as y}from"./locale-store-BIOMAhmR.js";import{n as b,r as x}from"./gateway-config-swr-l2w9ecXl.js";import{$c as S,Bc as C,Cs as w,Eo as T,Fc as E,Fs as D,Gc as O,Io as k,Jr as A,Kc as j,Ln as M,Qr as N,Ro as P,Ss as F,Xr as I,Yc as L,Yo as R,Yr as z,ao as B,as as ee,fo as V,is as te,mo as H,ms as U,nl as W,ts as ne,vs as G,xs as K}from"./index-BIBAmAjw.js";import{n as re,r as ie,t as ae}from"./settings-page-layout-BRQNel6r.js";import{n as oe}from"./settings-loading-skeleton-BFvEfK7v.js";import{n as se,t as ce}from"./use-autosave-C10PZ1OV.js";import{t as le}from"./settings-advanced-gate-4zV9nthi.js";import{n as ue,t as q}from"./settings-form-section-DdrNtxul.js";import{t as de}from"./page-tabs-DoQq4tt6.js";import{c as fe,r as pe,s as J}from"./typed-models-lib-Peglr65V.js";import{a as me,c as he,d as ge,u as _e}from"./gateway-config-api-BnA56bxn.js";var Y=e(t(),1),X=n(),Z=r();function Q(e){let t=(0,X.c)(8),{label:n,description:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,Z.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,Z.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-subtle`,children:r}),t[2]=r,t[3]=o);let s;return t[4]!==i||t[5]!==a||t[6]!==o?(s=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[a,i,o]}),t[4]=i,t[5]=a,t[6]=o,t[7]=s):s=t[7],s}function ve(e){switch(e){case`ready`:return`bg-emerald-500`;case`not_installed`:case`checking`:return`bg-amber-500`;case`error`:return`bg-red-500`;default:return`bg-fg-subtle/60`}}function ye(e){let t=(0,X.c)(28),{value:n,onChange:r,onOpenConfig:i,options:o,m:s}=e,c;if(t[0]!==s.browserGoToConfigure||t[1]!==s.browserPickerSubtitle||t[2]!==s.browserPickerTitle||t[3]!==r||t[4]!==i||t[5]!==o||t[6]!==n){let e=o.find(e=>e.value===n)??o[0],l;t[8]===s.browserPickerTitle?l=t[9]:(l=(0,Z.jsx)(`label`,{htmlFor:`browser-backend-select`,className:`text-sm font-medium text-fg`,children:s.browserPickerTitle}),t[8]=s.browserPickerTitle,t[9]=l);let u;t[10]===s.browserPickerSubtitle?u=t[11]:(u=(0,Z.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-muted`,children:s.browserPickerSubtitle}),t[10]=s.browserPickerSubtitle,t[11]=u);let f;t[12]!==l||t[13]!==u?(f=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=f):f=t[14];let p;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(p=d(fe(),`min-w-0 flex-1 sm:max-w-md`),t[15]=p):p=t[15];let m;t[16]===r?m=t[17]:(m=e=>r(e.target.value),t[16]=r,t[17]=m);let h=s.browserPickerTitle,g;t[18]===o?g=t[19]:(g=o.map(be),t[18]=o,t[19]=g);let _;t[20]!==s.browserPickerTitle||t[21]!==m||t[22]!==g||t[23]!==n?(_=(0,Z.jsx)(a,{id:`browser-backend-select`,className:p,value:n,onChange:m,"aria-label":h,children:g}),t[20]=s.browserPickerTitle,t[21]=m,t[22]=g,t[23]=n,t[24]=_):_=t[24];let v=i?(0,Z.jsxs)(`button`,{type:`button`,className:d(`inline-flex shrink-0 items-center justify-center gap-1 rounded-lg border border-edge bg-surface-panel px-3 py-2 text-xs font-medium text-accent`,`transition-colors hover:border-edge-strong hover:bg-surface-hover`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent focus-visible:ring-offset-2 focus-visible:ring-offset-surface-base`),onClick:()=>i(n),"aria-label":`${e?.name??n} — ${s.browserGoToConfigure}`,children:[(0,Z.jsx)(`span`,{children:s.browserGoToConfigure}),(0,Z.jsx)(W,{className:`size-4 shrink-0`,"aria-hidden":!0})]}):null,y;t[25]!==v||t[26]!==_?(y=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-start sm:gap-2`,children:[_,v]}),t[25]=v,t[26]=_,t[27]=y):y=t[27],c=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[f,y,e?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5 rounded-lg bg-surface-panel/80 px-3 py-2.5 shadow-surface`,children:[(0,Z.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:e.statusLabel?(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[11px] font-medium text-fg-muted`,"aria-label":e.statusLabel,children:[(0,Z.jsx)(`span`,{className:d(`inline-block size-1.5 rounded-full`,ve(e.status)),"aria-hidden":!0}),e.statusLabel]}):null}),(0,Z.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-muted`,children:e.tagline})]}):null]}),t[0]=s.browserGoToConfigure,t[1]=s.browserPickerSubtitle,t[2]=s.browserPickerTitle,t[3]=r,t[4]=i,t[5]=o,t[6]=n,t[7]=c}else c=t[7];return c}function be(e){return(0,Z.jsx)(o,{value:e.value,children:e.name},e.value)}function xe(e){return`browser-focus-${e}`}function Se(e){switch(e){case`connection`:case`extension`:case`local`:case`cloak`:case`cdp`:case`cloud`:case`runtime`:case`security`:return e;default:return null}}function Ce(e){let t=(0,X.c)(89),{a:n,form:r,update:i}=e,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(s=xe(`runtime`),t[0]=s):s=t[0];let c;t[1]===n.browserBehaviorShow?c=t[2]:(c=(0,Z.jsx)(ue,{icon:ne,title:n.browserBehaviorShow}),t[1]=n.browserBehaviorShow,t[2]=c);let l;t[3]===i?l=t[4]:(l=e=>i({browserHeadless:e.target.checked}),t[3]=i,t[4]=l);let u;t[5]!==r.browserHeadless||t[6]!==l?(u=(0,Z.jsx)(`input`,{type:`checkbox`,className:`size-3.5 shrink-0 rounded border-edge`,checked:r.browserHeadless,onChange:l}),t[5]=r.browserHeadless,t[6]=l,t[7]=u):u=t[7];let d;t[8]===n.browserHeadlessOn?d=t[9]:(d=(0,Z.jsx)(`span`,{children:n.browserHeadlessOn}),t[8]=n.browserHeadlessOn,t[9]=d);let f;t[10]!==u||t[11]!==d?(f=(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-fg`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12];let p;t[13]!==n.desc.browserHeadless||t[14]!==n.label.browserHeadless||t[15]!==f?(p=(0,Z.jsx)(Q,{label:n.label.browserHeadless,description:n.desc.browserHeadless,children:f}),t[13]=n.desc.browserHeadless,t[14]=n.label.browserHeadless,t[15]=f,t[16]=p):p=t[16];let m=n.label.browserDialogPolicy,h=n.desc.browserDialogPolicy,g;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(g=fe(),t[17]=g):g=t[17];let _;t[18]===i?_=t[19]:(_=e=>i({browserDialogPolicy:e.target.value}),t[18]=i,t[19]=_);let v;t[20]===n.browserDialogPolicyMustRespond?v=t[21]:(v=(0,Z.jsx)(o,{value:`must_respond`,children:n.browserDialogPolicyMustRespond}),t[20]=n.browserDialogPolicyMustRespond,t[21]=v);let y;t[22]===n.browserDialogPolicyAutoDismiss?y=t[23]:(y=(0,Z.jsx)(o,{value:`auto_dismiss`,children:n.browserDialogPolicyAutoDismiss}),t[22]=n.browserDialogPolicyAutoDismiss,t[23]=y);let b;t[24]===n.browserDialogPolicyAutoAccept?b=t[25]:(b=(0,Z.jsx)(o,{value:`auto_accept`,children:n.browserDialogPolicyAutoAccept}),t[24]=n.browserDialogPolicyAutoAccept,t[25]=b);let x;t[26]!==r.browserDialogPolicy||t[27]!==_||t[28]!==v||t[29]!==y||t[30]!==b?(x=(0,Z.jsxs)(a,{className:g,value:r.browserDialogPolicy,onChange:_,children:[v,y,b]}),t[26]=r.browserDialogPolicy,t[27]=_,t[28]=v,t[29]=y,t[30]=b,t[31]=x):x=t[31];let S;t[32]!==n.desc.browserDialogPolicy||t[33]!==n.label.browserDialogPolicy||t[34]!==x?(S=(0,Z.jsx)(Q,{label:m,description:h,children:x}),t[32]=n.desc.browserDialogPolicy,t[33]=n.label.browserDialogPolicy,t[34]=x,t[35]=S):S=t[35];let C=n.label.browserDialogTimeout,w=n.desc.browserDialogTimeout,T;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(T=J(),t[36]=T):T=t[36];let E=r.browserDialogTimeout??``,D;t[37]===i?D=t[38]:(D=e=>{let t=e.target.value;i({browserDialogTimeout:t===``?void 0:Number.parseInt(t,10)})},t[37]=i,t[38]=D);let O;t[39]!==E||t[40]!==D?(O=(0,Z.jsx)(`input`,{type:`number`,className:T,min:1,value:E,placeholder:`300`,onChange:D}),t[39]=E,t[40]=D,t[41]=O):O=t[41];let k;t[42]!==n.desc.browserDialogTimeout||t[43]!==n.label.browserDialogTimeout||t[44]!==O?(k=(0,Z.jsx)(Q,{label:C,description:w,children:O}),t[42]=n.desc.browserDialogTimeout,t[43]=n.label.browserDialogTimeout,t[44]=O,t[45]=k):k=t[45];let A;t[46]!==S||t[47]!==k||t[48]!==p?(A=(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[p,S,k]}),t[46]=S,t[47]=k,t[48]=p,t[49]=A):A=t[49];let j;t[50]!==c||t[51]!==A?(j=(0,Z.jsx)(`div`,{id:s,className:`scroll-mt-24`,children:(0,Z.jsxs)(q,{children:[c,A]})}),t[50]=c,t[51]=A,t[52]=j):j=t[52];let M;t[53]===Symbol.for(`react.memo_cache_sentinel`)?(M=xe(`security`),t[53]=M):M=t[53];let N;t[54]===n.browserSecurityShow?N=t[55]:(N=(0,Z.jsx)(ue,{icon:ee,title:n.browserSecurityShow}),t[54]=n.browserSecurityShow,t[55]=N);let P;t[56]===i?P=t[57]:(P=e=>i({browserAllowPrivateUrls:e.target.checked}),t[56]=i,t[57]=P);let F;t[58]!==r.browserAllowPrivateUrls||t[59]!==P?(F=(0,Z.jsx)(`input`,{type:`checkbox`,className:`size-3.5 shrink-0 rounded border-edge`,checked:r.browserAllowPrivateUrls,onChange:P}),t[58]=r.browserAllowPrivateUrls,t[59]=P,t[60]=F):F=t[60];let I;t[61]===n.browserAllowPrivateOn?I=t[62]:(I=(0,Z.jsx)(`span`,{children:n.browserAllowPrivateOn}),t[61]=n.browserAllowPrivateOn,t[62]=I);let L;t[63]!==F||t[64]!==I?(L=(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-fg`,children:[F,I]}),t[63]=F,t[64]=I,t[65]=L):L=t[65];let R;t[66]!==n.desc.browserAllowPrivateUrls||t[67]!==n.label.browserAllowPrivateUrls||t[68]!==L?(R=(0,Z.jsx)(Q,{label:n.label.browserAllowPrivateUrls,description:n.desc.browserAllowPrivateUrls,children:L}),t[66]=n.desc.browserAllowPrivateUrls,t[67]=n.label.browserAllowPrivateUrls,t[68]=L,t[69]=R):R=t[69];let z=n.label.browserCommandTimeout,B=n.desc.browserCommandTimeout,V;t[70]===Symbol.for(`react.memo_cache_sentinel`)?(V=J(),t[70]=V):V=t[70];let te=r.browserCommandTimeout??``,H;t[71]===i?H=t[72]:(H=e=>{let t=e.target.value;i({browserCommandTimeout:t===``?void 0:Number.parseInt(t,10)})},t[71]=i,t[72]=H);let U;t[73]!==te||t[74]!==H?(U=(0,Z.jsx)(`input`,{type:`number`,className:V,min:5,value:te,placeholder:`30`,onChange:H}),t[73]=te,t[74]=H,t[75]=U):U=t[75];let W;t[76]!==n.desc.browserCommandTimeout||t[77]!==n.label.browserCommandTimeout||t[78]!==U?(W=(0,Z.jsx)(Q,{label:z,description:B,children:U}),t[76]=n.desc.browserCommandTimeout,t[77]=n.label.browserCommandTimeout,t[78]=U,t[79]=W):W=t[79];let G;t[80]!==R||t[81]!==W?(G=(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[R,W]}),t[80]=R,t[81]=W,t[82]=G):G=t[82];let K;t[83]!==N||t[84]!==G?(K=(0,Z.jsx)(`div`,{id:M,className:`scroll-mt-24`,children:(0,Z.jsxs)(q,{className:`border border-amber-500/20`,children:[N,G]})}),t[83]=N,t[84]=G,t[85]=K):K=t[85];let re;return t[86]!==j||t[87]!==K?(re=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[j,K]}),t[86]=j,t[87]=K,t[88]=re):re=t[88],re}function we(e){let t=(0,X.c)(9),{language:n,label:r,className:i}=e,a;t[0]===n?a=t[1]:(a=B(n),t[0]=n,t[1]=a);let o;t[2]===i?o=t[3]:(o=d(`inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/40`,i),t[2]=i,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,Z.jsx)(c,{className:`size-3 shrink-0`,"aria-hidden":!0}),t[4]=s):s=t[4];let l;return t[5]!==r||t[6]!==a||t[7]!==o?(l=(0,Z.jsxs)(`a`,{href:a,target:`_blank`,rel:`noreferrer`,className:o,children:[r,s]}),t[5]=r,t[6]=a,t[7]=o,t[8]=l):l=t[8],l}function Te(e){let t=(0,X.c)(27),{title:n,description:r,recommended:i,recommendedLabel:a,icon:o,onSelect:s,selectLabel:c}=e,l=`${n} — ${c}`,u;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(u=d(`group flex w-full flex-col rounded-xl bg-surface-panel/80 p-3 text-left shadow-surface transition-colors`,`hover:bg-surface-hover/40`,`focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`),t[0]=u):u=t[0];let f;t[1]===o?f=t[2]:(f=(0,Z.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center rounded-lg bg-surface-hover text-fg-muted`,children:(0,Z.jsx)(o,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0})}),t[1]=o,t[2]=f);let p;t[3]===n?p=t[4]:(p=(0,Z.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n}),t[3]=n,t[4]=p);let m;t[5]!==i||t[6]!==a?(m=i&&a?(0,Z.jsx)(`span`,{className:`rounded-full bg-accent/15 px-2 py-0.5 text-[10px] font-medium text-accent`,children:a}):null,t[5]=i,t[6]=a,t[7]=m):m=t[7];let h;t[8]!==p||t[9]!==m?(h=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[p,m]}),t[8]=p,t[9]=m,t[10]=h):h=t[10];let g;t[11]===r?g=t[12]:(g=(0,Z.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-fg-muted`,children:r}),t[11]=r,t[12]=g);let _;t[13]!==h||t[14]!==g?(_=(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[h,g]}),t[13]=h,t[14]=g,t[15]=_):_=t[15];let v;t[16]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,Z.jsx)(W,{className:`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0}),t[16]=v):v=t[16];let y;t[17]!==f||t[18]!==_?(y=(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[f,_,v]}),t[17]=f,t[18]=_,t[19]=y):y=t[19];let b;t[20]===c?b=t[21]:(b=(0,Z.jsx)(`span`,{className:`mt-2 text-[11px] font-medium text-accent`,children:c}),t[20]=c,t[21]=b);let x;return t[22]!==s||t[23]!==l||t[24]!==y||t[25]!==b?(x=(0,Z.jsxs)(`button`,{type:`button`,onClick:s,"aria-label":l,className:u,children:[y,b]}),t[22]=s,t[23]=l,t[24]=y,t[25]=b,t[26]=x):x=t[26],x}function Ee(e){let t=(0,X.c)(25),{m:n,onStart:r}=e,i=M(De),a;t[0]!==n.browserBackendCloakBrowser||t[1]!==n.browserModeCloakTagline||t[2]!==n.browserSetupCloudDesc||t[3]!==n.browserSetupCloudTitle||t[4]!==n.browserSetupExtDesc||t[5]!==n.browserSetupExtTitle||t[6]!==n.browserSetupLocalDesc||t[7]!==n.browserSetupLocalTitle||t[8]!==i?(a=[{id:`extension`,icon:G,title:n.browserSetupExtTitle,description:n.browserSetupExtDesc,recommended:!0},{id:`cloakbrowser`,icon:te,title:n.browserBackendCloakBrowser,description:n.browserModeCloakTagline},{id:`local`,icon:D,title:n.browserSetupLocalTitle,description:n.browserSetupLocalDesc},{id:`cloud`,icon:C,title:n.browserSetupCloudTitle,description:n.browserSetupCloudDesc}].filter(e=>_e(e.id,i)),t[0]=n.browserBackendCloakBrowser,t[1]=n.browserModeCloakTagline,t[2]=n.browserSetupCloudDesc,t[3]=n.browserSetupCloudTitle,t[4]=n.browserSetupExtDesc,t[5]=n.browserSetupExtTitle,t[6]=n.browserSetupLocalDesc,t[7]=n.browserSetupLocalTitle,t[8]=i,t[9]=a):a=t[9];let o=a,s;t[10]===n.browserSetupTitle?s=t[11]:(s=(0,Z.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.browserSetupTitle}),t[10]=n.browserSetupTitle,t[11]=s);let c;t[12]===n.browserSetupSubtitle?c=t[13]:(c=(0,Z.jsx)(`p`,{className:`mt-1 text-xs leading-relaxed text-fg-muted`,children:n.browserSetupSubtitle}),t[12]=n.browserSetupSubtitle,t[13]=c);let l;t[14]!==s||t[15]!==c?(l=(0,Z.jsxs)(`div`,{children:[s,c]}),t[14]=s,t[15]=c,t[16]=l):l=t[16];let u;t[17]!==n.browserSetupRecommended||t[18]!==n.browserSetupSelect||t[19]!==o||t[20]!==r?(u=(0,Z.jsx)(`div`,{className:`flex flex-col gap-2`,children:o.map(e=>(0,Z.jsx)(Te,{icon:e.icon,title:e.title,description:e.description,recommended:e.recommended,recommendedLabel:n.browserSetupRecommended,selectLabel:n.browserSetupSelect,onSelect:()=>r(e.id)},e.id))}),t[17]=n.browserSetupRecommended,t[18]=n.browserSetupSelect,t[19]=o,t[20]=r,t[21]=u):u=t[21];let d;return t[22]!==l||t[23]!==u?(d=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-xl bg-surface-base p-4`,children:[l,u]}),t[22]=l,t[23]=u,t[24]=d):d=t[24],d}function De(e){return e.mode}function Oe(e){if(e.kind===`loading`)return`checking`;if(e.kind===`error`)return`error`;if(e.kind===`ok`)return e.data.installed?`ready`:`not_installed`}function ke(e,t){if(e)return{ready:t.browserStatusReady,not_installed:t.browserStatusNotInstalled,checking:t.browserStatusChecking,unknown:t.browserStatusUnknown,error:t.browserStatusError}[e]}function Ae(e){if(e.kind!==`idle`)return e.kind===`loading`?`checking`:e.kind===`error`?`error`:e.data.connected?`ready`:(e.data.running,`not_installed`)}function je(e,t){if(e.kind!==`idle`)return e.kind===`loading`?t.browserStatusChecking:e.kind===`error`?t.browserStatusError:e.data.connected?t.browserExtensionConnected:e.data.running?t.browserExtensionWaiting:t.browserExtensionServerOff}var Me=[`overview`,`extension`,`local`,`cloakbrowser`,`cdp`,`cloud`],Ne=[`extension`,`local`,`cloakbrowser`,`cdp`,`cloud`],Pe={connection:`overview`,extension:`extension`,local:`local`,cloak:`cloakbrowser`,cdp:`cdp`,cloud:`cloud`,runtime:`overview`,security:`overview`};function Fe(e){let t=(e??``).trim();return t===`behavior`?`overview`:Me.includes(t)?t:`overview`}function Ie(e){return Ne.includes(e)}function Le(e){let t=(0,X.c)(46),{icon:n,title:r,description:i,status:a,statusDetail:o,primaryAction:s,children:c,advanced:l,m:u,embedded:d,sectionTitle:f,advancedTitle:p}=e,m=d===void 0?!1:d,h;t[0]!==l||t[1]!==p?(h=l?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[p?(0,Z.jsx)(`h4`,{className:`text-sm font-medium text-fg`,children:p}):null,l]}):null,t[0]=l,t[1]=p,t[2]=h):h=t[2];let g=h;if(m){let e;t[3]!==i||t[4]!==f?(e=f?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Z.jsx)(`h4`,{className:`text-sm font-medium text-fg`,children:f}),i?(0,Z.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-muted`,children:i}):null]}):null,t[3]=i,t[4]=f,t[5]=e):e=t[5];let n;t[6]!==u||t[7]!==s||t[8]!==a||t[9]!==o?(n=a||s?(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[a?(0,Z.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Z.jsx)(Re,{kind:a,detail:o,m:u})}):(0,Z.jsx)(`span`,{}),s?(0,Z.jsx)(`div`,{className:`shrink-0`,children:s}):null]}):null,t[6]=u,t[7]=s,t[8]=a,t[9]=o,t[10]=n):n=t[10];let r;t[11]===c?r=t[12]:(r=c?(0,Z.jsx)(`div`,{className:`flex flex-col gap-4`,children:c}):null,t[11]=c,t[12]=r);let l;return t[13]!==g||t[14]!==e||t[15]!==n||t[16]!==r?(l=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[e,n,r,g]}),t[13]=g,t[14]=e,t[15]=n,t[16]=r,t[17]=l):l=t[17],l}let _;t[18]===n?_=t[19]:(_=(0,Z.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover text-fg-muted`,children:(0,Z.jsx)(n,{className:`size-4`,strokeWidth:1.75})}),t[18]=n,t[19]=_);let v;t[20]===r?v=t[21]:(v=(0,Z.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:r}),t[20]=r,t[21]=v);let y;t[22]!==u||t[23]!==a||t[24]!==o?(y=a?(0,Z.jsx)(Re,{kind:a,detail:o,m:u}):null,t[22]=u,t[23]=a,t[24]=o,t[25]=y):y=t[25];let b;t[26]!==v||t[27]!==y?(b=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[v,y]}),t[26]=v,t[27]=y,t[28]=b):b=t[28];let x;t[29]===i?x=t[30]:(x=(0,Z.jsx)(`p`,{className:`text-xs leading-relaxed text-fg-muted`,children:i}),t[29]=i,t[30]=x);let S;t[31]!==b||t[32]!==x?(S=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[b,x]}),t[31]=b,t[32]=x,t[33]=S):S=t[33];let C;t[34]===s?C=t[35]:(C=s?(0,Z.jsx)(`div`,{className:`shrink-0`,children:s}):null,t[34]=s,t[35]=C);let w;t[36]!==_||t[37]!==S||t[38]!==C?(w=(0,Z.jsxs)(`div`,{className:`flex items-start gap-3`,children:[_,S,C]}),t[36]=_,t[37]=S,t[38]=C,t[39]=w):w=t[39];let T;t[40]===c?T=t[41]:(T=c?(0,Z.jsx)(`div`,{className:`flex flex-col gap-4`,children:c}):null,t[40]=c,t[41]=T);let E;return t[42]!==g||t[43]!==w||t[44]!==T?(E=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4 rounded-xl bg-surface-panel/80 p-4 shadow-surface`,children:[w,T,g]}),t[42]=g,t[43]=w,t[44]=T,t[45]=E):E=t[45],E}function Re(e){let t=(0,X.c)(27),{kind:n,detail:r,m:i}=e,a,o,s,c;if(t[0]!==n||t[1]!==i.browserStatusChecking||t[2]!==i.browserStatusError||t[3]!==i.browserStatusNotInstalled||t[4]!==i.browserStatusReady||t[5]!==i.browserStatusUnknown){let{icon:e,color:r,label:l}={ready:{icon:S,color:`text-green-600 dark:text-green-400`,label:i.browserStatusReady},not_installed:{icon:P,color:`text-amber-600 dark:text-amber-400`,label:i.browserStatusNotInstalled},checking:{icon:u,color:`text-fg-muted`,label:i.browserStatusChecking},unknown:{icon:L,color:`text-fg-muted`,label:i.browserStatusUnknown},error:{icon:j,color:`text-red-600 dark:text-red-400`,label:i.browserStatusError}}[n];a=e,o=l,c=`inline-flex min-w-0 flex-col items-start gap-1`,s=d(`inline-flex shrink-0 items-center gap-1 whitespace-nowrap text-xs font-medium`,r),t[0]=n,t[1]=i.browserStatusChecking,t[2]=i.browserStatusError,t[3]=i.browserStatusNotInstalled,t[4]=i.browserStatusReady,t[5]=i.browserStatusUnknown,t[6]=a,t[7]=o,t[8]=s,t[9]=c}else a=t[6],o=t[7],s=t[8],c=t[9];let l=n===`checking`&&`animate-spin`,f;t[10]===l?f=t[11]:(f=d(`size-3.5 shrink-0`,l),t[10]=l,t[11]=f);let p;t[12]!==a||t[13]!==f?(p=(0,Z.jsx)(a,{className:f}),t[12]=a,t[13]=f,t[14]=p):p=t[14];let m;t[15]===o?m=t[16]:(m=(0,Z.jsx)(`span`,{children:o}),t[15]=o,t[16]=m);let h;t[17]!==s||t[18]!==p||t[19]!==m?(h=(0,Z.jsxs)(`span`,{className:s,children:[p,m]}),t[17]=s,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;t[21]===r?g=t[22]:(g=r?(0,Z.jsx)(`span`,{className:`break-all font-mono text-[11px] leading-snug text-fg-subtle`,children:r}):null,t[21]=r,t[22]=g);let _;return t[23]!==c||t[24]!==h||t[25]!==g?(_=(0,Z.jsxs)(`span`,{className:c,children:[h,g]}),t[23]=c,t[24]=h,t[25]=g,t[26]=_):_=t[26],_}function ze(e){let t=(0,X.c)(5),{kind:n,message:r}=e,i=n===`success`?`border-green-500/30 bg-green-500/10 text-green-700 dark:text-green-300`:`border-red-500/30 bg-red-500/10 text-red-600 dark:text-red-300`,a;t[0]===i?a=t[1]:(a=d(`rounded-lg border px-3 py-2 text-xs leading-relaxed`,i),t[0]=i,t[1]=a);let o;return t[2]!==r||t[3]!==a?(o=(0,Z.jsx)(`div`,{className:a,children:r}),t[2]=r,t[3]=a,t[4]=o):o=t[4],o}var Be={instances:[],launchStatus:`idle`,launchMessage:null,testStatus:`idle`,testMessage:null,executablePath:``};function Ve({m:e,cdpUrl:t,onCdpUrlChange:n,launch:r,stop:i,listInstances:a,ping:o,embedded:s=!1}){let[c,l]=(0,Y.useReducer)(I,Be),{instances:d,launchStatus:f,launchMessage:p,testStatus:m,testMessage:h,executablePath:g}=c,_=(0,Y.useCallback)(async()=>{try{l({type:`patch`,patch:{instances:await a()}})}catch{}},[a]);(0,Y.useEffect)(()=>{_();let e=setInterval(()=>void _(),8e3);return()=>clearInterval(e)},[_]);let v=(0,Y.useCallback)(async()=>{if(f!==`pending`){l({type:`patch`,patch:{launchStatus:`pending`,launchMessage:null}});try{let t=await r(g.trim()||void 0);l({type:`patch`,patch:{launchStatus:`ok`,launchMessage:e.browserCdpLaunchedAtPort.replace(`{{port}}`,String(t.port))}}),n(t.wsEndpoint),await _()}catch(e){l({type:`patch`,patch:{launchStatus:`error`,launchMessage:e instanceof Error?e.message:String(e)}})}}},[g,r,f,e.browserCdpLaunchedAtPort,n,_]),y=(0,Y.useCallback)(async e=>{await i(e),await _()},[_,i]),b=(0,Y.useCallback)(async()=>{if(t.trim()){l({type:`patch`,patch:{testStatus:`pending`,testMessage:null}});try{let n=await o(t.trim());n.reachable?l({type:`patch`,patch:{testStatus:`ok`,testMessage:e.browserCdpReachable.replace(`{{browser}}`,n.browser??`—`)}}):l({type:`patch`,patch:{testStatus:`error`,testMessage:e.browserCdpUnreachable.replace(`{{error}}`,n.error??`—`)}})}catch(t){l({type:`patch`,patch:{testStatus:`error`,testMessage:e.browserCdpUnreachable.replace(`{{error}}`,t instanceof Error?t.message:String(t))}})}}},[t,e.browserCdpReachable,e.browserCdpUnreachable,o]);return(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Z.jsxs)(Le,{icon:F,title:e.browserCdpLaunchLocal,description:e.browserCdpLaunchLocalDesc,m:e,embedded:s,sectionTitle:s?e.browserCdpLaunchLocal:void 0,primaryAction:(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:f===`pending`,onClick:()=>void v(),children:[f===`pending`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(F,{className:`size-3.5`}),f===`pending`?e.browserCdpLaunching:e.browserCdpLaunchLocal]}),children:[p?(0,Z.jsx)(ze,{kind:f===`error`?`error`:`success`,message:p}):null,(0,Z.jsx)(Q,{label:e.browserCdpChromePath,description:e.browserCdpChromePathDesc,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:g,placeholder:`/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`,onChange:e=>l({type:`patch`,patch:{executablePath:e.target.value}}),autoComplete:`off`})}),d.length>0?(0,Z.jsx)(`div`,{className:`flex flex-col gap-2 rounded-lg bg-surface-base p-3 shadow-surface`,children:d.map(t=>(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,Z.jsxs)(`span`,{className:`font-mono text-fg`,children:[`port `,t.port,` · pid `,t.pid]}),(0,Z.jsx)(`span`,{className:`truncate text-fg-subtle`,children:t.wsEndpoint})]}),(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded-md border border-edge bg-surface-panel px-2 py-1 text-xs font-medium text-fg hover:bg-surface-raised`,onClick:()=>void y(t.port),children:[(0,Z.jsx)(R,{className:`size-3`}),e.browserCdpStopLocal]})]},t.port))}):null]}),(0,Z.jsxs)(Le,{icon:T,title:e.label.browserCdpUrl,description:e.desc.browserCdpUrl,m:e,embedded:s,sectionTitle:s?e.label.browserCdpUrl:void 0,primaryAction:(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:!t.trim()||m===`pending`,onClick:()=>void b(),children:[m===`pending`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(K,{className:`size-3.5`}),m===`pending`?e.browserCdpTesting:e.browserCdpTestConnection]}),children:[(0,Z.jsx)(`input`,{type:`text`,className:J(),value:t,placeholder:`ws://127.0.0.1:9222`,onChange:e=>n(e.target.value),autoComplete:`off`}),(0,Z.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:e.browserCdpLoopbackOnly}),h?(0,Z.jsx)(ze,{kind:m===`error`?`error`:`success`,message:h}):null]})]})}function He(e,t){let n=t.phase;if(!n)return e.browserInstallPhaseStarting;if(n===`downloading`)return t.percent==null?e.browserInstallPhaseDownloading:e.browserInstallPhaseDownloadingPercent.replace(`{{percent}}`,String(t.percent));switch(n){case`starting`:return e.browserInstallPhaseStarting;case`verifying`:return e.browserInstallPhaseVerifying;case`extracting`:return e.browserInstallPhaseExtracting;case`running`:return t.message??e.browserInstallPhaseRunning;case`ready`:return e.browserInstallPhaseReady;default:return t.message??e.browserInstallPhaseRunning}}function Ue(e){let t=(0,X.c)(32),{m:n,progress:r,showLogs:i,onCancel:a,cancelling:o}=e,s=i===void 0?!1:i,c=o===void 0?!1:o;if(!r.phase)return null;let l;t[0]!==n||t[1]!==r?(l=He(n,r),t[0]=n,t[1]=r,t[2]=l):l=t[2];let u=l,d=r.percent==null?(r.phase===`extracting`||r.phase===`verifying`||r.phase===`running`||r.phase,null):Math.min(100,Math.max(0,r.percent)),f;t[3]===u?f=t[4]:(f=(0,Z.jsx)(`span`,{className:`text-fg`,children:u}),t[3]=u,t[4]=f);let p;t[5]===d?p=t[6]:(p=d==null?null:(0,Z.jsxs)(`span`,{className:`tabular-nums`,children:[d,`%`]}),t[5]=d,t[6]=p);let m;t[7]!==c||t[8]!==n||t[9]!==a?(m=a?(0,Z.jsx)(`button`,{type:`button`,className:`rounded-md border border-edge px-2 py-0.5 text-[11px] font-medium text-fg-muted hover:bg-surface-raised hover:text-fg disabled:cursor-not-allowed disabled:opacity-60`,disabled:c,onClick:()=>void a(),children:c?n.browserInstallCancelling:n.browserInstallCancel}):null,t[7]=c,t[8]=n,t[9]=a,t[10]=m):m=t[10];let h;t[11]!==p||t[12]!==m?(h=(0,Z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[p,m]}),t[11]=p,t[12]=m,t[13]=h):h=t[13];let g;t[14]!==f||t[15]!==h?(g=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-xs text-fg-muted`,children:[f,h]}),t[14]=f,t[15]=h,t[16]=g):g=t[16];let _;t[17]===d?_=t[18]:(_=(0,Z.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-surface-raised`,children:d==null?(0,Z.jsx)(`div`,{className:`h-full w-1/3 animate-pulse rounded-full bg-accent/70`}):(0,Z.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-[width] duration-300 ease-out`,style:{width:`${d}%`}})}),t[17]=d,t[18]=_);let v;t[19]!==r.lines||t[20]!==s?(v=s&&r.lines.length>0?(0,Z.jsx)(`div`,{className:`max-h-28 overflow-y-auto rounded-md bg-surface-panel px-2 py-1.5 font-mono text-[10px] leading-relaxed text-fg-muted shadow-surface`,children:r.lines.map(We)}):null,t[19]=r.lines,t[20]=s,t[21]=v):v=t[21];let y;t[22]!==r.message||t[23]!==r.percent||t[24]!==r.phase||t[25]!==s?(y=!s&&r.phase===`downloading`&&r.message&&r.percent==null?(0,Z.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:r.message}):null,t[22]=r.message,t[23]=r.percent,t[24]=r.phase,t[25]=s,t[26]=y):y=t[26];let b;return t[27]!==v||t[28]!==y||t[29]!==g||t[30]!==_?(b=(0,Z.jsxs)(`div`,{className:`space-y-2 rounded-lg bg-surface-base px-3 py-2.5 shadow-surface`,children:[g,_,v,y]}),t[27]=v,t[28]=y,t[29]=g,t[30]=_,t[31]=b):b=t[31],b}function We(e){return(0,Z.jsx)(`div`,{className:`truncate`,children:e},e)}var Ge={confirmOpen:!1,installStatus:`idle`,installMessage:null,openStatus:`idle`,openMessage:null,runtime:null};function Ke({m:e,doctor:t,refetch:n,applyDoctor:r,installStream:i,fetchRuntimeStatus:c,launchCloak:l,form:d,onChange:f,embedded:p=!1}){let[m,h]=(0,Y.useReducer)(I,Ge),{confirmOpen:g,installStatus:_,installMessage:v,openStatus:y,openMessage:b,runtime:x}=m,{progress:C,running:w,cancelling:T,run:E,reset:D,cancel:O}=i,k=t.kind===`ok`?t.data:null,A=k?.installed===!0,j=_===`installing`||w,M=(0,Y.useCallback)(async()=>{if(A)try{h({type:`patch`,patch:{runtime:await c()}})}catch{}},[c,A]);(0,Y.useEffect)(()=>{if(!A){h({type:`patch`,patch:{runtime:null}});return}M();let e=setInterval(()=>void M(),8e3);return()=>clearInterval(e)},[A,M]);let P=(0,Y.useCallback)(async()=>{h({type:`patch`,patch:{confirmOpen:!1,installStatus:`installing`,installMessage:null}}),D();let t=await E({body:{cacheDir:d.cacheDir.trim()||void 0,binaryPath:d.binaryPath.trim()||void 0},fallbackError:e.browserCloakInstallFailed});if(!t.ok){if(t.error===`busy`){h({type:`patch`,patch:{installStatus:`installing`}});return}if(t.error===`cancelled`){h({type:`patch`,patch:{installStatus:`idle`,installMessage:null}}),D();return}h({type:`patch`,patch:{installStatus:`failed`,installMessage:t.errorMessage??e.browserCloakInstallFailed}});return}t.payload&&r?.(t.payload),h({type:`patch`,patch:{installStatus:`installed`,installMessage:t.payload?.binaryPath?`${e.browserCloakInstalled}: ${t.payload.binaryPath}`:e.browserCloakInstalled}}),await n({cacheDir:d.cacheDir,binaryPath:d.binaryPath}),await M()},[r,d.binaryPath,d.cacheDir,e.browserCloakInstallFailed,e.browserCloakInstalled,n,M,D,E]),L=(0,Y.useCallback)(async()=>{if(y!==`pending`){h({type:`patch`,patch:{openStatus:`pending`,openMessage:null}});try{let t=await l();h({type:`patch`,patch:{openStatus:`ok`,openMessage:t.reused?e.browserCloakOpenReused.replace(`{{port}}`,String(t.port)):e.browserCloakOpenLaunched.replace(`{{port}}`,String(t.port)),runtime:t}})}catch(e){h({type:`patch`,patch:{openStatus:`error`,openMessage:e instanceof Error?e.message:String(e)}})}}},[l,e.browserCloakOpenLaunched,e.browserCloakOpenReused,y]),R=t.kind===`loading`?`checking`:t.kind===`error`?`error`:A?`ready`:`not_installed`,z=A&&k?.version?`v${k.version} (${k.platform})`:void 0;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(Le,{icon:te,title:e.browserCloakGuideTitle,description:e.browserCloakGuideDesc,status:R,statusDetail:z,m:e,embedded:p,primaryAction:(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[A?(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:y===`pending`,onClick:()=>void L(),children:[y===`pending`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(F,{className:`size-3.5`}),y===`pending`?e.browserCloakOpening:e.browserCloakOpen]}):null,(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:j,onClick:()=>h({type:`patch`,patch:{confirmOpen:!0}}),children:[j?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):A?(0,Z.jsx)(U,{className:`size-3.5`}):_===`installed`?(0,Z.jsx)(S,{className:`size-3.5 text-green-500`}):(0,Z.jsx)(s,{className:`size-3.5`}),j?e.browserCloakInstalling:A?e.browserReinstall:e.browserCloakDownload]})]}),children:[w?(0,Z.jsx)(Ue,{m:e,progress:C,cancelling:T,onCancel:()=>void O()}):null,v?(0,Z.jsx)(ze,{kind:_===`failed`?`error`:`success`,message:v}):null,b?(0,Z.jsx)(ze,{kind:y===`error`?`error`:`success`,message:b}):null,A&&x?(0,Z.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg bg-surface-base p-3 shadow-surface`,children:[(0,Z.jsx)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:(0,Z.jsx)(`span`,{className:`font-medium text-fg`,children:x.running?e.browserCloakRuntimeRunning.replace(`{{port}}`,String(x.port)):e.browserCloakRuntimeOff})}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Z.jsx)(`span`,{className:`text-fg-subtle`,children:e.browserCloakProfileLabel}),(0,Z.jsx)(`span`,{className:`break-all font-mono text-[11px] text-fg-muted`,children:x.userDataDir})]}),(0,Z.jsx)(`p`,{className:`text-[11px] leading-relaxed text-fg-subtle`,children:e.browserCloakProfileAgentHint}),x.temporaryProfile?(0,Z.jsx)(`p`,{className:`text-[11px] text-amber-600 dark:text-amber-400`,children:e.browserCloakTemporaryProfileHint}):null]}):null,(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,Z.jsx)(Q,{label:e.label.browserCloakKeepOpen,description:e.desc.browserCloakKeepOpen,children:(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-fg`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,className:`size-3.5 shrink-0 rounded border-edge`,checked:d.keepOpen,onChange:e=>f({keepOpen:e.target.checked})}),(0,Z.jsx)(`span`,{children:e.browserCloakKeepOpenOn})]})}),(0,Z.jsx)(Q,{label:e.label.browserCloakTemporaryProfile,description:e.desc.browserCloakTemporaryProfile,children:(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-fg`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,className:`size-3.5 shrink-0 rounded border-edge`,checked:d.temporaryProfile,onChange:e=>f({temporaryProfile:e.target.checked})}),(0,Z.jsx)(`span`,{children:e.browserCloakTemporaryProfileOn})]})}),(0,Z.jsx)(Q,{label:e.label.browserHumanize,description:e.desc.browserHumanize,children:(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-fg`,children:[(0,Z.jsx)(`input`,{type:`checkbox`,className:`size-3.5 shrink-0 rounded border-edge`,checked:d.humanize,onChange:e=>f({humanize:e.target.checked})}),(0,Z.jsx)(`span`,{children:e.browserHumanizeOn})]})}),(0,Z.jsx)(Q,{label:e.label.browserHumanPreset,description:e.desc.browserHumanPreset,children:(0,Z.jsxs)(a,{className:fe(),value:d.humanPreset,onChange:e=>f({humanPreset:e.target.value}),children:[(0,Z.jsx)(o,{value:`careful`,children:e.browserHumanPresetCareful}),(0,Z.jsx)(o,{value:`default`,children:e.browserHumanPresetDefault})]})})]})]}),(0,Z.jsxs)(q,{className:`mt-4`,children:[(0,Z.jsx)(ue,{icon:te,title:e.browserCloakAdvancedShow}),(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,Z.jsxs)(Q,{label:e.label.browserCloakCacheDir,description:e.desc.browserCloakCacheDir,children:[(0,Z.jsx)(`input`,{type:`text`,className:J(),value:d.cacheDir,placeholder:`~/.xopc/bin/cloakbrowser`,onChange:e=>f({cacheDir:e.target.value}),autoComplete:`off`}),(0,Z.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:e.browserCacheDirHomeOnly})]}),(0,Z.jsxs)(Q,{label:e.label.browserCloakBinaryPath,description:e.desc.browserCloakBinaryPath,children:[(0,Z.jsx)(`input`,{type:`text`,className:J(),value:d.binaryPath,placeholder:`~/.xopc/bin/cloakbrowser/chromium-v.../Chromium.app/Contents/MacOS/Chromium`,onChange:e=>f({binaryPath:e.target.value}),autoComplete:`off`}),d.binaryPath.trim()?(0,Z.jsx)(`p`,{className:`text-[11px] text-amber-600 dark:text-amber-400`,children:e.browserBinaryPathWarning}):null]}),(0,Z.jsx)(Q,{label:e.label.browserCloakTimezone,description:e.desc.browserCloakTimezone,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:d.timezone,placeholder:`America/New_York`,onChange:e=>f({timezone:e.target.value}),autoComplete:`off`})}),(0,Z.jsx)(Q,{label:e.label.browserCloakLocale,description:e.desc.browserCloakLocale,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:d.locale,placeholder:`en-US`,onChange:e=>f({locale:e.target.value}),autoComplete:`off`})}),(0,Z.jsx)(Q,{label:e.label.browserCloakWebrtcIp,description:e.desc.browserCloakWebrtcIp,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:d.webrtcIp,placeholder:`203.0.113.10`,onChange:e=>f({webrtcIp:e.target.value}),autoComplete:`off`})}),(0,Z.jsx)(Q,{label:e.label.browserCloakFingerprintPlatform,description:e.desc.browserCloakFingerprintPlatform,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:d.fingerprintPlatform,placeholder:`macos`,onChange:e=>f({fingerprintPlatform:e.target.value}),autoComplete:`off`})}),(0,Z.jsx)(`div`,{className:`sm:col-span-2`,children:(0,Z.jsx)(Q,{label:e.label.browserCloakExtraArgs,description:e.desc.browserCloakExtraArgs,children:(0,Z.jsx)(`textarea`,{className:qe(),value:d.extraArgs,placeholder:`--disable-dev-shm-usage`,rows:3,onChange:e=>f({extraArgs:e.target.value})})})})]})]}),(0,Z.jsx)(N,{open:g,title:e.browserConfirmDownloadTitle,description:Je(e,k),confirmLabel:e.browserConfirmDownloadConfirm,cancelLabel:e.browserConfirmDownloadCancel,onConfirm:()=>void P(),onCancel:()=>h({type:`patch`,patch:{confirmOpen:!1}})})]})}function qe(){return`${J()} min-h-[4.5rem] resize-y font-mono text-xs`}function Je(e,t){if(!t)return e.browserConfirmDownloadBody;let n=[e.browserConfirmDownloadBody.replace(`{{version}}`,t.version??`—`).replace(`{{platform}}`,t.platform).replace(`{{url}}`,t.downloadUrl||`—`)];return t.expectedSha256?n.push(`SHA-256: ${t.expectedSha256.slice(0,16)}…`):n.push(e.browserCloakSha256Skipped),n.join(`
|
|
2
|
-
`)}function Ye({m:e,form:t,onChange:n,testCloud:r,embedded:i=!1}){let[s,c]=(0,Y.useState)(`idle`),[l,d]=(0,Y.useState)(null),f=t.provider===`local`?`browserbase`:t.provider,p=m(g(e=>e.language)).providersSettings,h=V({show:p.show,hide:p.hide,copy:p.copy,copied:p.copied}),_=(0,Y.useCallback)(()=>me().then(e=>e.apiKey??null),[]),v=(0,Y.useCallback)(async()=>{c(`pending`),d(null);try{let n=await r(f,t.apiKey);n.reachable?(c(`ok`),d(e.browserCloudTestOk)):(c(`error`),d(e.browserCloudTestFailed.replace(`{{error}}`,n.error??`—`)))}catch(t){c(`error`),d(e.browserCloudTestFailed.replace(`{{error}}`,t instanceof Error?t.message:String(t)))}},[t.apiKey,e.browserCloudTestFailed,e.browserCloudTestOk,f,r]);return(0,Z.jsxs)(Le,{icon:C,title:e.label.browserCloudProvider,description:e.desc.browserCloudProvider,m:e,embedded:i,primaryAction:(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:s===`pending`,onClick:()=>void v(),children:[s===`pending`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(K,{className:`size-3.5`}),e.browserCloudTestConnection]}),children:[(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,Z.jsx)(Q,{label:e.label.browserCloudProvider,description:e.desc.browserCloudProvider,children:(0,Z.jsxs)(a,{className:fe(),value:f,onChange:e=>n({provider:e.target.value}),children:[(0,Z.jsx)(o,{value:`browserbase`,children:e.browserCloudProviderBrowserbase}),(0,Z.jsx)(o,{value:`browser-use`,children:e.browserCloudProviderBrowserUse})]})}),(0,Z.jsx)(Q,{label:e.label.browserCloudApiKey,description:e.desc.browserCloudApiKey,children:(0,Z.jsx)(H,{value:t.apiKey,onChange:e=>n({apiKey:e}),placeholder:f===`browserbase`?`BROWSERBASE_API_KEY`:`BROWSER_USE_API_KEY`,labels:h,reveal:_,loadFailedLabel:`Failed to load key`})}),f===`browserbase`?(0,Z.jsx)(Q,{label:e.label.browserCloudProjectId,description:e.desc.browserCloudProjectId,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:t.projectId,placeholder:`BROWSERBASE_PROJECT_ID`,onChange:e=>n({projectId:e.target.value}),autoComplete:`off`})}):null,(0,Z.jsx)(Q,{label:e.label.browserCloudRegion,description:e.desc.browserCloudRegion,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:t.region,placeholder:`us-west-2`,onChange:e=>n({region:e.target.value}),autoComplete:`off`})})]}),l?(0,Z.jsx)(ze,{kind:s===`error`?`error`:`success`,message:l}):null]})}function Xe(e){let t=(0,X.c)(48),{m:n,installed:r,extensionDir:i,connected:a,busy:o,onOpenChrome:s,onCopyPath:c,onRevealFolder:l,pathBusy:u,folderBusy:f}=e,p;t[0]!==r||t[1]!==n.browserExtensionInstallStep1?(p={id:`install`,label:n.browserExtensionInstallStep1,done:r},t[0]=r,t[1]=n.browserExtensionInstallStep1,t[2]=p):p=t[2];let m=!!i&&a,h;t[3]!==o||t[4]!==i||t[5]!==f||t[6]!==n.browserExtensionCopyPath||t[7]!==n.browserExtensionInstallStep2FolderLabel||t[8]!==n.browserExtensionInstalling||t[9]!==n.browserExtensionOpenChrome||t[10]!==n.browserExtensionRevealFolder||t[11]!==c||t[12]!==s||t[13]!==l||t[14]!==u?(h=i?(0,Z.jsxs)(`div`,{className:`mt-2 rounded-md bg-surface-raised px-2.5 py-2 shadow-surface`,children:[(0,Z.jsx)(`p`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:n.browserExtensionInstallStep2FolderLabel}),(0,Z.jsx)(`p`,{className:`mt-1 break-all font-mono text-[11px] text-fg`,children:i}),(0,Z.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-3`,children:[(0,Z.jsx)(`button`,{type:`button`,className:`inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60`,disabled:o,onClick:s,children:n.browserExtensionOpenChrome}),(0,Z.jsx)(`button`,{type:`button`,className:`inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60`,disabled:o,onClick:c,title:i,children:u?n.browserExtensionInstalling:n.browserExtensionCopyPath}),(0,Z.jsx)(`button`,{type:`button`,className:`inline-flex items-center gap-1 text-[11px] text-accent hover:underline disabled:opacity-60`,disabled:o,onClick:l,title:i,children:f?n.browserExtensionInstalling:n.browserExtensionRevealFolder})]})]}):null,t[3]=o,t[4]=i,t[5]=f,t[6]=n.browserExtensionCopyPath,t[7]=n.browserExtensionInstallStep2FolderLabel,t[8]=n.browserExtensionInstalling,t[9]=n.browserExtensionOpenChrome,t[10]=n.browserExtensionRevealFolder,t[11]=c,t[12]=s,t[13]=l,t[14]=u,t[15]=h):h=t[15];let g;t[16]!==n.browserExtensionInstallStep2||t[17]!==m||t[18]!==h?(g={id:`load`,label:n.browserExtensionInstallStep2,done:m,detail:h},t[16]=n.browserExtensionInstallStep2,t[17]=m,t[18]=h,t[19]=g):g=t[19];let _;t[20]!==a||t[21]!==n.browserExtensionInstallStep3?(_={id:`connect`,label:n.browserExtensionInstallStep3,done:a},t[20]=a,t[21]=n.browserExtensionInstallStep3,t[22]=_):_=t[22];let v;t[23]!==p||t[24]!==g||t[25]!==_?(v=[p,g,_],t[23]=p,t[24]=g,t[25]=_,t[26]=v):v=t[26];let y=v,b;t[27]===y?b=t[28]:(b=y.filter(Ze),t[27]=y,t[28]=b);let x=b.length,C=n.browserExtensionInstallGuideTitle,w;t[29]===n.browserExtensionInstallGuideTitle?w=t[30]:(w=(0,Z.jsx)(`h4`,{className:`text-sm font-medium text-fg`,children:n.browserExtensionInstallGuideTitle}),t[29]=n.browserExtensionInstallGuideTitle,t[30]=w);let T;t[31]!==x||t[32]!==n.browserExtensionChecklistProgress||t[33]!==y.length?(T=n.browserExtensionChecklistProgress.replace(`{{done}}`,String(x)).replace(`{{total}}`,String(y.length)),t[31]=x,t[32]=n.browserExtensionChecklistProgress,t[33]=y.length,t[34]=T):T=t[34];let E;t[35]===T?E=t[36]:(E=(0,Z.jsx)(`span`,{className:`ml-auto text-xs font-normal text-fg-muted`,children:T}),t[35]=T,t[36]=E);let D;t[37]!==E||t[38]!==w?(D=(0,Z.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[w,E]}),t[37]=E,t[38]=w,t[39]=D):D=t[39];let k;t[40]!==n.browserExtensionChecklistDone||t[41]!==n.browserExtensionChecklistPending||t[42]!==y?(k=(0,Z.jsx)(`ol`,{className:`flex flex-col gap-3`,children:y.map((e,t)=>(0,Z.jsxs)(`li`,{className:`flex gap-2.5`,children:[(0,Z.jsx)(`span`,{className:`mt-0.5 shrink-0`,"aria-hidden":!0,children:e.done?(0,Z.jsx)(S,{className:`size-4 text-emerald-500`,strokeWidth:2}):(0,Z.jsx)(O,{className:`size-4 text-fg-subtle`,strokeWidth:1.75})}),(0,Z.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Z.jsxs)(`p`,{className:d(`text-[11px] leading-relaxed`,e.done?`text-fg-muted line-through decoration-fg-subtle/60`:`text-fg`),children:[(0,Z.jsxs)(`span`,{className:`sr-only`,children:[e.done?n.browserExtensionChecklistDone:n.browserExtensionChecklistPending,` `]}),t+1,`. `,e.label]}),e.detail]})]},e.id))}),t[40]=n.browserExtensionChecklistDone,t[41]=n.browserExtensionChecklistPending,t[42]=y,t[43]=k):k=t[43];let A;return t[44]!==n.browserExtensionInstallGuideTitle||t[45]!==D||t[46]!==k?(A=(0,Z.jsxs)(`div`,{"aria-label":C,className:`rounded-xl bg-surface-base p-3`,children:[D,k]}),t[44]=n.browserExtensionInstallGuideTitle,t[45]=D,t[46]=k,t[47]=A):A=t[47],A}function Ze(e){return e.done}var Qe=19820,$e=3e4;function et({m:e,probe:t,artifacts:n,onChange:r,startBridge:i,stopBridge:a,disconnectExtension:o,installArtifacts:c,refetchArtifacts:l,openExtensionChrome:d,revealExtensionFolder:f,form:m,embedded:h=!1}){let[g,_]=(0,Y.useState)(null),[v,y]=(0,Y.useState)(null),[b,x]=(0,Y.useState)(null),S=m.port??Qe,C=m.host||`127.0.0.1`,T=`ws://${C}:${S}/browser-ext`,E=t.kind===`ok`&&t.data.running,D=t.kind===`ok`&&t.data.connected,O=t.kind===`ok`&&t.data.bridgeHeld===!0,A=t.kind===`ok`&&t.data.portConflict===!0,j=E||O,M=n.kind===`ok`?n.data:t.kind===`ok`?t.data.artifacts:void 0,N=M?.installed===!0,P=M?.extensionDir,I=M?.needsChromeReload===!0,L=t.kind===`ok`?D?{icon:w,color:`text-green-500`,label:e.browserExtensionConnected}:E?{icon:K,color:`text-amber-500`,label:e.browserExtensionWaiting}:{icon:k,color:`text-fg-muted`,label:e.browserExtensionServerOff}:{icon:k,color:`text-fg-muted`,label:`…`},z=L.icon,B=(0,Y.useCallback)(async()=>{if(!g){_(`start`),y(null);try{await i({host:C,port:S})}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,C,S,i]),ee=(0,Y.useCallback)(async()=>{if(!g){_(`stop`),y(null);try{await a()}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,a]),V=(0,Y.useCallback)(async()=>{if(!g){_(`disconnect`),y(null);try{await o()}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,o]),te=(0,Y.useCallback)(async()=>{if(!g){_(`install`),y(null),x(null);try{let t=await c({force:N});t?.extensionDir?x(`${e.browserExtensionInstalled}: ${t.extensionDir}`):x(e.browserExtensionInstalled),await l()}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,c,N,e.browserExtensionInstalled,l]),H=(0,Y.useCallback)(async()=>{if(!g){_(`open`),y(null);try{await d()}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,d]),U=(0,Y.useCallback)(async()=>{if(!(!P||g)){_(`path`),y(null),x(null);try{await p(P)?x(e.browserExtensionPathCopied):x(e.browserExtensionPathCopyFailed)}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,P,e.browserExtensionPathCopied,e.browserExtensionPathCopyFailed]),W=(0,Y.useCallback)(async()=>{if(!(!P||g)){_(`folder`),y(null),x(null);try{await f(),x(e.browserExtensionFolderOpened)}catch(e){y(e instanceof Error?e.message:String(e))}finally{_(null)}}},[g,P,e.browserExtensionFolderOpened,f]),ne=(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:g!==null,onClick:()=>void te(),children:[g===`install`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(s,{className:`size-3.5`}),g===`install`?e.browserExtensionInstalling:e.browserExtensionInstall]}),j?(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:g!==null,onClick:()=>void ee(),children:[g===`stop`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(R,{className:`size-3.5`}),e.browserExtensionStopBridge]}):(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:g!==null,onClick:()=>void B(),children:[g===`start`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(F,{className:`size-3.5`}),g===`start`?e.browserExtensionStarting:e.browserExtensionStartBridge]}),D?(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:g!==null,onClick:()=>void V(),children:[g===`disconnect`?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):(0,Z.jsx)(k,{className:`size-3.5`}),e.browserExtensionDisconnect]}):null]});return(0,Z.jsx)(Le,{icon:G,title:e.browserBackendExtension,description:e.browserExtensionDownloadHint,m:e,embedded:h,primaryAction:ne,advancedTitle:e.browserAdvancedShow,advanced:(0,Z.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,Z.jsx)(Q,{label:e.label.browserExtensionPort,description:e.desc.browserExtensionPort,children:(0,Z.jsx)(`input`,{type:`number`,className:J(),min:1024,max:65535,value:m.port??``,placeholder:String(Qe),onChange:e=>{let t=e.target.value;r({port:t===``?void 0:Number.parseInt(t,10)})}})}),(0,Z.jsx)(Q,{label:e.label.browserExtensionHost,description:e.desc.browserExtensionHost,children:(0,Z.jsx)(`input`,{type:`text`,className:J(),value:m.host,placeholder:`127.0.0.1`,onChange:e=>r({host:e.target.value}),autoComplete:`off`})}),(0,Z.jsx)(Q,{label:e.label.browserExtensionConnectionTimeout,description:e.desc.browserExtensionConnectionTimeout,children:(0,Z.jsx)(`input`,{type:`number`,className:J(),min:1,step:1,value:m.connectionTimeoutMs==null?``:Math.round(m.connectionTimeoutMs/1e3),placeholder:String($e/1e3),onChange:e=>{let t=e.target.value;r({connectionTimeoutMs:t===``?void 0:Math.max(1,Number.parseInt(t,10))*1e3})}})})]}),children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg bg-surface-base px-3 py-2 shadow-surface`,children:[(0,Z.jsx)(`span`,{className:`font-mono text-xs text-fg-muted`,children:T}),(0,Z.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs ${L.color}`,children:[(0,Z.jsx)(z,{className:`size-3.5`}),(0,Z.jsx)(`span`,{children:L.label})]})]}),(0,Z.jsx)(Xe,{m:e,installed:N,extensionDir:P,connected:D,busy:g!==null,pathBusy:g===`path`,folderBusy:g===`folder`,onOpenChrome:()=>void H(),onCopyPath:()=>void U(),onRevealFolder:()=>void W()}),I?(0,Z.jsx)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs leading-relaxed text-amber-800 dark:text-amber-200`,children:e.browserExtensionNeedsChromeReload}):null,A?(0,Z.jsx)(`div`,{className:`rounded-lg border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs leading-relaxed text-amber-800 dark:text-amber-200`,children:e.browserExtensionPortConflict.replace(`{{port}}`,String(S))}):null,b?(0,Z.jsx)(ze,{kind:`success`,message:b}):null,v?(0,Z.jsx)(ze,{kind:`error`,message:v}):null]})})}function tt(e){let t=(0,X.c)(41),{m:n,doctor:r,refetch:i,applyDoctor:a,installStream:o,embedded:c}=e,l=c===void 0?!1:c,[d,f]=(0,Y.useState)(`idle`),[p,m]=(0,Y.useState)(null),{progress:h,running:g,cancelling:_,run:v,reset:y,cancel:b}=o,x;t[0]!==a||t[1]!==n.browserPlaywrightInstallFailed||t[2]!==n.browserPlaywrightInstalled||t[3]!==i||t[4]!==y||t[5]!==v?(x=async()=>{f(`installing`),m(null),y();let e=await v({fallbackError:n.browserPlaywrightInstallFailed});if(!e.ok){if(e.error===`busy`){f(`installing`);return}if(e.error===`cancelled`){f(`idle`),m(null),y();return}f(`failed`),m(e.errorMessage??n.browserPlaywrightInstallFailed);return}e.payload&&a?.(e.payload),f(`installed`),m(e.payload?.executablePath?`${n.browserPlaywrightInstalled}: ${e.payload.executablePath}`:n.browserPlaywrightInstalled),await i()},t[0]=a,t[1]=n.browserPlaywrightInstallFailed,t[2]=n.browserPlaywrightInstalled,t[3]=i,t[4]=y,t[5]=v,t[6]=x):x=t[6];let C=x,w=r.kind===`loading`?`checking`:r.kind===`error`?`error`:r.kind===`ok`?r.data.installed?`ready`:`not_installed`:`unknown`,T=r.kind===`ok`&&r.data.installed&&r.data.executablePath?r.data.executablePath:void 0,E=r.kind===`ok`&&r.data.installed,O=d===`installing`||g,k;t[7]===C?k=t[8]:(k=()=>void C(),t[7]=C,t[8]=k);let A;t[9]!==E||t[10]!==O||t[11]!==d?(A=O?(0,Z.jsx)(u,{className:`size-3.5 animate-spin`}):E?(0,Z.jsx)(U,{className:`size-3.5`}):d===`installed`?(0,Z.jsx)(S,{className:`size-3.5 text-green-500`}):(0,Z.jsx)(s,{className:`size-3.5`}),t[9]=E,t[10]=O,t[11]=d,t[12]=A):A=t[12];let j=O?n.browserPlaywrightInstalling:E?n.browserReinstall:n.browserPlaywrightInstall,M;t[13]!==O||t[14]!==k||t[15]!==A||t[16]!==j?(M=(0,Z.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1.5 rounded-lg border border-edge bg-surface-panel px-2.5 py-1.5 text-xs font-medium text-fg hover:bg-surface-raised disabled:cursor-not-allowed disabled:opacity-60`,disabled:O,onClick:k,children:[A,j]}),t[13]=O,t[14]=k,t[15]=A,t[16]=j,t[17]=M):M=t[17];let N;t[18]===n.browserPlaywrightManualInstall?N=t[19]:(N=(0,Z.jsx)(`p`,{className:`text-fg-muted`,children:n.browserPlaywrightManualInstall}),t[18]=n.browserPlaywrightManualInstall,t[19]=N);let P;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(P=(0,Z.jsx)(`code`,{className:`mt-2 block w-fit rounded-md border border-edge bg-surface-base px-2 py-1 text-xs text-fg`,children:`node node_modules/playwright-core/cli.js install chromium`}),t[20]=P):P=t[20];let F;t[21]===N?F=t[22]:(F=(0,Z.jsxs)(`div`,{className:`text-xs`,children:[N,P]}),t[21]=N,t[22]=F);let I;t[23]!==b||t[24]!==_||t[25]!==n||t[26]!==h||t[27]!==g?(I=g?(0,Z.jsx)(Ue,{m:n,progress:h,showLogs:!0,cancelling:_,onCancel:()=>void b()}):null,t[23]=b,t[24]=_,t[25]=n,t[26]=h,t[27]=g,t[28]=I):I=t[28];let L;t[29]!==p||t[30]!==d?(L=p?(0,Z.jsx)(ze,{kind:d===`failed`?`error`:`success`,message:p}):null,t[29]=p,t[30]=d,t[31]=L):L=t[31];let R;return t[32]!==l||t[33]!==n||t[34]!==T||t[35]!==w||t[36]!==I||t[37]!==L||t[38]!==M||t[39]!==F?(R=(0,Z.jsxs)(Le,{icon:D,title:n.browserPlaywrightGuideTitle,description:n.browserPlaywrightGuideDesc,status:w,statusDetail:T,m:n,embedded:l,primaryAction:M,children:[F,I,L]}),t[32]=l,t[33]=n,t[34]=T,t[35]=w,t[36]=I,t[37]=L,t[38]=M,t[39]=F,t[40]=R):R=t[40],R}async function nt(e){let t=await _(e),n=await t.json().catch(()=>({}));if(!t.ok||n.ok===!1){let e=typeof n.error==`string`?n.error:n.error?.message;throw Error(e||`Request failed: ${t.status}`)}if(n.payload===void 0)throw Error(`Empty payload`);return n.payload}async function $(e,t){let n=await _(e,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t??{})}),r=await n.json().catch(()=>({}));if(!n.ok||r.ok===!1){let e=typeof r.error==`string`?r.error:r.error?.message;throw Error(e||`Request failed: ${n.status}`)}if(r.payload===void 0)throw Error(`Empty payload`);return r.payload}var rt={playwright:{kind:`idle`},cloak:{kind:`idle`},extension:{kind:`idle`},extensionArtifacts:{kind:`idle`}};function it(e,t){switch(t.type){case`playwright`:return{...e,playwright:t.state};case`cloak`:return{...e,cloak:t.state};case`extension`:return{...e,extension:t.state};case`extension-artifacts`:return{...e,extensionArtifacts:t.state};case`playwright-idle`:return{...e,playwright:{kind:`idle`}};case`cloak-idle`:return{...e,cloak:{kind:`idle`}};case`extension-idle`:return{...e,extension:{kind:`idle`},extensionArtifacts:{kind:`idle`}};case`extension-start-probe`:return{...e,extension:e.extension.kind===`ok`?e.extension:{kind:`loading`}};case`extension-artifacts-start-probe`:return{...e,extensionArtifacts:e.extensionArtifacts.kind===`ok`?e.extensionArtifacts:{kind:`loading`}}}}function at(e){let[t,n]=(0,Y.useReducer)(it,rt),{playwright:r,cloak:i,extension:a,extensionArtifacts:o}=t,s=(0,Y.useCallback)(async()=>{n({type:`playwright`,state:{kind:`loading`}});try{n({type:`playwright`,state:{kind:`ok`,data:await nt(v(`/api/browser/playwright/doctor`))}})}catch(e){n({type:`playwright`,state:{kind:`error`,message:e instanceof Error?e.message:String(e)}})}},[]),c=(0,Y.useCallback)(async t=>{n({type:`cloak`,state:{kind:`loading`}});let r=(t?.cacheDir??e.cacheDir??``).trim(),i=(t?.binaryPath??e.binaryPath??``).trim(),a=new URLSearchParams;r&&a.set(`cacheDir`,r),i&&a.set(`binaryPath`,i);try{let e=await nt(v(`/api/browser/cloakbrowser/doctor${a.size?`?${a}`:``}`));return n({type:`cloak`,state:{kind:`ok`,data:e}}),e}catch(e){return n({type:`cloak`,state:{kind:`error`,message:e instanceof Error?e.message:String(e)}}),null}},[e.binaryPath,e.cacheDir]),l=(0,Y.useCallback)(e=>{n({type:`playwright`,state:{kind:`ok`,data:e}})},[]),u=(0,Y.useCallback)(e=>{n({type:`cloak`,state:{kind:`ok`,data:e}})},[]),d=(0,Y.useCallback)(async()=>nt(v(`/api/browser/cloakbrowser/status`)),[]),f=(0,Y.useCallback)(async()=>$(v(`/api/browser/cloakbrowser/launch`),{}),[]),p=e.browserEnabled===!0&&e.probeExtension===!0,m=e.browserEnabled===!0&&e.probeLocal===!0,h=e.browserEnabled===!0&&e.probeCloak===!0,{extensionHost:g,extensionPort:y}=e,b=(0,Y.useCallback)(async()=>{let e=new URLSearchParams({probe:`1`});g&&e.set(`host`,g),y!==void 0&&e.set(`port`,String(y)),n({type:`extension-start-probe`});try{let t=await _(v(`/api/browser/extension-status?${e}`),{signal:AbortSignal.timeout(3e3)}),r=await t.json().catch(()=>({}));if(!t.ok){n({type:`extension`,state:{kind:`error`,message:`HTTP ${t.status}`}});return}n({type:`extension`,state:{kind:`ok`,data:{running:r.running===!0,connected:r.connected===!0,backend:r.backend,artifacts:r.artifacts,bridgeHeld:r.bridgeHeld===!0,refCount:typeof r.refCount==`number`?r.refCount:void 0,manualBridge:r.manualBridge===!0,portConflict:r.portConflict===!0}}})}catch(e){n({type:`extension`,state:{kind:`error`,message:e instanceof Error?e.message:String(e)}})}},[g,y]),x=(0,Y.useCallback)(async()=>{n({type:`extension-artifacts-start-probe`});try{let e=await nt(v(`/api/browser/extension/doctor`));return n({type:`extension-artifacts`,state:{kind:`ok`,data:e}}),e}catch(e){return n({type:`extension-artifacts`,state:{kind:`error`,message:e instanceof Error?e.message:String(e)}}),null}},[]),S=(0,Y.useCallback)(async e=>{let t=(await $(v(`/api/browser/extension/install`),{force:e?.force??!1})).doctor;return n({type:`extension-artifacts`,state:{kind:`ok`,data:t}}),await b(),t},[b]),C=(0,Y.useCallback)(async()=>{await $(v(`/api/browser/extension/open`),{action:`chrome`})},[]),w=(0,Y.useCallback)(async()=>{await $(v(`/api/browser/extension/open`),{action:`folder`})},[]);(0,Y.useEffect)(()=>{if(!m){n({type:`playwright-idle`});return}s()},[m,s]),(0,Y.useEffect)(()=>{if(!h){n({type:`cloak-idle`});return}c()},[h,c]);let T=(0,Y.useRef)(p);T.current!==p&&(T.current=p,p||n({type:`extension-idle`})),(0,Y.useEffect)(()=>{if(!p)return;b(),x();let e=setInterval(()=>void b(),5e3);return()=>clearInterval(e)},[p,b,x]);let E=(0,Y.useCallback)(async e=>{await $(v(`/api/browser/extension/start`),{host:e?.host??g,port:e?.port??y}),await b()},[g,y,b]),D=(0,Y.useCallback)(async()=>{await $(v(`/api/browser/extension/stop`),{}),await b()},[b]),O=(0,Y.useCallback)(async()=>{await $(v(`/api/browser/extension/disconnect`),{}),await b()},[b]),k=(0,Y.useRef)(null);return(0,Y.useEffect)(()=>{if(!p||e.activeBackend!==`extension`){k.current=null;return}if(a.kind!==`ok`||a.data.running||a.data.bridgeHeld)return;let t=`${g}:${y??19820}`;k.current!==t&&(k.current=t,E({host:g,port:y}).catch(()=>{k.current=null}))},[p,a,g,y,e.activeBackend,E]),{playwright:r,cloak:i,extension:a,extensionArtifacts:o,refetchPlaywright:s,applyPlaywrightDoctor:l,refetchCloak:c,applyCloakDoctor:u,fetchCloakRuntimeStatus:d,launchCloak:f,refetchExtension:b,refetchExtensionArtifacts:x,installExtensionArtifacts:S,openExtensionChrome:C,revealExtensionFolder:w,pingCdp:(0,Y.useCallback)(async e=>$(v(`/api/browser/cdp/ping`),{cdpUrl:e}),[]),testCloud:(0,Y.useCallback)(async(e,t)=>$(v(`/api/browser/cloud/test-connection`),{provider:e,apiKey:t}),[]),launchCdp:(0,Y.useCallback)(async e=>$(v(`/api/browser/cdp/launch`),{executablePath:e}),[]),stopCdp:(0,Y.useCallback)(async e=>{await $(v(`/api/browser/cdp/stop`),{port:e})},[]),listCdpInstances:(0,Y.useCallback)(async()=>(await nt(v(`/api/browser/cdp/instances`))).instances,[]),startExtensionBridge:E,stopExtensionBridge:D,disconnectExtension:O}}var ot=`
|
|
3
|
-
|
|
4
|
-
`,st=/\r\n/g,ct={playwright:`/api/browser/playwright/install/stream`,cloakbrowser:`/api/browser/cloakbrowser/install/stream`},lt={playwright:`/api/browser/playwright/install/cancel`,cloakbrowser:`/api/browser/cloakbrowser/install/cancel`},ut=8;function dt(){return{phase:null,message:null,percent:null,lines:[]}}function ft(e,t){let n={phase:t.phase,message:t.message??t.line??e.message,percent:t.percent??e.percent,lines:e.lines};if(t.line){let r=[...e.lines,t.line];n.lines=r.length>ut?r.slice(-8):r}return n}async function pt(e,t,n){let r=e.getReader(),i=new TextDecoder,a=``,o=null,s=e=>{let n=``,r=``;for(let t of e.split(`
|
|
5
|
-
`)){let e=t.replace(/\r$/,``);e.startsWith(`event:`)?n=e.slice(6).trim():e.startsWith(`data:`)&&(r+=e.slice(5).trimStart())}if(r){if(n===`progress`){try{let e=JSON.parse(r);e&&typeof e==`object`&&typeof e.phase==`string`&&t(e)}catch{}return}if(n===`result`)try{let e=JSON.parse(r);o=e.ok?{ok:!0,payload:e.payload}:{ok:!1,error:String(e.error??`unknown`),message:typeof e.message==`string`?e.message:void 0,status:e.error===`busy`?409:e.error===`cancelled`?499:500}}catch{o={ok:!1,error:`parse`,status:0}}}};try{let e=async()=>{if(o!==null)return o;if(n?.aborted)return await r.cancel().catch(()=>{}),{ok:!1,error:`cancelled`,status:499};let{done:t,value:c}=await r.read();if(t)return o??{ok:!1,error:`no-result`,status:0};a+=i.decode(c,{stream:!0}),a=a.replace(st,`
|
|
6
|
-
`);let l=a.split(ot);a=l.pop()??``;for(let e of l)e.length&&s(e);return e()},t=await e();if(t)return t}catch(e){if(n?.aborted||e instanceof DOMException&&e.name===`AbortError`)return{ok:!1,error:`cancelled`,status:499};throw e}finally{r.releaseLock()}return o||(n?.aborted?{ok:!1,error:`cancelled`,status:499}:{ok:!1,error:`no-result`,status:0})}function mt(e){let[t,n]=(0,Y.useState)(dt),[r,i]=(0,Y.useState)(!1),[a,o]=(0,Y.useState)(!1),s=(0,Y.useRef)(!1),c=(0,Y.useRef)(null),l=(0,Y.useCallback)(()=>{s.current||n(dt())},[]),u=(0,Y.useCallback)(async()=>{if(s.current){o(!0);try{await _(v(lt[e]),{method:`POST`}).catch(()=>{}),c.current?.abort()}finally{o(!1)}}},[e]);return{progress:t,running:r,cancelling:a,run:(0,Y.useCallback)(async t=>{if(s.current)return{ok:!1,error:`busy`,status:409,errorMessage:`An install for this browser type is already in progress.`};let r=new AbortController;c.current=r,s.current=!0,i(!0),n(dt());try{let i=await _(v(ct[e]),{method:`POST`,headers:{Accept:`text/event-stream`,...t.body===void 0?{}:{"Content-Type":`application/json`}},body:t.body===void 0?void 0:JSON.stringify(t.body),signal:r.signal});if(!i.ok||!i.body){let e=await i.text().catch(()=>``),t=`HTTP ${i.status}`;try{let n=JSON.parse(e);typeof n.message==`string`?t=n.message:typeof n.error==`string`&&(t=n.error)}catch{e&&(t=e.slice(0,500))}return{ok:!1,error:i.status===409?`busy`:`http`,status:i.status,errorMessage:t}}let a=await pt(i.body,e=>{n(t=>ft(t,e))},r.signal);return a.ok?a:a.error===`cancelled`?{...a,errorMessage:void 0}:{...a,errorMessage:a.message??(a.error===`busy`?`An install for this browser type is already in progress.`:t.fallbackError)}}catch(e){return r.signal.aborted||e instanceof DOMException&&e.name===`AbortError`?{ok:!1,error:`cancelled`,status:499}:{ok:!1,error:`network`,errorMessage:e instanceof Error?e.message:t.fallbackError}}finally{c.current===r&&(c.current=null),s.current=!1,i(!1),o(!1)}},[e]),reset:l,cancel:u}}function ht(e){let t=(0,X.c)(150),{a:n,form:r,update:i,activeTab:a,setActiveTab:o}=e,s=g(_t),c=M(gt),u=mt(`playwright`),f=mt(`cloakbrowser`),p=r.browserEnabled&&(a===`overview`||a===`extension`),m=r.browserEnabled&&(a===`overview`||a===`local`),h=r.browserEnabled&&(a===`overview`||a===`cloakbrowser`),_;t[0]!==r.browserBackend||t[1]!==r.browserCloakBinaryPath||t[2]!==r.browserCloakCacheDir||t[3]!==r.browserEnabled||t[4]!==r.browserExtensionHost||t[5]!==r.browserExtensionPort||t[6]!==h||t[7]!==p||t[8]!==m?(_={cacheDir:r.browserCloakCacheDir,binaryPath:r.browserCloakBinaryPath,browserEnabled:r.browserEnabled,activeBackend:r.browserBackend,probeExtension:p,probeLocal:m,probeCloak:h,extensionHost:r.browserExtensionHost,extensionPort:r.browserExtensionPort},t[0]=r.browserBackend,t[1]=r.browserCloakBinaryPath,t[2]=r.browserCloakCacheDir,t[3]=r.browserEnabled,t[4]=r.browserExtensionHost,t[5]=r.browserExtensionPort,t[6]=h,t[7]=p,t[8]=m,t[9]=_):_=t[9];let v=at(_),y;t[10]===v.playwright?y=t[11]:(y=Oe(v.playwright),t[10]=v.playwright,t[11]=y);let b=y,x;t[12]===v.cloak?x=t[13]:(x=Oe(v.cloak),t[12]=v.cloak,t[13]=x);let S=x,w;t[14]===v.extension?w=t[15]:(w=Ae(v.extension),t[14]=v.extension,t[15]=w);let E=w,O;t[16]!==n||t[17]!==v.extension?(O=je(v.extension,n),t[16]=n,t[17]=v.extension,t[18]=O):O=t[18];let k=O,A;t[19]!==n||t[20]!==S||t[21]!==E||t[22]!==k||t[23]!==b||t[24]!==c?(A=[{value:`extension`,icon:G,name:n.browserBackendExtension,tagline:n.browserModeExtTagline,status:E,statusLabel:k},{value:`local`,icon:D,name:n.browserBackendLocal,tagline:n.browserModeLocalTagline,status:b,statusLabel:ke(b,n)},{value:`cloakbrowser`,icon:te,name:n.browserBackendCloakBrowser,tagline:n.browserModeCloakTagline,status:S,statusLabel:ke(S,n)},{value:`cdp`,icon:T,name:n.browserBackendCdp,tagline:n.browserModeCdpTagline},{value:`cloud`,icon:C,name:n.browserBackendCloud,tagline:n.browserModeCloudTagline}].filter(e=>_e(e.value,c)),t[19]=n,t[20]=S,t[21]=E,t[22]=k,t[23]=b,t[24]=c,t[25]=A):A=t[25];let j=A,N;t[26]!==o||t[27]!==i?(N=e=>{i({browserEnabled:!0,browserBackend:e}),o(e)},t[26]=o,t[27]=i,t[28]=N):N=t[28];let P=N,F=!r.browserEnabled&&`pointer-events-none opacity-40`,I;t[29]===F?I=t[30]:(I=d(`flex flex-col gap-5 transition-opacity`,F),t[29]=F,t[30]=I);let L=!r.browserEnabled,R;t[31]!==n||t[32]!==a||t[33]!==v.disconnectExtension||t[34]!==v.extension||t[35]!==v.extensionArtifacts||t[36]!==v.installExtensionArtifacts||t[37]!==v.openExtensionChrome||t[38]!==v.refetchExtensionArtifacts||t[39]!==v.revealExtensionFolder||t[40]!==v.startExtensionBridge||t[41]!==v.stopExtensionBridge||t[42]!==r.browserExtensionConnectionTimeout||t[43]!==r.browserExtensionHost||t[44]!==r.browserExtensionPort||t[45]!==i?(R=a===`extension`?(0,Z.jsx)(q,{children:(0,Z.jsx)(et,{embedded:!0,m:n,probe:v.extension,artifacts:v.extensionArtifacts,form:{port:r.browserExtensionPort,host:r.browserExtensionHost,connectionTimeoutMs:r.browserExtensionConnectionTimeout},onChange:e=>i({...e.port===void 0?{}:{browserExtensionPort:e.port},...e.host===void 0?{}:{browserExtensionHost:e.host},...e.connectionTimeoutMs===void 0?{}:{browserExtensionConnectionTimeout:e.connectionTimeoutMs}}),startBridge:v.startExtensionBridge,stopBridge:v.stopExtensionBridge,disconnectExtension:v.disconnectExtension,installArtifacts:v.installExtensionArtifacts,refetchArtifacts:v.refetchExtensionArtifacts,openExtensionChrome:v.openExtensionChrome,revealExtensionFolder:v.revealExtensionFolder})}):null,t[31]=n,t[32]=a,t[33]=v.disconnectExtension,t[34]=v.extension,t[35]=v.extensionArtifacts,t[36]=v.installExtensionArtifacts,t[37]=v.openExtensionChrome,t[38]=v.refetchExtensionArtifacts,t[39]=v.revealExtensionFolder,t[40]=v.startExtensionBridge,t[41]=v.stopExtensionBridge,t[42]=r.browserExtensionConnectionTimeout,t[43]=r.browserExtensionHost,t[44]=r.browserExtensionPort,t[45]=i,t[46]=R):R=t[46];let z;t[47]!==n||t[48]!==a||t[49]!==v.applyPlaywrightDoctor||t[50]!==v.playwright||t[51]!==v.refetchPlaywright||t[52]!==u?(z=a===`local`?(0,Z.jsx)(q,{children:(0,Z.jsx)(tt,{embedded:!0,m:n,doctor:v.playwright,refetch:v.refetchPlaywright,applyDoctor:v.applyPlaywrightDoctor,installStream:u})}):null,t[47]=n,t[48]=a,t[49]=v.applyPlaywrightDoctor,t[50]=v.playwright,t[51]=v.refetchPlaywright,t[52]=u,t[53]=z):z=t[53];let B;t[54]!==n||t[55]!==a||t[56]!==f||t[57]!==v.applyCloakDoctor||t[58]!==v.cloak||t[59]!==v.fetchCloakRuntimeStatus||t[60]!==v.launchCloak||t[61]!==v.refetchCloak||t[62]!==r.browserCloakBinaryPath||t[63]!==r.browserCloakCacheDir||t[64]!==r.browserCloakExtraArgs||t[65]!==r.browserCloakFingerprintPlatform||t[66]!==r.browserCloakKeepOpen||t[67]!==r.browserCloakLocale||t[68]!==r.browserCloakTemporaryProfile||t[69]!==r.browserCloakTimezone||t[70]!==r.browserCloakWebrtcIp||t[71]!==r.browserHumanPreset||t[72]!==r.browserHumanize||t[73]!==i?(B=a===`cloakbrowser`?(0,Z.jsx)(q,{children:(0,Z.jsx)(Ke,{embedded:!0,m:n,doctor:v.cloak,refetch:v.refetchCloak,applyDoctor:v.applyCloakDoctor,installStream:f,fetchRuntimeStatus:v.fetchCloakRuntimeStatus,launchCloak:v.launchCloak,form:{cacheDir:r.browserCloakCacheDir,binaryPath:r.browserCloakBinaryPath,keepOpen:r.browserCloakKeepOpen,temporaryProfile:r.browserCloakTemporaryProfile,humanize:r.browserHumanize,humanPreset:r.browserHumanPreset,timezone:r.browserCloakTimezone,locale:r.browserCloakLocale,webrtcIp:r.browserCloakWebrtcIp,fingerprintPlatform:r.browserCloakFingerprintPlatform,extraArgs:r.browserCloakExtraArgs},onChange:e=>i({...e.cacheDir===void 0?{}:{browserCloakCacheDir:e.cacheDir},...e.binaryPath===void 0?{}:{browserCloakBinaryPath:e.binaryPath},...e.keepOpen===void 0?{}:{browserCloakKeepOpen:e.keepOpen},...e.temporaryProfile===void 0?{}:{browserCloakTemporaryProfile:e.temporaryProfile},...e.humanize===void 0?{}:{browserHumanize:e.humanize},...e.humanPreset===void 0?{}:{browserHumanPreset:e.humanPreset},...e.timezone===void 0?{}:{browserCloakTimezone:e.timezone},...e.locale===void 0?{}:{browserCloakLocale:e.locale},...e.webrtcIp===void 0?{}:{browserCloakWebrtcIp:e.webrtcIp},...e.fingerprintPlatform===void 0?{}:{browserCloakFingerprintPlatform:e.fingerprintPlatform},...e.extraArgs===void 0?{}:{browserCloakExtraArgs:e.extraArgs}})})}):null,t[54]=n,t[55]=a,t[56]=f,t[57]=v.applyCloakDoctor,t[58]=v.cloak,t[59]=v.fetchCloakRuntimeStatus,t[60]=v.launchCloak,t[61]=v.refetchCloak,t[62]=r.browserCloakBinaryPath,t[63]=r.browserCloakCacheDir,t[64]=r.browserCloakExtraArgs,t[65]=r.browserCloakFingerprintPlatform,t[66]=r.browserCloakKeepOpen,t[67]=r.browserCloakLocale,t[68]=r.browserCloakTemporaryProfile,t[69]=r.browserCloakTimezone,t[70]=r.browserCloakWebrtcIp,t[71]=r.browserHumanPreset,t[72]=r.browserHumanize,t[73]=i,t[74]=B):B=t[74];let ee;t[75]!==n||t[76]!==a||t[77]!==v.launchCdp||t[78]!==v.listCdpInstances||t[79]!==v.pingCdp||t[80]!==v.stopCdp||t[81]!==r.browserCdpUrl||t[82]!==i?(ee=a===`cdp`?(0,Z.jsx)(q,{children:(0,Z.jsx)(Ve,{embedded:!0,m:n,cdpUrl:r.browserCdpUrl,onCdpUrlChange:e=>i({browserCdpUrl:e}),launch:v.launchCdp,stop:v.stopCdp,listInstances:v.listCdpInstances,ping:v.pingCdp})}):null,t[75]=n,t[76]=a,t[77]=v.launchCdp,t[78]=v.listCdpInstances,t[79]=v.pingCdp,t[80]=v.stopCdp,t[81]=r.browserCdpUrl,t[82]=i,t[83]=ee):ee=t[83];let V;t[84]!==n||t[85]!==a||t[86]!==v.testCloud||t[87]!==r.browserCloudApiKey||t[88]!==r.browserCloudProjectId||t[89]!==r.browserCloudProvider||t[90]!==r.browserCloudRegion||t[91]!==i?(V=a===`cloud`?(0,Z.jsx)(q,{children:(0,Z.jsx)(Ye,{embedded:!0,m:n,form:{provider:r.browserCloudProvider,apiKey:r.browserCloudApiKey,projectId:r.browserCloudProjectId,region:r.browserCloudRegion},onChange:e=>i({...e.provider===void 0?{}:{browserCloudProvider:e.provider},...e.apiKey===void 0?{}:{browserCloudApiKey:e.apiKey},...e.projectId===void 0?{}:{browserCloudProjectId:e.projectId},...e.region===void 0?{}:{browserCloudRegion:e.region}}),testCloud:v.testCloud})}):null,t[84]=n,t[85]=a,t[86]=v.testCloud,t[87]=r.browserCloudApiKey,t[88]=r.browserCloudProjectId,t[89]=r.browserCloudProvider,t[90]=r.browserCloudRegion,t[91]=i,t[92]=V):V=t[92];let H;t[93]!==R||t[94]!==z||t[95]!==B||t[96]!==ee||t[97]!==V||t[98]!==I||t[99]!==L?(H=(0,Z.jsxs)(`div`,{className:I,"aria-hidden":L,children:[R,z,B,ee,V]}),t[93]=R,t[94]=z,t[95]=B,t[96]=ee,t[97]=V,t[98]=I,t[99]=L,t[100]=H):H=t[100];let U=H;if(a===`overview`){let e;t[101]!==n||t[102]!==r.browserEnabled||t[103]!==P?(e=r.browserEnabled?null:(0,Z.jsx)(Ee,{m:n,onStart:P}),t[101]=n,t[102]=r.browserEnabled,t[103]=P,t[104]=e):e=t[104];let a;t[105]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,Z.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-surface-hover/90 text-fg-muted`,"aria-hidden":!0,children:(0,Z.jsx)(l,{className:`size-4`,strokeWidth:1.75})}),t[105]=a):a=t[105];let c;t[106]===i?c=t[107]:(c=e=>i({browserEnabled:e.target.checked}),t[106]=i,t[107]=c);let u;t[108]!==r.browserEnabled||t[109]!==c?(u=(0,Z.jsx)(`input`,{type:`checkbox`,className:`size-3.5 shrink-0 rounded border-edge`,checked:r.browserEnabled,onChange:c}),t[108]=r.browserEnabled,t[109]=c,t[110]=u):u=t[110];let f;t[111]===n.browserEnabledOn?f=t[112]:(f=(0,Z.jsx)(`span`,{children:n.browserEnabledOn}),t[111]=n.browserEnabledOn,t[112]=f);let p;t[113]!==u||t[114]!==f?(p=(0,Z.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm font-medium text-fg`,children:[u,f]}),t[113]=u,t[114]=f,t[115]=p):p=t[115];let m;t[116]!==n.desc.browserEnabled||t[117]!==n.label.browserEnabled||t[118]!==p?(m=(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-3`,children:[a,(0,Z.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,Z.jsx)(Q,{label:n.label.browserEnabled,description:n.desc.browserEnabled,children:p})})]}),t[116]=n.desc.browserEnabled,t[117]=n.label.browserEnabled,t[118]=p,t[119]=m):m=t[119];let h;t[120]!==n.browserDocsLink||t[121]!==s?(h=(0,Z.jsx)(we,{language:s,label:n.browserDocsLink,className:`shrink-0 pt-1`}),t[120]=n.browserDocsLink,t[121]=s,t[122]=h):h=t[122];let g;t[123]!==m||t[124]!==h?(g=(0,Z.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[m,h]}),t[123]=m,t[124]=h,t[125]=g):g=t[125];let _;t[126]!==n||t[127]!==r.browserBackend||t[128]!==r.browserEnabled||t[129]!==j||t[130]!==o||t[131]!==i?(_=r.browserEnabled?(0,Z.jsx)(`div`,{id:xe(`connection`),className:d(`scroll-mt-24 transition-opacity`,!r.browserEnabled&&`pointer-events-none opacity-40`),children:(0,Z.jsx)(ye,{m:n,value:r.browserBackend,onChange:e=>i({browserBackend:e}),onOpenConfig:o,options:j})}):(0,Z.jsx)(`p`,{className:`text-xs text-fg-muted`,children:n.browserDisabledHint}),t[126]=n,t[127]=r.browserBackend,t[128]=r.browserEnabled,t[129]=j,t[130]=o,t[131]=i,t[132]=_):_=t[132];let v;t[133]!==g||t[134]!==_?(v=(0,Z.jsx)(q,{children:(0,Z.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[g,_]})}),t[133]=g,t[134]=_,t[135]=v):v=t[135];let y=!r.browserEnabled&&`pointer-events-none opacity-40`,b;t[136]===y?b=t[137]:(b=d(`transition-opacity`,y),t[136]=y,t[137]=b);let x=!r.browserEnabled,S;t[138]!==n||t[139]!==r||t[140]!==i?(S=(0,Z.jsx)(Ce,{a:n,form:r,update:i}),t[138]=n,t[139]=r,t[140]=i,t[141]=S):S=t[141];let C;t[142]!==b||t[143]!==x||t[144]!==S?(C=(0,Z.jsx)(le,{children:(0,Z.jsx)(`div`,{className:b,"aria-hidden":x,children:S})}),t[142]=b,t[143]=x,t[144]=S,t[145]=C):C=t[145];let w;return t[146]!==e||t[147]!==v||t[148]!==C?(w=(0,Z.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[e,v,C]}),t[146]=e,t[147]=v,t[148]=C,t[149]=w):w=t[149],w}return Ie(a)?U:null}function gt(e){return e.mode}function _t(e){return e.language}function vt(e){let t=(0,X.c)(40),{sectionId:n,intro:r,vm:i,children:a,tabbed:o}=e,s=o===void 0?!1:o,c=g(yt),l;t[0]===c?l=t[1]:(l=m(c),t[0]=c,t[1]=l);let u=l,d=u.agentSettings,p=u.settingsSections[n]??n;if(!i.hasToken){let e;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(E,{className:`mt-0.5 size-5 shrink-0 text-fg-subtle`,strokeWidth:1.75}),t[2]=e):e=t[2];let n;t[3]===p?n=t[4]:(n=(0,Z.jsx)(`h1`,{className:`text-base font-semibold text-fg`,children:p}),t[3]=p,t[4]=n);let r;t[5]===d.needToken?r=t[6]:(r=(0,Z.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:d.needToken}),t[5]=d.needToken,t[6]=r);let i;return t[7]!==n||t[8]!==r?(i=(0,Z.jsx)(ie,{gap:`gap-3`,padding:`px-3 py-10 sm:px-5 xl:px-6`,children:(0,Z.jsxs)(`div`,{className:`flex items-start gap-3 rounded-2xl bg-surface-base p-6`,children:[e,(0,Z.jsxs)(`div`,{children:[n,r]})]})}),t[7]=n,t[8]=r,t[9]=i):i=t[9],i}if(i.loading){let e;return t[10]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,Z.jsx)(ie,{gap:`gap-6`,padding:`px-3 py-8 sm:px-5 xl:px-6`,children:(0,Z.jsx)(oe,{sections:1})}),t[10]=e):e=t[10],e}if(!i.form){let e=i.error??i.fetchError??d.loadError,n;t[11]===e?n=t[12]:(n=(0,Z.jsx)(`p`,{className:`text-sm text-fg-muted`,children:e}),t[11]=e,t[12]=n);let r;t[13]===i?r=t[14]:(r=()=>void i.mutate(),t[13]=i,t[14]=r);let a;t[15]!==u.logs.refresh||t[16]!==r?(a=(0,Z.jsx)(f,{type:`button`,variant:`secondary`,onClick:r,children:u.logs.refresh}),t[15]=u.logs.refresh,t[16]=r,t[17]=a):a=t[17];let o;return t[18]!==n||t[19]!==a?(o=(0,Z.jsxs)(ie,{gap:`gap-3`,padding:`px-3 py-10 sm:px-5 xl:px-6`,children:[n,a]}),t[18]=n,t[19]=a,t[20]=o):o=t[20],o}let h=s?void 0:r,_;t[21]===d.sectionDesc?_=t[22]:(_=(0,Z.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:d.sectionDesc}),t[21]=d.sectionDesc,t[22]=_);let v;t[23]!==i.autosaveStatus||t[24]!==i.error?(v=(0,Z.jsx)(se,{status:i.autosaveStatus,error:i.error}),t[23]=i.autosaveStatus,t[24]=i.error,t[25]=v):v=t[25];let y;t[26]!==p||t[27]!==h||t[28]!==_||t[29]!==v?(y=(0,Z.jsx)(re,{title:p,subtitle:h,meta:_,actions:v}),t[26]=p,t[27]=h,t[28]=_,t[29]=v,t[30]=y):y=t[30];let b;t[31]===i.error?b=t[32]:(b=i.error?(0,Z.jsx)(`div`,{className:`rounded-md border border-red-200 bg-red-50 px-3 py-2 text-sm text-red-700 dark:border-red-900/50 dark:bg-red-950/50 dark:text-red-400`,role:`alert`,children:i.error}):null,t[31]=i.error,t[32]=b);let x;t[33]===a?x=t[34]:(x=(0,Z.jsx)(`div`,{className:`flex min-w-0 flex-col gap-5 pb-8`,children:a}),t[33]=a,t[34]=x);let S;return t[35]!==y||t[36]!==b||t[37]!==x||t[38]!==i.onBlurCapture?(S=(0,Z.jsxs)(ie,{gap:`gap-6`,onBlurCapture:i.onBlurCapture,children:[y,b,x]}),t[35]=y,t[36]=b,t[37]=x,t[38]=i.onBlurCapture,t[39]=S):S=t[39],S}function yt(e){return e.language}var bt={summaryModel:``},xt={model:``,maxLength:void 0};function St(e){if(!e)return``;if(typeof e==`string`)return e;if(typeof e==`object`&&!Array.isArray(e)){let t=e.primary;return typeof t==`string`?t:``}return``}function Ct(e){if(typeof e!=`object`||!e||!(`fallbacks`in e))return[];let t=e.fallbacks;return Array.isArray(t)?t.filter(e=>typeof e==`string`&&e.trim().length>0):[]}function wt(e){return e===!0||e===`true`||e===1}function Tt(e){let t=e;if(!t||typeof t!=`object`||Array.isArray(t))return{browserEnabled:!0,browserHeadless:!1,browserAllowPrivateUrls:!1,browserCommandTimeout:void 0,browserBackend:`extension`,browserCloudProvider:`local`,browserCloudApiKey:``,browserCloudProjectId:``,browserCloudRegion:``,browserCdpUrl:``,browserExtensionPort:void 0,browserExtensionHost:`127.0.0.1`,browserExtensionConnectionTimeout:void 0,browserCloakKeepOpen:!0,browserCloakTemporaryProfile:!1,browserCloakCacheDir:``,browserCloakBinaryPath:``,browserCloakTimezone:``,browserCloakLocale:``,browserCloakWebrtcIp:``,browserCloakFingerprintPlatform:``,browserCloakExtraArgs:``,browserHumanize:!0,browserHumanPreset:`careful`,browserDialogPolicy:`auto_dismiss`,browserDialogTimeout:void 0};let n=t,r=wt(n.enabled),i=n.headless,a=i===!0||i===`true`||i===1,o=wt(n.allowPrivateUrls),s=typeof n.commandTimeout==`number`&&Number.isFinite(n.commandTimeout)&&n.commandTimeout>=5?Math.floor(n.commandTimeout):void 0,c=n.backend,l=c===`local`||c===`cdp`||c===`cloud`||c===`extension`||c===`cloakbrowser`?c:`extension`,u=n.cloudProvider,d=u===`browserbase`||u===`browser-use`?u:`local`,f=typeof n.cloud==`object`&&n.cloud&&!Array.isArray(n.cloud)?n.cloud:{},p=typeof f.apiKey==`string`?f.apiKey:``,m=typeof f.projectId==`string`?f.projectId:``,h=typeof f.region==`string`?f.region:``,g=typeof n.cdpUrl==`string`?n.cdpUrl:``,_=typeof n.extension==`object`&&n.extension&&!Array.isArray(n.extension)?n.extension:{},v=typeof _.port==`number`&&Number.isFinite(_.port)&&_.port>=1024&&_.port<=65535?Math.floor(_.port):void 0,y=typeof _.host==`string`&&_.host?_.host:`127.0.0.1`,b=typeof _.connectionTimeout==`number`&&Number.isFinite(_.connectionTimeout)&&_.connectionTimeout>=1e3?Math.floor(_.connectionTimeout):void 0,x=typeof n.cloakbrowser==`object`&&n.cloakbrowser&&!Array.isArray(n.cloakbrowser)?n.cloakbrowser:{},S=n.humanPreset==="default"?`default`:`careful`,C=n.dialogPolicy,w=C===`must_respond`||C===`auto_accept`?C:`auto_dismiss`,T=typeof n.dialogTimeoutSeconds==`number`&&Number.isFinite(n.dialogTimeoutSeconds)&&n.dialogTimeoutSeconds>=1?Math.floor(n.dialogTimeoutSeconds):void 0;return{browserEnabled:r,browserHeadless:a,browserAllowPrivateUrls:o,browserCommandTimeout:s,browserBackend:l,browserCloudProvider:d,browserCloudApiKey:p,browserCloudProjectId:m,browserCloudRegion:h,browserCdpUrl:g,browserExtensionPort:v,browserExtensionHost:y,browserExtensionConnectionTimeout:b,browserCloakKeepOpen:x.keepOpen!==!1,browserCloakTemporaryProfile:x.temporaryProfile===!0,browserCloakCacheDir:typeof x.cacheDir==`string`?x.cacheDir:``,browserCloakBinaryPath:typeof x.binaryPath==`string`?x.binaryPath:``,browserCloakTimezone:typeof x.timezone==`string`?x.timezone:``,browserCloakLocale:typeof x.locale==`string`?x.locale:``,browserCloakWebrtcIp:typeof x.webrtcIp==`string`?x.webrtcIp:``,browserCloakFingerprintPlatform:typeof x.fingerprintPlatform==`string`?x.fingerprintPlatform:``,browserCloakExtraArgs:Array.isArray(x.extraArgs)?x.extraArgs.filter(e=>typeof e==`string`&&e.trim().length>0).join(`
|
|
7
|
-
`):``,browserHumanize:n.humanize!==!1,browserHumanPreset:S,browserDialogPolicy:w,browserDialogTimeout:T}}function Et(e){if(!e||typeof e!=`object`||Array.isArray(e))return{...bt};let t=e;return{summaryModel:typeof t.summaryModel==`string`?t.summaryModel:``}}function Dt(e){if(!e||typeof e!=`object`||Array.isArray(e))return{...xt};let t=e;return{model:typeof t.model==`string`?t.model:``,maxLength:typeof t.maxLength==`number`&&t.maxLength>0?t.maxLength:void 0}}function Ot(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return{enabled:t};let n=e;return{enabled:typeof n.enabled==`boolean`?n.enabled:t}}function kt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function At(e){if(e==null)return``;if(typeof e==`string`){let t=e.trim();if(!t)return``;try{let e=JSON.parse(t);if(typeof e==`object`&&e&&!Array.isArray(e))return JSON.stringify(e,null,2)}catch{return t}return``}if(typeof e==`object`&&!Array.isArray(e))try{return JSON.stringify(e,null,2)}catch{return``}return``}function jt(e){let t=e.imageGenerationModelTimeoutMs;if(typeof t==`number`&&Number.isFinite(t)&&t>0)return Math.floor(t);let n=e.imageGenerationModel;if(n&&typeof n==`object`&&!Array.isArray(n)){let e=n.timeoutMs;if(typeof e==`number`&&Number.isFinite(e)&&e>0)return Math.floor(e)}return null}function Mt(e){if(e.imageGenerationModelAutoProviderFallback===!0)return!0;let t=e.imageGenerationModel;return t&&typeof t==`object`&&!Array.isArray(t)?t.autoProviderFallback===!0:!1}function Nt(e){let t={},n=t.models&&typeof t.models==`object`&&!Array.isArray(t.models)?t.models:{},r=n.chat,i=t.modelFallbacks,a=Array.isArray(i)&&i.every(e=>typeof e==`string`)?i:Ct(r),o=t.imageModelFallbacks,s=Array.isArray(o)&&o.every(e=>typeof e==`string`)?o:Ct(t.imageModel),c=t.imageGenerationModelFallbacks,l=Array.isArray(c)&&c.every(e=>typeof e==`string`)?c:Ct(t.imageGenerationModel),u=Tt((e&&typeof e==`object`&&!Array.isArray(e)?e:{}).browser),d=typeof t.maxTaskDurationMs==`number`&&Number.isFinite(t.maxTaskDurationMs)?t.maxTaskDurationMs:void 0,f=d===void 0?void 0:Math.round(d/6e4);return{model:St(r),modelFallbacks:a,imageModel:St(t.imageModel),imageModelFallbacks:s,imageGenerationModel:St(t.imageGenerationModel),imageGenerationModelFallbacks:l,imageGenerationModelTimeoutMs:jt(t),imageGenerationModelAutoProviderFallback:Mt(t),mediaMaxMb:typeof t.mediaMaxMb==`number`&&!Number.isNaN(t.mediaMaxMb)?t.mediaMaxMb:void 0,maxTokens:typeof t.maxTokens==`number`?t.maxTokens:8192,temperature:typeof t.temperature==`number`?t.temperature:.7,maxToolIterations:typeof t.maxToolIterations==`number`?t.maxToolIterations:20,maxTaskDurationMinutes:f,maxRequestsPerTurn:typeof t.maxRequestsPerTurn==`number`?t.maxRequestsPerTurn:50,maxToolFailuresPerTurn:typeof t.maxToolFailuresPerTurn==`number`?t.maxToolFailuresPerTurn:3,workspace:typeof t.workspace==`string`?t.workspace:`~/.xopc/workspace`,...u,thinkingDefault:typeof t.thinkingDefault==`string`?t.thinkingDefault:`medium`,reasoningDefault:typeof t.reasoningDefault==`string`?t.reasoningDefault:`stream`,verboseDefault:typeof t.verboseDefault==`string`?t.verboseDefault:`full`,sessionSearch:Et(t.sessionSearch),webExtract:Dt(t.webExtract),delegate:Ot(t.delegate,!1),executeCode:Ot(t.executeCode,!1),skillsAllowlist:kt(t.skills),toolsDisable:(()=>{let e=t.tools;if(!e||typeof e!=`object`||Array.isArray(e))return[];let n=e.disable;return kt(n)})(),typedModels:pe(n),paramsJson:At(t.params)}}function Pt(e){return{enabled:e.browserEnabled,headless:e.browserHeadless,allowPrivateUrls:e.browserAllowPrivateUrls,...e.browserCommandTimeout===void 0?{}:{commandTimeout:e.browserCommandTimeout},backend:e.browserBackend,...e.browserCloudProvider===`local`?{}:{cloudProvider:e.browserCloudProvider},...e.browserBackend===`cloud`?{cloud:{...e.browserCloudApiKey.trim()?{apiKey:e.browserCloudApiKey.trim()}:{},...e.browserCloudProjectId.trim()?{projectId:e.browserCloudProjectId.trim()}:{},...e.browserCloudRegion.trim()?{region:e.browserCloudRegion.trim()}:{}}}:{},...e.browserCdpUrl.trim()?{cdpUrl:e.browserCdpUrl.trim()}:{},...e.browserBackend===`extension`?{extension:{...e.browserExtensionPort===void 0?{}:{port:e.browserExtensionPort},...e.browserExtensionHost.trim()?{host:e.browserExtensionHost.trim()}:{},...e.browserExtensionConnectionTimeout===void 0?{}:{connectionTimeout:e.browserExtensionConnectionTimeout}}}:{},...e.browserBackend===`cloakbrowser`?{cloakbrowser:{keepOpen:e.browserCloakKeepOpen,temporaryProfile:e.browserCloakTemporaryProfile,...e.browserCloakCacheDir.trim()?{cacheDir:e.browserCloakCacheDir.trim()}:{},...e.browserCloakBinaryPath.trim()?{binaryPath:e.browserCloakBinaryPath.trim()}:{},...e.browserCloakTimezone.trim()?{timezone:e.browserCloakTimezone.trim()}:{},...e.browserCloakLocale.trim()?{locale:e.browserCloakLocale.trim()}:{},...e.browserCloakWebrtcIp.trim()?{webrtcIp:e.browserCloakWebrtcIp.trim()}:{},...e.browserCloakFingerprintPlatform.trim()?{fingerprintPlatform:e.browserCloakFingerprintPlatform.trim()}:{},...(()=>{let t=e.browserCloakExtraArgs.split(`
|
|
8
|
-
`).map(e=>e.trim()).filter(Boolean);return t.length>0?{extraArgs:t}:{}})()},humanize:e.browserHumanize,humanPreset:e.browserHumanPreset}:{},...e.browserDialogPolicy===`auto_dismiss`?{}:{dialogPolicy:e.browserDialogPolicy},...e.browserDialogTimeout===void 0?{}:{dialogTimeoutSeconds:e.browserDialogTimeout}}}async function Ft(e){await y(v(`/api/config`),{method:`PATCH`,body:JSON.stringify({browser:Pt(e)})}),b()}var It=A();function Lt(e){let t=!!h(e=>e.token),[n,r]=(0,Y.useReducer)(It,{form:null,baseline:null}),i=n.form,a=n.baseline,o=(0,Y.useRef)(!1),s=(0,Y.useRef)(i);s.current=i;let c=(0,Y.useRef)(null),{data:l,error:u,isLoading:d,mutate:f}=x(t);z({enabled:t,parsed:(0,Y.useMemo)(()=>l?.payload?.config===void 0?null:Nt(l.payload.config),[l]),dirty:o.current,trackedParsedRef:c,dispatch:r,onResetDirty:()=>{o.current=!1}});let p=!!(t&&d&&l===void 0&&!u),m=u instanceof Error?u.message:u?String(u):null,g=(0,Y.useMemo)(()=>!i||!a?!1:JSON.stringify(i)!==JSON.stringify(a),[i,a]),_=(0,Y.useCallback)(e=>{o.current=!0,r({type:`patch`,patch:e})},[]),v=ce({value:i,dirty:g,onSave:(0,Y.useCallback)(async t=>{try{await Ft(t),r({type:`saved`,value:t}),o.current=!!(s.current&&JSON.stringify(s.current)!==JSON.stringify(t))}catch(t){throw Error(t instanceof Error?t.message:e.saveError)}},[e.saveError])});return{hasToken:t,loading:p,fetchError:m,form:i,update:_,autosaveStatus:v.status,error:v.error,onBlurCapture:v.onBlurCapture,mutate:f}}function Rt(e,t){return e.browserTabs[t]}function zt(){let e=(0,X.c)(42),t=g(Vt),n;e[0]===t?n=e[1]:(n=m(t),e[0]=t,e[1]=n);let r=n,a=r.agentSettings,o=r.chat,s=M(Bt),c=Lt(a),[l,u]=i(),d;e[2]===s?d=e[3]:(d=ge(Me,s),e[2]=s,e[3]=d);let f=d,p;e[4]===l?p=e[5]:(p=Se(l.get(`focus`)),e[4]=l,e[5]=p);let h=p,_;e[6]!==h||e[7]!==l?(_=h?Pe[h]??Fe(l.get(`tab`)):Fe(l.get(`tab`)),e[6]=h,e[7]=l,e[8]=_):_=e[8];let v=_,y;bb0:{if(!c.form){y=null;break bb0}let t;e[9]!==a||e[10]!==o||e[11]!==c.form||e[12]!==c.update?(t={form:c.form,update:c.update,a,chat:o},e[9]=a,e[10]=o,e[11]=c.form,e[12]=c.update,e[13]=t):t=e[13],y=t}let b=y,x;e[14]===u?x=e[15]:(x=e=>{u(t=>{let n=new URLSearchParams(t);return n.delete(`focus`),e===`overview`?n.delete(`tab`):n.set(`tab`,e),n},{replace:!0})},e[14]=u,e[15]=x);let S=x;he(v,S);let C,w;e[16]!==h||e[17]!==l||e[18]!==u?(C=()=>{if(!h)return;let e=Pe[h]??Fe(l.get(`tab`));u(t=>{let n=new URLSearchParams(t);return n.delete(`focus`),e===`overview`?n.delete(`tab`):n.set(`tab`,e),n},{replace:!0});let t=h===`runtime`||h===`security`?xe(h):null;if(!t)return;let n=window.setTimeout(()=>{document.getElementById(t)?.scrollIntoView({behavior:`smooth`,block:`start`})},80);return()=>window.clearTimeout(n)},w=[h,l,u],e[16]=h,e[17]=l,e[18]=u,e[19]=C,e[20]=w):(C=e[19],w=e[20]),(0,Y.useEffect)(C,w);let T;if(e[21]!==a||e[22]!==f){let t;e[24]===a?t=e[25]:(t=e=>({id:e,label:Rt(a,e)}),e[24]=a,e[25]=t),T=f.map(t),e[21]=a,e[22]=f,e[23]=T}else T=e[23];let E=T,D;e[26]!==v||e[27]!==a.browserTabsAria||e[28]!==S||e[29]!==E?(D=(0,Z.jsx)(de,{items:E,activeTab:v,onChange:S,ariaLabel:a.browserTabsAria,tabIdPrefix:`agent-browser-tab`,panelIdPrefix:`agent-browser-panel`}),e[26]=v,e[27]=a.browserTabsAria,e[28]=S,e[29]=E,e[30]=D):D=e[30];let O;e[31]!==v||e[32]!==b||e[33]!==S?(O=b?(0,Z.jsx)(ht,{...b,activeTab:v,setActiveTab:S}):null,e[31]=v,e[32]=b,e[33]=S,e[34]=O):O=e[34];let k;e[35]!==v||e[36]!==O?(k=(0,Z.jsx)(ae,{id:v,activeTab:v,tabIdPrefix:`agent-browser-tab`,panelIdPrefix:`agent-browser-panel`,showHeading:!1,framed:!1,children:O}),e[35]=v,e[36]=O,e[37]=k):k=e[37];let A;return e[38]!==k||e[39]!==D||e[40]!==c?(A=(0,Z.jsxs)(vt,{sectionId:`agent-browser`,intro:``,vm:c,tabbed:!0,children:[D,k]}),e[38]=k,e[39]=D,e[40]=c,e[41]=A):A=e[41],A}function Bt(e){return e.mode}function Vt(e){return e.language}export{zt as AgentBrowserSettingsPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{p as i}from"./chunk-KS7C4IRE-BaASWQor.js";import{n as a,r as o}from"./popover-select-BzdnTy3h.js";import{t as s}from"./loader-circle-CifKLtgG.js";import{t as c}from"./cn-JdwAhgNB.js";import{t as l}from"./button-CSEbl4zT.js";import{t as u}from"./messages-CbbZKEfO.js";import{l as d,n as f,r as p,s as m}from"./locale-store-BIOMAhmR.js";import{i as h,o as g}from"./vendor-swr-BIWyz7Rc.js";import{n as _,r as v}from"./gateway-config-swr-l2w9ecXl.js";import{Ec as y,Rs as b,Sa as x,So as S,Ss as C,Vc as w,Xr as T,bo as E,dc as D,ms as O,so as k,xo as A,yo as j}from"./index-BIBAmAjw.js";import{n as ee,r as M,t as te}from"./settings-page-layout-BRQNel6r.js";import{n as ne}from"./settings-loading-skeleton-BFvEfK7v.js";import{n as re,t as ie}from"./use-autosave-C10PZ1OV.js";import{t as N}from"./page-tabs-DoQq4tt6.js";import{r as ae,t as P}from"./channel-recipient-api-8Uz95P40.js";import{n as oe,t as se}from"./channels-status-swr-NfU9X-P5.js";import{n as F,o as I,t as ce}from"./cron-expression-DjBh0ZL4.js";import{t as L}from"./date-picker-3cIzKCZU.js";var R=e(t(),1),z=n();function le(){return p(`/api/workspace/heartbeat-md`)}async function ue(){let e=await m(le());return typeof e.payload?.content==`string`?e.payload.content:``}function B(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function de(e){let t=B(e)?e:{},n=B(t.gateway)?t.gateway:{},r=B(n.heartbeat)?n.heartbeat:{},i=r.activeHours,a=B(i)?i:null,o=a&&typeof a.start==`string`&&typeof a.end==`string`&&a.start&&a.end?{start:a.start,end:a.end,timezone:typeof a.timezone==`string`?a.timezone:``}:null;return{enabled:!!(r.enabled??!0),intervalMs:typeof r.intervalMs==`number`&&Number.isFinite(r.intervalMs)?r.intervalMs:18e5,includeSystemPromptSection:r.includeSystemPromptSection===!0,target:typeof r.target==`string`?r.target:``,targetChatId:typeof r.targetChatId==`string`?r.targetChatId:``,prompt:typeof r.prompt==`string`?r.prompt:``,ackMaxChars:typeof r.ackMaxChars==`number`&&Number.isFinite(r.ackMaxChars)?r.ackMaxChars:``,isolatedSession:!!r.isolatedSession,activeHours:o}}function fe(e){let t={enabled:e.enabled,intervalMs:e.intervalMs,includeSystemPromptSection:e.includeSystemPromptSection};return e.target.trim()?t.target=e.target.trim():t.target=null,e.targetChatId.trim()?t.targetChatId=e.targetChatId.trim():t.targetChatId=null,e.prompt.trim()?t.prompt=e.prompt.trim():t.prompt=null,e.ackMaxChars===``||e.ackMaxChars===void 0?t.ackMaxChars=null:t.ackMaxChars=e.ackMaxChars,e.isolatedSession?t.isolatedSession=!0:t.isolatedSession=null,e.activeHours?.start?.trim()&&e.activeHours?.end?.trim()?t.activeHours={start:e.activeHours.start.trim(),end:e.activeHours.end.trim(),...e.activeHours.timezone.trim()?{timezone:e.activeHours.timezone.trim()}:{}}:t.activeHours=null,t}async function pe(e){await m(p(`/api/config`),{method:`PATCH`,body:JSON.stringify({gateway:{heartbeat:fe(e)}})}),_()}async function me(e){await m(p(`/api/workspace/heartbeat-md`),{method:`PUT`,body:JSON.stringify({content:e})}),g(le())}async function he(e){await m(p(`/api/heartbeat/trigger`),{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e?{reason:e}:{})})}var V=r(),H=Array.from({length:60},(e,t)=>t),U=c(A,`min-w-0 shrink text-xs sm:min-w-[7rem] sm:max-w-[11rem]`),W=c(`h-9 w-14 shrink-0 rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1.5 text-center text-sm tabular-nums text-fg`,j),ge=c(`min-h-[2.5rem] w-full rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 font-mono text-xs text-fg`,j);function G(e){return{...e,intervalMinutesDraft:null,intervalHoursDraft:null}}function K(e){let{intervalMinutesDraft:t,intervalHoursDraft:n,...r}=e;return r}function q(e,t){switch(t.type){case`reset`:return G(t.state);case`replace`:return t.state}}function J({value:e,onChange:t,labels:n,disabled:r,showHeading:i=!0}){let s=(0,R.useMemo)(()=>F(e),[e]),[l,u]=(0,R.useReducer)(q,s,G),d=(0,R.useRef)(e);d.current!==e&&(d.current=e,u({type:`reset`,state:s}));let f=(0,R.useCallback)(e=>{let n={...l,...e};u({type:`replace`,state:n});let r=K(n),i=K(l);Object.keys(r).some(e=>r[e]!==i[e])&&t(ce(r))},[t,l]),{mode:p,intervalKind:m,onceDate:h,intervalMinutes:g,intervalHours:_,minute:v,hour:y,weekDays:b,dayOfMonth:x,rawCron:S,intervalMinutesDraft:C,intervalHoursDraft:w}=l,T=`${String(y).padStart(2,`0`)}:${String(v).padStart(2,`0`)}`,E=e=>{if(!e)return;let[t,n]=e.split(`:`).map(e=>parseInt(e,10));Number.isNaN(t)||Number.isNaN(n)||f({minute:n,hour:t})},D=(0,V.jsxs)(`div`,{className:`flex min-w-0 flex-nowrap items-center gap-2 overflow-x-auto pb-0.5`,children:[(0,V.jsxs)(a,{className:U,disabled:r,value:p,onChange:e=>{let t=e.target.value;f({mode:t})},"aria-label":n.scheduleTimeLabel,children:[(0,V.jsx)(o,{value:`no_repeat`,children:n.modeNoRepeat}),(0,V.jsx)(o,{value:`interval`,children:n.modeInterval}),(0,V.jsx)(o,{value:`hourly`,children:n.modeHourly}),(0,V.jsx)(o,{value:`daily`,children:n.modeDaily}),(0,V.jsx)(o,{value:`weekly`,children:n.modeWeekly}),(0,V.jsx)(o,{value:`monthly`,children:n.modeMonthly}),(0,V.jsx)(o,{value:`custom`,children:n.modeCustom})]}),p===`no_repeat`&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(L,{disabled:r,className:`h-9 min-w-[9.5rem] shrink-0 bg-surface-panel px-2`,value:h,onChange:e=>f({onceDate:e}),ariaLabel:n.modeNoRepeat}),(0,V.jsx)(I,{disabled:r,className:`min-w-[6.5rem] shrink-0`,triggerClassName:`h-9 border-edge-subtle px-2`,value:T,onChange:E,ariaLabel:n.scheduleTimeLabel})]}),p===`interval`&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsxs)(a,{className:c(U,`w-auto min-w-[5rem]`),disabled:r,value:m,onChange:e=>{let t=e.target.value;f({intervalKind:t,intervalMinutesDraft:null,intervalHoursDraft:null})},"aria-label":n.modeInterval,children:[(0,V.jsx)(o,{value:`minutes`,children:n.intervalKindMinutes}),(0,V.jsx)(o,{value:`hours`,children:n.intervalKindHours})]}),m===`minutes`?(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`input`,{type:`number`,min:1,max:59,disabled:r,className:W,value:C??String(g),onChange:e=>{let t=e.target.value,n=parseInt(t,10),r={intervalMinutesDraft:t};Number.isFinite(n)&&n>=1&&n<=59&&(r.intervalMinutes=n),f(r)},onBlur:()=>{if(C===null)return;let e=parseInt(C,10);f({intervalMinutes:!Number.isFinite(e)||e<1?5:Math.min(59,Math.max(1,Math.round(e))),intervalMinutesDraft:null})},"aria-label":n.intervalMinutes}),(0,V.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:n.minuteUnit})]}):(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`input`,{type:`number`,min:1,max:23,disabled:r,className:W,value:w??String(_),onChange:e=>{let t=e.target.value,n=parseInt(t,10),r={intervalHoursDraft:t};Number.isFinite(n)&&n>=1&&n<=23&&(r.intervalHours=n),f(r)},onBlur:()=>{if(w===null)return;let e=parseInt(w,10);f({intervalHours:!Number.isFinite(e)||e<1?2:Math.min(23,Math.max(1,Math.round(e))),intervalHoursDraft:null})},"aria-label":n.intervalHours}),(0,V.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:n.hourUnit}),(0,V.jsx)(a,{className:c(U,`w-auto min-w-[4rem]`),disabled:r,value:v,onChange:e=>{f({minute:parseInt(e.target.value,10)})},"aria-label":n.minuteAtHour,children:H.map(e=>(0,V.jsx)(o,{value:e,children:String(e).padStart(2,`0`)},e))}),(0,V.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:n.minuteUnit})]})]}),p===`daily`&&(0,V.jsx)(I,{disabled:r,className:`min-w-[6.5rem] shrink-0`,triggerClassName:`h-9 border-edge-subtle px-2`,value:T,onChange:E,ariaLabel:n.scheduleTimeLabel}),p===`weekly`&&(0,V.jsx)(I,{disabled:r,className:`min-w-[6.5rem] shrink-0`,triggerClassName:`h-9 border-edge-subtle px-2`,value:T,onChange:E,ariaLabel:n.scheduleTimeLabel}),p===`monthly`&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(a,{className:c(U,`w-auto min-w-[4.5rem]`),disabled:r,value:x,onChange:e=>{f({dayOfMonth:parseInt(e.target.value,10)})},"aria-label":n.dayOfMonth,children:Array.from({length:31},(e,t)=>t+1).map(e=>(0,V.jsx)(o,{value:e,children:e},e))}),(0,V.jsx)(I,{disabled:r,className:`min-w-[6.5rem] shrink-0`,triggerClassName:`h-9 border-edge-subtle px-2`,value:T,onChange:E,ariaLabel:n.scheduleTimeLabel})]}),p===`hourly`&&(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(a,{className:c(U,`w-auto min-w-[4rem]`),disabled:r,value:v,onChange:e=>{f({minute:parseInt(e.target.value,10)})},"aria-label":n.minuteAtHour,children:H.map(e=>(0,V.jsx)(o,{value:e,children:String(e).padStart(2,`0`)},e))}),(0,V.jsx)(`span`,{className:`shrink-0 text-sm text-fg-muted`,children:n.minuteUnit})]})]}),O=p===`weekly`?(0,V.jsx)(`div`,{className:`flex flex-wrap gap-1.5 pt-1`,role:`group`,"aria-label":n.modeWeekly,children:n.weekdays.map((e,t)=>{let n=b[t];return(0,V.jsx)(`button`,{type:`button`,disabled:r,className:c(`flex size-9 select-none items-center justify-center rounded-full border text-xs font-medium transition-colors`,n?`border-fg bg-fg text-surface-panel`:`border-edge-subtle bg-surface-panel text-fg hover:border-edge`),"aria-pressed":n,onClick:()=>{let e=[...b];e[t]=!e[t],f({weekDays:e})},children:e},e)})}):null,k=p===`custom`?(0,V.jsxs)(`div`,{className:`pt-1`,children:[(0,V.jsx)(`textarea`,{disabled:r,className:ge,rows:2,spellCheck:!1,value:S,placeholder:`*/5 * * * *`,onChange:e=>{f({rawCron:e.target.value})},"aria-label":n.modeCustom}),(0,V.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:n.customCronHint})]}):null;return(0,V.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[i?(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:n.scheduleTimeLabel}):null,D,O,k]})}var Y=[3e4,6e4,3e5,6e5,9e5,18e5,36e5,72e5];new Set(Y);var _e=c(`h-9 min-w-0 flex-1 rounded-lg border border-edge-subtle bg-surface-panel px-2.5 py-1.5 text-sm tabular-nums text-fg`,j),ve=c(A,`h-9 max-w-[11rem] shrink-0 text-xs sm:max-w-[12rem]`);function X(e,t){switch(e){case 3e4:return t.every30s;case 6e4:return t.every1min;case 3e5:return t.every5min;case 6e5:return t.every10min;case 9e5:return t.every15min;case 18e5:return t.every30min;case 36e5:return t.every1h;case 72e5:return t.every2h;default:return String(e)}}function ye({valueMs:e,onChangeMs:t,labels:n,disabled:r,presets:i=Y,minSeconds:s=1}){let c=(0,R.useMemo)(()=>new Set(i),[i]),l=(0,R.useMemo)(()=>c.has(e)?String(e):``,[c,e]),[u,d]=(0,R.useState)(null),f=(0,R.useRef)(e);f.current!==e&&(f.current=e,d(null));let p=Math.max(s,Math.round(e/1e3)),m=u===null?String(p):u;return(0,V.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:n.secondsLabel}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(`input`,{type:`number`,min:s,step:1,disabled:r,className:_e,value:m,onChange:e=>{let n=e.target.value;d(n);let r=parseInt(n,10);Number.isFinite(r)&&r>=s&&t(r*1e3)},onBlur:()=>{if(u===null)return;let e=parseInt(u,10);t(!Number.isFinite(e)||e<s?s*1e3:e*1e3),d(null)}}),(0,V.jsxs)(a,{className:ve,disabled:r,value:l,onChange:e=>{let n=e.target.value;n&&(t(parseInt(n,10)),d(null))},children:[(0,V.jsx)(o,{value:``,children:n.presets.custom}),i.map(e=>(0,V.jsx)(o,{value:String(e),children:X(e,n.presets)},e))]})]})]})}var be=c(`mt-1 w-full rounded-lg border border-edge-subtle bg-surface-panel px-2.5 py-1.5 text-sm text-fg`,j),xe=()=>({start:`09:00`,end:`22:00`,timezone:``});function Se(e){let t=(0,z.c)(57),{value:n,onChange:r,labels:i,disabled:a}=e;if(!n){let e;t[0]===r?e=t[1]:(e=()=>r(xe()),t[0]=r,t[1]=e);let n;return t[2]!==a||t[3]!==i.add||t[4]!==e?(n=(0,V.jsx)(l,{type:`button`,variant:`secondary`,className:`text-sm`,disabled:a,onClick:e,children:i.add}),t[2]=a,t[3]=i.add,t[4]=e,t[5]=n):n=t[5],n}let o;t[6]===i.start?o=t[7]:(o=(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:i.start}),t[6]=i.start,t[7]=o);let s;t[8]!==r||t[9]!==n?(s=e=>r({...n,start:e}),t[8]=r,t[9]=n,t[10]=s):s=t[10];let c;t[11]!==a||t[12]!==i.start||t[13]!==s||t[14]!==n.start?(c=(0,V.jsx)(I,{disabled:a,className:`mt-1 w-full`,triggerClassName:`h-9 border-edge-subtle px-2.5`,value:n.start,onChange:s,ariaLabel:i.start}),t[11]=a,t[12]=i.start,t[13]=s,t[14]=n.start,t[15]=c):c=t[15];let u;t[16]!==o||t[17]!==c?(u=(0,V.jsxs)(`label`,{className:`block min-w-0`,children:[o,c]}),t[16]=o,t[17]=c,t[18]=u):u=t[18];let d;t[19]===i.end?d=t[20]:(d=(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:i.end}),t[19]=i.end,t[20]=d);let f;t[21]!==r||t[22]!==n?(f=e=>r({...n,end:e}),t[21]=r,t[22]=n,t[23]=f):f=t[23];let p;t[24]!==a||t[25]!==i.end||t[26]!==f||t[27]!==n.end?(p=(0,V.jsx)(I,{disabled:a,className:`mt-1 w-full`,triggerClassName:`h-9 border-edge-subtle px-2.5`,value:n.end,onChange:f,ariaLabel:i.end}),t[24]=a,t[25]=i.end,t[26]=f,t[27]=n.end,t[28]=p):p=t[28];let m;t[29]!==d||t[30]!==p?(m=(0,V.jsxs)(`label`,{className:`block min-w-0`,children:[d,p]}),t[29]=d,t[30]=p,t[31]=m):m=t[31];let h;t[32]===i.timezone?h=t[33]:(h=(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:i.timezone}),t[32]=i.timezone,t[33]=h);let g;t[34]!==r||t[35]!==n?(g=e=>r({...n,timezone:e.target.value}),t[34]=r,t[35]=n,t[36]=g):g=t[36];let _;t[37]!==a||t[38]!==g||t[39]!==n.timezone?(_=(0,V.jsx)(`input`,{type:`text`,disabled:a,className:be,value:n.timezone,onChange:g,placeholder:`Asia/Shanghai`,autoComplete:`off`}),t[37]=a,t[38]=g,t[39]=n.timezone,t[40]=_):_=t[40];let v;t[41]!==_||t[42]!==h?(v=(0,V.jsxs)(`label`,{className:`block min-w-0`,children:[h,_]}),t[41]=_,t[42]=h,t[43]=v):v=t[43];let y;t[44]!==v||t[45]!==u||t[46]!==m?(y=(0,V.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-3`,children:[u,m,v]}),t[44]=v,t[45]=u,t[46]=m,t[47]=y):y=t[47];let b;t[48]===r?b=t[49]:(b=()=>r(null),t[48]=r,t[49]=b);let x;t[50]!==a||t[51]!==i.clear||t[52]!==b?(x=(0,V.jsx)(l,{type:`button`,variant:`secondary`,className:`text-xs`,disabled:a,onClick:b,children:i.clear}),t[50]=a,t[51]=i.clear,t[52]=b,t[53]=x):x=t[53];let S;return t[54]!==y||t[55]!==x?(S=(0,V.jsxs)(`div`,{className:`space-y-2`,children:[y,x]}),t[54]=y,t[55]=x,t[56]=S):S=t[56],S}function Z(e){let t=(0,z.c)(34),{disabled:n,label:r,hint:i,className:a}=e,o;t[0]===a?o=t[1]:(o=c(`flex flex-col gap-2`,a),t[0]=a,t[1]=o);let s;t[2]===r?s=t[3]:(s=r?(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:r}):null,t[2]=r,t[3]=s);let l;t[4]!==n||t[5]!==r||t[6]!==e.kind||t[7]!==e.labels||t[8]!==e.onChange||t[9]!==e.value?(l=e.kind===`cron`?(0,V.jsx)(J,{value:e.value,onChange:e.onChange,labels:e.labels,disabled:n,showHeading:!r}):null,t[4]=n,t[5]=r,t[6]=e.kind,t[7]=e.labels,t[8]=e.onChange,t[9]=e.value,t[10]=l):l=t[10];let u;t[11]!==n||t[12]!==e.kind||t[13]!==e.labels||t[14]!==e.minSeconds||t[15]!==e.onChangeMs||t[16]!==e.presets||t[17]!==e.valueMs?(u=e.kind===`interval`?(0,V.jsx)(ye,{valueMs:e.valueMs,onChangeMs:e.onChangeMs,labels:e.labels,disabled:n,presets:e.presets??Y,minSeconds:e.minSeconds}):null,t[11]=n,t[12]=e.kind,t[13]=e.labels,t[14]=e.minSeconds,t[15]=e.onChangeMs,t[16]=e.presets,t[17]=e.valueMs,t[18]=u):u=t[18];let d;t[19]!==n||t[20]!==e.kind||t[21]!==e.labels||t[22]!==e.onChange||t[23]!==e.value?(d=e.kind===`active-hours`?(0,V.jsx)(Se,{value:e.value,onChange:e.onChange,labels:e.labels,disabled:n}):null,t[19]=n,t[20]=e.kind,t[21]=e.labels,t[22]=e.onChange,t[23]=e.value,t[24]=d):d=t[24];let f;t[25]===i?f=t[26]:(f=i?(0,V.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:i}):null,t[25]=i,t[26]=f);let p;return t[27]!==o||t[28]!==s||t[29]!==l||t[30]!==u||t[31]!==d||t[32]!==f?(p=(0,V.jsxs)(`div`,{className:o,children:[s,l,u,d,f]}),t[27]=o,t[28]=s,t[29]=l,t[30]=u,t[31]=d,t[32]=f,t[33]=p):p=t[33],p}function Ce(){return c(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,S,`dark:border-edge`)}function we(){return c(A,E)}var Te=[`schedule`,`delivery`,`prompt`,`document`],Q={schedule:w,delivery:b,prompt:D,document:y};function Ee(e){return e&&Te.includes(e)?e:`schedule`}function De(e,t){return t===`schedule`?e.tabSchedule:t===`delivery`?e.tabDelivery:t===`prompt`?e.tabPrompt:e.tabDocument}function Oe(e,t){return t===`schedule`?e.scheduleTabHint:t===`delivery`?e.deliveryTabHint:t===`prompt`?e.promptTabHint:e.documentTabHint}function ke(e,t){switch(t.type){case`reset`:return{form:null,baseline:null};case`sync`:{let e=structuredClone(t.value);return{form:e,baseline:structuredClone(e)}}case`patch`:return{...e,form:e.form?{...e.form,...t.patch}:null};case`saved`:{let n=structuredClone(t.value);return{form:e.form&&JSON.stringify(e.form)!==JSON.stringify(t.value)?e.form:n,baseline:structuredClone(n)}}}}function Ae(e,t){switch(t.type){case`reset`:return{doc:``,baseline:``};case`sync`:return{doc:t.value,baseline:t.value};case`set`:return{...e,doc:t.value};case`saved`:return{doc:e.doc===t.value?t.value:e.doc,baseline:t.value}}}function je(e){if(!e||typeof e!=`object`||Array.isArray(e))return``;let t=e.agents;if(!t||typeof t!=`object`||Array.isArray(t))return``;let n=t;if(!Array.isArray(n.list))return``;let r=typeof n.default==`string`?n.default:``,i=n.list.find(e=>!e||typeof e!=`object`||Array.isArray(e)?!1:r?e.id===r:!0)??n.list[0];if(!i||typeof i!=`object`||Array.isArray(i))return``;let a=i.workspace;if(!a||typeof a!=`object`||Array.isArray(a))return``;let o=a.root;return typeof o==`string`?o:``}var Me={triggerLoading:!1,triggerOk:!1,triggerError:null};function Ne(){let e=f(e=>e.language),t=u(e),n=t.heartbeatSettings,r=!!d(e=>e.token),[a,o]=i(),p=Ee(a.get(`tab`)),m=(0,R.useCallback)(e=>{o(t=>{let n=new URLSearchParams(t);return e===`schedule`?n.delete(`tab`):n.set(`tab`,e),n},{replace:!0})},[o]),[g,_]=(0,R.useReducer)(ke,{form:null,baseline:null}),y=g.form,b=g.baseline,[S,w]=(0,R.useReducer)(Ae,{doc:``,baseline:``}),E=S.doc,D=S.baseline,[O,A]=(0,R.useReducer)(T,Me),{triggerLoading:j,triggerOk:te,triggerError:N}=O,P=(0,R.useRef)(!1),F=(0,R.useRef)(!1),I=(0,R.useRef)(y),ce=(0,R.useRef)(E);I.current=y,ce.current=E;let{data:L,error:z,isLoading:B,mutate:fe}=v(r),{data:H,error:U,isLoading:W,mutate:ge}=h(r?le():null,ue,{revalidateOnFocus:!1}),{data:G=[]}=h(r?se():null,oe,{revalidateOnFocus:!1}),K=(0,R.useMemo)(()=>je(L?.payload?.config),[L]),q=(0,R.useMemo)(()=>de(L?.payload?.config??{}),[L]),J=(0,R.useMemo)(()=>!y||!b?!1:JSON.stringify(y)!==JSON.stringify(b),[y,b]),Y=E!==D;(0,R.useEffect)(()=>{if(!r){_({type:`reset`}),P.current=!1;return}L!==void 0&&(P.current||_({type:`sync`,value:q}))},[r,L,q]),(0,R.useEffect)(()=>{if(!r){w({type:`reset`}),F.current=!1;return}H!==void 0&&(F.current||w({type:`sync`,value:H}))},[r,H]);let _e=z instanceof Error?z.message:z?String(z):U instanceof Error?U.message:U?String(U):null,ve=!!(r&&(L===void 0||H===void 0)&&!_e&&(B||W)),X=y?.target.trim()??``,{data:ye,setData:be}=x(()=>ae(X),[r,X],{enabled:r&&X.length>0,initial:[],errorData:[]}),xe=(0,R.useCallback)(()=>{X&&ae(X).then(be)},[X,be]),Se=(0,R.useCallback)(async()=>{A({type:`patch`,patch:{triggerLoading:!0,triggerOk:!1,triggerError:null}});try{await he(),A({type:`patch`,patch:{triggerOk:!0}}),window.setTimeout(()=>A({type:`patch`,patch:{triggerOk:!1}}),3e3)}catch(e){A({type:`patch`,patch:{triggerError:e instanceof Error?e.message:n.triggerError}})}finally{A({type:`patch`,patch:{triggerLoading:!1}})}},[n.triggerError]),Z=(0,R.useCallback)(e=>{P.current=!0,_({type:`patch`,patch:e})},[]),Te=J||Y,Q=ie({value:(0,R.useMemo)(()=>y?{form:y,doc:E,saveConfig:J,saveDoc:Y}:null,[J,Y,E,y]),dirty:Te,onSave:(0,R.useCallback)(async e=>{try{e.saveConfig&&(await pe(e.form),_({type:`saved`,value:e.form}),P.current=!!(I.current&&JSON.stringify(I.current)!==JSON.stringify(e.form))),e.saveDoc&&(await me(e.doc),w({type:`saved`,value:e.doc}),F.current=ce.current!==e.doc)}catch(t){throw Error(t instanceof Error?t.message:e.saveConfig?n.saveConfigError:n.saveDocError)}},[n.saveConfigError,n.saveDocError]),delayMs:Y?900:500});return r?ve?(0,V.jsx)(M,{gap:`gap-6`,padding:`px-3 py-8 sm:px-5 xl:px-6`,children:(0,V.jsx)(ne,{sections:3})}):y?(0,V.jsxs)(M,{"aria-busy":Q.status===`saving`,"data-has-baseline":b?`1`:`0`,onBlurCapture:Q.onBlurCapture,children:[(0,V.jsx)(ee,{title:t.settingsSections.heartbeat,subtitle:n.subtitle,docsLink:k(e,`heartbeat`),docsLabel:n.docsLink,actions:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(re,{status:Q.status,error:Q.error}),(0,V.jsxs)(l,{type:`button`,variant:`secondary`,className:`inline-flex items-center gap-2`,disabled:j,onClick:()=>void Se(),children:[j?(0,V.jsx)(s,{className:`size-4 animate-spin`,"aria-hidden":!0}):(0,V.jsx)(C,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),j?n.triggering:n.triggerNow]}),te?(0,V.jsx)(`span`,{className:`text-sm text-fg-muted`,children:n.triggered}):null]})}),K?(0,V.jsxs)(`p`,{className:`text-xs text-fg-subtle`,children:[n.workspaceLabel,`: `,(0,V.jsx)(`span`,{className:`font-mono text-fg-muted`,children:K})]}):null,Q.error?(0,V.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:Q.error}):null,N?(0,V.jsx)(`p`,{className:`text-sm text-red-600 dark:text-red-400`,children:N}):null,(0,V.jsx)(Pe,{h:n,activeTab:p,onChange:m}),(0,V.jsx)($,{h:n,id:`schedule`,activeTab:p,children:(0,V.jsx)(Fe,{h:n,form:y,update:Z})}),(0,V.jsx)($,{h:n,id:`delivery`,activeTab:p,children:(0,V.jsx)(Ie,{h:n,cron:t.cron,form:y,channels:G,sessionChatIds:ye,onRefreshChatIds:xe,update:Z,inputClassName:Ce,selectClassName:we})}),(0,V.jsx)($,{h:n,id:`prompt`,activeTab:p,children:(0,V.jsx)(ze,{h:n,form:y,update:Z,inputClassName:Ce})}),(0,V.jsxs)($,{h:n,id:`document`,activeTab:p,children:[(0,V.jsx)(`p`,{className:`mb-3 text-xs text-fg-subtle`,children:n.docHint}),(0,V.jsx)(`textarea`,{className:c(Ce(),`min-h-72 resize-y font-mono text-xs leading-relaxed`),value:E,onChange:e=>{F.current=!0,w({type:`set`,value:e.target.value})},spellCheck:!1,"aria-label":n.docSection,"data-doc-in-sync":E===D?`true`:`false`})]})]}):(0,V.jsxs)(M,{gap:`gap-3`,padding:`px-3 py-8 sm:px-5 xl:px-6`,children:[(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:_e??n.loadError}),(0,V.jsx)(l,{type:`button`,variant:`secondary`,onClick:()=>{fe(),ge()},children:n.retry})]}):(0,V.jsxs)(M,{gap:`gap-3`,padding:`px-3 py-8 sm:px-5 xl:px-6`,children:[(0,V.jsx)(ee,{title:t.settingsSections.heartbeat}),(0,V.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.needToken})]})}function Pe(e){let t=(0,z.c)(7),{h:n,activeTab:r,onChange:i}=e,a;t[0]===n?a=t[1]:(a=Te.map(e=>({id:e,label:De(n,e),icon:Q[e]})),t[0]=n,t[1]=a);let o=a,s;return t[2]!==r||t[3]!==n.tabsAriaLabel||t[4]!==o||t[5]!==i?(s=(0,V.jsx)(N,{items:o,activeTab:r,onChange:i,ariaLabel:n.tabsAriaLabel,tabIdPrefix:`heartbeat-settings-tab`,panelIdPrefix:`heartbeat-settings-panel`}),t[2]=r,t[3]=n.tabsAriaLabel,t[4]=o,t[5]=i,t[6]=s):s=t[6],s}function $(e){let t=(0,z.c)(14),{h:n,id:r,activeTab:i,children:a}=e,o;t[0]!==n||t[1]!==r?(o=De(n,r),t[0]=n,t[1]=r,t[2]=o):o=t[2];let s;t[3]!==n||t[4]!==r?(s=Oe(n,r),t[3]=n,t[4]=r,t[5]=s):s=t[5];let c;t[6]===a?c=t[7]:(c=(0,V.jsx)(`div`,{className:`space-y-4`,children:a}),t[6]=a,t[7]=c);let l;return t[8]!==i||t[9]!==r||t[10]!==o||t[11]!==s||t[12]!==c?(l=(0,V.jsx)(te,{id:r,activeTab:i,tabIdPrefix:`heartbeat-settings-tab`,panelIdPrefix:`heartbeat-settings-panel`,title:o,hint:s,children:c}),t[8]=i,t[9]=r,t[10]=o,t[11]=s,t[12]=c,t[13]=l):l=t[13],l}function Fe(e){let t=(0,z.c)(37),{h:n,form:r,update:i}=e,a;t[0]===i?a=t[1]:(a=e=>i({enabled:e.target.checked}),t[0]=i,t[1]=a);let o;t[2]!==r.enabled||t[3]!==a?(o=(0,V.jsx)(`input`,{type:`checkbox`,className:`ui-checkbox`,checked:r.enabled,onChange:a}),t[2]=r.enabled,t[3]=a,t[4]=o):o=t[4];let s;t[5]!==n.enable||t[6]!==o?(s=(0,V.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-fg`,children:[o,n.enable]}),t[5]=n.enable,t[6]=o,t[7]=s):s=t[7];let c;t[8]===i?c=t[9]:(c=e=>i({intervalMs:e}),t[8]=i,t[9]=c);let l;t[10]!==n.intervalPresets||t[11]!==n.intervalSecondsLabel?(l={secondsLabel:n.intervalSecondsLabel,presets:n.intervalPresets},t[10]=n.intervalPresets,t[11]=n.intervalSecondsLabel,t[12]=l):l=t[12];let u=`${n.intervalHintPreset} ${n.intervalHint}`,d;t[13]!==r.intervalMs||t[14]!==n.interval||t[15]!==c||t[16]!==l||t[17]!==u?(d=(0,V.jsx)(Z,{kind:`interval`,label:n.interval,valueMs:r.intervalMs,onChangeMs:c,labels:l,hint:u}),t[13]=r.intervalMs,t[14]=n.interval,t[15]=c,t[16]=l,t[17]=u,t[18]=d):d=t[18];let f;t[19]===i?f=t[20]:(f=e=>i({activeHours:e}),t[19]=i,t[20]=f);let p;t[21]!==n.activeEnd||t[22]!==n.activeStart||t[23]!==n.activeTimezone||t[24]!==n.addActiveHours||t[25]!==n.clearActiveHours?(p={start:n.activeStart,end:n.activeEnd,timezone:n.activeTimezone,add:n.addActiveHours,clear:n.clearActiveHours},t[21]=n.activeEnd,t[22]=n.activeStart,t[23]=n.activeTimezone,t[24]=n.addActiveHours,t[25]=n.clearActiveHours,t[26]=p):p=t[26];let m;t[27]!==r.activeHours||t[28]!==n.activeHoursHint||t[29]!==n.activeHoursTitle||t[30]!==f||t[31]!==p?(m=(0,V.jsx)(Z,{kind:`active-hours`,label:n.activeHoursTitle,value:r.activeHours,onChange:f,labels:p,hint:n.activeHoursHint}),t[27]=r.activeHours,t[28]=n.activeHoursHint,t[29]=n.activeHoursTitle,t[30]=f,t[31]=p,t[32]=m):m=t[32];let h;return t[33]!==m||t[34]!==s||t[35]!==d?(h=(0,V.jsxs)(V.Fragment,{children:[s,d,m]}),t[33]=m,t[34]=s,t[35]=d,t[36]=h):h=t[36],h}function Ie(e){let t=(0,z.c)(51),{h:n,cron:r,form:i,channels:s,sessionChatIds:u,onRefreshChatIds:d,update:f,inputClassName:p,selectClassName:m}=e,h;t[0]===s?h=t[1]:(h=new Set(s.map(Re)),t[0]=s,t[1]=h);let g=h,_;t[2]===i.target?_=t[3]:(_=i.target.trim(),t[2]=i.target,t[3]=_);let v=_,y=!!(v&&!g.has(v)),b;t[4]===n.deliveryHint?b=t[5]:(b=(0,V.jsx)(`p`,{className:`text-xs text-fg-subtle`,children:n.deliveryHint}),t[4]=n.deliveryHint,t[5]=b);let x;t[6]===r.channel?x=t[7]:(x=(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:r.channel}),t[6]=r.channel,t[7]=x);let S;t[8]===m?S=t[9]:(S=m(),t[8]=m,t[9]=S);let C;t[10]===f?C=t[11]:(C=e=>{f({target:e.target.value.trim(),targetChatId:``})},t[10]=f,t[11]=C);let w;t[12]===n.channelNone?w=t[13]:(w=(0,V.jsx)(o,{value:``,children:n.channelNone}),t[12]=n.channelNone,t[13]=w);let T;t[14]!==n.customChannelSuffix||t[15]!==y||t[16]!==v?(T=y?(0,V.jsxs)(o,{value:v,children:[v,` (`,n.customChannelSuffix,`)`]}):null,t[14]=n.customChannelSuffix,t[15]=y,t[16]=v,t[17]=T):T=t[17];let E;t[18]===s?E=t[19]:(E=s.map(Le),t[18]=s,t[19]=E);let D;t[20]!==S||t[21]!==C||t[22]!==w||t[23]!==T||t[24]!==E||t[25]!==v?(D=(0,V.jsxs)(a,{className:S,value:v,onChange:C,children:[w,T,E]}),t[20]=S,t[21]=C,t[22]=w,t[23]=T,t[24]=E,t[25]=v,t[26]=D):D=t[26];let k;t[27]!==D||t[28]!==x?(k=(0,V.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[x,D]}),t[27]=D,t[28]=x,t[29]=k):k=t[29];let A;t[30]!==r.enterManuallyOrSelect||t[31]!==r.lastActiveLabels||t[32]!==r.noRecentChats||t[33]!==r.noRecentChatsOption||t[34]!==r.recipient||t[35]!==r.recipientPlaceholder||t[36]!==r.refreshList||t[37]!==r.refreshRecipientHint||t[38]!==r.selectRecipient||t[39]!==i.targetChatId||t[40]!==p||t[41]!==d||t[42]!==m||t[43]!==u||t[44]!==v||t[45]!==f?(A=v?(0,V.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,V.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,V.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:r.recipient}),(0,V.jsxs)(l,{type:`button`,variant:`ghost`,className:`h-7 gap-1 px-2 text-xs`,title:r.refreshRecipientHint,onClick:d,children:[(0,V.jsx)(O,{className:`size-3.5`,strokeWidth:1.75,"aria-hidden":!0}),r.refreshList]})]}),(0,V.jsxs)(`div`,{className:`flex gap-2`,children:[(0,V.jsx)(`input`,{type:`text`,className:c(p(),`min-w-0 flex-1`),value:i.targetChatId,onChange:e=>f({targetChatId:e.target.value}),placeholder:r.recipientPlaceholder,autoComplete:`off`}),(0,V.jsxs)(a,{className:c(m(),`max-w-40 shrink-0 text-xs`),value:i.targetChatId,onChange:e=>{let t=e.target.value;t&&f({targetChatId:t})},children:[(0,V.jsx)(o,{value:``,children:r.selectRecipient}),u.length>0?u.map(e=>(0,V.jsx)(o,{value:e.chatId,children:P(e,r.lastActiveLabels)},`${e.channel}-${e.chatId}`)):(0,V.jsx)(o,{value:``,disabled:!0,children:r.noRecentChatsOption})]})]}),(0,V.jsx)(`p`,{className:`text-xs text-fg-muted`,children:u.length>0?r.enterManuallyOrSelect:r.noRecentChats})]}):null,t[30]=r.enterManuallyOrSelect,t[31]=r.lastActiveLabels,t[32]=r.noRecentChats,t[33]=r.noRecentChatsOption,t[34]=r.recipient,t[35]=r.recipientPlaceholder,t[36]=r.refreshList,t[37]=r.refreshRecipientHint,t[38]=r.selectRecipient,t[39]=i.targetChatId,t[40]=p,t[41]=d,t[42]=m,t[43]=u,t[44]=v,t[45]=f,t[46]=A):A=t[46];let j;return t[47]!==k||t[48]!==A||t[49]!==b?(j=(0,V.jsxs)(V.Fragment,{children:[b,k,A]}),t[47]=k,t[48]=A,t[49]=b,t[50]=j):j=t[50],j}function Le(e){return(0,V.jsxs)(o,{value:e.name,disabled:!e.enabled,children:[e.name,` `,e.enabled?``:`(disabled)`]},e.name)}function Re(e){return e.name}function ze(e){let t=(0,z.c)(65),{h:n,form:r,update:i,inputClassName:a}=e,o;t[0]===i?o=t[1]:(o=e=>i({includeSystemPromptSection:e.target.checked}),t[0]=i,t[1]=o);let s;t[2]!==r.includeSystemPromptSection||t[3]!==o?(s=(0,V.jsx)(`input`,{type:`checkbox`,className:`ui-checkbox mt-0.5`,checked:r.includeSystemPromptSection,onChange:o}),t[2]=r.includeSystemPromptSection,t[3]=o,t[4]=s):s=t[4];let l;t[5]===n.includeSystemPromptSectionHint?l=t[6]:(l=(0,V.jsx)(`span`,{className:`mt-1 block text-xs text-fg-subtle`,children:n.includeSystemPromptSectionHint}),t[5]=n.includeSystemPromptSectionHint,t[6]=l);let u;t[7]!==n.includeSystemPromptSection||t[8]!==l?(u=(0,V.jsxs)(`span`,{children:[n.includeSystemPromptSection,l]}),t[7]=n.includeSystemPromptSection,t[8]=l,t[9]=u):u=t[9];let d;t[10]!==s||t[11]!==u?(d=(0,V.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 text-sm text-fg`,children:[s,u]}),t[10]=s,t[11]=u,t[12]=d):d=t[12];let f;t[13]===n.prompt?f=t[14]:(f=(0,V.jsx)(`div`,{className:`mb-1 text-sm font-medium text-fg`,children:n.prompt}),t[13]=n.prompt,t[14]=f);let p;t[15]===a?p=t[16]:(p=c(a(),`min-h-36 resize-y font-mono text-xs`),t[15]=a,t[16]=p);let m;t[17]===i?m=t[18]:(m=e=>i({prompt:e.target.value}),t[17]=i,t[18]=m);let h;t[19]!==r.prompt||t[20]!==n.promptPlaceholder||t[21]!==p||t[22]!==m?(h=(0,V.jsx)(`textarea`,{className:p,value:r.prompt,onChange:m,placeholder:n.promptPlaceholder}),t[19]=r.prompt,t[20]=n.promptPlaceholder,t[21]=p,t[22]=m,t[23]=h):h=t[23];let g;t[24]===n.promptHint?g=t[25]:(g=(0,V.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:n.promptHint}),t[24]=n.promptHint,t[25]=g);let _;t[26]!==g||t[27]!==f||t[28]!==h?(_=(0,V.jsxs)(`div`,{children:[f,h,g]}),t[26]=g,t[27]=f,t[28]=h,t[29]=_):_=t[29];let v;t[30]===n.ackMaxChars?v=t[31]:(v=(0,V.jsx)(`div`,{className:`mb-1 text-sm font-medium text-fg`,children:n.ackMaxChars}),t[30]=n.ackMaxChars,t[31]=v);let y;t[32]===a?y=t[33]:(y=a(),t[32]=a,t[33]=y);let b=r.ackMaxChars===``?``:r.ackMaxChars,x;t[34]===i?x=t[35]:(x=e=>{let t=e.target.value;if(t===``){i({ackMaxChars:``});return}let n=parseInt(t,10);i({ackMaxChars:Number.isFinite(n)?n:``})},t[34]=i,t[35]=x);let S;t[36]!==n.ackDefaultPlaceholder||t[37]!==y||t[38]!==b||t[39]!==x?(S=(0,V.jsx)(`input`,{type:`number`,min:1,className:y,value:b,onChange:x,placeholder:n.ackDefaultPlaceholder}),t[36]=n.ackDefaultPlaceholder,t[37]=y,t[38]=b,t[39]=x,t[40]=S):S=t[40];let C;t[41]===n.ackMaxCharsHint?C=t[42]:(C=(0,V.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:n.ackMaxCharsHint}),t[41]=n.ackMaxCharsHint,t[42]=C);let w;t[43]!==v||t[44]!==S||t[45]!==C?(w=(0,V.jsxs)(`div`,{children:[v,S,C]}),t[43]=v,t[44]=S,t[45]=C,t[46]=w):w=t[46];let T;t[47]===i?T=t[48]:(T=e=>i({isolatedSession:e.target.checked}),t[47]=i,t[48]=T);let E;t[49]!==r.isolatedSession||t[50]!==T?(E=(0,V.jsx)(`input`,{type:`checkbox`,className:`ui-checkbox mt-0.5`,checked:r.isolatedSession,onChange:T}),t[49]=r.isolatedSession,t[50]=T,t[51]=E):E=t[51];let D;t[52]===n.isolatedSessionHint?D=t[53]:(D=(0,V.jsx)(`span`,{className:`mt-1 block text-xs text-fg-subtle`,children:n.isolatedSessionHint}),t[52]=n.isolatedSessionHint,t[53]=D);let O;t[54]!==n.isolatedSession||t[55]!==D?(O=(0,V.jsxs)(`span`,{children:[n.isolatedSession,D]}),t[54]=n.isolatedSession,t[55]=D,t[56]=O):O=t[56];let k;t[57]!==E||t[58]!==O?(k=(0,V.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 text-sm text-fg`,children:[E,O]}),t[57]=E,t[58]=O,t[59]=k):k=t[59];let A;return t[60]!==_||t[61]!==w||t[62]!==k||t[63]!==d?(A=(0,V.jsxs)(V.Fragment,{children:[d,_,w,k]}),t[60]=_,t[61]=w,t[62]=k,t[63]=d,t[64]=A):A=t[64],A}export{Ne as HeartbeatSettingsPanel};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{l as i}from"./chunk-KS7C4IRE-BaASWQor.js";import{t as a}from"./plus-Q2yW6OE7.js";import{t as o}from"./x-B_N4OPjy.js";import{t as s}from"./button-CSEbl4zT.js";import{t as c}from"./messages-CbbZKEfO.js";import{n as l}from"./locale-store-BIOMAhmR.js";import{a as u,i as d,n as f,o as p,r as m,s as h,t as g}from"./dist-BPoKqzeH.js";import{$o as _,B as v,Ca as y,F as b,G as x,N as S,R as C,U as w,W as T,Z as E,la as D,nl as O,ol as k,q as A,tl as j,zr as M}from"./index-BIBAmAjw.js";var N=n(),P=e(t(),1),F=r();function I(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function L(){let e=(0,N.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,F.jsxs)(`div`,{className:`space-y-8`,"aria-busy":!0,children:[(0,F.jsxs)(`div`,{className:`space-y-3`,children:[(0,F.jsx)(D,{className:`h-10 w-3/5 rounded-xl`}),(0,F.jsx)(D,{className:`h-5 w-4/5 rounded-lg`})]}),(0,F.jsx)(D,{className:`h-64 rounded-2xl`}),(0,F.jsx)(D,{className:`h-32 rounded-xl`})]}),e[0]=t):t=e[0],t}function R(e){let t=(0,N.c)(33),{item:n,busy:r,recommendationLabel:i,dueLabel:a,failureLabel:o,locale:c,onAction:l}=e,u;t[0]!==a||t[1]!==n.dueAt||t[2]!==c?(u=n.dueAt?`${a} ${M(new Date(n.dueAt),c)}`:null,t[0]=a,t[1]=n.dueAt,t[2]=c,t[3]=u):u=t[3];let d=u,f=n.kind===`failure`?o:d,p;t[4]===f?p=t[5]:(p=f?(0,F.jsxs)(`div`,{className:`mb-2 flex items-center gap-2 text-xs font-medium text-warning`,children:[(0,F.jsx)(`span`,{className:`size-1.5 rounded-full bg-warning`,"aria-hidden":!0}),(0,F.jsx)(`span`,{children:f})]}):null,t[4]=f,t[5]=p);let m=!n.openAction,h;t[6]!==n.id||t[7]!==n.openAction||t[8]!==l?(h=()=>n.openAction&&l(n.openAction,n.id),t[6]=n.id,t[7]=n.openAction,t[8]=l,t[9]=h):h=t[9];let g;t[10]===n.title?g=t[11]:(g=(0,F.jsx)(`span`,{className:`block text-lg font-semibold leading-7 tracking-tight text-fg`,children:n.title}),t[10]=n.title,t[11]=g);let _;t[12]===n.summary?_=t[13]:(_=(0,F.jsx)(`span`,{className:`mt-1.5 block text-sm leading-6 text-fg-muted`,children:n.summary}),t[12]=n.summary,t[13]=_);let v;t[14]!==m||t[15]!==h||t[16]!==g||t[17]!==_?(v=(0,F.jsxs)(`button`,{type:`button`,className:`block w-full text-left outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-accent`,disabled:m,onClick:h,children:[g,_]}),t[14]=m,t[15]=h,t[16]=g,t[17]=_,t[18]=v):v=t[18];let y;t[19]!==n.recommendation||t[20]!==i?(y=n.recommendation?(0,F.jsxs)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:[(0,F.jsxs)(`span`,{className:`font-semibold text-fg`,children:[i,`:`]}),n.recommendation]}):null,t[19]=n.recommendation,t[20]=i,t[21]=y):y=t[21];let b;t[22]!==r||t[23]!==n.id||t[24]!==n.primaryAction||t[25]!==n.secondaryActions||t[26]!==l?(b=n.primaryAction||n.secondaryActions.length>0?(0,F.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[n.primaryAction?(0,F.jsx)(s,{type:`button`,variant:`primary`,className:`h-9 rounded-lg px-3.5 text-xs`,disabled:r,onClick:()=>l(n.primaryAction,n.id),children:n.primaryAction.label}):null,n.secondaryActions.map(e=>(0,F.jsx)(s,{type:`button`,variant:`secondary`,className:`h-9 rounded-lg px-3.5 text-xs shadow-none`,disabled:r,onClick:()=>l(e,n.id),children:e.label},`${e.type}:${e.label}`))]}):null,t[22]=r,t[23]=n.id,t[24]=n.primaryAction,t[25]=n.secondaryActions,t[26]=l,t[27]=b):b=t[27];let x;return t[28]!==p||t[29]!==v||t[30]!==y||t[31]!==b?(x=(0,F.jsxs)(`article`,{className:`px-5 py-5 sm:px-6 sm:py-6`,children:[p,v,y,b]}),t[28]=p,t[29]=v,t[30]=y,t[31]=b,t[32]=x):x=t[32],x}function ee(e){let t=(0,N.c)(26),{item:n,onAction:r}=e,i;t[0]===n.kind?i=t[1]:(i=n.kind===`scheduled`?(0,F.jsx)(k,{className:`size-4`,"aria-hidden":!0}):(0,F.jsx)(`span`,{className:`size-1.5 rounded-full bg-success`,"aria-hidden":!0}),t[0]=n.kind,t[1]=i);let a=i,o=!n.openAction,s;t[2]!==n.id||t[3]!==n.openAction||t[4]!==r?(s=()=>n.openAction&&r(n.openAction,n.id),t[2]=n.id,t[3]=n.openAction,t[4]=r,t[5]=s):s=t[5];let c;t[6]===a?c=t[7]:(c=(0,F.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center text-fg-subtle`,children:a}),t[6]=a,t[7]=c);let l;t[8]===n.title?l=t[9]:(l=(0,F.jsx)(`span`,{className:`block truncate text-sm font-medium text-fg`,children:n.title}),t[8]=n.title,t[9]=l);let u;t[10]===n.summary?u=t[11]:(u=(0,F.jsx)(`span`,{className:`mt-0.5 block truncate text-xs text-fg-muted`,children:n.summary}),t[10]=n.summary,t[11]=u);let d;t[12]!==l||t[13]!==u?(d=(0,F.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[l,u]}),t[12]=l,t[13]=u,t[14]=d):d=t[14];let f;t[15]===n.statusLabel?f=t[16]:(f=n.statusLabel?(0,F.jsx)(`span`,{className:`shrink-0 text-xs text-fg-subtle`,children:n.statusLabel}):null,t[15]=n.statusLabel,t[16]=f);let p;t[17]===n.openAction?p=t[18]:(p=n.openAction?(0,F.jsx)(O,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0}):null,t[17]=n.openAction,t[18]=p);let m;return t[19]!==o||t[20]!==s||t[21]!==c||t[22]!==d||t[23]!==f||t[24]!==p?(m=(0,F.jsxs)(`button`,{type:`button`,className:`flex min-h-16 w-full items-center gap-3 py-3 text-left outline-none hover:text-fg focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-accent`,disabled:o,onClick:s,children:[c,d,f,p]}),t[19]=o,t[20]=s,t[21]=c,t[22]=d,t[23]=f,t[24]=p,t[25]=m):m=t[25],m}function te(e){let t=(0,N.c)(74),{item:n,labels:r,busy:i,onDecide:a,onSnooze:o,onDismiss:c,onInstruct:l}=e,[u,d]=(0,P.useState)(``),f=n.judgment,p;t[0]===n.title?p=t[1]:(p=(0,F.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:n.title}),t[0]=n.title,t[1]=p);let m;t[2]===n.detail?m=t[3]:(m=(0,F.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-fg-muted`,children:n.detail}),t[2]=n.detail,t[3]=m);let h;t[4]!==p||t[5]!==m?(h=(0,F.jsxs)(`div`,{className:`min-w-0`,children:[p,m]}),t[4]=p,t[5]=m,t[6]=h):h=t[6];let g;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,F.jsx)(_,{className:`size-4 shrink-0 text-accent`,"aria-hidden":!0}),t[7]=g):g=t[7];let v;t[8]===h?v=t[9]:(v=(0,F.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[h,g]}),t[8]=h,t[9]=v);let y;t[10]!==f.whyNow||t[11]!==r.whyNow?(y=[r.whyNow,f.whyNow],t[10]=f.whyNow,t[11]=r.whyNow,t[12]=y):y=t[12];let b;t[13]!==f.impact||t[14]!==r.impact?(b=[r.impact,f.impact],t[13]=f.impact,t[14]=r.impact,t[15]=b):b=t[15];let x;t[16]!==f.workDone||t[17]!==r.workDone?(x=[r.workDone,f.workDone],t[16]=f.workDone,t[17]=r.workDone,t[18]=x):x=t[18];let S;t[19]!==f.recommendation||t[20]!==r.recommendation?(S=[r.recommendation,f.recommendation],t[19]=f.recommendation,t[20]=r.recommendation,t[21]=S):S=t[21];let C;t[22]!==y||t[23]!==b||t[24]!==x||t[25]!==S?(C=(0,F.jsx)(`div`,{className:`mt-4 grid gap-3 sm:grid-cols-2`,children:[y,b,x,S].map(z)}),t[22]=y,t[23]=b,t[24]=x,t[25]=S,t[26]=C):C=t[26];let w;t[27]!==f.actionError||t[28]!==f.actionStatus||t[29]!==f.dispositionReason||t[30]!==f.proposedActionTitle||t[31]!==r.actionStates||t[32]!==r.policyReason||t[33]!==r.proposedAction?(w=f.dispositionReason?(0,F.jsxs)(`div`,{className:`mt-3 rounded-lg border border-edge-subtle bg-surface-panel/70 p-3 text-xs leading-5`,children:[(0,F.jsx)(`p`,{className:`font-medium text-fg-subtle`,children:r.policyReason}),(0,F.jsx)(`p`,{className:`mt-1 text-fg-muted`,children:f.dispositionReason}),f.proposedActionTitle?(0,F.jsxs)(`p`,{className:`mt-2 text-fg`,children:[(0,F.jsxs)(`span`,{className:`font-medium`,children:[r.proposedAction,`:`]}),f.proposedActionTitle,f.actionStatus?` · ${r.actionStates[f.actionStatus]}`:``]}):null,f.actionError?(0,F.jsx)(`p`,{className:`mt-1 text-danger`,children:f.actionError}):null]}):null,t[27]=f.actionError,t[28]=f.actionStatus,t[29]=f.dispositionReason,t[30]=f.proposedActionTitle,t[31]=r.actionStates,t[32]=r.policyReason,t[33]=r.proposedAction,t[34]=w):w=t[34];let T;t[35]!==i||t[36]!==f.decision||t[37]!==a?(T=f.decision?(0,F.jsxs)(`div`,{className:`mt-4`,children:[(0,F.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:f.decision.question}),(0,F.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:f.decision.options.map(e=>(0,F.jsxs)(s,{type:`button`,variant:`secondary`,className:`h-auto min-h-9 flex-col items-start px-3 py-2 text-left`,disabled:i,title:e.consequence,onClick:()=>a(e.id),children:[(0,F.jsx)(`span`,{children:e.label}),(0,F.jsx)(`span`,{className:`text-[10px] font-normal text-fg-muted`,children:e.consequence})]},e.id))})]}):null,t[35]=i,t[36]=f.decision,t[37]=a,t[38]=T):T=t[38];let E;t[39]!==i||t[40]!==r.snooze||t[41]!==o?(E=(0,F.jsx)(s,{type:`button`,variant:`ghost`,className:`h-8 px-2`,disabled:i,onClick:o,children:r.snooze}),t[39]=i,t[40]=r.snooze,t[41]=o,t[42]=E):E=t[42];let D;t[43]!==i||t[44]!==r.dismiss||t[45]!==c?(D=(0,F.jsx)(s,{type:`button`,variant:`ghost`,className:`h-8 px-2`,disabled:i,onClick:c,children:r.dismiss}),t[43]=i,t[44]=r.dismiss,t[45]=c,t[46]=D):D=t[46];let O;t[47]!==E||t[48]!==D?(O=(0,F.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2 border-t border-edge-subtle pt-3`,children:[E,D]}),t[47]=E,t[48]=D,t[49]=O):O=t[49];let k;t[50]!==u||t[51]!==l?(k=e=>{e.preventDefault();let t=u.trim();t&&(l(t),d(``))},t[50]=u,t[51]=l,t[52]=k):k=t[52];let A;t[53]===Symbol.for(`react.memo_cache_sentinel`)?(A=e=>d(e.target.value),t[53]=A):A=t[53];let j;t[54]!==u||t[55]!==r.feedbackPlaceholder?(j=(0,F.jsx)(`input`,{className:`min-w-0 flex-1 rounded-lg border border-edge bg-surface-base px-3 py-2 text-xs text-fg outline-none focus:border-accent`,value:u,onChange:A,placeholder:r.feedbackPlaceholder}),t[54]=u,t[55]=r.feedbackPlaceholder,t[56]=j):j=t[56];let M;t[57]!==i||t[58]!==u?(M=i||!u.trim(),t[57]=i,t[58]=u,t[59]=M):M=t[59];let I;t[60]!==r.applyFeedback||t[61]!==M?(I=(0,F.jsx)(s,{type:`submit`,variant:`secondary`,className:`h-9 px-3`,disabled:M,children:r.applyFeedback}),t[60]=r.applyFeedback,t[61]=M,t[62]=I):I=t[62];let L;t[63]!==k||t[64]!==j||t[65]!==I?(L=(0,F.jsxs)(`form`,{className:`mt-3 flex gap-2`,onSubmit:k,children:[j,I]}),t[63]=k,t[64]=j,t[65]=I,t[66]=L):L=t[66];let R;return t[67]!==C||t[68]!==w||t[69]!==T||t[70]!==O||t[71]!==L||t[72]!==v?(R=(0,F.jsxs)(`article`,{className:`rounded-xl border border-accent/25 bg-accent-soft/15 p-4`,children:[v,C,w,T,O,L]}),t[67]=C,t[68]=w,t[69]=T,t[70]=O,t[71]=L,t[72]=v,t[73]=R):R=t[73],R}function z(e){let[t,n]=e;return(0,F.jsxs)(`div`,{className:`rounded-lg bg-surface-panel/80 p-3`,children:[(0,F.jsx)(`p`,{className:`text-[11px] font-medium text-fg-subtle`,children:t}),(0,F.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg`,children:n})]},t)}function B(){let e=l(e=>e.language),t=c(e).projectsPage,n=E(e),r=i(),D=y(e=>e.setPageHeader),O=y(e=>e.clearPageHeader),[k,M]=(0,P.useState)(null),[N,z]=(0,P.useState)(!0),[B,V]=(0,P.useState)(null),[ne,H]=(0,P.useState)(!1),[U,W]=(0,P.useState)(``),[re,G]=(0,P.useState)(null),[ie,K]=(0,P.useState)(null),[q,J]=(0,P.useState)(null),Y=(0,P.useCallback)(async(t=!1)=>{t&&z(!0),V(null);try{M(await v(e))}catch(e){V(e instanceof Error?e.message:String(e))}finally{z(!1)}},[e]);(0,P.useEffect)(()=>{Y(!0)},[Y]),(0,P.useEffect)(()=>{let e,t=t=>{e!==void 0&&window.clearTimeout(e),e=window.setTimeout(()=>{e=void 0,Y()},t)},n=()=>t(100),r=()=>t(750),i=[`session-created`,`agent-run-started`,`agent-run-ended`,`automation-run-completed`,`workflow-run-updated`,`workflow-run-error`],a=[`session-updated`,`session-transcript-updated`];return i.forEach(e=>window.addEventListener(e,n)),a.forEach(e=>window.addEventListener(e,r)),()=>{i.forEach(e=>window.removeEventListener(e,n)),a.forEach(e=>window.removeEventListener(e,r)),e!==void 0&&window.clearTimeout(e)}},[Y]);let ae=(0,P.useCallback)(e=>{e.preventDefault();let t=S(U);t&&(H(!1),W(``),r(t))},[U,r]),X=!!(k&&k.needsUser.length===0&&k.backgroundCount===0),oe=(0,P.useMemo)(()=>X?null:(0,F.jsxs)(s,{type:`button`,variant:`primary`,className:`h-9 rounded-lg`,onClick:()=>H(!0),children:[(0,F.jsx)(a,{className:`size-4`,"aria-hidden":!0}),n.newWork]}),[n.newWork,X]),Z=(0,P.useCallback)(async(e,t)=>{G(e.id),V(null);try{await t(),await Y(),J(null)}catch(e){V(e instanceof Error?e.message:String(e))}finally{G(null)}},[Y]),se=(0,P.useCallback)((e,t)=>{if(e.type===`open`){r(e.href);return}if(e.type===`review_judgment`){let t=k?.decisions.find(t=>t.judgment?.inboxItemId===e.itemId);t&&J(t);return}K(t),V(null),(async()=>{try{e.type===`connector_decision`?await T({kind:`connector_approval`,approvalId:e.approvalId},e.decision):e.type===`retry_run`?await x({kind:e.subjectKind,runId:e.runId}):e.type===`acknowledge_run`&&await b({kind:e.subjectKind,runId:e.runId}),await Y()}catch(e){V(e instanceof Error?e.message:String(e))}finally{K(null)}})()},[k?.decisions,Y,r]);(0,P.useLayoutEffect)(()=>(D({startExtra:null,main:(0,F.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:t.title}),end:oe}),()=>O()),[O,oe,D,t.title]);let Q=k?.needsUser.length??0,$=k?.backgroundCount??0,ce=Q>0?I(t.home.attentionTitle,{count:Q}):$>0?t.home.clearTitle:t.home.idleTitle,le=Q>0?$>0?I(t.home.attentionIntroWithBackground,{count:$}):t.home.attentionIntro:$>0?I(t.home.clearIntro,{count:$}):t.home.idleIntro;return(0,F.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[920px] flex-1 flex-col px-4 py-8 sm:px-6 lg:px-8 lg:py-12`,children:[(0,F.jsx)(g,{open:ne,onOpenChange:H,children:(0,F.jsxs)(p,{children:[(0,F.jsx)(u,{className:`fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,F.jsxs)(m,{className:`fixed left-1/2 top-1/2 z-[90] flex h-[min(31rem,calc(100dvh-1.5rem))] w-[min(36rem,calc(100vw-1.5rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-panel shadow-float focus:outline-none`,children:[(0,F.jsxs)(`div`,{className:`flex shrink-0 items-start gap-4 border-b border-edge px-5 py-4`,children:[(0,F.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,F.jsx)(h,{className:`text-base font-semibold text-fg`,children:n.dialogTitle}),(0,F.jsx)(d,{className:`mt-1 text-sm leading-5 text-fg-muted`,children:n.dialogDescription})]}),(0,F.jsx)(f,{asChild:!0,children:(0,F.jsx)(s,{type:`button`,variant:`ghost`,className:`-mr-2 -mt-1 size-8 shrink-0 rounded-lg p-0`,title:t.cancel,"aria-label":t.cancel,children:(0,F.jsx)(o,{className:`size-4`,"aria-hidden":!0})})})]}),(0,F.jsxs)(`form`,{onSubmit:ae,className:`flex min-h-0 flex-1 flex-col`,children:[(0,F.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-y-auto px-5 py-4`,children:[(0,F.jsx)(`label`,{htmlFor:`new-conversation-intent`,className:`mb-2 shrink-0 text-sm font-medium text-fg`,children:n.intentLabel}),(0,F.jsx)(`textarea`,{id:`new-conversation-intent`,className:`min-h-32 w-full flex-1 resize-none rounded-xl border border-edge bg-surface-base p-3 text-sm font-normal leading-6 text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`,value:U,onChange:e=>W(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},placeholder:n.intentPlaceholder,maxLength:12e3,autoFocus:!0}),(0,F.jsxs)(`div`,{className:`mt-2 flex shrink-0 items-center justify-between gap-3 text-[11px] text-fg-subtle`,children:[(0,F.jsx)(`span`,{children:t.home.submitShortcut}),(0,F.jsxs)(`span`,{className:`tabular-nums`,children:[U.length.toLocaleString(),` / `,12e3.toLocaleString()]})]})]}),(0,F.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,F.jsx)(f,{asChild:!0,children:(0,F.jsx)(s,{type:`button`,variant:`ghost`,children:t.cancel})}),(0,F.jsxs)(s,{type:`submit`,variant:`primary`,className:`min-w-32`,disabled:!U.trim(),children:[(0,F.jsx)(_,{className:`size-4`,"aria-hidden":!0}),n.submit]})]})]})]})]})}),(0,F.jsx)(g,{open:!!q,onOpenChange:e=>{e||J(null)},children:(0,F.jsxs)(p,{children:[(0,F.jsx)(u,{className:`fixed inset-0 z-[80] bg-scrim backdrop-blur-[2px]`}),(0,F.jsxs)(m,{className:`fixed left-1/2 top-1/2 z-[90] flex h-[min(42rem,calc(100dvh-1.5rem))] w-[min(42rem,calc(100vw-1.5rem))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-xl border border-edge bg-surface-panel shadow-float focus:outline-none`,children:[(0,F.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-3 border-b border-edge px-4 py-3`,children:[(0,F.jsx)(h,{className:`text-sm font-semibold text-fg`,children:n.needsAttention}),(0,F.jsx)(f,{asChild:!0,children:(0,F.jsx)(s,{type:`button`,variant:`ghost`,className:`size-8 p-0`,title:t.cancel,"aria-label":t.cancel,children:(0,F.jsx)(o,{className:`size-4`,"aria-hidden":!0})})})]}),(0,F.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4`,children:q?.judgment?(0,F.jsx)(te,{item:q,labels:n,busy:re===q.id,onDecide:e=>void Z(q,()=>C(q.judgment.inboxItemId,e)),onSnooze:()=>void Z(q,()=>A(q.judgment.inboxItemId,`snoozed`)),onDismiss:()=>void Z(q,()=>A(q.judgment.inboxItemId,`resolved`)),onInstruct:e=>void Z(q,()=>w(q.judgment.inboxItemId,e))}):null})]})]})}),B?(0,F.jsxs)(`div`,{className:`mb-6 flex items-center justify-between gap-3 rounded-xl border border-danger/25 bg-danger-soft px-4 py-3 text-sm text-danger`,children:[(0,F.jsx)(`span`,{children:B}),(0,F.jsx)(s,{type:`button`,variant:`ghost`,className:`h-8 px-2`,onClick:()=>void Y(),children:t.home.retry})]}):null,N?(0,F.jsx)(L,{}):k?(0,F.jsxs)(`div`,{className:X?`flex min-h-[calc(100dvh-10rem)] items-center justify-center pb-[12vh]`:``,children:[(0,F.jsxs)(`section`,{className:X?`w-full max-w-2xl text-center`:`max-w-3xl`,children:[(0,F.jsx)(`h2`,{className:`text-3xl font-semibold tracking-[-0.035em] text-fg sm:text-[2.5rem] sm:leading-[1.12]`,children:ce}),(0,F.jsx)(`p`,{className:X?`mx-auto mt-3 max-w-xl text-sm leading-6 text-fg-muted sm:text-base sm:leading-7`:`mt-3 max-w-2xl text-sm leading-6 text-fg-muted sm:text-base sm:leading-7`,children:le}),X?(0,F.jsxs)(`form`,{onSubmit:ae,className:`mx-auto mt-8 w-full max-w-[640px] rounded-2xl border border-edge bg-surface-base p-2 text-left shadow-surface transition-colors focus-within:border-accent focus-within:ring-2 focus-within:ring-accent/15`,children:[(0,F.jsx)(`label`,{htmlFor:`idle-conversation-intent`,className:`sr-only`,children:n.intentLabel}),(0,F.jsx)(`textarea`,{id:`idle-conversation-intent`,className:`min-h-24 w-full resize-none bg-transparent px-3 py-2 text-sm leading-6 text-fg outline-none placeholder:text-fg-subtle`,value:U,onChange:e=>W(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),e.currentTarget.form?.requestSubmit())},placeholder:n.intentPlaceholder,maxLength:12e3}),(0,F.jsxs)(`div`,{className:`flex items-center justify-end gap-3 border-t border-edge-subtle px-1 pt-2 sm:justify-between`,children:[(0,F.jsx)(`span`,{className:`hidden px-2 text-[11px] text-fg-subtle sm:inline`,children:t.home.submitShortcut}),(0,F.jsxs)(s,{type:`submit`,variant:`primary`,className:`h-9 rounded-lg px-3.5 text-xs`,disabled:!U.trim(),children:[(0,F.jsx)(_,{className:`size-3.5`,"aria-hidden":!0}),n.newWork]})]})]}):null]}),k.needsUser.length>0?(0,F.jsxs)(`section`,{className:`mt-10`,"aria-labelledby":`home-needs-user-title`,children:[(0,F.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 px-1`,children:[(0,F.jsx)(j,{className:`size-4 text-warning`,"aria-hidden":!0}),(0,F.jsx)(`h2`,{id:`home-needs-user-title`,className:`text-sm font-semibold text-fg`,children:t.home.needsUserTitle})]}),(0,F.jsx)(`div`,{className:`divide-y divide-edge-subtle overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base`,children:k.needsUser.map(r=>(0,F.jsx)(R,{item:r,busy:ie===r.id,recommendationLabel:t.home.recommendationLabel,dueLabel:t.home.dueLabel,failureLabel:n.runAttention,locale:e,onAction:se},r.id))})]}):null,k.background.length>0?(0,F.jsxs)(`section`,{className:`mt-10`,"aria-labelledby":`home-background-title`,children:[(0,F.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-1`,children:[(0,F.jsx)(`h2`,{id:`home-background-title`,className:`text-sm font-semibold text-fg`,children:t.home.backgroundTitle}),(0,F.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:I(t.home.backgroundCount,{count:k.backgroundCount})})]}),(0,F.jsx)(`div`,{className:`mt-2 divide-y divide-edge-subtle border-y border-edge-subtle`,children:k.background.map(e=>(0,F.jsx)(ee,{item:e,onAction:se},e.id))}),(0,F.jsx)(`p`,{className:`mt-5 text-xs leading-5 text-fg-subtle`,children:t.home.autoArchiveNote})]}):null]}):null]})}export{B as HomePage};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{d as i,l as a,t as o}from"./chunk-KS7C4IRE-BaASWQor.js";import{t as s}from"./check-DUBLcKHA.js";import{t as c}from"./external-link-DjqjBmc3.js";import{t as l}from"./loader-circle-CifKLtgG.js";import{t as u}from"./x-B_N4OPjy.js";import{t as d}from"./button-CSEbl4zT.js";import{n as f,r as p}from"./locale-store-BIOMAhmR.js";import{a as m,i as h,n as g,o as _,r as v,s as y,t as b}from"./dist-BPoKqzeH.js";import{a as ee,i as x}from"./vendor-swr-BIWyz7Rc.js";import{$c as S,$o as C,As as w,Bs as T,Ca as te,Dc as ne,Hc as re,Kc as E,Ro as ie,Sl as ae,Ui as oe,Vr as se,Yi as ce,bs as le,is as ue,la as D,ms as de,ps as fe,uc as pe,xa as me,xc as he,ys as ge,zo as _e}from"./index-BIBAmAjw.js";import{a as ve,c as ye,l as be,n as xe,o as Se,r as Ce,s as we,t as Te}from"./api-BjN2udFQ.js";var O=e(t(),1),Ee=`build-xopc-local-app`;function De(e){return(e.routing?.agentId??e.agentId??``).trim().toLowerCase()}function Oe(e){return e.find(e=>De(e)===`coder`)??null}function ke(e,t){let n=new URLSearchParams({skill:Ee}),r=t?.trim();return r&&n.set(`draft`,r),`/chat/${encodeURIComponent(e)}?${n.toString()}`}var k=new Set([`document`,`content`,`interaction`,`criteria`]),Ae=new Set([`passed`,`failed`,`skipped`]);function je(e){if(!e||typeof e!=`object`)return null;let t=e;if(t.source!==`xopc-local-app-preview`||t.version!==1)return null;if(t.type===`ready`)return{type:`ready`,detail:{}};if(t.type===`criteria`&&t.detail&&typeof t.detail==`object`){let e=t.detail;if(e.status!==`passed`&&e.status!==`failed`||!Array.isArray(e.scenarios)||e.scenarios.length>10)return null;let n=e.scenarios.map(e=>{if(!e||typeof e!=`object`)return null;let t=e;return typeof t.id!=`string`||!t.id.trim()||t.id.length>80||typeof t.name!=`string`||!t.name.trim()||t.name.length>120||t.status!==`passed`&&t.status!==`failed`||typeof t.message!=`string`||!t.message.trim()?null:{id:t.id,name:t.name,status:t.status,message:t.message.slice(0,500),failureKind:`scenario`}});if(n.some(e=>e===null))return null;let r=typeof e.scenarioCount==`number`&&Number.isInteger(e.scenarioCount)&&e.scenarioCount>=0&&e.scenarioCount<=10?e.scenarioCount:n.length;return{type:`criteria`,detail:{status:e.status,scenarioCount:r,scenarios:n}}}if(t.type===`acceptance`&&t.detail&&typeof t.detail==`object`){let e=t.detail;if(e.status!==`passed`&&e.status!==`failed`||!Array.isArray(e.checks))return null;let n=e.checks.slice(0,10).map(e=>{if(!e||typeof e!=`object`)return null;let t=e;return!k.has(t.id)||!Ae.has(t.status)||typeof t.message!=`string`||!t.message.trim()?null:{id:t.id,status:t.status,message:t.message.slice(0,500)}});if(!n.length||n.some(e=>e===null))return null;let r=typeof e.interactiveCount==`number`&&Number.isFinite(e.interactiveCount)&&e.interactiveCount>=0?Math.min(Math.floor(e.interactiveCount),1e4):0;return{type:`acceptance`,detail:{status:e.status,checks:n,interactiveCount:r}}}if(t.type!==`error`||!t.detail||typeof t.detail!=`object`)return null;let n=t.detail;return n.kind!==`script_error`&&n.kind!==`unhandled_rejection`||typeof n.message!=`string`||!n.message.trim()?null:{type:`error`,detail:{kind:n.kind,message:n.message.slice(0,500),filename:typeof n.filename==`string`?n.filename.slice(0,500):void 0,line:typeof n.line==`number`?n.line:void 0,column:typeof n.column==`number`?n.column:void 0}}}function Me(e){return e?.checks.filter(e=>e.status===`failed`).map(e=>e.message)??[]}function Ne(e){let t=e.filename?` (${e.filename}${e.line?`:${e.line}${e.column?`:${e.column}`:``}`:``})`:``;return`${e.message}${t}`}var A=Object.freeze({source:`xopc-local-app-host`,version:1,type:`connect`});function Pe(e,t){let n=null,r=()=>{n?.close();let r=new MessageChannel;n=r.port1,n.onmessage=e=>t(e.data),n.start(),e.contentWindow?.postMessage(A,`*`,[r.port2])};return e.addEventListener(`load`,r),r(),()=>{e.removeEventListener(`load`,r),n?.close()}}var Fe=n(),j=r();function Ie(e){let t=(0,Fe.c)(36),{scenarios:n,results:r,runningTarget:i,zh:a,onRunAll:o,onRunScenario:s,onAskCoder:c}=e;if(!n.length)return null;let u=a?`产品场景`:`Product scenarios`,f;t[0]===u?f=t[1]:(f=(0,j.jsx)(`p`,{className:`text-xs font-medium text-fg`,children:u}),t[0]=u,t[1]=f);let p=a?`${n.length} 个关键用户路径`:`${n.length} critical user journey${n.length===1?``:`s`}`,m;t[2]===p?m=t[3]:(m=(0,j.jsx)(`p`,{className:`mt-0.5 text-[11px] text-fg-subtle`,children:p}),t[2]=p,t[3]=m);let h;t[4]!==f||t[5]!==m?(h=(0,j.jsxs)(`div`,{children:[f,m]}),t[4]=f,t[5]=m,t[6]=h):h=t[6];let g=i!==null,_;t[7]===i?_=t[8]:(_=i===`all`?(0,j.jsx)(l,{className:`size-3 animate-spin`}):(0,j.jsx)(de,{className:`size-3`}),t[7]=i,t[8]=_);let v=a?`全部重跑`:`Run all`,y;t[9]!==o||t[10]!==g||t[11]!==_||t[12]!==v?(y=(0,j.jsxs)(d,{variant:`ghost`,className:`h-7 rounded-lg px-2 text-[11px]`,onClick:o,disabled:g,children:[_,v]}),t[9]=o,t[10]=g,t[11]=_,t[12]=v,t[13]=y):y=t[13];let b;t[14]!==h||t[15]!==y?(b=(0,j.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[h,y]}),t[14]=h,t[15]=y,t[16]=b):b=t[16];let ee=a?`产品场景验收结果`:`Product scenario acceptance results`,x;if(t[17]!==c||t[18]!==s||t[19]!==r||t[20]!==i||t[21]!==n||t[22]!==a){let e;t[24]!==c||t[25]!==s||t[26]!==r||t[27]!==i||t[28]!==a?(e=e=>{let t=r[e.id],n=i===`all`||i===e.id?`running`:t?.status??`pending`;return(0,j.jsx)(`li`,{className:`py-2.5 first:pt-1`,children:(0,j.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,j.jsx)(`span`,{className:`mt-0.5 shrink-0`,"aria-hidden":!0,children:n===`running`?(0,j.jsx)(l,{className:`size-3.5 animate-spin text-accent`}):n===`passed`?(0,j.jsx)(S,{className:`size-3.5 text-success`}):n===`failed`?(0,j.jsx)(E,{className:`size-3.5 text-danger`}):(0,j.jsx)(re,{className:`size-3.5 text-fg-subtle`})}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsx)(`p`,{className:`truncate text-[11px] font-medium text-fg`,children:e.name}),(0,j.jsx)(`p`,{className:`mt-0.5 text-[10px] text-fg-subtle`,children:a?`${e.stepCount} 个步骤`:`${e.stepCount} step${e.stepCount===1?``:`s`}`})]}),(0,j.jsx)(d,{variant:`ghost`,className:`size-7 shrink-0 rounded-lg p-0`,onClick:()=>s(e.id),disabled:i!==null,"aria-label":a?`重跑${e.name}`:`Rerun ${e.name}`,title:a?`单独重跑`:`Rerun scenario`,children:(0,j.jsx)(de,{className:`size-3`})})]}),n===`running`?(0,j.jsx)(`p`,{className:`mt-1 text-[11px] leading-4 text-fg-muted`,children:a?`正在隔离预览中执行…`:`Running in an isolated preview…`}):t?.status===`failed`?(0,j.jsxs)(`div`,{className:`mt-1.5`,children:[(0,j.jsx)(`p`,{className:`text-[11px] leading-4 text-danger`,children:t.message}),(0,j.jsxs)(d,{variant:`ghost`,className:`mt-1 h-7 rounded-lg px-2 text-[11px] text-danger hover:text-danger`,onClick:()=>c(e,t),children:[(0,j.jsx)(T,{className:`size-3`}),a?`让 Coder 修复`:`Ask Coder to fix`]})]}):t?.status===`passed`?(0,j.jsx)(`p`,{className:`mt-1 text-[11px] leading-4 text-fg-muted`,children:a?`场景已通过`:`Scenario passed`}):(0,j.jsx)(`p`,{className:`mt-1 text-[11px] leading-4 text-fg-muted`,children:a?`等待运行`:`Waiting to run`})]})]})},e.id)},t[24]=c,t[25]=s,t[26]=r,t[27]=i,t[28]=a,t[29]=e):e=t[29],x=n.map(e),t[17]=c,t[18]=s,t[19]=r,t[20]=i,t[21]=n,t[22]=a,t[23]=x}else x=t[23];let C;t[30]!==ee||t[31]!==x?(C=(0,j.jsx)(`ul`,{className:`mt-2 divide-y divide-edge-subtle`,"aria-label":ee,children:x}),t[30]=ee,t[31]=x,t[32]=C):C=t[32];let w;return t[33]!==b||t[34]!==C?(w=(0,j.jsxs)(`div`,{className:`mt-3 border-t border-edge-subtle pt-3`,children:[b,C]}),t[33]=b,t[34]=C,t[35]=w):w=t[35],w}var Le=`allow-scripts allow-forms`;function Re(e,t){return se(e,t)}function ze(e,t,n){return!!(t&&n&&e.sourceHash===t&&e.status===n.status&&e.interactiveCount===n.interactiveCount&&JSON.stringify(e.checks)===JSON.stringify(n.checks))}function M(){let{appId:e}=i(),t=e===`new`,n=f(e=>e.language)===`zh`,r=f(e=>e.language),re=a(),{mutate:E}=ee(),se=me(e=>e.moveToFront),Ee=te(e=>e.setPageHeader),De=te(e=>e.clearPageHeader),{data:k,isLoading:Ae,error:A,mutate:Fe}=x(!t&&e?[`local-app`,e]:null,()=>xe(e)),{data:M,isLoading:Be,mutate:Ve}=x(!t&&e?[`local-app-validation`,e]:null,()=>be(e)),[He,Ue]=(0,O.useState)(``),[We,Ge]=(0,O.useState)(``),[N,P]=(0,O.useState)(!1),[Ke,F]=(0,O.useState)(null),[qe,Je]=(0,O.useState)(!1),[Ye,Xe]=(0,O.useState)(!1),[I,Ze]=(0,O.useState)(0),[Qe,$e]=(0,O.useState)(``),[L,et]=(0,O.useState)(!1),[tt,nt]=(0,O.useState)(!1),[R,z]=(0,O.useState)(`booting`),[rt,it]=(0,O.useState)(null),[B,at]=(0,O.useState)(null),[V,ot]=(0,O.useState)({}),[H,st]=(0,O.useState)(`all`),[U,W]=(0,O.useState)(0),[ct,lt]=(0,O.useState)(0),[ut,dt]=(0,O.useState)(null),[G,ft]=(0,O.useState)(null),[pt,mt]=(0,O.useState)([]),[ht,gt]=(0,O.useState)(!1),_t=(0,O.useRef)(new Set),K=(0,O.useRef)(null),vt=(0,O.useRef)(null),yt=(0,O.useRef)(null),q=(0,O.useRef)(null),J=(0,O.useRef)(``),Y=M?.acceptanceScenarios??[],X=(0,O.useMemo)(()=>{if(!Y.length)return null;let e=Y.map(e=>V[e.id]).filter(e=>!!e);return e.length===Y.length?{status:e.some(e=>e.status===`failed`)?`failed`:`passed`,scenarioCount:Y.length,scenarios:e}:null},[Y,V]),Z=(0,O.useMemo)(()=>{if(!B)return null;if(!M?.acceptanceScenarioCount)return B;if(!X)return null;let e=X.scenarios.find(e=>e.status===`failed`),t={id:`criteria`,status:X.status,message:e?`${e.name}: ${e.message}`:`${X.scenarioCount} product scenario(s) passed`},n=[...B.checks,t];return{status:n.some(e=>e.status===`failed`)?`failed`:`passed`,checks:n,interactiveCount:B.interactiveCount}},[B,X,M?.acceptanceScenarioCount]),bt=(0,O.useCallback)(async(e,t)=>{let n=Oe(await ce(e.projectId))??await oe(e.projectId,`coder`);_t.current.add(n.key),re(ke(n.key,t))},[re]),xt=(0,O.useCallback)(async(e=!0)=>{if(!k)return null;nt(!0);try{let t=await be(k.id);return await Ve(t,{revalidate:!1}),e&&(q.current=t.sourceHash??null,st(`all`),W(0),Ze(e=>e+1)),t}catch(e){return F(e instanceof Error?e.message:String(e)),null}finally{nt(!1)}},[k,Ve]);(0,O.useEffect)(()=>{if(!k)return;let e=!1;ce(k.projectId).then(t=>{e||(_t.current=new Set(t.filter(e=>(e.routing?.agentId??e.agentId)?.toLowerCase()===`coder`).map(e=>e.key)))}).catch(()=>{});let t=e=>{let t=e.detail?.key;!t||!_t.current.has(t)||(K.current!==null&&window.clearTimeout(K.current),K.current=window.setTimeout(()=>{K.current=null,xt(!0)},750))};return window.addEventListener(`session-transcript-updated`,t),()=>{e=!0,window.removeEventListener(`session-transcript-updated`,t),K.current!==null&&window.clearTimeout(K.current)}},[k,xt]),(0,O.useEffect)(()=>{mt(k?.acceptanceRuns??[])},[k?.acceptanceRuns]),(0,O.useEffect)(()=>{q.current=null},[k?.id]),(0,O.useEffect)(()=>{!M?.sourceHash||q.current||(q.current=M.sourceHash,st(`all`),W(0),Ze(e=>e+1))},[M?.sourceHash]),(0,O.useLayoutEffect)(()=>{if(!k)return;z(`booting`),it(null),at(null),ft(null),gt(!1),J.current=``;let e=window.setTimeout(()=>z(e=>e===`failed`?e:`timeout`),7e3),t=vt.current?Pe(vt.current,t=>{let n=je(t);if(n){if(n.type===`ready`){z(e=>e===`failed`?e:`healthy`);return}if(n.type===`acceptance`){window.clearTimeout(e),at(n.detail),ft(q.current);return}n.type!==`criteria`&&(window.clearTimeout(e),it(n.detail),z(`failed`))}}):()=>{};return()=>{window.clearTimeout(e),t()}},[k,I]),(0,O.useLayoutEffect)(()=>{if(!k||M?.status!==`healthy`||!Y.length){dt(null);return}let e=H===`all`?Y[U]:Y.find(e=>e.id===H),t=e?[e]:[];if(!t.length)return;dt(H),ot(e=>{if(H===`all`&&U===0)return{};let t={...e};return delete t[H],t});let r=!1,i=e=>{ot(n=>{let r={...n};for(let n of t)r[n.id]={id:n.id,name:n.name,status:`failed`,message:e,failureKind:`runner`};return r}),dt(null)},a=window.setTimeout(()=>i(r?n?`场景在 10 秒内未完成。`:`Scenario did not finish within 10 seconds.`:n?`验收执行器未能连接,请重新验收。`:`The acceptance runner did not connect. Run acceptance again.`),1e4),o=yt.current?Pe(yt.current,e=>{let t=je(e);t&&(t.type===`ready`?r=!0:t.type===`criteria`?(window.clearTimeout(a),ot(e=>{let n={...e};for(let e of t.detail.scenarios)(n[e.id]?.status!==`failed`||e.status===`failed`)&&(n[e.id]=e);return n}),H===`all`&&U+1<Y.length?(W(e=>e+1),lt(e=>e+1)):dt(null)):t.type===`error`&&(window.clearTimeout(a),i(Ne(t.detail))))}):()=>{};return()=>{window.clearTimeout(a),o()}},[Y,k,ct,H,U,I,M?.status,n]),(0,O.useEffect)(()=>{if(!k||!Z||!G||G!==M?.sourceHash)return;let e=`${k.id}:${G}:${JSON.stringify(Z)}`;J.current!==e&&(J.current=e,gt(!0),ve(k.id,G,Z).then(t=>{J.current===e&&mt(e=>[t,...e.filter(e=>e.id!==t.id)].toSorted((e,t)=>t.createdAt-e.createdAt).slice(0,20))}).catch(t=>{J.current===e&&(J.current=``,F(t instanceof Error?t.message:String(t)))}).finally(()=>{J.current===e&>(!1)}))},[Z,G,k,M?.sourceHash]);let Q=(0,O.useCallback)(async e=>{if(k){et(!0),F(null);try{await bt(k,e)}catch(e){F(e instanceof Error?e.message:String(e)),et(!1)}}},[k,bt]);(0,O.useLayoutEffect)(()=>(Ee({startExtra:(0,j.jsx)(o,{to:`/local-apps`,className:`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover hover:text-fg`,"aria-label":n?`返回本地应用`:`Back to local apps`,children:(0,j.jsx)(ae,{className:`size-4`})}),main:(0,j.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:k?.name||(n?`创建本地应用`:`Create local app`)}),end:k?(0,j.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,j.jsx)(d,{asChild:!0,variant:`ghost`,className:`h-9`,children:(0,j.jsxs)(o,{to:`/projects/${encodeURIComponent(k.projectId)}`,children:[(0,j.jsx)(he,{className:`size-4`}),`Project`]})}),(0,j.jsxs)(d,{className:`h-9`,onClick:()=>void Q(),disabled:L,children:[L?(0,j.jsx)(l,{className:`size-4 animate-spin`}):(0,j.jsx)(T,{className:`size-4`}),n?`继续开发`:`Continue building`]})]}):null}),()=>De()),[k,L,De,Q,Ee,n]);async function St(e){e.preventDefault(),P(!0),F(null);try{let e=await Te({name:He,idea:We});await E(`local-apps-list`);let t=n?`请基于 APP_BRIEF.md 完成这个本地应用的首版。先检查现有草稿,再实现最小可用版本并运行校验;完成后告诉我可以如何预览。`:`Build the first usable version of this local app from APP_BRIEF.md. Inspect the existing draft, implement the smallest useful version, run validation, and tell me how to preview it.`;try{await bt(e,t)}catch{re(`/local-apps/${encodeURIComponent(e.id)}`,{replace:!0})}}catch(e){F(e instanceof Error?e.message:String(e))}finally{P(!1)}}async function Ct(){if(k){P(!0),F(null);try{let e=await Ce(k.id);await Fe(e,{revalidate:!1}),await Ve(),await Promise.all([E(`local-apps-list`),E(`gateway-extensions-list`)]),se(`ext:${e.extensionId}:app`),Je(!1)}catch(e){F(e instanceof Error?e.message:String(e))}finally{P(!1)}}}async function wt(e,t=!1){P(!0),F(null);try{let n=await e();return await Fe(n,{revalidate:!1}),await Ve(),await Promise.all([E(`local-apps-list`),E(`gateway-extensions-list`)]),t&&se(`ext:${n.extensionId}:app`),!0}catch(e){return F(e instanceof Error?e.message:String(e)),!1}finally{P(!1)}}async function Tt(e){k&&await wt(()=>we(k.id,e),e)}async function Et(e){k&&await wt(()=>Se(k.id,e),!0)}async function Dt(){k&&await wt(()=>ye(k.id))&&Xe(!1)}function Ot(){let e=Array.from(new Set([...M?.issues.map(e=>e.message)??[],...rt?[Ne(rt)]:[],...Z?.checks.filter(e=>e.status===`failed`&&e.id!==`criteria`).map(e=>e.message)??[],...Object.values(V).filter(e=>e.status===`failed`).map(e=>`${e.name}: ${e.failureKind===`runner`?`[验收执行器] `:``}${e.message}`),...R===`timeout`?[n?`预览在 7 秒内未完成启动,可能存在白屏或阻塞。`:`The preview did not finish booting within 7 seconds and may be blank or blocked.`]:[]]));if(!e.length)return;let t=e.map(e=>`- ${e}`).join(`
|
|
2
|
-
`);Q(n?`请修复当前本地应用草稿的校验问题,保持扩展 ID 和已安装版本不变。先复现并判断问题来自应用行为还是验收执行器,不要通过弱化断言绕过问题。修复后运行完整校验。\n\n${t}`:`Fix the current local-app draft validation issues without changing the extension id or installed release. Reproduce first and determine whether each issue comes from app behavior or the acceptance runner; do not weaken assertions to bypass it. Run the full validation afterward.\n\n${t}`)}function kt(){st(`all`),W(0),lt(e=>e+1)}function At(e){st(e),W(0),lt(e=>e+1)}function jt(e,t){let r=t.failureKind===`runner`?n?`验收执行器`:`acceptance runner`:n?`产品场景`:`product scenario`;Q(n?`请修复本地应用的${r}问题“${e.name}”。当前失败信息:${t.message}\n\n保持扩展 ID 和场景原意不变;先复现并判断问题来自应用行为还是验收执行器,不要通过弱化断言绕过问题。修复后运行完整校验。`:`Fix the local-app ${r} issue "${e.name}". Current failure: ${t.message}\n\nPreserve the extension id and scenario intent. Reproduce first and determine whether the issue comes from app behavior or the runner; do not weaken assertions to bypass it. Run the full validation afterward.`)}let Mt=pt.findIndex(e=>ze(e,G,Z)),$=Mt>=0?pt[Mt]:null,Nt=Mt>=0?pt[Mt+1]??null:pt[0]??null,Pt=Me(Z),Ft=Nt?Nt.checks.filter(e=>e.status===`failed`).map(e=>e.message):[],It=M?.status===`failed`||R===`failed`||R===`timeout`||Z?.status===`failed`||Object.values(V).some(e=>e.status===`failed`),Lt=Ft.filter(e=>!Pt.includes(e)).length;async function Rt(){let e=await xt(!1);if(e?.status===`healthy`&&e.sourceHash!==G){q.current=e.sourceHash??null,W(0),Ze(e=>e+1);return}e?.status===`healthy`&&R===`healthy`&&Z?.status===`passed`&&$&&$.sourceHash===e.sourceHash&&Je(!0)}return t?(0,j.jsx)(`div`,{className:`flex min-h-0 flex-1 bg-surface-panel p-3 sm:p-5 xl:p-6`,children:(0,j.jsxs)(`div`,{className:`mx-auto grid w-full max-w-6xl overflow-hidden rounded-2xl border border-edge-subtle bg-surface-base shadow-surface lg:grid-cols-[minmax(280px,0.8fr)_minmax(0,1.5fr)]`,children:[(0,j.jsxs)(`form`,{onSubmit:St,className:`flex flex-col border-b border-edge-subtle p-5 lg:border-b-0 lg:border-r`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.14em] text-accent`,children:[(0,j.jsx)(C,{className:`size-4`}),n?`告诉 Coder 你的想法`:`Tell Coder your idea`]}),(0,j.jsx)(`h2`,{className:`mt-4 text-xl font-semibold tracking-tight text-fg`,children:n?`你想创建什么?`:`What do you want to create?`}),(0,j.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:n?`我们会建立一个 Coder Project,并把应用上下文和开发 Skill 带入对话。`:`We will create a Coder Project and carry the app context and development skill into chat.`}),(0,j.jsxs)(`label`,{className:`mt-6 text-xs font-medium text-fg-muted`,children:[n?`应用名称`:`App name`,(0,j.jsx)(`input`,{value:He,onChange:e=>Ue(e.target.value),required:!0,className:`mt-2 w-full rounded-xl border border-edge bg-surface-panel px-3 py-2.5 text-sm text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,placeholder:n?`例如:阅读清单`:`e.g. Reading list`})]}),(0,j.jsxs)(`label`,{className:`mt-4 text-xs font-medium text-fg-muted`,children:[n?`描述你的想法`:`Describe your idea`,(0,j.jsx)(`textarea`,{value:We,onChange:e=>Ge(e.target.value),required:!0,rows:7,className:`mt-2 w-full resize-none rounded-xl border border-edge bg-surface-panel px-3 py-2.5 text-sm leading-6 text-fg focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,placeholder:n?`我想要一个可以记录待读文章、标记进度并按主题筛选的小工具…`:`I want a small tool that tracks articles, reading progress, and topics…`})]}),Ke?(0,j.jsx)(`p`,{className:`mt-3 text-sm text-danger`,role:`alert`,children:Ke}):null,(0,j.jsxs)(d,{type:`submit`,variant:`primary`,className:`mt-5 h-10`,disabled:N||!He.trim()||!We.trim(),children:[N?(0,j.jsx)(l,{className:`size-4 animate-spin`}):(0,j.jsx)(T,{className:`size-4`}),n?`进入 Coder 对话`:`Continue with Coder`]})]}),(0,j.jsx)(`div`,{className:`hidden min-h-[620px] place-items-center bg-surface-panel p-8 lg:grid`,children:(0,j.jsxs)(`div`,{className:`max-w-md text-center`,children:[(0,j.jsx)(`div`,{className:`mx-auto flex size-16 items-center justify-center rounded-2xl border border-edge bg-surface-base text-accent shadow-surface`,children:(0,j.jsx)(w,{className:`size-7`})}),(0,j.jsx)(`h3`,{className:`mt-5 text-base font-semibold text-fg`,children:n?`创建后,这里就是实时预览`:`Your live preview appears here`}),(0,j.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:n?`你可以先体验草稿,再决定是否把它添加到左侧导航。`:`Try the draft first, then decide whether to add it to the sidebar.`})]})})]})}):Ae?(0,j.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-3 bg-surface-panel p-3 lg:grid-cols-[280px_minmax(0,1fr)_260px]`,children:[(0,j.jsx)(D,{className:`rounded-xl`}),(0,j.jsx)(D,{className:`rounded-xl`}),(0,j.jsx)(D,{className:`rounded-xl`})]}):A||!k?(0,j.jsx)(`div`,{className:`m-6 rounded-xl border border-danger/30 bg-danger-soft p-4 text-sm text-danger`,children:A instanceof Error?A.message:n?`找不到应用`:`App not found`}):(0,j.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-3 overflow-hidden bg-surface-panel p-3 lg:grid-cols-[280px_minmax(0,1fr)_300px]`,children:[(0,j.jsxs)(`aside`,{className:`min-h-0 overflow-y-auto rounded-xl border border-edge-subtle bg-surface-base p-4 shadow-surface`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.12em] text-accent`,children:[(0,j.jsx)(C,{className:`size-4`}),n?`创作对话`:`Build conversation`]}),(0,j.jsx)(`div`,{className:`mt-4 rounded-xl bg-surface-panel p-3 text-sm leading-6 text-fg`,children:k.idea}),(0,j.jsxs)(`div`,{className:`mt-4 rounded-xl bg-accent-soft p-3`,children:[(0,j.jsxs)(`p`,{className:`flex items-center gap-2 text-sm font-medium text-accent-fg`,children:[(0,j.jsx)(S,{className:`size-4`}),n?`草稿已准备好`:`Draft is ready`]}),(0,j.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:n?`继续迭代会进入对应 Project,由 Coder 读取应用上下文和专属 skill。`:`Continue in the Project where Coder has the app context and dedicated skill.`})]}),(0,j.jsxs)(`form`,{className:`mt-5`,onSubmit:e=>{e.preventDefault(),Q(Qe)},children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`local-app-change-request`,children:n?`下一步想改什么?`:`What should change next?`}),(0,j.jsx)(`textarea`,{id:`local-app-change-request`,value:Qe,onChange:e=>$e(e.target.value),rows:4,className:`mt-2 w-full resize-none rounded-xl border border-edge bg-surface-panel px-3 py-2.5 text-sm leading-6 text-fg outline-none focus-visible:ring-2 focus-visible:ring-accent`,placeholder:n?`例如:增加月视图,并支持按标签筛选`:`e.g. Add a monthly view and tag filters`}),(0,j.jsxs)(d,{type:`submit`,className:`mt-2 w-full`,disabled:L||!Qe.trim(),children:[L?(0,j.jsx)(l,{className:`size-4 animate-spin`}):(0,j.jsx)(T,{className:`size-4`}),n?`让 Coder 修改`:`Ask Coder to update`]})]}),(0,j.jsxs)(d,{variant:`ghost`,className:`mt-2 w-full`,onClick:()=>void Q(),disabled:L,children:[(0,j.jsx)(he,{className:`size-4`}),n?`打开已有开发对话`:`Open development chat`]})]}),(0,j.jsxs)(`section`,{className:`flex min-h-0 flex-col overflow-hidden rounded-xl border border-edge-subtle bg-surface-base shadow-surface`,children:[(0,j.jsxs)(`div`,{className:`flex h-11 shrink-0 items-center justify-between border-b border-edge-subtle px-3`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-fg-muted`,children:[(0,j.jsx)(`span`,{className:`size-2 rounded-full ${M?.status===`failed`||R===`failed`||R===`timeout`||Z?.status===`failed`?`bg-danger`:M?.status===`healthy`&&R===`healthy`&&Z?.status===`passed`&&$?.sourceHash===M.sourceHash&&!ht?`bg-success`:`bg-fg-subtle`}`}),R===`failed`||R===`timeout`?n?`预览运行异常`:`Preview runtime issue`:M?.status===`failed`||Z?.status===`failed`?n?`自动验收未通过`:`Acceptance needs attention`:R===`booting`||!Z?n?`自动验收中`:`Running acceptance`:ht||$?.sourceHash!==M?.sourceHash?n?`正在保存验收快照`:`Saving acceptance snapshot`:n?`草稿已通过验收`:`Draft accepted`]}),(0,j.jsxs)(d,{variant:`ghost`,className:`h-8 px-2`,onClick:()=>void xt(!0),disabled:tt,children:[tt?(0,j.jsx)(l,{className:`size-3.5 animate-spin`}):(0,j.jsx)(de,{className:`size-3.5`}),n?`重新验收`:`Run again`]})]}),(0,j.jsx)(`iframe`,{ref:vt,title:`${k.name} preview`,src:p(k.previewUrl),sandbox:Le,className:`min-h-0 w-full flex-1 bg-white`,onError:()=>{it({kind:`script_error`,message:`Preview document failed to load`}),z(`failed`)}},I),M?.status===`healthy`&&M.acceptanceScenarioCount>0?(0,j.jsx)(`iframe`,{ref:yt,title:`${k.name} acceptance runner`,src:`${p(k.previewUrl)}?xopcAcceptance=1&xopcScenario=${encodeURIComponent(H===`all`?Y[U]?.id??``:H)}`,sandbox:Le,"aria-hidden":`true`,tabIndex:-1,className:`pointer-events-none fixed left-[-200vw] top-0 h-[720px] w-[1024px] opacity-0`},`criteria-${I}-${ct}-${U}`):null]}),(0,j.jsxs)(`aside`,{className:`min-h-0 overflow-y-auto rounded-xl border border-edge-subtle bg-surface-base p-4 shadow-surface`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n?`发布状态`:`Release status`}),(0,j.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:k.installationState===`not_installed`?n?`尚未安装`:`Not installed`:k.enabled?n?`版本 ${k.activeVersion} 正在使用`:`Version ${k.activeVersion} is active`:n?`已禁用,版本仍保留`:`Disabled, release retained`})]}),(0,j.jsx)(`span`,{className:`mt-1 size-2.5 rounded-full ${k.enabled?`bg-success`:`bg-fg-subtle`}`,"aria-hidden":!0})]}),(0,j.jsxs)(`dl`,{className:`mt-4 grid grid-cols-2 gap-3 text-xs`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{className:`text-fg-subtle`,children:n?`当前草稿`:`Draft`}),(0,j.jsxs)(`dd`,{className:`mt-1 font-medium text-fg`,children:[`v`,k.draftVersion]})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{className:`text-fg-subtle`,children:n?`已安装`:`Installed`}),(0,j.jsx)(`dd`,{className:`mt-1 font-medium text-fg`,children:k.activeVersion?`v${k.activeVersion}`:`—`})]})]}),(0,j.jsxs)(`div`,{className:`mt-5 border-t border-edge-subtle pt-4`,children:[(0,j.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,j.jsxs)(`h3`,{className:`flex items-center gap-2 text-xs font-semibold text-fg`,children:[(0,j.jsx)(ne,{className:`size-4 text-accent`}),n?`草稿检查`:`Draft checks`]}),Be||tt?(0,j.jsx)(l,{className:`size-3.5 animate-spin text-fg-muted`}):M?.status===`healthy`?(0,j.jsx)(S,{className:`size-4 text-success`}):(0,j.jsx)(ie,{className:`size-4 text-danger`})]}),M?(0,j.jsxs)(`div`,{className:`mt-2`,children:[(0,j.jsx)(`p`,{className:`text-xs leading-5 ${M.status===`healthy`?`text-fg-muted`:`text-danger`}`,children:M.status===`healthy`?M.hasDraftChanges?n?`${M.changedFileCount} 个文件有改动,可以安装新版本。`:`${M.changedFileCount} changed files are ready for a new release.`:n?`草稿与当前安装版本一致。`:`Draft matches the installed release.`:M.issues[0]?.message}),M.changedFiles.length?(0,j.jsx)(`ul`,{className:`mt-2 space-y-1`,children:M.changedFiles.slice(0,4).map(e=>(0,j.jsxs)(`li`,{className:`flex min-w-0 items-center gap-2 text-[11px] text-fg-muted`,children:[(0,j.jsx)(`span`,{className:`w-4 shrink-0 font-medium text-fg-subtle`,children:e.status===`added`?`+`:e.status===`deleted`?`−`:`•`}),(0,j.jsx)(`span`,{className:`truncate font-mono`,children:e.path})]},e.path))}):null,M.changedFileCount>4?(0,j.jsx)(`p`,{className:`mt-1 text-[10px] text-fg-subtle`,children:n?`还有 ${M.changedFileCount-4} 个文件`:`${M.changedFileCount-4} more files`}):null,(0,j.jsxs)(`div`,{className:`mt-3 border-t border-edge-subtle pt-3`,children:[(0,j.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium text-fg`,children:[(0,j.jsx)(`span`,{className:`size-2 rounded-full ${R===`healthy`?`bg-success`:R===`booting`?`bg-fg-subtle`:`bg-danger`}`}),n?`预览运行`:`Preview runtime`]}),(0,j.jsx)(`p`,{className:`mt-1 text-xs leading-5 ${R===`failed`||R===`timeout`?`text-danger`:`text-fg-muted`}`,children:rt?Ne(rt):R===`healthy`?n?`已成功启动,未发现未捕获异常。`:`Started successfully with no uncaught errors.`:R===`timeout`?n?`7 秒内未完成启动,可能出现白屏或阻塞。`:`Did not finish booting within 7 seconds.`:n?`正在等待应用启动。`:`Waiting for the app to start.`})]}),(0,j.jsxs)(`div`,{className:`mt-3 border-t border-edge-subtle pt-3`,children:[(0,j.jsxs)(`p`,{className:`flex items-center gap-2 text-xs font-medium text-fg`,children:[(0,j.jsx)(`span`,{className:`size-2 rounded-full ${Z?.status===`passed`?`bg-success`:Z?.status===`failed`?`bg-danger`:`bg-fg-subtle`}`}),n?`自动验收`:`Automatic acceptance`]}),Z?(0,j.jsx)(`ul`,{className:`mt-2 space-y-1.5`,children:Z.checks.map(e=>(0,j.jsxs)(`li`,{className:`flex items-start gap-2 text-[11px] leading-4 ${e.status===`failed`?`text-danger`:`text-fg-muted`}`,children:[(0,j.jsx)(`span`,{className:`mt-1 size-1.5 shrink-0 rounded-full ${e.status===`failed`?`bg-danger`:e.status===`passed`?`bg-success`:`bg-fg-subtle`}`}),(0,j.jsx)(`span`,{children:e.message})]},e.id))}):(0,j.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:M?.acceptanceScenarioCount?n?`正在检查页面基础质量和 ${M.acceptanceScenarioCount} 个产品场景。`:`Checking page quality and ${M.acceptanceScenarioCount} product scenario(s).`:n?`正在检查页面内容和基础交互。`:`Checking rendered content and basic interaction.`}),ht?(0,j.jsxs)(`p`,{className:`mt-2 flex items-center gap-2 text-[11px] text-fg-muted`,children:[(0,j.jsx)(l,{className:`size-3 animate-spin`}),n?`正在保存当前源码对应的验收快照…`:`Saving the acceptance snapshot for this source…`]}):$?(0,j.jsx)(`p`,{className:`mt-2 text-[11px] leading-4 text-fg-muted`,children:Nt?n?`相比上次:已修复 ${Lt} 项,仍有 ${Pt.length} 项。`:`Since the previous run: ${Lt} fixed, ${Pt.length} remaining.`:n?`首个验收快照已保存。`:`First acceptance snapshot saved.`}):null,(0,j.jsx)(Ie,{scenarios:Y,results:V,runningTarget:ut,zh:n,onRunAll:kt,onRunScenario:At,onAskCoder:jt})]}),It?(0,j.jsxs)(d,{className:`mt-3 w-full`,onClick:Ot,disabled:L,children:[(0,j.jsx)(T,{className:`size-4`}),n?`让 Coder 修复`:`Ask Coder to fix`]}):null]}):(0,j.jsx)(D,{className:`mt-2 h-12 rounded-lg`})]}),(0,j.jsxs)(`div`,{className:`mt-5 border-t border-edge-subtle pt-4`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-semibold text-fg`,children:[(0,j.jsx)(ue,{className:`size-4 text-accent`}),n?`权限`:`Permissions`]}),(0,j.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:(M?.permissions??k.permissions).map(e=>(0,j.jsx)(`span`,{className:`rounded-md bg-surface-hover px-2 py-1 text-[11px] text-fg-muted`,children:e},e))})]}),(0,j.jsx)(d,{variant:`primary`,className:`mt-5 w-full`,onClick:()=>void Rt(),disabled:N||Be||tt||ht||M?.status===`failed`||R!==`healthy`||Z?.status!==`passed`||!$||$.sourceHash!==M?.sourceHash||k.installationState===`installed`&&M?.hasDraftChanges===!1,children:k.installationState===`installed`?n?`安装当前更新`:`Install current update`:n?`添加到左侧导航`:`Add to sidebar`}),k.installationState===`installed`?(0,j.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,j.jsxs)(d,{className:`min-w-0 flex-1`,onClick:()=>void Tt(!k.enabled),disabled:N,children:[k.enabled?(0,j.jsx)(le,{className:`size-4`}):(0,j.jsx)(ge,{className:`size-4`}),k.enabled?n?`禁用`:`Disable`:n?`启用`:`Enable`]}),(0,j.jsx)(d,{variant:`ghost`,className:`text-danger hover:text-danger`,onClick:()=>Xe(!0),disabled:N,"aria-label":n?`卸载应用`:`Uninstall app`,children:(0,j.jsx)(_e,{className:`size-4`})})]}):null,(0,j.jsxs)(`div`,{className:`mt-6 border-t border-edge-subtle pt-4`,children:[(0,j.jsxs)(`h3`,{className:`flex items-center gap-2 text-xs font-semibold text-fg`,children:[(0,j.jsx)(pe,{className:`size-4`}),n?`版本历史`:`Release history`]}),k.releases.length?(0,j.jsx)(`ul`,{className:`mt-2 divide-y divide-edge-subtle`,children:k.releases.map(e=>(0,j.jsxs)(`li`,{className:`flex items-center justify-between gap-3 py-2.5`,children:[(0,j.jsxs)(`div`,{className:`min-w-0`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs font-medium text-fg`,children:[`v`,e.version,e.isActive?(0,j.jsx)(`span`,{className:`rounded-full bg-success-soft px-1.5 py-0.5 text-[10px] text-success`,children:n?`当前`:`Active`}):null]}),(0,j.jsx)(`p`,{className:`mt-0.5 truncate text-[10px] text-fg-subtle`,children:Re(e.createdAt,r)})]}),e.isActive?null:(0,j.jsxs)(d,{variant:`ghost`,className:`h-7 px-2 text-xs`,onClick:()=>void Et(e.id),disabled:N,children:[(0,j.jsx)(fe,{className:`size-3.5`}),n?`恢复`:`Restore`]})]},e.id))}):(0,j.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-fg-muted`,children:n?`安装首个版本后,可以从这里恢复。`:`Install the first version to enable recovery.`})]}),Ke?(0,j.jsx)(`p`,{className:`mt-3 text-xs leading-5 text-danger`,role:`alert`,children:Ke}):null]}),(0,j.jsx)(b,{open:qe,onOpenChange:Je,children:(0,j.jsxs)(_,{children:[(0,j.jsx)(m,{className:`fixed inset-0 z-50 bg-black/45`}),(0,j.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-50 flex h-[min(560px,calc(100vh-32px))] w-[min(520px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-base shadow-2xl focus:outline-none`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between border-b border-edge-subtle p-5`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(y,{className:`text-base font-semibold text-fg`,children:n?`确认安装到 XOPC`:`Confirm installation`}),(0,j.jsx)(h,{className:`mt-1 text-sm text-fg-muted`,children:n?`当前草稿会成为左侧导航中的可用版本。`:`The current draft will become the version available in the sidebar.`})]}),(0,j.jsx)(g,{className:`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover`,children:(0,j.jsx)(u,{className:`size-4`})})]}),(0,j.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,j.jsxs)(`div`,{className:`rounded-xl border border-edge-subtle bg-surface-panel p-4`,children:[(0,j.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:k.name}),(0,j.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:k.extensionId})]}),(0,j.jsx)(`h4`,{className:`mt-5 text-xs font-semibold text-fg`,children:n?`本次迭代`:`This iteration`}),(0,j.jsxs)(`dl`,{className:`mt-2 grid grid-cols-2 gap-3 text-xs`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{className:`text-fg-subtle`,children:n?`文件变化`:`Changed files`}),(0,j.jsx)(`dd`,{className:`mt-1 font-medium text-fg`,children:M?.changedFileCount??0})]}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`dt`,{className:`text-fg-subtle`,children:n?`自动验收`:`Acceptance`}),(0,j.jsxs)(`dd`,{className:`mt-1 flex items-center gap-1.5 font-medium text-success`,children:[(0,j.jsx)(S,{className:`size-3.5`}),n?`已通过并保存`:`Passed and saved`]})]})]}),M?.changedFiles.length?(0,j.jsx)(`ul`,{className:`mt-3 space-y-1`,children:M.changedFiles.slice(0,5).map(e=>(0,j.jsxs)(`li`,{className:`flex min-w-0 items-center gap-2 text-[11px] text-fg-muted`,children:[(0,j.jsx)(`span`,{className:`w-4 shrink-0 font-medium text-fg-subtle`,children:e.status===`added`?`+`:e.status===`deleted`?`−`:`•`}),(0,j.jsx)(`span`,{className:`truncate font-mono`,children:e.path})]},e.path))}):null,(0,j.jsx)(`h4`,{className:`mt-5 text-xs font-semibold text-fg`,children:n?`请求权限`:`Requested permissions`}),(0,j.jsx)(`ul`,{className:`mt-2 space-y-2`,children:(M?.permissions??k.permissions).map(e=>(0,j.jsxs)(`li`,{className:`flex items-center gap-2 text-sm text-fg`,children:[(0,j.jsx)(s,{className:`size-4 text-success`}),e,k.installationState===`installed`&&M?.permissionDelta.added.includes(e)?(0,j.jsx)(`span`,{className:`rounded-full bg-warning-soft px-2 py-0.5 text-[10px] text-warning`,children:n?`新增`:`New`}):null]},e))}),k.installationState===`installed`&&M?.permissionDelta.added.length?(0,j.jsx)(`p`,{className:`mt-4 rounded-xl bg-warning-soft p-3 text-xs leading-5 text-warning`,children:n?`此更新增加了权限,请确认这些能力符合你的修改意图。`:`This update adds permissions. Confirm they match the change you requested.`}):null,(0,j.jsx)(`p`,{className:`mt-5 rounded-xl bg-accent-soft p-3 text-xs leading-5 text-accent-fg`,children:n?`Phase 1 应用只能使用界面主题和本地存储,不能访问网络或运行系统命令。`:`Phase 1 apps can use theme and local storage only. They cannot access the network or run system commands.`})]}),(0,j.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge-subtle p-4`,children:[(0,j.jsx)(g,{asChild:!0,children:(0,j.jsx)(d,{children:n?`取消`:`Cancel`})}),(0,j.jsxs)(d,{variant:`primary`,onClick:()=>void Ct(),disabled:N,children:[N?(0,j.jsx)(l,{className:`size-4 animate-spin`}):(0,j.jsx)(c,{className:`size-4`}),n?`确认安装`:`Install`]})]})]})]})}),(0,j.jsx)(b,{open:Ye,onOpenChange:Xe,children:(0,j.jsxs)(_,{children:[(0,j.jsx)(m,{className:`fixed inset-0 z-50 bg-black/45`}),(0,j.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-50 flex h-[min(420px,calc(100vh-32px))] w-[min(500px,calc(100vw-32px))] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-base shadow-2xl focus:outline-none`,children:[(0,j.jsxs)(`div`,{className:`flex items-start justify-between border-b border-edge-subtle p-5`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(y,{className:`text-base font-semibold text-fg`,children:n?`卸载当前应用?`:`Uninstall this app?`}),(0,j.jsx)(h,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:n?`应用会从侧栏移除,但 Project、源码、版本历史和本地数据都会保留。`:`The app leaves the sidebar, while its Project, source, release history, and local data remain.`})]}),(0,j.jsx)(g,{className:`rounded-lg p-1.5 text-fg-muted hover:bg-surface-hover`,children:(0,j.jsx)(u,{className:`size-4`})})]}),(0,j.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:(0,j.jsxs)(`div`,{className:`rounded-xl bg-surface-panel p-4`,children:[(0,j.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:k.name}),(0,j.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:n?`之后可从任意保留版本重新安装。`:`You can reinstall any retained release later.`})]})}),(0,j.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge-subtle p-4`,children:[(0,j.jsx)(g,{asChild:!0,children:(0,j.jsx)(d,{children:n?`取消`:`Cancel`})}),(0,j.jsxs)(d,{variant:`ghost`,className:`text-danger hover:bg-danger-soft hover:text-danger`,onClick:()=>void Dt(),disabled:N,children:[N?(0,j.jsx)(l,{className:`size-4 animate-spin`}):(0,j.jsx)(_e,{className:`size-4`}),n?`卸载但保留 Project`:`Uninstall and keep Project`]})]})]})]})})]})}export{M as LocalAppWorkbenchPage};
|