@xopcai/xopc 0.0.106 → 0.0.108
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/dashscope/xopc.extension.json +7 -2
- package/dist/extensions/fal/xopc.extension.json +7 -2
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +22 -26
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +1 -1
- package/dist/extensions/feishu/xopc.extension.json +458 -26
- package/dist/extensions/google/xopc.extension.json +7 -2
- package/dist/extensions/minimax/xopc.extension.json +8 -2
- package/dist/extensions/openai/xopc.extension.json +7 -2
- package/dist/extensions/telegram/xopc.extension.json +10 -2
- package/dist/extensions/weixin/xopc.extension.json +57 -14
- package/dist/gateway/static/root/apple-touch-icon.png +0 -0
- package/dist/gateway/static/root/assets/agents-56kCGHdV.js +78 -0
- package/dist/gateway/static/root/assets/apps-page-Dd88J47r.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-Ckyvnvml.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-DKo2ZdRA.js +1 -0
- package/dist/gateway/static/root/assets/{dist-OM9qGfm5.js → dist-dmxWdtPG.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-D-WHrr_w.js → extension-debug-page-iGpG-vpp.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CCgjSoKn.js → extension-page-I7-3uHiD.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BJH5a-Gn.js → extension-settings-page-BisnHG7r.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-CkvRO30i.js → fetch-CFdKBnE6.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BkKyRDrF.js → gateway-startup-retry-DdngdObI.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-CVyP6pFj.js → heartbeat-config-api-tbWAFPN8.js} +1 -1
- package/dist/gateway/static/root/assets/index-DI5_GsZt.css +1 -0
- package/dist/gateway/static/root/assets/index-slwUkhxH.js +4845 -0
- package/dist/gateway/static/root/assets/{logs-page-R6Vv_Ja6.js → logs-page-CCZiXrWu.js} +2 -2
- package/dist/gateway/static/root/assets/{note-detail-page-BUDarLhh.js → note-detail-page-BYbw2GLl.js} +4 -4
- package/dist/gateway/static/root/assets/{note-time-Cc2-T21g.js → note-time-Cya72Lte.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-DrAO7VRK.js +1 -0
- package/dist/gateway/static/root/assets/{schema-form-CrlOmEZt.js → schema-form-a6UJCK55.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DNU3Ymvz.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-gate-BBAQxxew.js → settings-advanced-gate-CyEJYTbw.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-DjPD-ErC.js → settings-form-section-DpHo2ecA.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-YRwe4q56.js +3 -0
- package/dist/gateway/static/root/assets/{share-preview-page-BjvPht3V.js → share-preview-page-B7rf4QB4.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-we1NAt7u.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-DYgVdRB4.js → theme-store-BZozwAeK.js} +1 -1
- package/dist/gateway/static/root/assets/url-DQRqHuL-.js +3 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-Btagks_B.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-page.utils-D4sqR0yX.js → workflow-page.utils-DvzJKs6W.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-BgOAgCOG.js +18 -0
- package/dist/gateway/static/root/favicon-16.png +0 -0
- package/dist/gateway/static/root/favicon-32.png +0 -0
- package/dist/gateway/static/root/favicon.ico +0 -0
- package/dist/gateway/static/root/favicon.svg +18 -0
- package/dist/gateway/static/root/index.html +11 -10
- package/dist/package.js +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +4 -0
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +4 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +1 -1
- package/dist/src/agent/starter-agents.d.ts +19 -0
- package/dist/src/agent/starter-agents.js +190 -0
- package/dist/src/agent/starter-agents.js.map +1 -0
- package/dist/src/agent/workflow/runtime.js +49 -15
- package/dist/src/agent/workflow/runtime.js.map +1 -1
- package/dist/src/agent/workflow/types.d.ts +11 -0
- package/dist/src/channels/catalog/channel-catalog-service.js +13 -0
- package/dist/src/channels/catalog/channel-catalog-service.js.map +1 -1
- package/dist/src/channels/plugins/types.adapters.d.ts +2 -0
- package/dist/src/cli/commands/extension-create.d.ts +2 -0
- package/dist/src/cli/commands/extension-create.js +165 -0
- package/dist/src/cli/commands/extension-create.js.map +1 -0
- package/dist/src/cli/commands/extension-dev.js +0 -2
- package/dist/src/cli/commands/extension-dev.js.map +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +104 -80
- package/dist/src/cli/commands/extension-marketplace.js.map +1 -1
- package/dist/src/cli/commands/extension-pack.d.ts +13 -0
- package/dist/src/cli/commands/extension-pack.js +159 -91
- package/dist/src/cli/commands/extension-pack.js.map +1 -1
- package/dist/src/cli/commands/extension.d.ts +2 -0
- package/dist/src/cli/commands/extension.js +375 -3
- package/dist/src/cli/commands/extension.js.map +1 -1
- package/dist/src/cli/commands/gateway/run-foreground.js +1 -2
- package/dist/src/cli/commands/gateway/run-foreground.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +0 -2
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/setup.js +0 -2
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +9 -6
- package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
- package/dist/src/config/paths.d.ts +2 -2
- package/dist/src/config/paths.js +10 -6
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/schema.d.ts +2 -0
- package/dist/src/config/schema.js +3 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/extensions/api.d.ts +4 -2
- package/dist/src/extensions/api.js +31 -12
- package/dist/src/extensions/api.js.map +1 -1
- package/dist/src/extensions/discover-extensions.js +1 -0
- package/dist/src/extensions/discover-extensions.js.map +1 -1
- package/dist/src/extensions/install.d.ts +1 -0
- package/dist/src/extensions/install.js +51 -8
- package/dist/src/extensions/install.js.map +1 -1
- package/dist/src/extensions/loader.d.ts +0 -4
- package/dist/src/extensions/loader.js +54 -87
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/extensions/lockfile.d.ts +9 -1
- package/dist/src/extensions/lockfile.js.map +1 -1
- package/dist/src/extensions/normalize-manifest.js +20 -4
- package/dist/src/extensions/normalize-manifest.js.map +1 -1
- package/dist/src/extensions/package-contract.d.ts +12 -0
- package/dist/src/extensions/package-contract.js +59 -0
- package/dist/src/extensions/package-contract.js.map +1 -0
- package/dist/src/extensions/sdk/core.d.ts +1 -1
- package/dist/src/extensions/sdk/index.d.ts +1 -1
- package/dist/src/extensions/sdk/index.js.map +1 -1
- package/dist/src/extensions/types/manifest.d.ts +15 -0
- package/dist/src/gateway/agents-admin.d.ts +0 -8
- package/dist/src/gateway/agents-admin.js +1 -26
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/hono/routes/agents.js +1 -55
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/channels.js +10 -1
- package/dist/src/gateway/hono/routes/channels.js.map +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +130 -0
- package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
- package/dist/src/gateway/service.d.ts +2 -0
- package/dist/src/gateway/service.js +44 -0
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/notes/agent-context.d.ts +12 -4
- package/dist/src/notes/agent-context.js.map +1 -1
- package/dist/src/tui/backends/embedded-backend.js +0 -7
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.js +0 -7
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/tui-backend.d.ts +0 -1
- package/dist/src/tui/tui-commands.js +1 -1
- package/dist/src/tui/tui-commands.js.map +1 -1
- package/dist/src/tui/tui-picker-overlay.js +1 -1
- package/dist/src/tui/tui-picker-overlay.js.map +1 -1
- package/dist/src/workflows/domain/definition-utils.d.ts +1 -0
- package/dist/src/workflows/domain/definition-utils.js +32 -2
- package/dist/src/workflows/domain/definition-utils.js.map +1 -1
- package/dist/src/workflows/domain/definition.d.ts +2 -0
- package/dist/src/workflows/domain/event.d.ts +2 -1
- package/dist/src/workflows/domain/index.d.ts +1 -0
- package/dist/src/workflows/domain/index.js +3 -2
- package/dist/src/workflows/domain/run.d.ts +27 -1
- package/dist/src/workflows/domain/run.js.map +1 -1
- package/dist/src/workflows/domain/schema-validation.d.ts +8 -0
- package/dist/src/workflows/domain/schema-validation.js +28 -0
- package/dist/src/workflows/domain/schema-validation.js.map +1 -0
- package/dist/src/workflows/draft/index.d.ts +3 -0
- package/dist/src/workflows/draft/index.js +3 -0
- package/dist/src/workflows/draft/workflow-draft-prompt.d.ts +23 -0
- package/dist/src/workflows/draft/workflow-draft-prompt.js +98 -0
- package/dist/src/workflows/draft/workflow-draft-prompt.js.map +1 -0
- package/dist/src/workflows/draft/workflow-draft-service.d.ts +12 -0
- package/dist/src/workflows/draft/workflow-draft-service.js +131 -0
- package/dist/src/workflows/draft/workflow-draft-service.js.map +1 -0
- package/dist/src/workflows/draft/workflow-draft-validator.d.ts +4 -0
- package/dist/src/workflows/draft/workflow-draft-validator.js +133 -0
- package/dist/src/workflows/draft/workflow-draft-validator.js.map +1 -0
- package/dist/src/workflows/draft/workflow-draft.types.d.ts +44 -0
- package/dist/src/workflows/draft/workflow-draft.types.js +1 -0
- package/dist/src/workflows/engine/projector.js +1 -0
- package/dist/src/workflows/engine/projector.js.map +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +18 -0
- package/dist/src/workflows/engine/workflow-engine.js +320 -11
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
- package/dist/src/workflows/index.js +4 -3
- package/dist/src/workflows/service/workflow-run-service.d.ts +14 -3
- package/dist/src/workflows/service/workflow-run-service.js +227 -6
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +7 -2
- package/package.json +4 -2
- package/dist/gateway/static/root/assets/agents-3eP0vqFO.js +0 -396
- package/dist/gateway/static/root/assets/apps-page-CZ2ZKrko.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-BbETa93K.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-DCtUkHMu.js +0 -1
- package/dist/gateway/static/root/assets/index-BPYKW7FB.css +0 -1
- package/dist/gateway/static/root/assets/index-CEZxETzw.js +0 -4845
- package/dist/gateway/static/root/assets/notes-page-EAHl16bq.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-Ce_xuuSB.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-KhQ9QgH0.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-C0laq7l1.js +0 -2
- package/dist/gateway/static/root/assets/url-DPEStU4M.js +0 -3
- package/dist/gateway/static/root/assets/voice-api-key-field-DeGckWkl.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-DFjM95g5.js +0 -27
- package/dist/src/agent/builtin-agent-ids.d.ts +0 -2
- package/dist/src/agent/builtin-agent-ids.js +0 -17
- package/dist/src/agent/builtin-agent-ids.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./url-DQRqHuL-.js";import{o as a}from"./vendor-swr-BIWyz7Rc.js";import{a as o,n as s}from"./fetch-CFdKBnE6.js";import{i as c,r as l}from"./gateway-startup-retry-DdngdObI.js";import{$r as u,J as d,Po as f,Z as p,Zo as m,di as h,do as g,fi as _,ja as v,pi as y,q as b,ta as x}from"./index-slwUkhxH.js";var S=`/api/image/providers`;async function ee(){return(await s(i(`/api/image/providers`)))?.payload?.providers??[]}var C=e(t(),1),te=n();function w(){return{apiKey:``,region:``,baseUrl:``,imageBaseUrl:``}}function ne(e){return e?.apiKey?`••••••••••••`:``}function T(e,t){let n=(()=>{if(!e||typeof e!=`object`||!(`providersConfig`in e))return;let t=e.providersConfig;if(!(!t||typeof t!=`object`||Array.isArray(t)))return t})(),r={};for(let e of t){let t=n?.[e];r[e]={apiKey:ne(t),region:t?.region??``,baseUrl:t?.baseUrl??``,imageBaseUrl:t?.imageBaseUrl??``}}return r}function E(e,t,n){let r=e[n].trim();if(r!==t[n].trim())return r||null}function D(e,t){let n=e.trim(),r=t.trim();if(n!==r&&!(p(n)&&p(r)))return n||(r?null:void 0)}function O(e,t,n){let r={};for(let i of e){let e=t[i]??w(),a=n[i]??w();if(JSON.stringify(e)===JSON.stringify(a))continue;let o={},s=D(e.apiKey,a.apiKey);s!==void 0&&(o.apiKey=s);let c=E(e,a,`region`);c!==void 0&&(o.region=c);let l=E(e,a,`baseUrl`);l!==void 0&&(o.baseUrl=l);let u=E(e,a,`imageBaseUrl`);u!==void 0&&(o.imageBaseUrl=u),Object.keys(o).length>0&&(r[i]=o)}return r}async function k(e){let t=await s(i(`/api/image/providers/${encodeURIComponent(e)}/reveal-api-key`),{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok||!t.payload)throw Error(t.error?.message??`Reveal failed`);return t.payload}async function A(e){Object.keys(e).length!==0&&(await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({providersConfig:e})}),await l())}var j=r();function re(e){let t=(0,te.c)(18),{providerId:n,value:r,onChange:i,labels:a,apiKeyLinks:o,apiKeyLinkLabels:s}=e,c;t[0]===n?c=t[1]:(c=()=>k(n).then(M),t[0]=n,t[1]=c);let l=c,f=`img-cred-key-${n}`,p;t[2]!==a.apiKeyLabel||t[3]!==f?(p=(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:f,children:a.apiKeyLabel}),t[2]=a.apiKeyLabel,t[3]=f,t[4]=p):p=t[4];let m;t[5]!==s||t[6]!==o?(m=o.length>0?(0,j.jsx)(`div`,{className:`flex flex-col gap-1`,children:o.map(e=>(0,j.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[d(e.kind,s),(0,j.jsx)(g,{className:`size-3`,"aria-hidden":!0})]},`${e.kind}-${e.href}`))}):null,t[5]=s,t[6]=o,t[7]=m):m=t[7];let h=`img-cred-key-${n}`,_;t[8]!==a||t[9]!==i||t[10]!==l||t[11]!==h||t[12]!==r?(_=(0,j.jsx)(u,{id:h,value:r,onChange:i,placeholder:a.optionalPlaceholder,labels:a,reveal:l,loadFailedLabel:a.loadFailed,maskedHelp:a.maskedHelp,notInConfigFile:a.notInConfigFile}),t[8]=a,t[9]=i,t[10]=l,t[11]=h,t[12]=r,t[13]=_):_=t[13];let v;return t[14]!==p||t[15]!==m||t[16]!==_?(v=(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[p,m,_]}),t[14]=p,t[15]=m,t[16]=_,t[17]=v):v=t[17],v}function M(e){return e.apiKey??null}function N(){return y(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,h)}function ie(){return y(N(),`appearance-none bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat pr-9`)}var P=`__custom__`;function ae(e,t){if(!e.region.trim()&&!e.imageBaseUrl.trim())return``;let n=e.region.trim().toLowerCase();return t.some(e=>e.value===n)?n:P}function oe(e,t){let n=e.baseUrl.trim().replace(/\/+$/,``);if(!n)return``;let r=t.map(e=>e.value.replace(/\/+$/,``)).indexOf(n);return r>=0?t[r].value:P}function se(e,t,n){return t===`beijing`?e.dashscopeRegion_beijing:t===`singapore`?e.dashscopeRegion_singapore:t===`us`?e.dashscopeRegion_us:n}function ce(e,t){return t===`minimax`?e.minimaxClusterLabel:t===`fal`?e.falQueueBaseLabel:e.baseUrlLabel}function le(e,t){return t===`minimax`?e.minimaxClusterHint:t===`fal`?e.falQueueBaseHint:null}function ue(e,t){return JSON.stringify(e)!==JSON.stringify(t)}function de(e,t){return t===1?e.modelCountOne:e.modelCountMany.replace(`{count}`,String(t))}function fe(e){let t=(0,te.c)(76),{summaries:n,credDraft:r,credBaseline:i,credDirty:a,credSaving:o,credError:s,credSavedFlash:c,credNoopFlash:l,updateCredRow:u,onDiscardCredentials:d,onSaveCredentials:p,extensionIds:h,showExtensionLinks:S,showImageModelsLink:ee,hideActions:ne,language:T,apiKeyLinkLabels:E,messages:D}=e,O=ne===void 0?!1:ne,k;t[0]===n?k=t[1]:(k=n.some(_e),t[0]=n,t[1]=k);let A=k,M;t[2]===n?M=t[3]:(M=n.some(ge),t[2]=n,t[3]=M);let fe=M,[F,ve]=(0,C.useState)(he),[I,L]=(0,C.useState)(me),R;if(t[4]!==i||t[5]!==r||t[6]!==n){R=new Set;for(let e of n)ue(r[e.id]??w(),i[e.id]??w())&&R.add(e.id);t[4]=i,t[5]=r,t[6]=n,t[7]=R}else R=t[7];let z=R,B;t[8]!==z||t[9]!==I||t[10]!==F?(B=e=>I.has(e)?!1:F.has(e)?!0:z.has(e),t[8]=z,t[9]=I,t[10]=F,t[11]=B):B=t[11];let V=B,H;t[12]===V?H=t[13]:(H=e=>{if(V(e)){L(t=>new Set(t).add(e)),ve(t=>{let n=new Set(t);return n.delete(e),n});return}L(t=>{let n=new Set(t);return n.delete(e),n}),ve(t=>new Set(t).add(e))},t[12]=V,t[13]=H);let U=H;if(n.length===0)return null;let W;t[14]===D.credentialsIntro?W=t[15]:(W=(0,j.jsx)(`p`,{children:D.credentialsIntro}),t[14]=D.credentialsIntro,t[15]=W);let G;t[16]!==A||t[17]!==D.regionHint?(G=A?(0,j.jsx)(`p`,{className:`text-fg-subtle`,children:D.regionHint}):null,t[16]=A,t[17]=D.regionHint,t[18]=G):G=t[18];let K;t[19]!==fe||t[20]!==D.endpointPresetsHint?(K=fe?(0,j.jsx)(`p`,{className:`text-fg-subtle`,children:D.endpointPresetsHint}):null,t[19]=fe,t[20]=D.endpointPresetsHint,t[21]=K):K=t[21];let q;t[22]!==ee||t[23]!==D.imageModelsLinkTitle||t[24]!==D.openImageModelsPage?(q=ee?(0,j.jsx)(`p`,{children:(0,j.jsx)(m,{to:`/settings/credentials?tab=image-models`,className:`font-medium text-accent hover:underline`,title:D.imageModelsLinkTitle,children:D.openImageModelsPage})}):null,t[22]=ee,t[23]=D.imageModelsLinkTitle,t[24]=D.openImageModelsPage,t[25]=q):q=t[25];let J;t[26]!==W||t[27]!==G||t[28]!==K||t[29]!==q?(J=(0,j.jsxs)(`div`,{className:`flex flex-col gap-1 text-xs leading-relaxed text-fg-muted`,children:[W,G,K,q]}),t[26]=W,t[27]=G,t[28]=K,t[29]=q,t[30]=J):J=t[30];let Y;t[31]===s?Y=t[32]:(Y=s?(0,j.jsx)(`div`,{className:`rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:s}):null,t[31]=s,t[32]=Y);let X;t[33]!==a||t[34]!==l||t[35]!==c||t[36]!==o||t[37]!==O||t[38]!==d||t[39]!==p||t[40]!==D.credentialsNothingToSave||t[41]!==D.credentialsSaved||t[42]!==D.discardCredentials||t[43]!==D.saveCredentials||t[44]!==D.savingCredentials?(X=O?null:(0,j.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[c?(0,j.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsSaved}):null,l?(0,j.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsNothingToSave}):null,(0,j.jsx)(_,{type:`button`,variant:`secondary`,onClick:d,disabled:!a||o,children:D.discardCredentials}),(0,j.jsx)(_,{type:`button`,variant:`primary`,onClick:p,disabled:!a||o,children:o?(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(v,{className:`size-3.5 animate-spin`}),(0,j.jsx)(`span`,{className:`ml-1.5`,children:D.savingCredentials})]}):(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(x,{className:`size-3.5`}),(0,j.jsx)(`span`,{className:`ml-1.5`,children:D.saveCredentials})]})})]}),t[33]=a,t[34]=l,t[35]=c,t[36]=o,t[37]=O,t[38]=d,t[39]=p,t[40]=D.credentialsNothingToSave,t[41]=D.credentialsSaved,t[42]=D.discardCredentials,t[43]=D.saveCredentials,t[44]=D.savingCredentials,t[45]=X):X=t[45];let Z;if(t[46]!==E||t[47]!==i||t[48]!==r||t[49]!==h||t[50]!==V||t[51]!==T||t[52]!==S||t[53]!==n||t[54]!==D||t[55]!==U||t[56]!==u){let e;t[58]!==E||t[59]!==i||t[60]!==r||t[61]!==h||t[62]!==V||t[63]!==T||t[64]!==S||t[65]!==D||t[66]!==U||t[67]!==u?(e=e=>{let t=r[e.id]??w(),n=e.ui,a=S&&h.has(e.id)?`/settings/ext/${encodeURIComponent(e.id)}`:null,o=ue(t,i[e.id]??w()),s=V(e.id),c=e.label??e.id,l=de(D,e.models.length);return(0,j.jsxs)(`section`,{className:y(`overflow-hidden rounded-xl border bg-surface-panel shadow-sm transition-colors dark:shadow-none`,o?`border-accent/50`:`border-edge`),children:[(0,j.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-3 px-4 py-3 text-left hover:bg-surface-hover/70`,"aria-expanded":s,"aria-controls":`img-provider-credentials-${e.id}`,onClick:()=>U(e.id),children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,j.jsx)(`span`,{className:`truncate text-sm font-semibold text-fg`,children:c}),(0,j.jsx)(`span`,{className:`rounded-full bg-surface-subtle px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:e.id}),o?(0,j.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.unsavedChanges}):null,e.configured?(0,j.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.configured}):(0,j.jsx)(`span`,{className:`rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:text-amber-300`,children:D.missingKey})]}),(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,j.jsx)(`span`,{children:l}),e.defaultModel?(0,j.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,j.jsxs)(`span`,{className:`text-fg-muted`,children:[D.defaultModel,`:`]}),` `,e.id,`/`,e.defaultModel]}):null]})]}),(0,j.jsx)(f,{className:y(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,s?`rotate-180`:`rotate-0`),"aria-hidden":`true`}),(0,j.jsx)(`span`,{className:`sr-only`,children:s?D.collapseProvider:D.expandProvider})]}),s?(0,j.jsxs)(`div`,{id:`img-provider-credentials-${e.id}`,className:`border-t border-edge px-4 py-4`,children:[a?(0,j.jsxs)(m,{to:a,className:`mb-3 inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,title:D.extensionSettingsLinkTitle,children:[(0,j.jsx)(g,{className:`size-3`}),D.openExtensionSettings]}):null,e.models.length>0?(0,j.jsxs)(`p`,{className:`mb-3 text-xs leading-relaxed text-fg-subtle`,children:[(0,j.jsxs)(`span`,{className:`text-fg-muted`,children:[D.modelsLabel,`:`]}),` `,e.models.map(t=>`${e.id}/${t}`).join(`, `)]}):null,(0,j.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,j.jsx)(re,{providerId:e.id,value:t.apiKey,onChange:t=>u(e.id,{apiKey:t}),apiKeyLinks:b(e.id,T),apiKeyLinkLabels:E,labels:{apiKeyLabel:D.apiKeyLabel,optionalPlaceholder:D.optionalPlaceholder,maskedHelp:D.apiKeyMaskedHelp,copy:D.apiKeyCopy,copied:D.apiKeyCopied,show:D.apiKeyShow,hide:D.apiKeyHide,notInConfigFile:D.apiKeyNotInConfigFile,loadFailed:D.apiKeyRevealFailed}}),n?.regions?.length?(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-region-preset-${e.id}`,children:D.regionLabel}),(0,j.jsxs)(`select`,{id:`img-cred-region-preset-${e.id}`,className:ie(),value:ae(t,n.regions),onChange:t=>{let r=t.target.value;if(r===``){u(e.id,{region:``,imageBaseUrl:``});return}if(r===P){u(e.id,{region:``,imageBaseUrl:``});return}let i=n.regions.find(e=>e.value===r);i&&u(e.id,{region:i.value,imageBaseUrl:i.imageBaseUrl})},children:[(0,j.jsx)(`option`,{value:``,children:D.regionPresetDefault}),n.regions.map(e=>(0,j.jsx)(`option`,{value:e.value,children:se(D,e.value,e.label)},e.value)),(0,j.jsx)(`option`,{value:P,children:D.regionPresetCustom})]}),ae(t,n.regions)===P?(0,j.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,j.jsx)(`input`,{type:`text`,className:N(),value:t.region,placeholder:`region`,onChange:t=>u(e.id,{region:t.target.value})}),(0,j.jsx)(`input`,{type:`url`,className:N(),value:t.imageBaseUrl,placeholder:D.imageBaseUrlLabel,onChange:t=>u(e.id,{imageBaseUrl:t.target.value})})]}):null]}):null,n?.baseUrlPresets?.length?(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-base-preset-${e.id}`,children:ce(D,n.baseUrlPresetKind)}),le(D,n.baseUrlPresetKind)?(0,j.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:le(D,n.baseUrlPresetKind)}):null,(0,j.jsxs)(`select`,{id:`img-cred-base-preset-${e.id}`,className:ie(),value:oe(t,n.baseUrlPresets),onChange:t=>{let n=t.target.value;if(n===``){u(e.id,{baseUrl:``});return}if(n===P){u(e.id,{baseUrl:``});return}u(e.id,{baseUrl:n.replace(/\/+$/,``)})},children:[(0,j.jsx)(`option`,{value:``,children:D.baseUrlPresetDefault}),n.baseUrlPresets.map(pe),(0,j.jsx)(`option`,{value:P,children:D.baseUrlPresetCustom})]}),oe(t,n.baseUrlPresets)===P?(0,j.jsx)(`input`,{type:`url`,className:y(N(),`mt-2`),value:t.baseUrl,placeholder:`https://…`,onChange:t=>u(e.id,{baseUrl:t.target.value})}):null]}):null,n?.regions?.length&&ae(t,n.regions)!==P?(0,j.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,j.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-imgbase-ro-${e.id}`,children:D.imageBaseUrlLabel}),(0,j.jsx)(`input`,{id:`img-cred-imgbase-ro-${e.id}`,type:`url`,readOnly:!0,className:y(N(),`cursor-not-allowed opacity-90`),value:t.imageBaseUrl,title:D.imageBaseUrlPresetHint}),(0,j.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:D.imageBaseUrlPresetHint})]}):null]})]}):null]},e.id)},t[58]=E,t[59]=i,t[60]=r,t[61]=h,t[62]=V,t[63]=T,t[64]=S,t[65]=D,t[66]=U,t[67]=u,t[68]=e):e=t[68],Z=n.map(e),t[46]=E,t[47]=i,t[48]=r,t[49]=h,t[50]=V,t[51]=T,t[52]=S,t[53]=n,t[54]=D,t[55]=U,t[56]=u,t[57]=Z}else Z=t[57];let Q;t[69]===Z?Q=t[70]:(Q=(0,j.jsx)(`div`,{className:`flex flex-col gap-4`,children:Z}),t[69]=Z,t[70]=Q);let $;return t[71]!==J||t[72]!==Y||t[73]!==X||t[74]!==Q?($=(0,j.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[J,Y,X,Q]}),t[71]=J,t[72]=Y,t[73]=X,t[74]=Q,t[75]=$):$=t[75],$}function pe(e){return(0,j.jsx)(`option`,{value:e.value,children:e.label},e.value)}function me(){return new Set}function he(){return new Set}function ge(e){return(e.ui?.baseUrlPresets?.length??0)>0}function _e(e){return(e.ui?.regions?.length??0)>0}function F(e){let t=c(o(e=>!!e.token)),n=t.data,r=(0,C.useMemo)(()=>e.map(e=>e.id),[e]),s=(0,C.useRef)(!1),[l,u]=(0,C.useState)(null),[d,f]=(0,C.useState)(!1),[p,m]=(0,C.useState)(null),[h,g]=(0,C.useState)(!1),[_,v]=(0,C.useState)(!1),y=(0,C.useMemo)(()=>T(n?.payload?.config,r),[n?.payload?.config,r]),b=l??y,x=y;return{gwSwr:t,credDraft:b,credBaseline:x,credDirty:(0,C.useMemo)(()=>JSON.stringify(b)!==JSON.stringify(x),[b,x]),credSaving:d,credError:p,credSavedFlash:h,credNoopFlash:_,updateCredRow:(0,C.useCallback)((e,t)=>{s.current=!0,u(n=>{let r=n??y,i=r[e]??w();return{...r,[e]:{...i,...t}}})},[y]),onDiscardCredentials:(0,C.useCallback)(()=>{s.current=!1,u(null),m(null),g(!1),v(!1)},[]),saveCredentials:(0,C.useCallback)(async e=>{let n=O(r,b,x);if(Object.keys(n).length===0){v(!0),window.setTimeout(()=>v(!1),2200);return}f(!0),m(null),g(!1);try{await A(n),await t.mutate?.(),a(i(S)),s.current=!1,u(null),g(!0),window.setTimeout(()=>g(!1),2e3)}catch(t){m(t instanceof Error?t.message:e)}finally{f(!1)}},[r,b,x,t])}}function ve(){return{enabled:!1,provider:`alibaba`,alibaba:{model:`paraformer-v2`},openai:{model:`whisper-1`},fallback:{enabled:!0,order:[`alibaba`,`openai`]}}}function I(){return{enabled:!1,provider:`openai`,trigger:`always`,maxTextLength:512,timeoutMs:6e4,alibaba:{model:`qwen-tts`,voice:`Cherry`},openai:{model:`tts-1`,voice:`alloy`},edge:{voice:`en-US-MichelleNeural`},minimax:{model:`speech-2.8-hd`,voice:`male-qn-qingse`},"tts-local-cli":{command:``,outputFormat:`wav`}}}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return typeof e==`string`&&e.trim().length>0?e.trim():`alibaba`}function z(e,t,n){let r=L(e.providers)?e.providers:void 0,i=r&&L(r[t])?r[t]:void 0;return{...n,...i??{}}}function B(e){let t=ve();if(!L(e))return t;let n=R(e.provider),r=z(e,`alibaba`,t.alibaba??{}),i=z(e,`openai`,t.openai??{}),a=t.fallback??{enabled:!0,order:[`alibaba`,`openai`]};if(L(e.fallback)){let t=Array.isArray(e.fallback.order)?e.fallback.order.filter(e=>typeof e==`string`&&e.trim().length>0):a.order;a={enabled:typeof e.fallback.enabled==`boolean`?e.fallback.enabled:a.enabled,order:t.length?t:a.order}}let o=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,alibaba:r,openai:i,...o?{providers:o}:{},fallback:a}}function V(e){return typeof e==`string`&&e.trim().length>0?e.trim():`openai`}function H(e){let t=I();if(!L(e))return t;let n=V(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`always`,i=t[`tts-local-cli`]??{},a=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,...a?{providers:a}:{},alibaba:z(e,`alibaba`,t.alibaba??{}),openai:z(e,`openai`,t.openai??{}),edge:z(e,`edge`,t.edge??{}),minimax:z(e,`minimax`,t.minimax??{}),"tts-local-cli":z(e,`tts-local-cli`,i)}}function U(e){let{alibaba:t,openai:n,providers:r,...i}=e,a={...r??{}};return t&&(a.alibaba={...a.alibaba??{},...t}),n&&(a.openai={...a.openai??{},...n}),{...i,...Object.keys(a).length>0?{providers:a}:{}}}function W(e){let{alibaba:t,openai:n,edge:r,minimax:i,"tts-local-cli":a,providers:o,...s}=e,c={...o??{}};return t&&(c.alibaba={...c.alibaba??{},...t}),n&&(c.openai={...c.openai??{},...n}),r&&(c.edge={...c.edge??{},...r}),i&&(c.minimax={...c.minimax??{},...i}),a&&(c[`tts-local-cli`]={...c[`tts-local-cli`]??{},...a}),{...s,...Object.keys(c).length>0?{providers:c}:{}}}function G(e){let t=L(e)?e:{};return{stt:B(t.stt),tts:H(t.tts)}}async function K(){return G((await s(i(`/api/config`))).payload?.config??{})}async function q(e){await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:U(e.stt),tts:W(e.tts)})}),l()}async function J(){let e=await s(i(`/api/voice/models`));if(!e.payload?.models)throw Error(`Missing voice models payload`);return e.payload.models}async function Y(){let e=await s(i(`/api/voice/providers`));if(!e.payload?.providers)throw Error(`Missing voice providers payload`);return e.payload}async function X(){let e=await s(i(`/api/voice/stt-providers`));if(!e.payload?.providers)throw Error(`Missing STT providers payload`);return e.payload}async function Z(e){let t=await s(i(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(e)});if(!t.payload)throw Error(`Missing reveal payload`);return t.payload}function Q(e){let t=(0,te.c)(15),{kind:n,providerId:r,fieldId:i,value:a,onChange:o,labels:s,placeholder:c,className:l}=e,d=c===void 0?`sk-...`:c,f;t[0]!==n||t[1]!==r?(f=()=>Z({kind:n,provider:r}).then($),t[0]=n,t[1]=r,t[2]=f):f=t[2];let p=f,m;t[3]===l?m=t[4]:(m=y(`flex min-w-0 flex-col gap-1.5`,l),t[3]=l,t[4]=m);let h;t[5]!==i||t[6]!==s||t[7]!==o||t[8]!==d||t[9]!==p||t[10]!==a?(h=(0,j.jsx)(u,{id:i,value:a,onChange:o,placeholder:d,labels:s,reveal:p,loadFailedLabel:s.loadFailed,maskedHelp:s.maskedHelp,notInConfigFile:s.notInConfigFile,inputClassName:`text-xs`}),t[5]=i,t[6]=s,t[7]=o,t[8]=d,t[9]=p,t[10]=a,t[11]=h):h=t[11];let g;return t[12]!==m||t[13]!==h?(g=(0,j.jsx)(`div`,{className:m,children:h}),t[12]=m,t[13]=h,t[14]=g):g=t[14],g}function $(e){return e.apiKey??null}export{X as a,F as c,S as d,K as i,fe as l,J as n,G as o,Y as r,q as s,Q as t,ee as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,
|
|
1
|
+
import{c as e,l as t,rr as n}from"./index-slwUkhxH.js";function r(e){return e===`zh`?`zh`:`en`}function i(e,t){let n=r(t),i=n===`en`?void 0:e.metadata.i18n?.[n],a=i?.examplePrompts&&i.examplePrompts.length>0?i.examplePrompts:e.metadata.examplePrompts??[];return{description:o(i?.description,e.description),whenToUse:s(i?.whenToUse,e.metadata.whenToUse),examplePrompts:a}}function a(e){return[e.name,e.title,e.description,e.metadata.whenToUse??``,...(e.metadata.examplePrompts??[]).map(e=>e.text),...Object.values(e.metadata.i18n??{}).flatMap(e=>[e.description??``,e.whenToUse??``,...(e.examplePrompts??[]).map(e=>e.text)]),...e.metadata.tags].join(` `).toLowerCase()}function o(e,t){return e?.trim()||t}function s(e,t){return e?.trim()||t?.trim()||void 0}function c(e,t,n){if(e.field===`goal`){t(e.text);return}n(t=>({...t,[e.field]:e.text}))}function l(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function u(e,t){return e?new Intl.DateTimeFormat(t,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(new Date(e)):`—`}function d(e){if(!e||!Number.isFinite(e))return`—`;let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;if(n<60)return r?`${n}m ${r}s`:`${n}m`;let i=Math.floor(n/60),a=n%60;return a?`${i}h ${a}m`:`${i}h`}function f(e){return e===`succeeded`?`bg-emerald-500/15 text-emerald-700 dark:text-emerald-300`:e===`failed`||e===`timeout`?`bg-red-500/15 text-red-700 dark:text-red-300`:e===`cancelled`?`bg-amber-500/15 text-amber-700 dark:text-amber-300`:`bg-accent-soft text-accent-fg`}function p(n){let r=n.metadata.tags.map(e=>e.toLowerCase());for(let n of e)if(t[n].some(e=>r.includes(e)))return n;return null}function m(e,n){if(n===`all`)return!0;let r=e.metadata.tags.map(e=>e.toLowerCase());return t[n].some(e=>r.includes(e))}function h(t){let n=new Map;for(let e of t){let t=p(e)??`uncategorized`,r=n.get(t)??[];r.push(e),n.set(t,r)}let r=[];for(let t of e){let e=n.get(t);e?.length&&r.push({category:t,items:e})}let i=n.get(`uncategorized`);return i?.length&&r.push({category:`uncategorized`,items:i}),r}function g(e,t){return t===`all`?!0:t===`builtin`?e.metadata.builtIn:e.metadata.source===`user`}function _(e,t,n,r){let i=t.trim().toLowerCase();return e.filter(e=>!m(e,n)||!g(e,r)?!1:i?a(e).includes(i):!0)}function v(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function y(e){if(e==null)return e;if(typeof e==`object`&&e&&`raw`in e){let t=e.raw;return t===void 0?e:t}return e}function b(e){let t=e.run.metadata?.sessionKey?.trim();return t&&n(t)?t:null}function x(e,t){let n=`/chat/${encodeURIComponent(e)}`,r=t?.trim();return r?`${n}?${new URLSearchParams({draft:r}).toString()}`:n}function S(e){let t=e.source;return t&&typeof t==`object`&&`kind`in t&&typeof t.kind==`string`?t.kind:e.metadata?.triggerSource?.trim()||`unknown`}function C(e,t){let n=t.trim();return!n||n===`all`?!0:S(e)===n}function w(e){let t={};for(let[n,r]of Object.entries(e)){let e=r.trim();e&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}function T(e){let t=[];e.run.error&&t.push({key:`run-error`,kind:`run_error`,severity:e.run.error.recoverable?`warning`:`error`,code:e.run.error.code,message:e.run.error.message,detail:e.run.error.detail});for(let n of e.agents){n.status===`error`?t.push({key:`agent-error:${n.id}`,kind:`agent_error`,severity:`error`,agentId:n.id,agentLabel:n.label,message:n.error,detail:n.resultPreview}):n.status===`skipped`&&t.push({key:`agent-skipped:${n.id}`,kind:`agent_skipped`,severity:`warning`,agentId:n.id,agentLabel:n.label,message:n.error});for(let e of n.steps??[])e.status===`error`&&t.push({key:`step-error:${n.id}:${e.id}`,kind:`step_error`,severity:`error`,agentId:n.id,agentLabel:n.label,stepId:e.id,stepLabel:e.label,message:e.error,detail:e.resultPreview??e.detail})}return t}export{u as a,y as c,f as d,v as f,i as h,d as i,b as l,c as m,T as n,h as o,x as p,_ as r,l as s,w as t,C as u};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a}from"./url-DQRqHuL-.js";import{i as o}from"./vendor-swr-BIWyz7Rc.js";import{t as s}from"./circle-check-C23XjkUj.js";import{t as c}from"./copy-Dv6d4Dvw.js";import{a as l}from"./fetch-CFdKBnE6.js";import{A as u,Ar as d,C as f,D as p,Do as m,Dr as h,E as g,Ea as _,Er as v,Fo as y,Gi as b,M as x,Nt as S,O as C,Or as w,Po as T,S as E,T as D,Ti as O,Tr as k,Ua as A,Ui as j,Vi as M,Vr as N,Zi as P,_ as ee,a as F,b as I,ba as te,bi as ne,d as L,ei as R,es as re,f as z,fa as B,fi as V,fo as H,g as U,h as W,hi as ie,i as ae,ia as G,ii as K,j as oe,ji as se,jr as ce,k as le,kr as q,m as ue,mo as de,ns as fe,o as pe,pi as J,r as me,ra as he,ro as ge,s as _e,u as ve,ua as ye,v as be,w as xe,x as Se,y as Ce,yo as we,zo as Te,zt as Ee}from"./index-slwUkhxH.js";import{a as De,c as Oe,d as ke,f as Ae,h as Y,i as je,l as Me,m as Ne,n as Pe,o as Fe,p as Ie,r as Le,s as X,t as Re,u as ze}from"./workflow-page.utils-DvzJKs6W.js";var Z=e(t(),1),Q=n(),Be=[`queued`,`running`,`succeeded`,`attention`],Ve=10080*60*1e3,He=new Set([`failed`,`timeout`,`cancelled`]);function Ue(e){return e.metadata?.sessionKey?.trim()||null}function We(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function Ge(e,t){if(!e||typeof e!=`object`)return null;let n=e;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function Ke(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||Ge(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||Ge(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?We(n,t):null}function qe(e,t=90){return Ke(e,t)??We(e.title?.trim()||e.definitionId,t)}function Je(e,t=44){return We(e.title?.trim()||e.definitionId,t)}function Ye(e,t){let n=t.trim().toLowerCase();return n?[Ke(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function Xe(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!ze(e,t.triggerFilter??`all`)?!1:Ye(e,t.searchQuery))}function Ze(e){return e.completedAtMs??e.createdAtMs}function Qe(e,t){return t-Ze(e)<=Ve}function $e(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?Qe(e,t)?`succeeded`:null:He.has(e.status)?`attention`:null}function et(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):e===`running`?n.sort((e,t)=>(t.startedAtMs??t.createdAtMs)-(e.startedAtMs??e.createdAtMs)):n.sort((e,t)=>Ze(t)-Ze(e))}function tt(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=$e(r,t);e&&n[e].push(r)}let r=et(`succeeded`,n.succeeded),i=r.length,a=r.slice(0,20),o=Math.max(0,i-20);return Be.map(e=>e===`succeeded`?{id:e,runs:a,totalInWindow:i,hiddenByCap:o}:{id:e,runs:et(e,n[e])})}var nt=new Map;function rt(e){let t=nt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),nt.set(e,t)),t}function it(e,t,n){let r=Math.round((t-e)/1e3),i=rt(n);if(r<60)return i.format(-r,`second`);let a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<48)return i.format(-o,`hour`);let s=Math.round(o/24);return i.format(-s,`day`)}function at(e){return e.status===`queued`||e.status===`running`}function ot(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),st=(0,Z.memo)(function(e){let t=(0,Q.c)(65),{run:n,language:r,localeTag:i,nowMs:o,selected:s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h;t[0]===n?h=t[1]:(h=Ue(n),t[0]=n,t[1]=h);let g=!h,_;t[2]===n?_=t[3]:(_=at(n),t[2]=n,t[3]=_);let v=_,y=n.status===`running`||n.status===`queued`,b;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(b=n.metrics.agentCount>0?Math.round(n.metrics.doneAgentCount/n.metrics.agentCount*100):0,t[4]=n.metrics.agentCount,t[5]=n.metrics.doneAgentCount,t[6]=b):b=t[6];let x=b,S=n.metrics.errorAgentCount>0,C=n.startedAtMs??n.createdAtMs,w=je(v?o-C:n.metrics.durationMs),T=X(f.taskArtifacts,{count:n.metrics.artifactCount}),E;t[7]===n?E=t[8]:(E=qe(n),t[7]=n,t[8]=E);let D=E,k;t[9]===n?k=t[10]:(k=Je(n),t[9]=n,t[10]=k);let A=k,j;t[11]!==c||t[12]!==n?(j=()=>{c(n)},t[11]=c,t[12]=n,t[13]=j):j=t[13];let M=j,N;t[14]!==g||t[15]!==l||t[16]!==n?(N=()=>{g||l(n)},t[14]=g,t[15]=l,t[16]=n,t[17]=N):N=t[17];let P=N,ee=s?`border-accent/70 ring-1 ring-accent/30`:`border-edge`,F;t[18]===ee?F=t[19]:(F=J(`group relative overflow-hidden rounded-xl border bg-surface-panel p-3.5 transition-colors`,ee,`hover:border-edge-strong hover:bg-surface-hover/50`),t[18]=ee,t[19]=F);let I;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(I=J(`w-full text-left`,K.focusRingPanel),t[20]=I):I=t[20];let te;t[21]===D?te=t[22]:(te=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:D}),t[21]=D,t[22]=te);let ne;t[23]===A?ne=t[24]:(ne=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:A}),t[23]=A,t[24]=ne);let L;t[25]!==te||t[26]!==ne?(L=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[te,ne]}),t[25]=te,t[26]=ne,t[27]=L):L=t[27];let R;t[28]===n.status?R=t[29]:(R=J(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,ke(n.status)),t[28]=n.status,t[29]=R);let re;t[30]!==i||t[31]!==o||t[32]!==C?(re=it(C,o,i),t[30]=i,t[31]=o,t[32]=C,t[33]=re):re=t[33];let z;t[34]===re?z=t[35]:(z=(0,$.jsx)(`span`,{children:re}),t[34]=re,t[35]=z);let B=w===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:X(f.taskElapsed,{duration:w})})]}),U;t[36]!==z||t[37]!==B?(U=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[z,B]}),t[36]=z,t[37]=B,t[38]=U):U=t[38];let W=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:T}):null,ie=s?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:f.taskOpenDetails}):null,ae;t[39]!==W||t[40]!==ie?(ae=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[W,ie]}),t[39]=W,t[40]=ie,t[41]=ae):ae=t[41];let G;t[42]===m?G=t[43]:(G=()=>m(lt),t[42]=m,t[43]=G);let oe;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(oe=(0,$.jsx)(H,{className:`size-4`,"aria-hidden":!0}),t[44]=oe):oe=t[44];let se;t[45]!==f.taskActionsAria||t[46]!==p||t[47]!==G?(se=(0,$.jsx)(V,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":f.taskActionsAria,"aria-expanded":p,onClick:G,children:oe}),t[45]=f.taskActionsAria,t[46]=p,t[47]=G,t[48]=se):se=t[48];let ce;t[49]!==v||t[50]!==g||t[51]!==P||t[52]!==f.cancel||t[53]!==f.continueInChat||t[54]!==f.rerun||t[55]!==f.taskCloseMenu||t[56]!==p||t[57]!==u||t[58]!==d||t[59]!==n||t[60]!==m?(ce=p?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":f.taskCloseMenu,onClick:()=>m(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[(0,$.jsx)(ct,{label:f.continueInChat,disabled:g,onClick:()=>{m(!1),P()}}),v?(0,$.jsx)(ct,{label:f.cancel,tone:`danger`,onClick:()=>{m(!1),u(n.id)}}):null,ot(n)?(0,$.jsx)(ct,{label:f.rerun,onClick:()=>{m(!1),d(n.id)}}):null]})]}):null,t[49]=v,t[50]=g,t[51]=P,t[52]=f.cancel,t[53]=f.continueInChat,t[54]=f.rerun,t[55]=f.taskCloseMenu,t[56]=p,t[57]=u,t[58]=d,t[59]=n,t[60]=m,t[61]=ce):ce=t[61];let le;return t[62]!==se||t[63]!==ce?(le=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[se,ce]}),t[62]=se,t[63]=ce,t[64]=le):le=t[64],(0,$.jsxs)(`div`,{className:F,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:M,"aria-label":`${f.taskOpenDetails}: ${D}`,"aria-current":s?`true`:void 0,className:I,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[L,(0,$.jsx)(`span`,{className:R,children:f.status[n.status]??n.status})]}),U]}),y?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:X(f.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[x,`%`]})]}),(0,$.jsx)(`div`,{className:`mt-1.5 h-1.5 overflow-hidden rounded-full bg-surface-hover`,children:(0,$.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-all`,style:{width:`${x}%`}})})]}):null,ae,S?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(O,{className:`size-3 shrink-0`,"aria-hidden":!0}),X(f.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),le]})});function ct(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:i,onClick:a}=e,o=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,s=i===`danger`&&!r&&`text-red-600 dark:text-red-300`,c;t[0]!==o||t[1]!==s?(c=J(`block w-full px-3 py-1.5 text-left text-xs`,o,s),t[0]=o,t[1]=s,t[2]=c):c=t[2];let l;return t[3]!==r||t[4]!==n||t[5]!==a||t[6]!==c?(l=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:a,className:c,children:n}),t[3]=r,t[4]=n,t[5]=a,t[6]=c,t[7]=l):l=t[7],l}function lt(e){return!e}function ut(e,t){return t.boardColumns[e]}var dt=(0,Z.memo)(function(e){let t=(0,Q.c)(14),{column:n,language:r,localeTag:i,nowMs:o,selectedRunId:s,onOpenRun:c,onOpenRunChat:l,onCancelRun:u,onRetryRun:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h=n.id===`succeeded`,g=h?5:n.runs.length,_;t[0]!==g||t[1]!==n.runs||t[2]!==p||t[3]!==h?(_=h&&!p?n.runs.slice(0,g):n.runs,t[0]=g,t[1]=n.runs,t[2]=p,t[3]=h,t[4]=_):_=t[4];let v=_,y=h&&n.runs.length>5&&!p,b=h&&p,x;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(x=J(`flex min-h-112 w-73 shrink-0 snap-center flex-col rounded-2xl border border-edge bg-surface-panel/40`),t[5]=x):x=t[5];let S;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(`span`,{className:`size-2 rounded-full bg-accent`,"aria-hidden":!0}),t[6]=S):S=t[6];let C;t[7]===n.runs.length?C=t[8]:(C=(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:n.runs.length}),t[7]=n.runs.length,t[8]=C);let w=v.length===0?(0,$.jsx)(`div`,{className:`flex min-h-32 items-center justify-center rounded-xl border border-dashed border-edge bg-surface-panel/40 px-4 py-6 text-center text-xs text-fg-subtle`,children:f.boardColumnEmpty}):v.map(e=>(0,$.jsx)(st,{run:e,language:r,localeTag:i,nowMs:o,selected:e.id===s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d},e.id)),T=y?(0,$.jsx)(V,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!0),children:X(f.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,E=b?(0,$.jsx)(V,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!1),children:f.boardCollapseSucceeded}):null,D=h&&(n.hiddenByCap??0)>0?(0,$.jsx)(`p`,{className:`px-1 text-center text-[11px] text-fg-subtle`,children:X(f.boardSucceededCapHint,{count:n.hiddenByCap??0})}):null,O;return t[9]!==w||t[10]!==T||t[11]!==E||t[12]!==D?(O=(0,$.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3 p-2.5`,children:[w,T,E,D]}),t[9]=w,t[10]=T,t[11]=E,t[12]=D,t[13]=O):O=t[13],(0,$.jsxs)(`section`,{className:x,"aria-label":ut(n.id,f),children:[(0,$.jsxs)(`header`,{className:`sticky top-0 z-10 flex items-center justify-between gap-2 rounded-t-2xl border-b border-edge-subtle bg-surface-panel/90 px-3.5 py-3 backdrop-blur`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[S,(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:ut(n.id,f)})]}),C]}),O]})}),ft=(0,Z.memo)(function(e){let t=(0,Q.c)(45),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m,onStart:h}=e,g;t[0]===n?g=t[1]:(g=n.some(pt),t[0]=n,t[1]=g);let _=g,[v,y]=(0,Z.useState)(mt),b,x;t[2]===_?(b=t[3],x=t[4]):(b=()=>{if(!_)return;let e=window.setInterval(()=>y(Date.now()),1e3);return()=>window.clearInterval(e)},x=[_],t[2]=_,t[3]=b,t[4]=x),(0,Z.useEffect)(b,x);let S;t[5]!==v||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(S=tt(Xe(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),v),t[5]=v,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=S):S=t[10];let C=S,w=C.reduce(ht,0);if(u&&w===0){let e;return t[11]===a.loading?e=t[12]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:a.loading}),t[11]=a.loading,t[12]=e),e}if(!u&&w===0){let e;t[13]===a.boardEmptyTitle?e=t[14]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[13]=a.boardEmptyTitle,t[14]=e);let n;t[15]===a.boardEmptyHint?n=t[16]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[15]=a.boardEmptyHint,t[16]=n);let r;t[17]!==a.boardStart||t[18]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(V,{variant:`primary`,onClick:h,children:a.boardStart})}),t[17]=a.boardStart,t[18]=h,t[19]=r):r=t[19];let i;return t[20]!==e||t[21]!==n||t[22]!==r?(i=(0,$.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[20]=e,t[21]=n,t[22]=r,t[23]=i):i=t[23],i}let T;if(t[24]!==C||t[25]!==r||t[26]!==i||t[27]!==v||t[28]!==p||t[29]!==d||t[30]!==f||t[31]!==m||t[32]!==l){let e;t[34]!==r||t[35]!==i||t[36]!==v||t[37]!==p||t[38]!==d||t[39]!==f||t[40]!==m||t[41]!==l?(e=e=>(0,$.jsx)(dt,{column:e,language:r,localeTag:i,nowMs:v,selectedRunId:l,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[34]=r,t[35]=i,t[36]=v,t[37]=p,t[38]=d,t[39]=f,t[40]=m,t[41]=l,t[42]=e):e=t[42],T=C.map(e),t[24]=C,t[25]=r,t[26]=i,t[27]=v,t[28]=p,t[29]=d,t[30]=f,t[31]=m,t[32]=l,t[33]=T}else T=t[33];let E;return t[43]===T?E=t[44]:(E=(0,$.jsx)(`div`,{className:`-mx-1 flex min-w-0 snap-x snap-mandatory gap-3 overflow-x-auto px-1 pb-2`,children:T}),t[43]=T,t[44]=E),E});function pt(e){return e.status===`queued`||e.status===`running`}function mt(){return Date.now()}function ht(e,t){return e+t.runs.length}var gt=`export const meta = {
|
|
2
|
+
name: 'my_workflow',
|
|
3
|
+
description: 'Describe what this workflow does.',
|
|
4
|
+
whenToUse: 'When the user asks for ...',
|
|
5
|
+
examplePrompts: [
|
|
6
|
+
{ field: 'goal', text: 'Example goal for this workflow' },
|
|
7
|
+
],
|
|
8
|
+
tags: ['custom'],
|
|
9
|
+
estimatedAgents: { min: 2, max: 4 },
|
|
10
|
+
phases: [{ title: 'Step 1' }, { title: 'Synthesize' }],
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
phase('Step 1')
|
|
14
|
+
const first = await agent('Do the first step.', { label: 'step 1' })
|
|
15
|
+
|
|
16
|
+
phase('Synthesize')
|
|
17
|
+
return await agent('Summarize:\\n\\n' + first, { label: 'synthesis' })
|
|
18
|
+
`;function _t(e){let t=(0,Q.c)(44),{open:n,language:r,ownerAgentId:i,saving:o,onClose:s,onSave:c,onSaveAndStart:l}=e,u;t[0]===r?u=t[1]:(u=a(r),t[0]=r,t[1]=u);let f=u.workflows,[p,m]=(0,Z.useState)(`ai`),g,_;t[2]===n?(g=t[3],_=t[4]):(g=()=>{n&&m(`ai`)},_=[n],t[2]=n,t[3]=g,t[4]=_),(0,Z.useEffect)(g,_);let y;t[5]===s?y=t[6]:(y=e=>!e&&s(),t[5]=s,t[6]=y);let b;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(w,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[7]=b):b=t[7];let x;t[8]===f.createWorkflowTitle?x=t[9]:(x=(0,$.jsx)(ce,{className:`text-base font-semibold text-fg`,children:f.createWorkflowTitle}),t[8]=f.createWorkflowTitle,t[9]=x);let S;t[10]===f.createWorkflowHint?S=t[11]:(S=(0,$.jsx)(h,{className:`mt-1 text-sm text-fg-muted`,children:f.createWorkflowHint}),t[10]=f.createWorkflowHint,t[11]=S);let C=p===`ai`,T,E;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(E=()=>m(`ai`),T=(0,$.jsx)(M,{className:`size-4`,"aria-hidden":!0}),t[12]=T,t[13]=E):(T=t[12],E=t[13]);let D;t[14]!==f.createWorkflowAiTab||t[15]!==C?(D=(0,$.jsx)(vt,{active:C,onClick:E,icon:T,children:f.createWorkflowAiTab}),t[14]=f.createWorkflowAiTab,t[15]=C,t[16]=D):D=t[16];let O=p===`manual`,k,A;t[17]===Symbol.for(`react.memo_cache_sentinel`)?(k=()=>m(`manual`),A=(0,$.jsx)(we,{className:`size-4`,"aria-hidden":!0}),t[17]=k,t[18]=A):(k=t[17],A=t[18]);let j;t[19]!==f.createWorkflowManualTab||t[20]!==O?(j=(0,$.jsx)(vt,{active:O,onClick:k,icon:A,children:f.createWorkflowManualTab}),t[19]=f.createWorkflowManualTab,t[20]=O,t[21]=j):j=t[21];let N;t[22]!==D||t[23]!==j?(N=(0,$.jsxs)(`div`,{className:`mt-4 inline-flex rounded-xl border border-edge bg-surface-base p-1`,children:[D,j]}),t[22]=D,t[23]=j,t[24]=N):N=t[24];let P;t[25]!==N||t[26]!==x||t[27]!==S?(P=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[x,S,N]}),t[25]=N,t[26]=x,t[27]=S,t[28]=P):P=t[28];let ee;t[29]!==r||t[30]!==p||t[31]!==s||t[32]!==c||t[33]!==l||t[34]!==i||t[35]!==o?(ee=p===`ai`?(0,$.jsx)(yt,{language:r,ownerAgentId:i,saving:o,onClose:s,onSave:c,onSaveAndStart:l}):(0,$.jsx)(bt,{language:r,saving:o,onClose:s,onSave:c}),t[29]=r,t[30]=p,t[31]=s,t[32]=c,t[33]=l,t[34]=i,t[35]=o,t[36]=ee):ee=t[36];let F;t[37]!==P||t[38]!==ee?(F=(0,$.jsxs)(q,{children:[b,(0,$.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-66 flex h-[min(92vh,52rem)] w-[min(100%-2rem,72rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[P,ee]})]}),t[37]=P,t[38]=ee,t[39]=F):F=t[39];let I;return t[40]!==n||t[41]!==F||t[42]!==y?(I=(0,$.jsx)(d,{open:n,onOpenChange:y,children:F}),t[40]=n,t[41]=F,t[42]=y,t[43]=I):I=t[43],I}function vt(e){let t=(0,Q.c)(5),{active:n,onClick:r,icon:i,children:a}=e,o=n?`inline-flex h-8 items-center gap-2 rounded-lg bg-surface-panel px-3 text-sm font-medium text-fg shadow-surface`:`inline-flex h-8 items-center gap-2 rounded-lg px-3 text-sm font-medium text-fg-muted hover:text-fg`,s;return t[0]!==a||t[1]!==i||t[2]!==r||t[3]!==o?(s=(0,$.jsxs)(`button`,{type:`button`,onClick:r,className:o,children:[i,a]}),t[0]=a,t[1]=i,t[2]=r,t[3]=o,t[4]=s):s=t[4],s}function yt({language:e,ownerAgentId:t,saving:n,onClose:r,onSave:i,onSaveAndStart:o}){let s=a(e).workflows,[c,l]=(0,Z.useState)(``),[u,d]=(0,Z.useState)(null),[f,p]=(0,Z.useState)(``),[m,h]=(0,Z.useState)(``),[g,_]=(0,Z.useState)({allowNetwork:!1,fileSystem:`read`,maxPhases:4,maxSubagents:8,outputFormat:`report`}),[v,y]=(0,Z.useState)(!1),[b,x]=(0,Z.useState)(null),S=(0,Z.useMemo)(()=>u?.validation.errors.map(e=>e.message)??[],[u]),C=(0,Z.useMemo)(()=>u?.lint.filter(e=>e.severity===`error`)??[],[u]),w=c.trim().length>0&&!v,T=!!(u&&f.trim()&&m.trim()&&u.validation.valid&&C.length===0&&!n),E=async n=>{if(c.trim()){y(!0),x(null);try{let r=await Se({prompt:c,agentId:t,language:e===`zh`?`zh`:`en`,mode:n,existingScript:n===`improve`?m:void 0,constraints:g});d(r),p(r.name),h(r.script)}catch(e){x(e instanceof Error?e.message:s.nlBuilderGenerateFailed)}finally{y(!1)}}},D=async()=>{T&&await i({name:f.trim(),script:m})&&r()},O=async()=>{T&&await o({name:f.trim(),script:m,goal:c.trim()})};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-4 overflow-auto px-5 py-4 lg:grid-cols-[minmax(18rem,0.9fr)_minmax(24rem,1.4fr)]`,children:[(0,$.jsxs)(`section`,{className:`space-y-3`,children:[(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:s.nlBuilderPromptLabel}),(0,$.jsx)(`textarea`,{value:c,onChange:e=>l(e.target.value),placeholder:s.nlBuilderPromptPlaceholder,className:`mt-1.5 min-h-36 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm leading-6 text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),(0,$.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,$.jsx)(xt,{label:s.nlBuilderMaxPhases,value:g.maxPhases??4,min:1,max:8,onChange:e=>_(t=>({...t,maxPhases:e}))}),(0,$.jsx)(xt,{label:s.nlBuilderMaxAgents,value:g.maxSubagents??8,min:1,max:20,onChange:e=>_(t=>({...t,maxSubagents:e}))})]}),(0,$.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[(0,$.jsxs)(`label`,{className:`flex items-center gap-2 rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg-muted`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:!!g.allowNetwork,onChange:e=>_(t=>({...t,allowNetwork:e.target.checked}))}),s.nlBuilderAllowNetwork]}),(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:s.nlBuilderFilesystem}),(0,$.jsxs)(`select`,{value:g.fileSystem??`read`,onChange:e=>_(t=>({...t,fileSystem:e.target.value})),className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`,children:[(0,$.jsx)(`option`,{value:`none`,children:`none`}),(0,$.jsx)(`option`,{value:`read`,children:`read`}),(0,$.jsx)(`option`,{value:`write`,children:`write`})]})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,$.jsxs)(V,{variant:`primary`,disabled:!w,onClick:()=>void E(`create`),children:[(0,$.jsx)(M,{className:`size-4`,"aria-hidden":!0}),v?s.nlBuilderGenerating:s.nlBuilderGenerate]}),u?(0,$.jsxs)(V,{variant:`secondary`,disabled:!w,onClick:()=>void E(`improve`),children:[(0,$.jsx)(he,{className:`size-4`,"aria-hidden":!0}),s.nlBuilderImprove]}):null]}),b?(0,$.jsx)(Nt,{text:b}):null,u?(0,$.jsx)(wt,{draft:u,labels:s}):null]}),(0,$.jsxs)(`section`,{className:`min-w-0 space-y-3`,children:[(0,$.jsx)(St,{labels:s,name:f,setName:p}),(0,$.jsx)(Ct,{labels:s,script:m,setScript:h,minHeightClass:`min-h-96`}),u?(0,$.jsx)(Tt,{draft:u,labels:s,validationIssues:S}):null]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(V,{variant:`secondary`,onClick:r,disabled:n||v,children:s.cancelDialog}),(0,$.jsx)(V,{variant:`secondary`,disabled:!T,onClick:()=>void D(),children:n?s.savingWorkflow:s.saveWorkflow}),(0,$.jsx)(V,{variant:`primary`,disabled:!T,onClick:()=>void O(),children:s.nlBuilderSaveAndStart})]})]})}function bt({language:e,saving:t,onClose:n,onSave:r}){let i=a(e).workflows,[o,s]=(0,Z.useState)(``),[c,l]=(0,Z.useState)(gt),[u,d]=(0,Z.useState)(!1),[f,p]=(0,Z.useState)(!1),[m,h]=(0,Z.useState)(null),[g,_]=(0,Z.useState)(null),v=o.trim(),y=!!(v&&c.trim());(0,Z.useEffect)(()=>{if(!y){p(!1),h(null),_(null);return}let e=!1,t=window.setTimeout(()=>{p(!0),h(null),x(v,c).then(t=>{e||_(t)}).catch(t=>{e||(_(null),h(t instanceof Error?t.message:i.validateWorkflowFailed))}).finally(()=>{e||p(!1)})},450);return()=>{e=!0,window.clearTimeout(t)}},[y,i.validateWorkflowFailed,c,v]);let b=(0,Z.useMemo)(()=>m?[m]:g?.errors.map(e=>e.message)??[],[m,g]),S=u||f||g!=null||m!=null,C=y&&!t&&!f&&g?.valid===!0,w=async()=>{if(d(!0),!(!y||t)){p(!0),h(null);try{let e=await x(v,c);if(_(e),!e.valid)return;await r({name:v,script:c})&&n()}catch(e){_(null),h(e instanceof Error?e.message:i.validateWorkflowFailed)}finally{p(!1)}}};return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-3 overflow-auto px-5 py-4`,children:[(0,$.jsx)(St,{labels:i,name:o,setName:e=>{s(e),_(null),h(null)}}),(0,$.jsx)(Ct,{labels:i,script:c,setScript:e=>{l(e),_(null),h(null)},minHeightClass:`min-h-72`}),S?(0,$.jsx)(kt,{labels:i,validating:f,validationIssues:b,validationResult:g}):null]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(V,{variant:`secondary`,onClick:n,disabled:t,children:i.cancelDialog}),(0,$.jsx)(V,{variant:`primary`,disabled:!C,onClick:()=>void w(),children:t?i.savingWorkflow:i.saveWorkflow})]})]})}function xt(e){let t=(0,Q.c)(12),{label:n,value:r,min:i,max:a,onChange:o}=e,s;t[0]===n?s=t[1]:(s=(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:n}),t[0]=n,t[1]=s);let c;t[2]===o?c=t[3]:(c=e=>o(Number(e.target.value)||void 0),t[2]=o,t[3]=c);let l;t[4]!==a||t[5]!==i||t[6]!==c||t[7]!==r?(l=(0,$.jsx)(`input`,{type:`number`,min:i,max:a,value:r,onChange:c,className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20`}),t[4]=a,t[5]=i,t[6]=c,t[7]=r,t[8]=l):l=t[8];let u;return t[9]!==s||t[10]!==l?(u=(0,$.jsxs)(`label`,{className:`block`,children:[s,l]}),t[9]=s,t[10]=l,t[11]=u):u=t[11],u}function St(e){let t=(0,Q.c)(11),{labels:n,name:r,setName:i}=e,a;t[0]===n.workflowNameLabel?a=t[1]:(a=(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:n.workflowNameLabel}),t[0]=n.workflowNameLabel,t[1]=a);let o;t[2]===i?o=t[3]:(o=e=>i(e.target.value),t[2]=i,t[3]=o);let s;t[4]!==n.workflowNamePlaceholder||t[5]!==r||t[6]!==o?(s=(0,$.jsx)(`input`,{value:r,onChange:o,placeholder:n.workflowNamePlaceholder,className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 font-mono text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),t[4]=n.workflowNamePlaceholder,t[5]=r,t[6]=o,t[7]=s):s=t[7];let c;return t[8]!==a||t[9]!==s?(c=(0,$.jsxs)(`label`,{className:`block`,children:[a,s]}),t[8]=a,t[9]=s,t[10]=c):c=t[10],c}function Ct(e){let t=(0,Q.c)(11),{labels:n,script:r,setScript:i,minHeightClass:a}=e,o;t[0]===n.workflowScriptLabel?o=t[1]:(o=(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:n.workflowScriptLabel}),t[0]=n.workflowScriptLabel,t[1]=o);let s;t[2]===i?s=t[3]:(s=e=>i(e.target.value),t[2]=i,t[3]=s);let c=`mt-1.5 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 font-mono text-xs leading-5 text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/20 ${a}`,l;t[4]!==r||t[5]!==s||t[6]!==c?(l=(0,$.jsx)(`textarea`,{value:r,onChange:s,spellCheck:!1,className:c}),t[4]=r,t[5]=s,t[6]=c,t[7]=l):l=t[7];let u;return t[8]!==o||t[9]!==l?(u=(0,$.jsxs)(`label`,{className:`block`,children:[o,l]}),t[8]=o,t[9]=l,t[10]=u):u=t[10],u}function wt(e){let t=(0,Q.c)(23),{draft:n,labels:r}=e,i=n.manifest.title??n.name,a;t[0]===i?a=t[1]:(a=(0,$.jsx)(`div`,{className:`text-sm font-semibold text-fg`,children:i}),t[0]=i,t[1]=a);let o;t[2]===n.explanation?o=t[3]:(o=(0,$.jsx)(`p`,{className:`text-xs leading-5 text-fg-muted`,children:n.explanation}),t[2]=n.explanation,t[3]=o);let s;t[4]!==n.repairAttempts||t[5]!==r.nlBuilderAutoRepaired?(s=n.repairAttempts>0?(0,$.jsx)(`div`,{className:`text-xs font-medium text-accent-fg`,children:r.nlBuilderAutoRepaired.replace(`{count}`,String(n.repairAttempts))}):null,t[4]=n.repairAttempts,t[5]=r.nlBuilderAutoRepaired,t[6]=s):s=t[6];let c;t[7]!==n.permissionsSummary||t[8]!==r.nlBuilderPermissions?(c=(0,$.jsx)(jt,{title:r.nlBuilderPermissions,items:n.permissionsSummary}),t[7]=n.permissionsSummary,t[8]=r.nlBuilderPermissions,t[9]=c):c=t[9];let l;t[10]!==n.assumptions||t[11]!==r.nlBuilderAssumptions?(l=(0,$.jsx)(jt,{title:r.nlBuilderAssumptions,items:n.assumptions}),t[10]=n.assumptions,t[11]=r.nlBuilderAssumptions,t[12]=l):l=t[12];let u;t[13]!==n.risks||t[14]!==r.nlBuilderRisks?(u=(0,$.jsx)(jt,{title:r.nlBuilderRisks,items:n.risks}),t[13]=n.risks,t[14]=r.nlBuilderRisks,t[15]=u):u=t[15];let d;return t[16]!==a||t[17]!==o||t[18]!==s||t[19]!==c||t[20]!==l||t[21]!==u?(d=(0,$.jsxs)(`div`,{className:`space-y-2 rounded-xl border border-edge bg-surface-base/50 p-3`,children:[a,o,s,c,l,u]}),t[16]=a,t[17]=o,t[18]=s,t[19]=c,t[20]=l,t[21]=u,t[22]=d):d=t[22],d}function Tt(e){let t=(0,Q.c)(17),{draft:n,labels:r,validationIssues:i}=e,a=n.lint,o;t[0]!==n.validation.valid||t[1]!==a?(o=n.validation.valid&&a.every(Ot),t[0]=n.validation.valid,t[1]=a,t[2]=o):o=t[2];let c=o,l=c?`rounded-xl border border-emerald-500/30 bg-emerald-500/10 p-3 text-sm text-emerald-800 dark:text-emerald-200`:`rounded-xl border border-amber-500/30 bg-amber-500/10 p-3 text-sm text-amber-800 dark:text-amber-200`,u;t[3]===c?u=t[4]:(u=c?(0,$.jsx)(s,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(O,{className:`size-4`,"aria-hidden":!0}),t[3]=c,t[4]=u);let d=c?r.validationPassed:r.nlBuilderReviewIssues,f;t[5]!==u||t[6]!==d?(f=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[u,d]}),t[5]=u,t[6]=d,t[7]=f):f=t[7];let p;t[8]!==n.validation.definition?.phases||t[9]!==r.validationPreview||t[10]!==a||t[11]!==i?(p=i.length>0||a.length>0?(0,$.jsxs)(`ul`,{className:`mt-2 list-disc space-y-1 pl-5 text-xs leading-5`,children:[i.map(Dt),a.map(Et)]}):(0,$.jsx)(`p`,{className:`mt-1 text-xs opacity-80`,children:r.validationPreview.replace(`{{phaseCount}}`,String(n.validation.definition?.phases.length??0))}),t[8]=n.validation.definition?.phases,t[9]=r.validationPreview,t[10]=a,t[11]=i,t[12]=p):p=t[12];let m;return t[13]!==l||t[14]!==f||t[15]!==p?(m=(0,$.jsxs)(`div`,{className:l,children:[f,p]}),t[13]=l,t[14]=f,t[15]=p,t[16]=m):m=t[16],m}function Et(e){return(0,$.jsx)(`li`,{children:e.message},`${e.code}:${e.message}`)}function Dt(e){return(0,$.jsx)(`li`,{children:e},e)}function Ot(e){return e.severity!==`error`}function kt(e){let t=(0,Q.c)(10),{labels:n,validating:r,validationIssues:i,validationResult:a}=e,o=i.length>0?`rounded-xl border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-200`:`rounded-xl border border-emerald-500/30 bg-emerald-500/10 px-3 py-2 text-sm text-emerald-700 dark:text-emerald-200`,s=r?n.validatingWorkflow:i.length>0?n.validationFailed:n.validationPassed,c;t[0]===s?c=t[1]:(c=(0,$.jsx)(`div`,{className:`font-medium`,children:s}),t[0]=s,t[1]=c);let l;t[2]!==n.validationPreview||t[3]!==i||t[4]!==a?(l=i.length>0?(0,$.jsx)(`ul`,{className:`mt-1 list-disc space-y-1 pl-5`,children:i.map(At)}):a?.definition?(0,$.jsx)(`div`,{className:`mt-1 text-xs opacity-80`,children:n.validationPreview.replace(`{{phaseCount}}`,String(a.definition.phases.length))}):null,t[2]=n.validationPreview,t[3]=i,t[4]=a,t[5]=l):l=t[5];let u;return t[6]!==o||t[7]!==c||t[8]!==l?(u=(0,$.jsxs)(`div`,{className:o,role:`status`,children:[c,l]}),t[6]=o,t[7]=c,t[8]=l,t[9]=u):u=t[9],u}function At(e){return(0,$.jsx)(`li`,{children:e},e)}function jt(e){let t=(0,Q.c)(10),{title:n,items:r}=e;if(!r.length)return null;let i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,$.jsx)(Te,{className:`size-3`,"aria-hidden":!0}),t[0]=i):i=t[0];let a;t[1]===n?a=t[2]:(a=(0,$.jsxs)(`div`,{className:`mb-1 flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-fg-subtle`,children:[i,n]}),t[1]=n,t[2]=a);let o;t[3]===r?o=t[4]:(o=r.slice(0,5).map(Mt),t[3]=r,t[4]=o);let s;t[5]===o?s=t[6]:(s=(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:o}),t[5]=o,t[6]=s);let c;return t[7]!==a||t[8]!==s?(c=(0,$.jsxs)(`div`,{children:[a,s]}),t[7]=a,t[8]=s,t[9]=c):c=t[9],c}function Mt(e){return(0,$.jsx)(`span`,{className:`rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1 text-[11px] text-fg-muted`,children:e},e)}function Nt(e){let t=(0,Q.c)(2),{text:n}=e,r;return t[0]===n?r=t[1]:(r=(0,$.jsx)(`div`,{className:`rounded-xl border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-200`,children:n}),t[0]=n,t[1]=r),r}function Pt(e){let t=(0,Q.c)(57),{open:n,definition:r,language:i,onClose:o,onRun:s}=e,c;t[0]===i?c=t[1]:(c=a(i),t[0]=i,t[1]=c);let l=c.workflows;if(!r)return null;let u;t[2]!==r||t[3]!==i?(u=Y(r,i),t[2]=r,t[3]=i,t[4]=u):u=t[4];let f=u,p=r.runtime?.source??``,m;t[5]===o?m=t[6]:(m=e=>!e&&o(),t[5]=o,t[6]=m);let g;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,$.jsx)(w,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[7]=g):g=t[7];let _;t[8]===r.title?_=t[9]:(_=(0,$.jsx)(ce,{className:`text-base font-semibold text-fg`,children:r.title}),t[8]=r.title,t[9]=_);let y;t[10]===f.description?y=t[11]:(y=(0,$.jsx)(h,{className:`mt-1 text-sm text-fg-muted`,children:f.description}),t[10]=f.description,t[11]=y);let b;t[12]!==_||t[13]!==y?(b=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[_,y]}),t[12]=_,t[13]=y,t[14]=b):b=t[14];let x;t[15]!==l.whenToUseHeading||t[16]!==f.whenToUse?(x=f.whenToUse?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.whenToUseHeading}),(0,$.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:f.whenToUse})]}):null,t[15]=l.whenToUseHeading,t[16]=f.whenToUse,t[17]=x):x=t[17];let S;t[18]!==r||t[19]!==l?(S=(0,$.jsx)(It,{definition:r,labels:l}),t[18]=r,t[19]=l,t[20]=S):S=t[20];let C;t[21]!==r.inputSchema||t[22]!==l.inputsHeading?(C=r.inputSchema?(0,$.jsx)(Rt,{title:l.inputsHeading,schema:r.inputSchema}):null,t[21]=r.inputSchema,t[22]=l.inputsHeading,t[23]=C):C=t[23];let T;t[24]!==r.outputSchema||t[25]!==l.outputsHeading?(T=r.outputSchema?(0,$.jsx)(Rt,{title:l.outputsHeading,schema:r.outputSchema}):null,t[24]=r.outputSchema,t[25]=l.outputsHeading,t[26]=T):T=t[26];let E;t[27]!==r.phases||t[28]!==l.phasesHeading?(E=r.phases.length>0?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.phasesHeading}),(0,$.jsx)(`ol`,{className:`mt-2 space-y-2`,children:r.phases.map(Ft)})]}):null,t[27]=r.phases,t[28]=l.phasesHeading,t[29]=E):E=t[29];let D;t[30]!==l.scriptHeading||t[31]!==p?(D=p?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.scriptHeading}),(0,$.jsx)(`pre`,{className:`mt-2 max-h-64 overflow-auto rounded-xl border border-edge bg-surface-base/50 p-3 font-mono text-xs leading-5 text-fg-muted`,children:p})]}):null,t[30]=l.scriptHeading,t[31]=p,t[32]=D):D=t[32];let O;t[33]!==C||t[34]!==T||t[35]!==E||t[36]!==D||t[37]!==x||t[38]!==S?(O=(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[x,S,C,T,E,D]}),t[33]=C,t[34]=T,t[35]=E,t[36]=D,t[37]=x,t[38]=S,t[39]=O):O=t[39];let k;t[40]!==l.closeResult||t[41]!==o?(k=(0,$.jsx)(V,{variant:`secondary`,onClick:o,children:l.closeResult}),t[40]=l.closeResult,t[41]=o,t[42]=k):k=t[42];let A;t[43]!==l.runWorkflow||t[44]!==s?(A=(0,$.jsx)(V,{variant:`primary`,onClick:s,children:l.runWorkflow}),t[43]=l.runWorkflow,t[44]=s,t[45]=A):A=t[45];let j;t[46]!==k||t[47]!==A?(j=(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[k,A]}),t[46]=k,t[47]=A,t[48]=j):j=t[48];let M;t[49]!==O||t[50]!==j||t[51]!==b?(M=(0,$.jsxs)(q,{children:[g,(0,$.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,44rem)] w-[min(100%-2rem,48rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[b,O,j]})]}),t[49]=O,t[50]=j,t[51]=b,t[52]=M):M=t[52];let N;return t[53]!==n||t[54]!==M||t[55]!==m?(N=(0,$.jsx)(d,{open:n,onOpenChange:m,children:M}),t[53]=n,t[54]=M,t[55]=m,t[56]=N):N=t[56],N}function Ft(e,t){return(0,$.jsxs)(`li`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`text-sm font-medium text-fg`,children:[t+1,`. `,e.title]}),e.description?(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:e.description}):null]},e.id)}function It(e){let t=(0,Q.c)(39),{definition:n,labels:r}=e,i=n.permissions,a=n.resources,o;t[0]!==r.permissionsTools||t[1]!==i?(o=i?.tools?.length?[r.permissionsTools,i.tools.join(`, `)]:null,t[0]=r.permissionsTools,t[1]=i,t[2]=o):o=t[2];let s;t[3]!==r.networkDisabled||t[4]!==r.networkEnabled||t[5]!==r.permissionsNetwork||t[6]!==i?(s=i?.network==null?null:[r.permissionsNetwork,i.network?r.networkEnabled:r.networkDisabled],t[3]=r.networkDisabled,t[4]=r.networkEnabled,t[5]=r.permissionsNetwork,t[6]=i,t[7]=s):s=t[7];let c;t[8]!==r.permissionsFileSystem||t[9]!==i?(c=i?.fileSystem?[r.permissionsFileSystem,i.fileSystem]:null,t[8]=r.permissionsFileSystem,t[9]=i,t[10]=c):c=t[10];let l;t[11]!==r.permissionsApproval||t[12]!==i?.approvalRequired?(l=i?.approvalRequired?[r.permissionsApproval,r.permissionsApproval]:null,t[11]=r.permissionsApproval,t[12]=i?.approvalRequired,t[13]=l):l=t[13];let u;t[14]!==r.resourcesSkills||t[15]!==a?(u=a?.skills?.length?[r.resourcesSkills,a.skills.join(`, `)]:null,t[14]=r.resourcesSkills,t[15]=a,t[16]=u):u=t[16];let d;t[17]!==r.resourcesContextFiles||t[18]!==a?(d=a?.contextFiles?.length?[r.resourcesContextFiles,a.contextFiles.join(`, `)]:null,t[17]=r.resourcesContextFiles,t[18]=a,t[19]=d):d=t[19];let f;t[20]!==r.resourcesPromptTemplates||t[21]!==a?(f=a?.promptTemplates?.length?[r.resourcesPromptTemplates,a.promptTemplates.join(`, `)]:null,t[20]=r.resourcesPromptTemplates,t[21]=a,t[22]=f):f=t[22];let p;t[23]!==o||t[24]!==s||t[25]!==c||t[26]!==l||t[27]!==u||t[28]!==d||t[29]!==f?(p=[o,s,c,l,u,d,f].filter(Boolean),t[23]=o,t[24]=s,t[25]=c,t[26]=l,t[27]=u,t[28]=d,t[29]=f,t[30]=p):p=t[30];let m=p,h;t[31]===r.capabilitiesHeading?h=t[32]:(h=(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:r.capabilitiesHeading}),t[31]=r.capabilitiesHeading,t[32]=h);let g;t[33]!==r.capabilityNone||t[34]!==m?(g=m.length>0?(0,$.jsx)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:m.map(Lt)}):(0,$.jsx)(`p`,{className:`mt-2 text-sm text-fg-muted`,children:r.capabilityNone}),t[33]=r.capabilityNone,t[34]=m,t[35]=g):g=t[35];let _;return t[36]!==g||t[37]!==h?(_=(0,$.jsxs)(`section`,{children:[h,g]}),t[36]=g,t[37]=h,t[38]=_):_=t[38],_}function Lt(e){let[t,n]=e;return(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-medium text-fg-muted`,children:[(0,$.jsx)(b,{className:`size-3.5 text-fg-subtle`,"aria-hidden":!0}),t]}),(0,$.jsx)(`div`,{className:`mt-1 break-words text-sm text-fg`,children:n})]},`${t}:${n}`)}function Rt(e){let t=(0,Q.c)(16),{title:n,schema:r}=e,i;t[0]===r.properties?i=t[1]:(i=Object.keys(r.properties??{}),t[0]=r.properties,t[1]=i);let a=i,o;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(Te,{className:`size-3.5`,"aria-hidden":!0}),t[2]=o):o=t[2];let s;t[3]===n?s=t[4]:(s=(0,$.jsxs)(`h3`,{className:`flex items-center gap-2 text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:[o,n]}),t[3]=n,t[4]=s);let c;t[5]===a?c=t[6]:(c=a.length>0?(0,$.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-1.5`,children:a.map(zt)}):null,t[5]=a,t[6]=c);let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(`summary`,{className:`cursor-pointer text-xs text-fg-subtle hover:text-fg-muted`,children:`JSON`}),t[7]=l):l=t[7];let u;t[8]===r?u=t[9]:(u=JSON.stringify(r,null,2),t[8]=r,t[9]=u);let d;t[10]===u?d=t[11]:(d=(0,$.jsxs)(`details`,{className:`mt-2`,children:[l,(0,$.jsx)(`pre`,{className:`mt-2 max-h-48 overflow-auto rounded-xl border border-edge bg-surface-base/50 p-3 font-mono text-xs leading-5 text-fg-muted`,children:u})]}),t[10]=u,t[11]=d);let f;return t[12]!==s||t[13]!==c||t[14]!==d?(f=(0,$.jsxs)(`section`,{children:[s,c,d]}),t[12]=s,t[13]=c,t[14]=d,t[15]=f):f=t[15],f}function zt(e){return(0,$.jsx)(`span`,{className:`rounded-lg border border-edge-subtle bg-surface-base px-2 py-1 text-xs text-fg-muted`,children:e},e)}function Bt(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?X(t.agentScaleExact,{count:n.min}):X(t.agentScaleRange,{min:n.min,max:n.max}):null}function Vt(e){let t=(0,Q.c)(50),{definition:n,language:r,labels:i,onPick:a}=e,o;t[0]!==n||t[1]!==r?(o=Y(n,r),t[0]=n,t[1]=r,t[2]=o):o=t[2];let s=o,c;t[3]!==n||t[4]!==i?(c=Bt(n,i),t[3]=n,t[4]=i,t[5]=c):c=t[5];let l=c,u=n.metadata.source===`user`,d;t[6]!==n||t[7]!==a?(d=()=>a(n),t[6]=n,t[7]=a,t[8]=d):d=t[8];let f;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=J(`group flex h-full flex-col rounded-xl border border-edge-subtle bg-surface-base p-4 text-left transition-colors`,`hover:border-accent/40 hover:bg-surface-hover`,K.focusRingPanel),t[9]=f):f=t[9];let p=u?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`,m;t[10]===p?m=t[11]:(m=J(`rounded-full px-2 py-0.5 text-[10px] font-medium`,p),t[10]=p,t[11]=m);let h=u?i.badgeUser:i.badgeBuiltin,g;t[12]!==m||t[13]!==h?(g=(0,$.jsx)(`span`,{className:m,children:h}),t[12]=m,t[13]=h,t[14]=g):g=t[14];let _;t[15]!==n.inputSchema||t[16]!==i.inputSchemaBadge?(_=n.inputSchema?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-full bg-surface-hover px-2 py-0.5 text-[10px] text-fg-subtle`,children:[(0,$.jsx)(Te,{className:`size-2.5`,"aria-hidden":!0}),i.inputSchemaBadge]}):null,t[15]=n.inputSchema,t[16]=i.inputSchemaBadge,t[17]=_):_=t[17];let v;t[18]===n.metadata.tags?v=t[19]:(v=n.metadata.tags.slice(0,2).map(Ht),t[18]=n.metadata.tags,t[19]=v);let y;t[20]!==v||t[21]!==g||t[22]!==_?(y=(0,$.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-1.5`,children:[g,_,v]}),t[20]=v,t[21]=g,t[22]=_,t[23]=y):y=t[23];let b;t[24]===n.title?b=t[25]:(b=(0,$.jsx)(`span`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:n.title}),t[24]=n.title,t[25]=b);let x;t[26]!==y||t[27]!==b?(x=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[y,b]}),t[26]=y,t[27]=b,t[28]=x):x=t[28];let S;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(`span`,{className:`flex size-8 shrink-0 items-center justify-center rounded-lg bg-accent-soft text-accent-fg opacity-80 transition-opacity group-hover:opacity-100`,children:(0,$.jsx)(B,{className:`size-3.5`,"aria-hidden":!0})}),t[29]=S):S=t[29];let C;t[30]===x?C=t[31]:(C=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[x,S]}),t[30]=x,t[31]=C);let w;t[32]===s.description?w=t[33]:(w=s.description?(0,$.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs leading-5 text-fg-muted`,children:s.description}):null,t[32]=s.description,t[33]=w);let T;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,$.jsx)(A,{className:`size-3`,"aria-hidden":!0}),t[34]=T):T=t[34];let E;t[35]!==n.phases.length||t[36]!==i.phaseCount?(E=X(i.phaseCount,{count:n.phases.length}),t[35]=n.phases.length,t[36]=i.phaseCount,t[37]=E):E=t[37];let D;t[38]===E?D=t[39]:(D=(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[T,E]}),t[38]=E,t[39]=D);let O;t[40]===l?O=t[41]:(O=l?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,$.jsx)(ne,{className:`size-3`,"aria-hidden":!0}),l]}):null,t[40]=l,t[41]=O);let k;t[42]!==D||t[43]!==O?(k=(0,$.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-3 pt-3 text-[11px] text-fg-subtle`,children:[D,O]}),t[42]=D,t[43]=O,t[44]=k):k=t[44];let j;return t[45]!==C||t[46]!==w||t[47]!==k||t[48]!==d?(j=(0,$.jsxs)(`button`,{type:`button`,onClick:d,className:f,children:[C,w,k]}),t[45]=C,t[46]=w,t[47]=k,t[48]=d,t[49]=j):j=t[49],j}function Ht(e){return(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 text-[10px] text-fg-subtle`,children:e},e)}function Ut(e,t){return e===`uncategorized`?t.categories.uncategorized:t.categories[e]}function Wt(e){let t=(0,Q.c)(11),{definitions:n,language:r,onPick:i}=e,o=a(r).workflows,[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(`all`),d;t[0]!==l||t[1]!==n||t[2]!==s?(d=Le(n,s,l,`all`),t[0]=l,t[1]=n,t[2]=s,t[3]=d):d=t[3];let f=d,p;t[4]===f?p=t[5]:(p=Fe(f),t[4]=f,t[5]=p);let m=p,h;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(P,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[6]=h):h=t[6];let g;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>c(e.target.value),t[7]=g):g=t[7];let _=o.searchPlaceholder,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=J(`h-10 w-full rounded-xl border border-edge bg-surface-base py-2 pl-10 pr-3 text-sm text-fg`,`placeholder:text-fg-subtle`,K.focusRingPanel),t[8]=v):v=t[8];let y=f.length===0?(0,$.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center px-4 py-12 text-center`,children:[(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:o.noDefinitions}),(0,$.jsx)(`p`,{className:`mt-1 max-w-sm text-xs leading-5 text-fg-subtle`,children:o.noDefinitionsHint})]}):l===`all`?(0,$.jsx)(`div`,{className:`flex flex-col gap-6 pb-1`,children:m.map(e=>(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:Ut(e.category,o)}),(0,$.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-3`,children:e.items.map(e=>(0,$.jsx)(Vt,{definition:e,language:r,labels:o,onPick:i},e.id))})]},e.category))}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 gap-3 pb-1 sm:grid-cols-2 xl:grid-cols-3`,children:f.map(e=>(0,$.jsx)(Vt,{definition:e,language:r,labels:o,onPick:i},e.id))}),b;return t[9]===y?b=t[10]:(b=(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:y}),t[9]=y,t[10]=b),(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[h,(0,$.jsx)(`input`,{value:s,onChange:g,placeholder:_,className:v})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`group`,"aria-label":o.categoryFilterAria,children:_e.map(e=>(0,$.jsx)(V,{type:`button`,variant:l===e?`secondary`:`ghost`,className:`h-8 rounded-full px-3 py-1.5 text-xs`,onClick:()=>u(e),children:o.categories[e]},e))})]}),b]})}function Gt(e){let t=(0,Q.c)(30),{open:n,definitions:r,language:i,onClose:o,onPick:s}=e,c;t[0]===i?c=t[1]:(c=a(i),t[0]=i,t[1]=c);let l=c.workflows,u;t[2]===o?u=t[3]:(u=e=>!e&&o(),t[2]=o,t[3]=u);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(w,{className:`fixed inset-0 z-50 bg-scrim`}),t[4]=f):f=t[4];let p;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(p=J(`pointer-events-auto relative flex h-[min(90vh,840px)] w-full max-w-5xl flex-col`,`rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,K.focusRingPanel),t[5]=p):p=t[5];let m;t[6]===l.pickStartTitle?m=t[7]:(m=(0,$.jsx)(ce,{className:`text-lg font-semibold text-fg`,children:l.pickStartTitle}),t[6]=l.pickStartTitle,t[7]=m);let g;t[8]===l.pickStartHint?g=t[9]:(g=(0,$.jsx)(h,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:l.pickStartHint}),t[8]=l.pickStartHint,t[9]=g);let _;t[10]!==m||t[11]!==g?(_=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[m,g]}),t[10]=m,t[11]=g,t[12]=_):_=t[12];let y;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsx)(ie,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0}),t[13]=y):y=t[13];let b;t[14]===l.pickStartClose?b=t[15]:(b=(0,$.jsx)(k,{asChild:!0,children:(0,$.jsx)(V,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":l.pickStartClose,children:y})}),t[14]=l.pickStartClose,t[15]=b);let x;t[16]!==_||t[17]!==b?(x=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge-subtle px-6 py-5`,children:[_,b]}),t[16]=_,t[17]=b,t[18]=x):x=t[18];let S;t[19]!==r||t[20]!==i||t[21]!==s?(S=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-6 py-5`,children:(0,$.jsx)(Wt,{definitions:r,language:i,onPick:s})}),t[19]=r,t[20]=i,t[21]=s,t[22]=S):S=t[22];let C;t[23]!==x||t[24]!==S?(C=(0,$.jsxs)(q,{children:[f,(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none`,children:(0,$.jsxs)(v,{className:p,onOpenAutoFocus:Kt,children:[x,S]})})]}),t[23]=x,t[24]=S,t[25]=C):C=t[25];let T;return t[26]!==n||t[27]!==C||t[28]!==u?(T=(0,$.jsx)(d,{open:n,onOpenChange:u,children:C}),t[26]=n,t[27]=C,t[28]=u,t[29]=T):T=t[29],T}function Kt(e){return e.preventDefault()}function qt(e,t){return t.status[e]??e}function Jt(e,t){return t.phaseStatus[e]??e}function Yt(e,t){let{run:n}=e;return n.status===`succeeded`?X(t.runSummarySucceeded,{agents:n.metrics.doneAgentCount,artifacts:n.metrics.artifactCount}):n.status===`failed`||n.status===`timeout`?n.error?.message??t.runSummaryFailedFallback:n.status===`cancelled`?t.runSummaryCancelled:X(t.runSummaryActive,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}function Xt(e,t){let{run:n}=e;return n.status===`failed`?t.diagnosticFailedHint:n.status===`timeout`?t.diagnosticTimeoutHint:n.status===`cancelled`?t.diagnosticCancelledHint:n.status===`succeeded`&&n.metrics.errorAgentCount>0?t.diagnosticPartialHint:null}function Zt(e){return Me(e)}function Qt(e){return!e||typeof e!=`object`||!(`kind`in e)?`unknown`:e.kind===`chat`?`chat · ${e.sessionKey}`:e.kind===`webui`?e.sessionKey?`webui · ${e.sessionKey}`:`webui`:e.kind===`cron`?`cron · ${e.scheduleId}`:e.kind===`api`?e.requestId?`api · ${e.requestId}`:`api`:e.kind===`im`?`${e.channel} · ${e.chatId}`:String(e.kind)}function $t({view:e,comparison:t,currentDefinition:n,loading:r,language:i,localeTag:o,onCancel:s,onRetry:l,onReplay:u,onOpenRunId:p,ownerAgentId:h,onClose:g}){let b=a(i).workflows,x=ue(i),S=re(),[C,E]=(0,Z.useState)(!0),[D,k]=(0,Z.useState)(!1),[A,j]=(0,Z.useState)(null),[N,P]=(0,Z.useState)(!1),[F,I]=(0,Z.useState)(null),[ne,L]=(0,Z.useState)(null),[,B]=(0,Z.useState)(0),H=e?.run.status,G=H?ae.has(H):!1;(0,Z.useEffect)(()=>{e?.run.id&&(E(G||H===`failed`||H===`timeout`||H===`succeeded`&&e.run.metrics.errorAgentCount>0),j(null),I(null))},[e?.run.id,G,H,e?.run.metrics.errorAgentCount]),(0,Z.useEffect)(()=>{if(!G)return;let e=window.setInterval(()=>B(e=>e+1),1e3);return()=>window.clearInterval(e)},[G]);let K=(0,Z.useMemo)(()=>e?z(e):null,[e]),oe=(0,Z.useMemo)(()=>K?Ce(K):{phases:[],unphased:null},[K]),se=(0,Z.useMemo)(()=>A==null||!K?null:K.agents.find(e=>e.id===A)??null,[A,K]),le=(0,Z.useCallback)(e=>{j(e.id)},[]),fe=e?dn(e.run.result):null,pe=(0,Z.useMemo)(()=>e?Pe(e):[],[e]),me=e?Oe(e.run.result):void 0,ge=Ae(me),_e=ge.trim().length>0,ve=(0,Z.useCallback)(async()=>{_e&&await R(ge)&&(P(!0),window.setTimeout(()=>P(!1),1500))},[_e,ge]),ye=(0,Z.useCallback)(()=>{if(!_e||!e)return;let t=new Blob([ge],{type:`text/markdown;charset=utf-8`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${e.run.definitionId}-${e.run.id.slice(0,8)}.md`,r.click(),URL.revokeObjectURL(n)},[_e,ge,e]),xe=(0,Z.useCallback)(()=>{if(!e)return;let t=Zt(e);t&&S(Ie(t))},[S,e]),Se=(0,Z.useCallback)(async t=>{if(e){I(null),L(t.id);try{ln(await f(e.run.id,t.id,{ownerAgentId:h}),t.name||t.id)}catch(e){I(e instanceof Error?e.message:String(e))}finally{L(null)}}},[h,e]),we=(0,Z.useCallback)(t=>{if(!e||!t.prompt)return;let n=Zt(e);if(!n){R(t.prompt);return}S(Ie(n,t.prompt))},[S,e]),Te=(0,Z.useCallback)(t=>{if(!e||t==null)return;let n=String(t),r=e.agents.findIndex(e=>String(e.id)===n);if(r<0)return;let i=Number.parseInt(n,10);j(Number.isFinite(i)?i:r+1)},[e]),Ee=e?Zt(e):null;if(r)return(0,$.jsx)(d,{open:!0,onOpenChange:e=>!e&&g(),children:(0,$.jsxs)(q,{children:[(0,$.jsx)(w,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,44rem)] w-[min(100%-2rem,48rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-5 py-4`,children:[(0,$.jsx)(ce,{className:`text-base font-semibold tracking-tight text-fg`,children:b.runSummaryTitle}),(0,$.jsx)(V,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":b.pickStartClose,onClick:g,children:(0,$.jsx)(ie,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsx)(`div`,{className:`p-5 text-sm text-fg-muted`,children:b.loading})]})]})});if(!e||!K)return null;let{run:Y}=e,Ne=e.controls.canCancel&&G,Fe=G&&Y.startedAtMs!=null?je(Date.now()-Y.startedAtMs):je(Y.metrics.durationMs??void 0),Le=Yt(e,b),Re=Xt(e,b),ze=Y.metadata,Q=Qt(Y.source),Be=e.controls.canRetry&&e.agents.some(e=>(e.status===`error`||e.status===`skipped`)&&e.prompt?.trim()),Ve=e.controls.canRetry&&(e.phases.some(t=>t.status===`failed`&&e.agents.some(e=>e.phaseId===t.id&&e.prompt?.trim()))||e.agents.some(e=>(e.status===`error`||e.status===`skipped`)&&e.phaseId&&e.prompt?.trim()));return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(d,{open:!0,onOpenChange:e=>!e&&g(),children:(0,$.jsxs)(q,{children:[(0,$.jsx)(w,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(90vh,52rem)] w-[min(100%-2rem,64rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-5 py-4`,children:[(0,$.jsx)(ce,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:Y.title}),(0,$.jsx)(V,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":b.pickStartClose,onClick:g,children:(0,$.jsx)(ie,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsxs)(`section`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,$.jsx)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:Y.title}),(0,$.jsx)(`span`,{className:J(`rounded-full px-2 py-0.5 text-xs font-medium`,ke(Y.status)),children:qt(Y.status,b)})]}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:Y.definitionId}),Y.goal?(0,$.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:Y.goal}):null]})}),(0,$.jsx)(`div`,{className:`mt-5 rounded-2xl border border-edge-subtle bg-surface-base/60 p-4`,children:(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsx)(`div`,{className:`rounded-xl bg-accent-soft p-2 text-accent-fg`,children:Y.status===`succeeded`?(0,$.jsx)(te,{className:`size-4`,"aria-hidden":!0}):Y.status===`failed`||Y.status===`timeout`?(0,$.jsx)(O,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(M,{className:`size-4`,"aria-hidden":!0})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:b.runSummaryTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:Le}),Re?(0,$.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-fg-subtle`,children:Re}):null]})]})}),(0,$.jsx)(en,{diagnostics:pe,labels:b,onOpenAgent:Te}),(0,$.jsx)(nn,{view:e,comparison:t,labels:b,onOpenRunId:p}),(0,$.jsxs)(`dl`,{className:`mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,$.jsx)(vn,{label:b.metrics.startedAt,value:De(Y.startedAtMs??Y.createdAtMs,o)}),(0,$.jsx)(vn,{label:b.metrics.duration,value:Fe}),(0,$.jsx)(vn,{label:b.metrics.agents,value:X(b.agentProgress,{done:Y.metrics.doneAgentCount,total:Y.metrics.agentCount})}),(0,$.jsx)(vn,{label:b.metrics.artifacts,value:String(Y.metrics.artifactCount)})]}),(0,$.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[Ee?(0,$.jsxs)(V,{variant:`primary`,onClick:xe,children:[(0,$.jsx)(_,{className:`size-4`,"aria-hidden":!0}),b.continueInChat]}):null,Ne?(0,$.jsxs)(V,{variant:`secondary`,onClick:s,className:`text-red-600 dark:text-red-300`,children:[(0,$.jsx)(m,{className:`size-4`,"aria-hidden":!0}),b.cancel]}):null,e.controls.canRetry?(0,$.jsxs)(V,{variant:`secondary`,onClick:l,children:[(0,$.jsx)(he,{className:`size-4`,"aria-hidden":!0}),b.rerun]}):null,Be?(0,$.jsxs)(V,{variant:`secondary`,onClick:()=>u(`failed_agents`),children:[(0,$.jsx)(he,{className:`size-4`,"aria-hidden":!0}),b.replayFailedAgents]}):null,Ve?(0,$.jsxs)(V,{variant:`secondary`,onClick:()=>u(`failed_phases`),children:[(0,$.jsx)(he,{className:`size-4`,"aria-hidden":!0}),b.replayFailedPhases]}):null,_e?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(V,{variant:`secondary`,onClick:ve,children:[N?(0,$.jsx)(y,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(c,{className:`size-4`,"aria-hidden":!0}),N?b.copied:b.copyResult]}),(0,$.jsxs)(V,{variant:`secondary`,onClick:ye,children:[(0,$.jsx)(de,{className:`size-4`,"aria-hidden":!0}),b.exportResult]})]}):null]}),(0,$.jsxs)(`div`,{className:`mt-6`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:b.resultTitle}),_e?(0,$.jsx)(`div`,{className:`mt-3 rounded-xl border border-edge bg-surface-base/50 p-3`,children:(0,$.jsx)(W,{result:me,labels:x.result})}):(0,$.jsx)(`div`,{className:`mt-3 rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:b.noResult}),(0,$.jsx)(cn,{outcome:fe,labels:b,downloadingArtifactId:ne,downloadError:F,onCopyText:e=>void R(e),onDownloadArtifact:e=>void Se(e),onStartFollowUp:we})]}),(0,$.jsxs)(`div`,{className:`mt-6 rounded-2xl border border-edge bg-surface-base/35`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-4 px-4 py-3 text-left`,onClick:()=>E(e=>!e),"aria-expanded":C,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:b.process}),(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[X(b.agentProgress,{done:Y.metrics.doneAgentCount,total:Y.metrics.agentCount}),` · `,Fe]})]}),(0,$.jsx)(T,{className:J(`size-4 shrink-0 text-fg-subtle transition-transform`,C?`rotate-180`:null),"aria-hidden":!0})]}),C?(0,$.jsxs)(`div`,{className:`border-t border-edge px-4 pb-4 pt-4`,children:[G?(0,$.jsx)(ee,{snapshot:K,labels:x,logsExpanded:D,onToggleLogs:()=>k(e=>!e),selectedAgentId:A,onSelectAgent:le}):(0,$.jsx)(U,{rollup:oe,currentPhase:K.currentPhase,labels:x.phase,recentLogs:K.logs,recentLogsHeading:x.recentLogsHeading,showAllLogsLabel:x.showAllLogs,logsExpanded:D,onToggleLogs:()=>k(e=>!e),selectedAgentId:A,onSelectAgent:le}),e.phases.length>0?(0,$.jsx)(`div`,{className:`mt-4 grid gap-2 sm:grid-cols-2`,children:e.phases.map(e=>(0,$.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-3 py-2`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:e.title}),(0,$.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:Jt(e.status,b)})]})},e.id))}):null]}):null]}),(0,$.jsx)(fn,{agents:K.agents,labels:b,defaultExpanded:Y.status===`failed`||Y.status===`timeout`||Y.metrics.errorAgentCount>0}),(0,$.jsxs)(`div`,{className:`mt-6 grid gap-3 rounded-2xl border border-edge-subtle bg-surface-base/35 p-4 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,$.jsx)(yn,{label:b.metadataSession,value:ze?.sessionKey??Me(e)??`—`}),(0,$.jsx)(yn,{label:b.metadataSource,value:Q}),(0,$.jsx)(yn,{label:b.metadataDefinition,value:`${ze?.definition.version??Y.definitionVersion} · ${ze?.definition.source??`unknown`}`}),(0,$.jsx)(yn,{label:b.metadataDefinitionHash,value:rn(ze?.definition,n,b)}),(0,$.jsx)(yn,{label:b.metadataPermissions,value:an(ze?.definition)}),(0,$.jsx)(yn,{label:b.metadataRetryOf,value:ze?.retryOfRunId??`—`})]})]})]})]})}),(0,$.jsx)(be,{open:A!=null&&se!=null,agent:se,snapshot:K,sessionKey:null,ownerAgentId:h,pinnedAgentId:null,onPinAgent:()=>{},onClose:()=>j(null),labels:x.drawer})]})}function en(e){let t=(0,Q.c)(18),{diagnostics:n,labels:r,onOpenAgent:i}=e;if(n.length===0)return null;let a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,$.jsx)(`div`,{className:`rounded-xl bg-rose-500/10 p-2 text-rose-700 dark:text-rose-300`,children:(0,$.jsx)(O,{className:`size-4`,"aria-hidden":!0})}),t[0]=a):a=t[0];let o;t[1]===r.diagnosticsTitle?o=t[2]:(o=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.diagnosticsTitle}),t[1]=r.diagnosticsTitle,t[2]=o);let s;t[3]===r.diagnosticsHint?s=t[4]:(s=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:r.diagnosticsHint}),t[3]=r.diagnosticsHint,t[4]=s);let c;if(t[5]!==n||t[6]!==r||t[7]!==i){let e;t[9]!==r||t[10]!==i?(e=e=>(0,$.jsx)(`li`,{className:`rounded-xl border border-edge-subtle bg-surface-panel px-3 py-2`,children:(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:tn(e,r)}),e.message?(0,$.jsx)(`div`,{className:`mt-0.5 text-xs leading-5 text-fg-muted`,children:e.message}):null,e.detail?(0,$.jsx)(`div`,{className:`mt-0.5 line-clamp-2 text-xs leading-5 text-fg-subtle`,children:e.detail}):null]}),e.agentId==null?null:(0,$.jsx)(V,{type:`button`,variant:`ghost`,className:`h-8 shrink-0 px-2 text-xs`,onClick:()=>i(e.agentId),children:r.openAgentDetails})]})},e.key),t[9]=r,t[10]=i,t[11]=e):e=t[11],c=n.slice(0,5).map(e),t[5]=n,t[6]=r,t[7]=i,t[8]=c}else c=t[8];let l;t[12]===c?l=t[13]:(l=(0,$.jsx)(`ul`,{className:`mt-3 space-y-2`,children:c}),t[12]=c,t[13]=l);let u;return t[14]!==o||t[15]!==s||t[16]!==l?(u=(0,$.jsx)(`section`,{className:`mt-5 rounded-2xl border border-rose-500/20 bg-rose-500/5 p-4`,children:(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[a,(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[o,s,l]})]})}),t[14]=o,t[15]=s,t[16]=l,t[17]=u):u=t[17],u}function tn(e,t){return e.kind===`run_error`?e.code?X(t.diagnosticsRunErrorWithCode,{code:e.code}):t.diagnosticsRunError:e.kind===`agent_error`?X(t.diagnosticsAgentError,{agent:e.agentLabel??String(e.agentId??`—`)}):e.kind===`step_error`?X(t.diagnosticsStepError,{agent:e.agentLabel??String(e.agentId??`—`),step:e.stepLabel??e.stepId??`—`}):X(t.diagnosticsAgentSkipped,{agent:e.agentLabel??String(e.agentId??`—`)})}function nn(e){let t=(0,Q.c)(36),{view:n,comparison:r,labels:i,onOpenRunId:a}=e,o=n.run.metadata?.replay;if(!o)return null;let s;t[0]===i.replayLineageTitle?s=t[1]:(s=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:i.replayLineageTitle}),t[0]=i.replayLineageTitle,t[1]=s);let c;t[2]!==i||t[3]!==o.scope||t[4]!==o.targetCount?(c=X(i.replayLineageSummary,{scope:sn(o.scope,i),count:o.targetCount}),t[2]=i,t[3]=o.scope,t[4]=o.targetCount,t[5]=c):c=t[5];let l;t[6]===c?l=t[7]:(l=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:c}),t[6]=c,t[7]=l);let u;t[8]!==i.replaySourceRun||t[9]!==o.sourceRunId?(u=(0,$.jsx)(yn,{label:i.replaySourceRun,value:o.sourceRunId}),t[8]=i.replaySourceRun,t[9]=o.sourceRunId,t[10]=u):u=t[10];let d=i.replayTargetAgents,f;t[11]===o.agentIds?f=t[12]:(f=o.agentIds.join(`, `),t[11]=o.agentIds,t[12]=f);let p;t[13]!==i.replayTargetAgents||t[14]!==f?(p=(0,$.jsx)(yn,{label:d,value:f}),t[13]=i.replayTargetAgents,t[14]=f,t[15]=p):p=t[15];let m;t[16]!==u||t[17]!==p?(m=(0,$.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-xs sm:grid-cols-2`,children:[u,p]}),t[16]=u,t[17]=p,t[18]=m):m=t[18];let h;t[19]!==r||t[20]!==i.replayDurationDelta||t[21]!==i.replayFixedAgents||t[22]!==i.replayStillFailingAgents?(h=r?(0,$.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-3`,children:[(0,$.jsx)(vn,{label:i.replayFixedAgents,value:String(r.fixedAgentIds.length)}),(0,$.jsx)(vn,{label:i.replayStillFailingAgents,value:String(r.stillFailingAgentIds.length)}),(0,$.jsx)(vn,{label:i.replayDurationDelta,value:on(r.durationDeltaMs)})]}):null,t[19]=r,t[20]=i.replayDurationDelta,t[21]=i.replayFixedAgents,t[22]=i.replayStillFailingAgents,t[23]=h):h=t[23];let g;t[24]!==s||t[25]!==l||t[26]!==m||t[27]!==h?(g=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[s,l,m,h]}),t[24]=s,t[25]=l,t[26]=m,t[27]=h,t[28]=g):g=t[28];let _;t[29]!==i.replayOpenSource||t[30]!==a||t[31]!==o.sourceRunId?(_=a?(0,$.jsx)(V,{type:`button`,variant:`secondary`,className:`shrink-0`,onClick:()=>a(o.sourceRunId),children:i.replayOpenSource}):null,t[29]=i.replayOpenSource,t[30]=a,t[31]=o.sourceRunId,t[32]=_):_=t[32];let v;return t[33]!==g||t[34]!==_?(v=(0,$.jsx)(`section`,{className:`mt-5 rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[g,_]})}),t[33]=g,t[34]=_,t[35]=v):v=t[35],v}function rn(e,t,n){if(!e?.contentHash)return n.definitionHashUnavailable;let r=e.contentHash.slice(0,8);return t?.contentHash?t.contentHash===e.contentHash?`${r} · ${n.definitionHashMatches}`:`${r} · ${n.definitionHashDrifted}`:`${r} · ${n.definitionHashCurrentUnknown}`}function an(e){let t=e?.permissions;if(!t)return`—`;let n=[t.tools?.length?`tools:${t.tools.join(`,`)}`:null,t.network==null?null:`network:${t.network?`on`:`off`}`,t.fileSystem?`fs:${t.fileSystem}`:null,t.approvalRequired?`approval`:null].filter(Boolean);return n.length>0?n.join(` · `):`—`}function on(e){return e==null?`—`:`${e>0?`+`:e<0?`-`:``}${je(Math.abs(e))}`}function sn(e,t){return e===`failed_phases`?t.replayScopeFailedPhases:t.replayScopeFailedAgents}function cn(e){let t=(0,Q.c)(18),{outcome:n,labels:r,downloadingArtifactId:i,downloadError:a,onCopyText:o,onDownloadArtifact:s,onStartFollowUp:c}=e;if(!n||!n.artifacts.length&&!n.followUps.length&&n.structuredOutput===void 0)return null;let l;t[0]!==a||t[1]!==i||t[2]!==r||t[3]!==s||t[4]!==n.artifacts?(l=n.artifacts.length>0?(0,$.jsxs)(un,{title:r.outcomeArtifacts,children:[(0,$.jsx)(`ul`,{className:`space-y-2`,children:n.artifacts.map(e=>(0,$.jsxs)(`li`,{className:`min-w-0 rounded-lg bg-surface-base px-2.5 py-2`,children:[(0,$.jsx)(`div`,{className:`truncate text-sm font-medium text-fg`,title:e.title??e.name,children:e.title??e.name}),(0,$.jsx)(`div`,{className:`mt-0.5 text-xs text-fg-subtle`,children:e.mimeType}),(0,$.jsxs)(`button`,{type:`button`,className:`mt-1 inline-flex items-center gap-1 text-xs font-medium text-accent-fg hover:underline disabled:cursor-wait disabled:opacity-60`,disabled:i===e.id,onClick:()=>s(e),children:[(0,$.jsx)(de,{className:`size-3`,"aria-hidden":!0}),i===e.id?r.downloadingArtifact:r.downloadArtifact]})]},e.id))}),a?(0,$.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-rose-600 dark:text-rose-400`,children:a}):null]}):null,t[0]=a,t[1]=i,t[2]=r,t[3]=s,t[4]=n.artifacts,t[5]=l):l=t[5];let u;t[6]!==r||t[7]!==o||t[8]!==c||t[9]!==n.followUps?(u=n.followUps.length>0?(0,$.jsx)(un,{title:r.outcomeFollowUps,children:(0,$.jsx)(`ul`,{className:`space-y-2`,children:n.followUps.map(e=>(0,$.jsxs)(`li`,{className:`rounded-lg bg-surface-base px-2.5 py-2`,children:[(0,$.jsx)(`div`,{className:`text-sm font-medium text-fg`,children:e.title}),e.prompt?(0,$.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2`,children:[(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-accent-fg hover:underline`,onClick:()=>c(e),children:r.startFollowUp}),(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-fg-subtle hover:text-fg`,onClick:()=>o(e.prompt??``),children:r.copyPrompt})]}):null]},e.id))})}):null,t[6]=r,t[7]=o,t[8]=c,t[9]=n.followUps,t[10]=u):u=t[10];let d;t[11]!==r||t[12]!==n.structuredOutput?(d=n.structuredOutput===void 0?null:(0,$.jsx)(un,{title:r.outcomeStructuredOutput,children:(0,$.jsx)(`pre`,{className:`max-h-44 overflow-auto whitespace-pre-wrap break-words rounded-lg bg-surface-base p-2 font-mono text-xs leading-5 text-fg-muted`,children:Ae(n.structuredOutput)})}),t[11]=r,t[12]=n.structuredOutput,t[13]=d):d=t[13];let f;return t[14]!==l||t[15]!==u||t[16]!==d?(f=(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-3`,children:[l,u,d]}),t[14]=l,t[15]=u,t[16]=d,t[17]=f):f=t[17],f}function ln(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}function un(e){let t=(0,Q.c)(7),{title:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`div`,{className:`mt-2`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`section`,{className:`min-w-0 rounded-xl border border-edge-subtle bg-surface-base/35 p-3`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function dn(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e,n=Array.isArray(t.artifacts)?t.artifacts:[],r=Array.isArray(t.followUps)?t.followUps:[];return n.length===0&&r.length===0&&t.structuredOutput===void 0?null:{artifacts:n,followUps:r,structuredOutput:t.structuredOutput}}function fn(e){let t=(0,Q.c)(26),{agents:n,labels:r,defaultExpanded:i}=e,[a,o]=(0,Z.useState)(i),s,c;if(t[0]===i?(s=t[1],c=t[2]):(s=()=>{o(i)},c=[i],t[0]=i,t[1]=s,t[2]=c),(0,Z.useEffect)(s,c),n.length===0)return null;let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>o(pn),t[3]=l):l=t[3];let u;t[4]===r.agentIoTitle?u=t[5]:(u=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.agentIoTitle}),t[4]=r.agentIoTitle,t[5]=u);let d;t[6]===r.agentIoHint?d=t[7]:(d=(0,$.jsx)(`p`,{className:`text-xs leading-5 text-fg-subtle`,children:r.agentIoHint}),t[6]=r.agentIoHint,t[7]=d);let f;t[8]!==u||t[9]!==d?(f=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10];let p=a?`rotate-180`:null,m;t[11]===p?m=t[12]:(m=J(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,p),t[11]=p,t[12]=m);let h;t[13]===m?h=t[14]:(h=(0,$.jsx)(T,{className:m,"aria-hidden":!0}),t[13]=m,t[14]=h);let g;t[15]!==a||t[16]!==f||t[17]!==h?(g=(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-4 px-4 py-3 text-left`,onClick:l,"aria-expanded":a,children:[f,h]}),t[15]=a,t[16]=f,t[17]=h,t[18]=g):g=t[18];let _;t[19]!==n||t[20]!==a||t[21]!==r?(_=a?(0,$.jsx)(`div`,{className:`grid gap-3 border-t border-edge px-4 py-4`,children:n.map(e=>{let t=e.error||e.resultPreview||r.agentNoOutput;return(0,$.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-panel p-3`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsx)(`div`,{className:`min-w-0 text-sm font-medium text-fg`,children:e.label}),(0,$.jsx)(`span`,{className:J(`rounded-full px-2 py-0.5 text-xs font-medium`,_n(e.status)),children:r.agentStatus[e.status]??e.status})]}),(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:r.agentInputHeading}),(0,$.jsx)(`pre`,{className:`mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap wrap-break-word rounded-lg border border-edge-subtle bg-surface-base/50 p-2 font-mono text-xs leading-5 text-fg-muted`,children:e.prompt||`—`})]}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:r.agentOutputHeading}),(0,$.jsx)(`div`,{className:J(`mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap wrap-break-word rounded-lg border border-edge-subtle bg-surface-base/50 p-2 text-xs leading-5`,e.error?`font-mono text-rose-600 dark:text-rose-400`:`text-fg-muted`),children:t})]})]}),(0,$.jsx)(mn,{agent:e,labels:r})]},e.id)})}):null,t[19]=n,t[20]=a,t[21]=r,t[22]=_):_=t[22];let v;return t[23]!==g||t[24]!==_?(v=(0,$.jsxs)(`section`,{className:`mt-6 rounded-2xl border border-edge bg-surface-base/35`,children:[g,_]}),t[23]=g,t[24]=_,t[25]=v):v=t[25],v}function pn(e){return!e}function mn(e){let t=(0,Q.c)(21),{agent:n,labels:r}=e,i=n.invocation;if(!i)return null;let a=i.resolvedModelRef??i.modelRef,o;t[0]!==r.agentInvocationModel||t[1]!==a?(o={label:r.agentInvocationModel,value:a},t[0]=r.agentInvocationModel,t[1]=a,t[2]=o):o=t[2];let s;t[3]===i.toolset?s=t[4]:(s=i.toolset?.join(`, `),t[3]=i.toolset,t[4]=s);let c;t[5]!==r.agentInvocationTools||t[6]!==s?(c={label:r.agentInvocationTools,value:s},t[5]=r.agentInvocationTools,t[6]=s,t[7]=c):c=t[7];let l=i.maxIterations==null?void 0:String(i.maxIterations),u;t[8]!==r.agentInvocationIterations||t[9]!==l?(u={label:r.agentInvocationIterations,value:l},t[8]=r.agentInvocationIterations,t[9]=l,t[10]=u):u=t[10];let d=i.schema?r.agentInvocationSchemaPresent:void 0,f;t[11]!==r.agentInvocationSchema||t[12]!==d?(f={label:r.agentInvocationSchema,value:d},t[11]=r.agentInvocationSchema,t[12]=d,t[13]=f):f=t[13];let p;t[14]!==o||t[15]!==c||t[16]!==u||t[17]!==f?(p=[o,c,u,f].filter(gn),t[14]=o,t[15]=c,t[16]=u,t[17]=f,t[18]=p):p=t[18];let m=p;if(m.length===0)return null;let h;return t[19]===m?h=t[20]:(h=(0,$.jsx)(`dl`,{className:`mt-3 grid gap-2 border-t border-edge-subtle pt-3 text-xs sm:grid-cols-2 lg:grid-cols-4`,children:m.map(hn)}),t[19]=m,t[20]=h),h}function hn(e){return(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`dt`,{className:`text-fg-subtle`,children:e.label}),(0,$.jsx)(`dd`,{className:`mt-0.5 truncate font-medium text-fg-muted`,title:e.value,children:e.value})]},e.label)}function gn(e){return!!e.value}function _n(e){return e===`done`?`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`:e===`error`?`bg-rose-500/10 text-rose-700 dark:text-rose-300`:e===`running`?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-subtle`}function vn(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`dt`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`dd`,{className:`mt-1 text-sm font-semibold text-fg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 p-3`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function yn(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`div`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`div`,{className:`mt-1 truncate text-sm font-medium text-fg`,title:r,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}var bn=`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`;function xn(e){return!!(e&&e.type===`object`&&e.properties&&!Array.isArray(e.properties))}function Sn({schema:e,value:t,onChange:n,labels:r}){let i=(0,Z.useMemo)(()=>Tn(e),[e]),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(()=>JSON.stringify(t,null,2)),[l,u]=(0,Z.useState)(null);if(i.length===0)return null;let d=(e,r)=>{let i={...t,[e]:r};(r===``||r===void 0)&&delete i[e],n(i),a&&c(JSON.stringify(i,null,2))},f=e=>{c(e);try{let t=e.trim()?JSON.parse(e):{};if(!t||typeof t!=`object`||Array.isArray(t)){u(r.rawJsonInvalid);return}u(null),n(t)}catch{u(r.rawJsonInvalid)}};return(0,$.jsxs)(`section`,{className:`rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.inputSchemaHeading}),(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-accent-fg hover:underline`,onClick:()=>{let e=!a;o(e),e&&(c(JSON.stringify(t,null,2)),u(null))},children:r.rawJson})]}),a?(0,$.jsxs)(`div`,{className:`mt-3`,children:[(0,$.jsx)(`textarea`,{value:s,onChange:e=>f(e.target.value),spellCheck:!1,className:J(bn,`min-h-40 font-mono text-xs leading-5`)}),l?(0,$.jsx)(`p`,{className:`mt-1 text-xs text-red-600 dark:text-red-300`,children:l}):null]}):(0,$.jsx)(`div`,{className:`mt-3 grid gap-3`,children:i.map(e=>(0,$.jsx)(Cn,{field:e,value:t[e.key],labels:r,onChange:t=>d(e.key,t)},e.key))})]})}function Cn(e){let t=(0,Q.c)(18),{field:n,value:r,labels:i,onChange:a}=e,o=n.schema.title||n.key,s=typeof n.schema.description==`string`?n.schema.description:void 0,c=Array.isArray(n.schema.type)?n.schema.type[0]:n.schema.type,l;t[0]===n.schema.enum?l=t[1]:(l=Array.isArray(n.schema.enum)?n.schema.enum:[],t[0]=n.schema.enum,t[1]=l);let u=l,d=String(o),f=n.required?` *`:``,p;t[2]!==d||t[3]!==f?(p=(0,$.jsxs)(`span`,{className:`text-xs font-medium text-fg`,children:[d,f]}),t[2]=d,t[3]=f,t[4]=p):p=t[4];let m;t[5]===s?m=t[6]:(m=s?(0,$.jsx)(`p`,{className:`mt-0.5 text-xs leading-5 text-fg-subtle`,children:s}):null,t[5]=s,t[6]=m);let h;t[7]!==s||t[8]!==u||t[9]!==i||t[10]!==a||t[11]!==c||t[12]!==r?(h=u.length>0?(0,$.jsxs)(`select`,{value:r==null?``:String(r),onChange:e=>a(e.target.value),className:bn,children:[(0,$.jsx)(`option`,{value:``}),u.map(wn)]}):c===`boolean`?(0,$.jsxs)(`select`,{value:typeof r==`boolean`?String(r):``,onChange:e=>a(e.target.value===``?void 0:e.target.value===`true`),className:bn,children:[(0,$.jsx)(`option`,{value:``}),(0,$.jsx)(`option`,{value:`true`,children:i.booleanTrue}),(0,$.jsx)(`option`,{value:`false`,children:i.booleanFalse})]}):c===`number`||c===`integer`?(0,$.jsx)(`input`,{type:`number`,value:typeof r==`number`||typeof r==`string`?String(r):``,onChange:e=>a(e.target.value===``?void 0:Number(e.target.value)),className:bn}):(0,$.jsx)(`textarea`,{value:typeof r==`string`?r:r==null?``:String(r),onChange:e=>a(e.target.value),className:J(bn,s&&s.length>80?`min-h-20 resize-y`:`min-h-10 resize-y`)}),t[7]=s,t[8]=u,t[9]=i,t[10]=a,t[11]=c,t[12]=r,t[13]=h):h=t[13];let g;return t[14]!==p||t[15]!==m||t[16]!==h?(g=(0,$.jsxs)(`label`,{className:`block`,children:[p,m,h]}),t[14]=p,t[15]=m,t[16]=h,t[17]=g):g=t[17],g}function wn(e){return(0,$.jsx)(`option`,{value:String(e),children:String(e)},String(e))}function Tn(e){let t=e.properties??{},n=new Set(e.required??[]);return Object.entries(t).map(([e,t])=>({key:e,schema:t,required:n.has(e)}))}function En(e){let t=(0,Q.c)(12),{examples:n,labels:r,onSelect:i}=e;if(n.length===0)return null;let a;t[0]===r.examplePrompts?a=t[1]:(a=(0,$.jsx)(`div`,{className:`text-xs font-medium text-fg-muted`,children:r.examplePrompts}),t[0]=r.examplePrompts,t[1]=a);let o;if(t[2]!==n||t[3]!==i){let e;t[5]===i?e=t[6]:(e=e=>(0,$.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:`rounded-lg border border-edge bg-surface-base/50 px-3 py-2 text-left text-xs text-fg-muted hover:bg-surface-hover`,children:e.text},`${e.field}:${e.text}`),t[5]=i,t[6]=e),o=n.map(e),t[2]=n,t[3]=i,t[4]=o}else o=t[4];let s;t[7]===o?s=t[8]:(s=(0,$.jsx)(`div`,{className:`mt-2 flex flex-col gap-1.5`,children:o}),t[7]=o,t[8]=s);let c;return t[9]!==a||t[10]!==s?(c=(0,$.jsxs)(`div`,{children:[a,s]}),t[9]=a,t[10]=s,t[11]=c):c=t[11],c}function Dn(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?X(t.agentScaleExact,{count:n.min}):X(t.agentScaleRange,{min:n.min,max:n.max}):X(t.agentScaleExact,{count:e.defaults.maxSubagents})}function On(e,t,n,r){let i=Object.values(t).map(e=>e.trim()).filter(Boolean),a=e.trim()||n;return a&&i.unshift(a),i.length===0?r.noInputSummary:i.join(` · `)}function kn(e){let t=(0,Q.c)(58),{open:n,definition:r,language:i,starting:o,onClose:s,onStart:c}=e,l=a(i).workflows,[u,f]=(0,Z.useState)(``),p;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(p={},t[0]=p):p=t[0];let[m,g]=(0,Z.useState)(p),_;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(_={},t[1]=_):_=t[1];let[y,b]=(0,Z.useState)(_),[x,S]=(0,Z.useState)(``),[C,E]=(0,Z.useState)(``),[D,O]=(0,Z.useState)(!1),k;t[2]!==r||t[3]!==i?(k=r?Y(r,i):null,t[2]=r,t[3]=i,t[4]=k):k=t[4];let M=k,N;t[5]===r?N=t[6]:(N=r?pe[r.name]??[]:[],t[5]=r,t[6]=N);let P=N,ee;t[7]===M?.examplePrompts?ee=t[8]:(ee=M?.examplePrompts??[],t[7]=M?.examplePrompts,t[8]=ee);let F=ee,I=r?.inputSchema,te;t[9]===I?te=t[10]:(te=xn(I),t[9]=I,t[10]=te);let L=te,R=!L&&P.length>0,re;t[11]!==x||t[12]!==r?.defaults?(re=x.trim()?Number(x):r?.defaults.concurrency,t[11]=x,t[12]=r?.defaults,t[13]=re):re=t[13];let z=re,B;t[14]!==r?.defaults||t[15]!==C?(B=C.trim()?Number(C):r?.defaults.maxSubagents,t[14]=r?.defaults,t[15]=C,t[16]=B):B=t[16];let H=B,U=r&&M?L&&Object.keys(y).length>0?Object.entries(y).map(Mn).join(` · `):On(u,m,M.description,l):l.noInputSummary,W;t[17]!==r||t[18]!==n?(W=()=>{!n||!r||(f(``),g({}),b({}),S(``),E(``),O(!1))},t[17]=r,t[18]=n,t[19]=W):W=t[19];let ie=r?.id,ae;if(t[20]!==n||t[21]!==ie?(ae=[n,ie],t[20]=n,t[21]=ie,t[22]=ae):ae=t[22],(0,Z.useEffect)(W,ae),!r||!M)return null;let G;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(G=e=>{Ne(e,f,g)},t[23]=G):G=t[23];let K=G,oe;t[24]!==m||t[25]!==x||t[26]!==u||t[27]!==L||t[28]!==M.description||t[29]!==C||t[30]!==c||t[31]!==y?(oe=()=>{let e=L&&Object.keys(y).length>0?y:Re(m);c({goal:u.trim()||M.description,input:e,concurrency:x.trim()?Number(x):void 0,maxSubagents:C.trim()?Number(C):void 0})},t[24]=m,t[25]=x,t[26]=u,t[27]=L,t[28]=M.description,t[29]=C,t[30]=c,t[31]=y,t[32]=oe):oe=t[32];let le=oe,ue;t[33]===s?ue=t[34]:(ue=e=>!e&&s(),t[33]=s,t[34]=ue);let de;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(de=(0,$.jsx)(w,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[35]=de):de=t[35];let fe;t[36]===M.description?fe=t[37]:(fe=(0,$.jsx)(h,{className:`mt-1 text-sm text-fg-muted`,children:M.description}),t[36]=M.description,t[37]=fe);let me;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(me=(0,$.jsx)(A,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[38]=me):me=t[38];let he;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(he=(0,$.jsx)(ne,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[39]=he):he=t[39];let ge;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(ge=(0,$.jsx)(j,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[40]=ge):ge=t[40];let _e;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(_e=e=>f(e.target.value),t[41]=_e):_e=t[41];let ve;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(ve=()=>O(An),t[42]=ve):ve=t[42];let ye=l.advancedSettings,be=D&&`rotate-180`,xe;t[43]===be?xe=t[44]:(xe=J(`size-4 transition-transform`,be),t[43]=be,t[44]=xe);let Se;t[45]===xe?Se=t[46]:(Se=(0,$.jsx)(T,{className:xe}),t[45]=xe,t[46]=Se);let Ce;t[47]!==l.cancelDialog||t[48]!==s||t[49]!==o?(Ce=(0,$.jsx)(V,{variant:`secondary`,onClick:s,disabled:o,children:l.cancelDialog}),t[47]=l.cancelDialog,t[48]=s,t[49]=o,t[50]=Ce):Ce=t[50];let we=o?l.starting:l.start,Te;t[51]!==o||t[52]!==le||t[53]!==we?(Te=(0,$.jsx)(V,{variant:`primary`,onClick:le,disabled:o,children:we}),t[51]=o,t[52]=le,t[53]=we,t[54]=Te):Te=t[54];let Ee;return t[55]!==Ce||t[56]!==Te?(Ee=(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[Ce,Te]}),t[55]=Ce,t[56]=Te,t[57]=Ee):Ee=t[57],(0,$.jsx)(d,{open:n,onOpenChange:ue,children:(0,$.jsxs)(q,{children:[de,(0,$.jsxs)(v,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,40rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[(0,$.jsxs)(ce,{className:`text-base font-semibold text-fg`,children:[l.startTitle,` · `,r.title]}),fe]}),(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[(0,$.jsxs)(`section`,{className:`rounded-2xl border border-edge bg-surface-base/70 p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:l.runPlanPreview}),(0,$.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs leading-5 text-fg-muted`,children:U})]}),(0,$.jsx)(`span`,{className:`shrink-0 rounded-full bg-accent-soft px-2 py-1 text-[11px] font-medium text-accent-fg`,children:l.readyToStart})]}),(0,$.jsxs)(`div`,{className:`mt-4 grid gap-2 text-xs text-fg-muted sm:grid-cols-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[me,(0,$.jsx)(`span`,{children:X(l.phaseCount,{count:r.phases.length})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[he,(0,$.jsx)(`span`,{children:Dn(r,l)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[ge,(0,$.jsx)(`span`,{children:X(l.runLimitsSummary,{concurrency:z??r.defaults.concurrency,max:H??r.defaults.maxSubagents})})]})]}),r.phases.length>0?(0,$.jsxs)(`div`,{className:`mt-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-fg-subtle`,children:[(0,$.jsx)(se,{className:`size-3.5`,"aria-hidden":!0}),l.startPlanPhases]}),(0,$.jsx)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,children:r.phases.map(jn)})]}):null]}),L&&r.inputSchema?(0,$.jsx)(Sn,{schema:r.inputSchema,value:y,onChange:b,labels:{inputSchemaHeading:l.inputSchemaHeading,rawJson:l.rawJson,rawJsonInvalid:l.rawJsonInvalid,booleanTrue:l.booleanTrue,booleanFalse:l.booleanFalse}}):null,!L&&P.map(e=>(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsxs)(`span`,{className:`text-xs font-medium text-fg`,children:[Nn(l,e.labelKey),e.required?` *`:``]}),e.multiline?(0,$.jsx)(`textarea`,{value:m[e.key]??``,onChange:t=>g(n=>({...n,[e.key]:t.target.value})),placeholder:Nn(l,e.placeholderKey),className:`mt-1.5 min-h-20 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}):(0,$.jsx)(`input`,{value:m[e.key]??``,onChange:t=>g(n=>({...n,[e.key]:t.target.value})),placeholder:Nn(l,e.placeholderKey),className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]},e.key)),R?(0,$.jsx)(En,{examples:F,labels:l,onSelect:K}):null,(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:l.goalLabel}),(0,$.jsx)(`textarea`,{value:u,onChange:_e,placeholder:l.goalPlaceholder,className:`mt-1.5 min-h-24 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),R?null:(0,$.jsx)(En,{examples:F,labels:l,onSelect:K}),(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between px-3 py-2.5 text-left text-sm text-fg`,onClick:ve,children:[ye,Se]}),D?(0,$.jsxs)(`div`,{className:`grid gap-3 border-t border-edge px-3 pb-3 pt-3 sm:grid-cols-2`,children:[(0,$.jsx)(`input`,{value:x,onChange:e=>S(e.target.value),placeholder:X(l.concurrencyPlaceholder,{default:r.defaults.concurrency}),inputMode:`numeric`,className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),(0,$.jsx)(`input`,{value:C,onChange:e=>E(e.target.value),placeholder:X(l.maxSubagentsPlaceholder,{default:r.defaults.maxSubagents}),inputMode:`numeric`,className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}):null]})]}),Ee]})]})})}function An(e){return!e}function jn(e,t){return(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t>0?(0,$.jsx)(`span`,{className:`text-fg-subtle`,children:`→`}):null,(0,$.jsx)(`span`,{className:`rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1 text-[11px] text-fg-muted`,children:e.title})]},e.id)}function Mn(e){let[t,n]=e;return`${t}: ${String(n)}`}function Nn(e,t){return e.args[t]??t}function Pn(e){let t=(0,Q.c)(28),{stats:n,language:r}=e,i,o,s;if(t[0]!==r||t[1]!==n){s=Symbol.for(`react.early_return_sentinel`);bb0:{if(i=a(r).workflows,!n||n.totalRuns===0){s=null;break bb0}o=n.topDefinitions[0]?X(i.statsTopWorkflow,{name:n.topDefinitions[0].definitionId,count:n.topDefinitions[0].count}):null}t[0]=r,t[1]=n,t[2]=i,t[3]=o,t[4]=s}else i=t[2],o=t[3],s=t[4];if(s!==Symbol.for(`react.early_return_sentinel`))return s;let c=o,l=i.statsTotalRuns,u=String(n.totalRuns),d;t[5]!==i.statsTotalRuns||t[6]!==u?(d=(0,$.jsx)(Fn,{label:l,value:u}),t[5]=i.statsTotalRuns,t[6]=u,t[7]=d):d=t[7];let f=i.statsActiveRuns,p=String(n.activeRuns),m;t[8]!==i.statsActiveRuns||t[9]!==p?(m=(0,$.jsx)(Fn,{label:f,value:p}),t[8]=i.statsActiveRuns,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==n.succeededRuns||t[12]!==n.totalRuns?(h=n.totalRuns>0?`${Math.round(n.succeededRuns/n.totalRuns*100)}%`:`—`,t[11]=n.succeededRuns,t[12]=n.totalRuns,t[13]=h):h=t[13];let g;t[14]!==i.statsSuccessRate||t[15]!==h?(g=(0,$.jsx)(Fn,{label:i.statsSuccessRate,value:h}),t[14]=i.statsSuccessRate,t[15]=h,t[16]=g):g=t[16];let _;t[17]===n.averageDurationMs?_=t[18]:(_=n.averageDurationMs==null?`—`:je(n.averageDurationMs),t[17]=n.averageDurationMs,t[18]=_);let v=c??void 0,y;t[19]!==i.statsAvgDuration||t[20]!==_||t[21]!==v?(y=(0,$.jsx)(Fn,{label:i.statsAvgDuration,value:_,hint:v}),t[19]=i.statsAvgDuration,t[20]=_,t[21]=v,t[22]=y):y=t[22];let b;return t[23]!==g||t[24]!==y||t[25]!==d||t[26]!==m?(b=(0,$.jsxs)(`section`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[d,m,g,y]}),t[23]=g,t[24]=y,t[25]=d,t[26]=m,t[27]=b):b=t[27],b}function Fn(e){let t=(0,Q.c)(10),{label:n,value:r,hint:i}=e,a;t[0]===n?a=t[1]:(a=(0,$.jsx)(`div`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,$.jsx)(`div`,{className:`mt-1 text-lg font-semibold tabular-nums text-fg`,children:r}),t[2]=r,t[3]=o);let s;t[4]===i?s=t[5]:(s=i?(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] text-fg-muted`,children:i}):null,t[4]=i,t[5]=s);let c;return t[6]!==a||t[7]!==o||t[8]!==s?(c=(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-4 py-3`,children:[a,o,s]}),t[6]=a,t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function In(e){let t=(0,Q.c)(27),{vm:n}=e,{labels:r,loading:i,searchQuery:a,setSearchQuery:o,refreshAll:s,setManageOpen:c}=n,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(P,{className:`pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[0]=l):l=t[0];let u;t[1]===o?u=t[2]:(u=e=>o(e.target.value),t[1]=o,t[2]=u);let d=r.searchPlaceholder,f;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(f=J(`h-9 w-full rounded-lg border border-edge bg-surface-panel py-2 pl-9 pr-3 text-sm text-fg shadow-surface`,`placeholder:text-fg-subtle`,K.focusRingPanel),t[3]=f):f=t[3];let p;t[4]!==r.searchPlaceholder||t[5]!==a||t[6]!==u?(p=(0,$.jsxs)(`div`,{className:`relative min-w-[12rem] flex-1 sm:max-w-xs`,children:[l,(0,$.jsx)(`input`,{value:a,onChange:u,placeholder:d,className:f})]}),t[4]=r.searchPlaceholder,t[5]=a,t[6]=u,t[7]=p):p=t[7];let m;t[8]===c?m=t[9]:(m=()=>c(!0),t[8]=c,t[9]=m);let h;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(ye,{className:`size-4`,"aria-hidden":!0}),t[10]=h):h=t[10];let g;t[11]!==r.addWorkflow||t[12]!==m?(g=(0,$.jsxs)(V,{variant:`secondary`,onClick:m,children:[h,r.addWorkflow]}),t[11]=r.addWorkflow,t[12]=m,t[13]=g):g=t[13];let _=r.refresh,v=r.refresh,y=i&&`animate-spin`,b;t[14]===y?b=t[15]:(b=J(`size-4`,y),t[14]=y,t[15]=b);let x;t[16]===b?x=t[17]:(x=(0,$.jsx)(G,{className:b,strokeWidth:1.75,"aria-hidden":!0}),t[16]=b,t[17]=x);let S;t[18]!==r.refresh||t[19]!==i||t[20]!==s||t[21]!==x?(S=(0,$.jsx)(V,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,onClick:s,disabled:i,title:_,"aria-label":v,children:x}),t[18]=r.refresh,t[19]=i,t[20]=s,t[21]=x,t[22]=S):S=t[22];let C;return t[23]!==S||t[24]!==p||t[25]!==g?(C=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[p,g,S]}),t[23]=S,t[24]=p,t[25]=g,t[26]=C):C=t[26],C}function Ln(e){let t=(0,Q.c)(194),{vm:n}=e,{language:r,localeTag:i,labels:o,hasToken:s,definitions:c,runs:l,searchQuery:u,ownerAgentId:d,agentOptions:f,setOwnerAgentId:p,workflowFilterId:m,setWorkflowFilterId:h,triggerFilter:g,setTriggerFilter:_,selectedRunId:v,selectedRunView:y,selectedRunComparison:b,selectedRunLoading:x,selectedRunError:C,openRunDetails:w,closeRunDetails:T,openRunDetailsById:E,openRunInChat:D,pickStartOpen:O,setPickStartOpen:k,startDefinition:A,setStartDefinition:j,detailDefinition:M,setDetailDefinition:P,manageOpen:ee,setManageOpen:F,actionError:I,actionFeedback:te,starting:ne,savingWorkflow:L,loading:R,error:re,stats:z,submitStart:H,cancelRun:U,retryRun:W,replayRun:ie,saveCustomWorkflow:ae,saveDraftAndStart:G}=n,oe=N(Bn),se=N(zn),ce;t[0]!==se||t[1]!==s||t[2]!==o.title||t[3]!==oe||t[4]!==n?(ce=()=>{if(!s){se();return}return oe({startExtra:null,main:(0,$.jsx)(`div`,{className:`min-w-0`,children:(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:o.title})}),end:(0,$.jsx)(In,{vm:n})}),()=>se()},t[0]=se,t[1]=s,t[2]=o.title,t[3]=oe,t[4]=n,t[5]=ce):ce=t[5];let le;if(t[6]!==se||t[7]!==s||t[8]!==o.title||t[9]!==R||t[10]!==n?(le=[se,s,o.title,R,n,n.refreshAll,n.setManageOpen,n.setSearchQuery],t[6]=se,t[7]=s,t[8]=o.title,t[9]=R,t[10]=n,t[11]=le):le=t[11],(0,Z.useLayoutEffect)(ce,le),!s){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(ge,{className:`size-10 text-accent-fg`,"aria-hidden":!0}),t[12]=e):e=t[12];let n;t[13]===o.title?n=t[14]:(n=(0,$.jsx)(`h1`,{className:`mt-4 text-xl font-semibold text-fg`,children:o.title}),t[13]=o.title,t[14]=n);let r;t[15]===o.needToken?r=t[16]:(r=(0,$.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:o.needToken}),t[15]=o.needToken,t[16]=r);let i;return t[17]!==n||t[18]!==r?(i=(0,$.jsx)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:(0,$.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col items-center px-4 py-16 text-center sm:px-8`,children:[e,n,r]})}),t[17]=n,t[18]=r,t[19]=i):i=t[19],i}let q;t[20]!==f||t[21]!==r||t[22]!==d||t[23]!==p?(q=f.length>1?(0,$.jsx)(`select`,{value:d??``,"aria-label":`Agent`,onChange:e=>p(e.target.value),className:J(`h-9 min-w-36 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,K.focusRingPanel),children:f.map(e=>(0,$.jsx)(`option`,{value:e.id,children:S(e,a(r).agentsSettings)},e.id))}):null,t[20]=f,t[21]=r,t[22]=d,t[23]=p,t[24]=q):q=t[24];let ue=o.boardTriggerFilterAria,de;t[25]===_?de=t[26]:(de=e=>_(e.target.value),t[25]=_,t[26]=de);let fe;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(fe=J(`h-9 min-w-[7.5rem] rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,K.focusRingPanel),t[27]=fe):fe=t[27];let pe;t[28]===o.boardTriggerFilterAll?pe=t[29]:(pe=(0,$.jsx)(`option`,{value:`all`,children:o.boardTriggerFilterAll}),t[28]=o.boardTriggerFilterAll,t[29]=pe);let me;t[30]===o.boardTriggerFilterCron?me=t[31]:(me=(0,$.jsx)(`option`,{value:`cron`,children:o.boardTriggerFilterCron}),t[30]=o.boardTriggerFilterCron,t[31]=me);let he;t[32]===o.boardTriggerFilterWebui?he=t[33]:(he=(0,$.jsx)(`option`,{value:`webui`,children:o.boardTriggerFilterWebui}),t[32]=o.boardTriggerFilterWebui,t[33]=he);let _e;t[34]===o.boardTriggerFilterChat?_e=t[35]:(_e=(0,$.jsx)(`option`,{value:`chat`,children:o.boardTriggerFilterChat}),t[34]=o.boardTriggerFilterChat,t[35]=_e);let ve;t[36]===o.boardTriggerFilterApi?ve=t[37]:(ve=(0,$.jsx)(`option`,{value:`api`,children:o.boardTriggerFilterApi}),t[36]=o.boardTriggerFilterApi,t[37]=ve);let ye;t[38]!==o.boardTriggerFilterAria||t[39]!==_e||t[40]!==ve||t[41]!==de||t[42]!==pe||t[43]!==me||t[44]!==he||t[45]!==g?(ye=(0,$.jsxs)(`select`,{value:g,"aria-label":ue,onChange:de,className:fe,children:[pe,me,he,_e,ve]}),t[38]=o.boardTriggerFilterAria,t[39]=_e,t[40]=ve,t[41]=de,t[42]=pe,t[43]=me,t[44]=he,t[45]=g,t[46]=ye):ye=t[46];let be=o.boardWorkflowFilterAria,xe;t[47]===h?xe=t[48]:(xe=e=>h(e.target.value),t[47]=h,t[48]=xe);let Se;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(Se=J(`h-9 min-w-40 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,K.focusRingPanel),t[49]=Se):Se=t[49];let Ce;t[50]===o.boardWorkflowFilterAll?Ce=t[51]:(Ce=(0,$.jsx)(`option`,{value:``,children:o.boardWorkflowFilterAll}),t[50]=o.boardWorkflowFilterAll,t[51]=Ce);let we;t[52]===c?we=t[53]:(we=c.map(Rn),t[52]=c,t[53]=we);let Te;t[54]!==o.boardWorkflowFilterAria||t[55]!==xe||t[56]!==Ce||t[57]!==we||t[58]!==m?(Te=(0,$.jsxs)(`select`,{value:m,"aria-label":be,onChange:xe,className:Se,children:[Ce,we]}),t[54]=o.boardWorkflowFilterAria,t[55]=xe,t[56]=Ce,t[57]=we,t[58]=m,t[59]=Te):Te=t[59];let Ee;t[60]===k?Ee=t[61]:(Ee=()=>k(!0),t[60]=k,t[61]=Ee);let De;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(De=(0,$.jsx)(B,{className:`size-4`,"aria-hidden":!0}),t[62]=De):De=t[62];let Oe;t[63]!==o.boardStart||t[64]!==Ee?(Oe=(0,$.jsxs)(V,{variant:`primary`,onClick:Ee,children:[De,o.boardStart]}),t[63]=o.boardStart,t[64]=Ee,t[65]=Oe):Oe=t[65];let ke;t[66]!==ye||t[67]!==Te||t[68]!==Oe||t[69]!==q?(ke=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[q,ye,Te,Oe]}),t[66]=ye,t[67]=Te,t[68]=Oe,t[69]=q,t[70]=ke):ke=t[70];let Ae;t[71]===te?Ae=t[72]:(Ae=te?(0,$.jsx)(`div`,{className:`rounded-xl border border-emerald-500/25 bg-emerald-500/10 px-3 py-2 text-sm text-emerald-800 dark:text-emerald-200`,children:te}):null,t[71]=te,t[72]=Ae);let Y;t[73]!==I||t[74]!==re?(Y=I??re?(0,$.jsx)(`div`,{className:`rounded-xl border border-red-500/25 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:I??re}):null,t[73]=I,t[74]=re,t[75]=Y):Y=t[75];let je;t[76]!==r||t[77]!==z?(je=(0,$.jsx)(Pn,{stats:z,language:r}),t[76]=r,t[77]=z,t[78]=je):je=t[78];let Me;t[79]===C?Me=t[80]:(Me=C?(0,$.jsx)(`div`,{className:`rounded-xl border border-amber-500/25 bg-amber-500/10 px-3 py-2 text-sm text-amber-800 dark:text-amber-200`,children:C}):null,t[79]=C,t[80]=Me);let Ne;t[81]!==o.boardEmptyHint||t[82]!==o.boardEmptyTitle||t[83]!==o.boardStart||t[84]!==o.loading?(Ne={boardEmptyTitle:o.boardEmptyTitle,boardEmptyHint:o.boardEmptyHint,boardStart:o.boardStart,loading:o.loading},t[81]=o.boardEmptyHint,t[82]=o.boardEmptyTitle,t[83]=o.boardStart,t[84]=o.loading,t[85]=Ne):Ne=t[85];let Pe;t[86]===U?Pe=t[87]:(Pe=e=>void U(e),t[86]=U,t[87]=Pe);let Fe;t[88]===W?Fe=t[89]:(Fe=e=>void W(e),t[88]=W,t[89]=Fe);let Ie;t[90]===k?Ie=t[91]:(Ie=()=>k(!0),t[90]=k,t[91]=Ie);let Le;t[92]!==r||t[93]!==R||t[94]!==i||t[95]!==w||t[96]!==D||t[97]!==l||t[98]!==u||t[99]!==v||t[100]!==Ne||t[101]!==Pe||t[102]!==Fe||t[103]!==Ie||t[104]!==g||t[105]!==m?(Le=(0,$.jsx)(`div`,{className:`min-w-0`,children:(0,$.jsx)(ft,{runs:l,language:r,localeTag:i,labels:Ne,searchQuery:u,workflowFilterId:m,triggerFilter:g,selectedRunId:v,loading:R,onOpenRun:w,onOpenRunChat:D,onCancelRun:Pe,onRetryRun:Fe,onStart:Ie})}),t[92]=r,t[93]=R,t[94]=i,t[95]=w,t[96]=D,t[97]=l,t[98]=u,t[99]=v,t[100]=Ne,t[101]=Pe,t[102]=Fe,t[103]=Ie,t[104]=g,t[105]=m,t[106]=Le):Le=t[106];let X;t[107]!==ke||t[108]!==Ae||t[109]!==Y||t[110]!==je||t[111]!==Me||t[112]!==Le?(X=(0,$.jsxs)(`div`,{className:`mx-auto flex w-full max-w-400 flex-col gap-5 px-4 py-6 lg:px-6`,children:[ke,Ae,Y,je,Me,Le]}),t[107]=ke,t[108]=Ae,t[109]=Y,t[110]=je,t[111]=Me,t[112]=Le,t[113]=X):X=t[113];let Re;if(t[114]!==c||t[115]!==y?.run){let e;t[117]===y?.run?e=t[118]:(e=e=>e.id===y?.run.definitionId,t[117]=y?.run,t[118]=e),Re=c.find(e),t[114]=c,t[115]=y?.run,t[116]=Re}else Re=t[116];let ze=!!v&&x,Be;t[119]!==U||t[120]!==v?(Be=()=>{v&&U(v)},t[119]=U,t[120]=v,t[121]=Be):Be=t[121];let Ve;t[122]!==W||t[123]!==v?(Ve=()=>{v&&W(v)},t[122]=W,t[123]=v,t[124]=Ve):Ve=t[124];let He;t[125]!==ie||t[126]!==v?(He=e=>{v&&ie(v,e)},t[125]=ie,t[126]=v,t[127]=He):He=t[127];let Ue;t[128]!==T||t[129]!==r||t[130]!==i||t[131]!==E||t[132]!==d||t[133]!==b||t[134]!==y||t[135]!==Re||t[136]!==ze||t[137]!==Be||t[138]!==Ve||t[139]!==He?(Ue=(0,$.jsx)($t,{view:y,comparison:b,currentDefinition:Re,loading:ze,language:r,localeTag:i,onCancel:Be,onRetry:Ve,onReplay:He,onOpenRunId:E,ownerAgentId:d,onClose:T}),t[128]=T,t[129]=r,t[130]=i,t[131]=E,t[132]=d,t[133]=b,t[134]=y,t[135]=Re,t[136]=ze,t[137]=Be,t[138]=Ve,t[139]=He,t[140]=Ue):Ue=t[140];let We;t[141]===k?We=t[142]:(We=()=>k(!1),t[141]=k,t[142]=We);let Ge;t[143]!==k||t[144]!==j?(Ge=e=>{k(!1),j(e)},t[143]=k,t[144]=j,t[145]=Ge):Ge=t[145];let Ke;t[146]!==c||t[147]!==r||t[148]!==O||t[149]!==We||t[150]!==Ge?(Ke=(0,$.jsx)(Gt,{open:O,definitions:c,language:r,onClose:We,onPick:Ge}),t[146]=c,t[147]=r,t[148]=O,t[149]=We,t[150]=Ge,t[151]=Ke):Ke=t[151];let qe=A!=null,Je;t[152]===j?Je=t[153]:(Je=()=>j(null),t[152]=j,t[153]=Je);let Ye;t[154]===H?Ye=t[155]:(Ye=e=>void H(e),t[154]=H,t[155]=Ye);let Xe;t[156]!==r||t[157]!==A||t[158]!==ne||t[159]!==qe||t[160]!==Je||t[161]!==Ye?(Xe=(0,$.jsx)(kn,{open:qe,definition:A,language:r,starting:ne,onClose:Je,onStart:Ye}),t[156]=r,t[157]=A,t[158]=ne,t[159]=qe,t[160]=Je,t[161]=Ye,t[162]=Xe):Xe=t[162];let Ze=M!=null,Qe;t[163]===P?Qe=t[164]:(Qe=()=>P(null),t[163]=P,t[164]=Qe);let $e;t[165]!==M||t[166]!==P||t[167]!==j?($e=()=>{M&&(P(null),j(M))},t[165]=M,t[166]=P,t[167]=j,t[168]=$e):$e=t[168];let et;t[169]!==M||t[170]!==r||t[171]!==Ze||t[172]!==Qe||t[173]!==$e?(et=(0,$.jsx)(Pt,{open:Ze,definition:M,language:r,onClose:Qe,onRun:$e}),t[169]=M,t[170]=r,t[171]=Ze,t[172]=Qe,t[173]=$e,t[174]=et):et=t[174];let tt;t[175]===F?tt=t[176]:(tt=()=>F(!1),t[175]=F,t[176]=tt);let nt;t[177]===ae?nt=t[178]:(nt=e=>ae(e),t[177]=ae,t[178]=nt);let rt;t[179]!==r||t[180]!==ee||t[181]!==d||t[182]!==G||t[183]!==L||t[184]!==tt||t[185]!==nt?(rt=(0,$.jsx)(_t,{open:ee,language:r,ownerAgentId:d,saving:L,onClose:tt,onSave:nt,onSaveAndStart:G}),t[179]=r,t[180]=ee,t[181]=d,t[182]=G,t[183]=L,t[184]=tt,t[185]=nt,t[186]=rt):rt=t[186];let it;return t[187]!==X||t[188]!==Ue||t[189]!==Ke||t[190]!==Xe||t[191]!==et||t[192]!==rt?(it=(0,$.jsxs)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:[X,Ue,Ke,Xe,et,rt]}),t[187]=X,t[188]=Ue,t[189]=Ke,t[190]=Xe,t[191]=et,t[192]=rt,t[193]=it):it=t[193],it}function Rn(e){return(0,$.jsx)(`option`,{value:e.id,children:e.title},e.id)}function zn(e){return e.clearPageHeader}function Bn(e){return e.setPageHeader}function Vn(){let e=i(e=>e.language),t=a(e).workflows,n=e===`zh`?`zh-CN`:`en-US`,r=l(e=>e.token),s=!!r,c=re(),[d,f]=fe(),m=d.get(`q`)??``,h=d.get(`wf`)?.trim()??``,_=d.get(`trigger`)?.trim()||`all`,v=d.get(`run`)?.trim()??``,y=d.get(`agent`)?.trim()??``,[b,x]=(0,Z.useState)(null),[S,w]=(0,Z.useState)(!1),[T,O]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(!1),[j,M]=(0,Z.useState)(null),[N,P]=(0,Z.useState)(null),[ee,te]=(0,Z.useState)(!1),[ne,R]=(0,Z.useState)(!1),z=o(s?[`workflow-agents`,r]:null,Ee,{revalidateOnFocus:!1}),B=(0,Z.useMemo)(()=>{let e=z.data?.agents??[];return y&&e.some(e=>e.id===y)||y&&e.length===0?y:z.data?.defaultId??(y||void 0)},[z.data,y]),V=o(s?[`workflow-definitions`,r]:null,g,{revalidateOnFocus:!1}),H=o(s&&B?[`workflow-runs`,r,B]:null,()=>p(100,{ownerAgentId:B}),{revalidateOnFocus:!1,refreshInterval:e=>e?.length&&e.some(e=>e.status===`queued`||e.status===`running`)?3e3:0}),U=o(s&&B?[`workflow-stats`,r,B,h]:null,()=>D(h,{ownerAgentId:B}),{revalidateOnFocus:!1});(0,Z.useEffect)(()=>{if(!N)return;let e=window.setTimeout(()=>P(null),4e3);return()=>window.clearTimeout(e)},[N]);let W=V.data??[],ie=z.data?.agents??[],ae=H.data??[],G=v||null,K=me(G,{ownerAgentId:B}),se=o(s&&B&&G&&K.view?.run.metadata?.replay?[`workflow-run-comparison`,r,B,G]:null,()=>xe(G,{ownerAgentId:B}),{revalidateOnFocus:!1}),ce=(0,Z.useMemo)(()=>Le(W,m,`all`,`all`),[W,m]),q=(0,Z.useCallback)(e=>{f(t=>{let n=new URLSearchParams(t);return e(n,t),n},{replace:!0})},[f]);(0,Z.useEffect)(()=>{let e=z.data?.agents??[];!y||e.length===0||e.some(e=>e.id===y)||q(e=>{z.data?.defaultId?e.set(F,z.data.defaultId):e.delete(F),e.delete(`run`)})},[z.data,y,q]);let ue=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n?t.set(`q`,n):t.delete(`q`)})},[q]),de=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n?t.set(F,n):t.delete(F),t.delete(`run`)})},[q]),pe=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n?t.set(`wf`,n):t.delete(`wf`)})},[q]),J=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n&&n!==`all`?t.set(L,n):t.delete(L)})},[q]),he=(0,Z.useCallback)(e=>{q(t=>{B&&t.set(F,B),t.set(`run`,e.id)})},[B,q]),ge=(0,Z.useCallback)(()=>{q(e=>{e.delete(`run`)})},[q]),_e=(0,Z.useCallback)(e=>{q(t=>{B&&t.set(F,B),t.set(`run`,e)})},[B,q]),ye=(0,Z.useCallback)(e=>{let t=Ue(e);t&&c(Ie(t))},[c]);(0,Z.useEffect)(()=>{d.get(`tab`)&&q(e=>{e.delete(`tab`)})},[q,d]),(0,Z.useEffect)(()=>{let e=d.get(`def`),t=d.get(ve)===`1`;if(!e||!W.length)return;let n=W.find(t=>t.id===e||t.name===e);n&&(t?x(n):O(n),q(e=>{e.delete(`def`),e.delete(ve)}))},[W,q,d]),(0,Z.useEffect)(()=>{let e=()=>{H.mutate(),U.mutate()};return window.addEventListener(`workflow-event-appended`,e),window.addEventListener(`workflow-run-updated`,e),window.addEventListener(`workflow-run-error`,e),()=>{window.removeEventListener(`workflow-event-appended`,e),window.removeEventListener(`workflow-run-updated`,e),window.removeEventListener(`workflow-run-error`,e)}},[H,U]);let be=(0,Z.useCallback)(()=>{z.mutate(),V.mutate(),H.mutate(),U.mutate()},[z,V,H,U]),Se=(0,Z.useCallback)(async e=>{if(b){te(!0),M(null);try{let n=await oe({definitionId:b.id,goal:e.goal,input:e.input,agentId:B,concurrency:e.concurrency,maxSubagents:e.maxSubagents});x(null),await H.mutate(),await U.mutate(),P(t.startSuccess),q(e=>{B&&e.set(F,B),e.set(`run`,n.runId)})}catch(e){M(e instanceof Error?e.message:t.startFailed)}finally{te(!1)}}},[t.startFailed,t.startSuccess,B,q,H,b,U]),Ce=(0,Z.useCallback)(async e=>{try{await I(e,{ownerAgentId:B}),await H.mutate(),await U.mutate()}catch(e){let n=e instanceof Error?e.message:t.cancelFailed;if(/not active|already finished/i.test(n)){await H.mutate(),await U.mutate();return}M(n)}},[t.cancelFailed,B,H,U]),we=(0,Z.useCallback)(async e=>{try{let t=await le(e,{ownerAgentId:B});await H.mutate(),await U.mutate(),q(e=>{B&&e.set(F,B),e.set(`run`,t.runId)})}catch(e){M(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,B,q,H,U]),Te=(0,Z.useCallback)(async(e,n)=>{try{let t=await C(e,n,{ownerAgentId:B});await H.mutate(),await U.mutate(),q(e=>{B&&e.set(F,B),e.set(`run`,t.runId)})}catch(e){M(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,B,q,H,U]),De=(0,Z.useCallback)(async e=>{R(!0),M(null);try{let n=await u(e.name,e.script);return A(!1),await V.mutate(),P(t.saveWorkflowSuccess),n}catch(e){M(e instanceof Error?e.message:t.saveWorkflowFailed)}finally{R(!1)}},[V,t.saveWorkflowFailed,t.saveWorkflowSuccess]),Oe=(0,Z.useCallback)(async e=>{R(!0),M(null);try{let n=await u(e.name,e.script);await V.mutate();let r=await oe({definitionId:n.id,goal:e.goal,input:{goal:e.goal},agentId:B});A(!1),await H.mutate(),await U.mutate(),P(t.startSuccess),q(e=>{B&&e.set(F,B),e.set(`run`,r.runId)})}catch(e){M(e instanceof Error?e.message:t.startFailed)}finally{R(!1)}},[V,t.startFailed,t.startSuccess,B,q,H,U]),ke=(0,Z.useCallback)(async e=>{if(e.metadata.source===`user`&&window.confirm(X(t.deleteConfirm,{name:e.name}))){M(null);try{await E(e.id),await V.mutate(),P(t.deleteWorkflowSuccess)}catch(e){M(e instanceof Error?e.message:t.deleteWorkflowFailed)}}},[V,t]),Ae=z.isLoading||V.isLoading||H.isLoading,Y=z.error?.message??V.error?.message??H.error?.message??null;return{language:e,localeTag:n,labels:t,hasToken:s,searchQuery:m,setSearchQuery:ue,ownerAgentId:B,agentOptions:ie,setOwnerAgentId:de,workflowFilterId:h,setWorkflowFilterId:pe,triggerFilter:_,setTriggerFilter:J,definitions:W,filteredDefinitions:ce,runs:ae,selectedRunId:G,selectedRunView:K.view,selectedRunComparison:se.data,selectedRunLoading:K.loading,selectedRunError:K.error?.message??se.error?.message??null,openRunDetails:he,closeRunDetails:ge,openRunDetailsById:_e,openRunInChat:ye,pickStartOpen:S,setPickStartOpen:w,startDefinition:b,setStartDefinition:x,detailDefinition:T,setDetailDefinition:O,manageOpen:k,setManageOpen:A,actionError:j,actionFeedback:N,starting:ee,savingWorkflow:ne,loading:Ae,error:Y,stats:U.data,refreshAll:be,submitStart:Se,cancelRun:Ce,retryRun:we,replayRun:Te,saveCustomWorkflow:De,saveDraftAndStart:Oe,removeCustomWorkflow:ke}}function Hn(){let e=(0,Q.c)(2),t=Vn(),n;return e[0]===t?n=e[1]:(n=(0,$.jsx)(Ln,{vm:t}),e[0]=t,e[1]=n),n}export{Hn as WorkflowsPage};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none" aria-hidden="true">
|
|
2
|
+
<title>xopc</title>
|
|
3
|
+
<rect x="5" y="5" width="90" height="90" rx="20" fill="#ffffff" />
|
|
4
|
+
<rect x="5.75" y="5.75" width="88.5" height="88.5" rx="19.25" stroke="#111827" stroke-opacity="0.18" stroke-width="1.5" />
|
|
5
|
+
<g stroke="#111827" stroke-width="5.5" fill="none">
|
|
6
|
+
<path d="M 84 50 C 84 68.778 68.778 84 50 84 C 31.222 84 16 68.778 16 50 C 16 31.222 31.222 16 50 16 C 68.778 16 84 31.222 84 50" />
|
|
7
|
+
<path d="M 74 50 C 74 63.255 63.255 74 50 74 C 36.745 74 26 63.255 26 50 C 26 36.745 36.745 26 50 26 C 63.255 26 74 36.745 74 50" />
|
|
8
|
+
</g>
|
|
9
|
+
<path
|
|
10
|
+
transform="translate(50 50) scale(0.92) translate(-50 -50)"
|
|
11
|
+
fill="#111827"
|
|
12
|
+
stroke="#ffffff"
|
|
13
|
+
stroke-width="5"
|
|
14
|
+
stroke-linejoin="round"
|
|
15
|
+
paint-order="stroke fill"
|
|
16
|
+
d="M 61.000 50.000 L 61.159 50.548 L 61.629 51.145 L 62.381 51.837 L 63.374 52.660 L 64.550 53.645 L 65.843 54.806 L 67.178 56.146 L 68.478 57.654 L 69.667 59.302 L 70.676 61.051 L 71.443 62.853 L 71.921 64.647 L 72.075 66.372 L 71.888 67.963 L 71.359 69.359 L 70.506 70.506 L 69.359 71.359 L 67.963 71.888 L 66.372 72.075 L 64.647 71.921 L 62.853 71.443 L 61.051 70.676 L 59.302 69.667 L 57.654 68.478 L 56.146 67.178 L 54.806 65.843 L 53.645 64.550 L 52.660 63.374 L 51.837 62.381 L 51.145 61.629 L 50.548 61.159 L 50.000 61.000 L 49.452 61.159 L 48.855 61.629 L 48.163 62.381 L 47.340 63.374 L 46.355 64.550 L 45.194 65.843 L 43.854 67.178 L 42.346 68.478 L 40.698 69.667 L 38.949 70.676 L 37.147 71.443 L 35.353 71.921 L 33.628 72.075 L 32.037 71.888 L 30.641 71.359 L 29.494 70.506 L 28.641 69.359 L 28.112 67.963 L 27.925 66.372 L 28.079 64.647 L 28.557 62.853 L 29.324 61.051 L 30.333 59.302 L 31.522 57.654 L 32.822 56.146 L 34.157 54.806 L 35.450 53.645 L 36.626 52.660 L 37.619 51.837 L 38.371 51.145 L 38.841 50.548 L 39.000 50.000 L 38.841 49.452 L 38.371 48.855 L 37.619 48.163 L 36.626 47.340 L 35.450 46.355 L 34.157 45.194 L 32.822 43.854 L 31.522 42.346 L 30.333 40.698 L 29.324 38.949 L 28.557 37.147 L 28.079 35.353 L 27.925 33.628 L 28.112 32.037 L 28.641 30.641 L 29.494 29.494 L 30.641 28.641 L 32.037 28.112 L 33.628 27.925 L 35.353 28.079 L 37.147 28.557 L 38.949 29.324 L 40.698 30.333 L 42.346 31.522 L 43.854 32.822 L 45.194 34.157 L 46.355 35.450 L 47.340 36.626 L 48.163 37.619 L 48.855 38.371 L 49.452 38.841 L 50.000 39.000 L 50.548 38.841 L 51.145 38.371 L 51.837 37.619 L 52.660 36.626 L 53.645 35.450 L 54.806 34.157 L 56.146 32.822 L 57.654 31.522 L 59.302 30.333 L 61.051 29.324 L 62.853 28.557 L 64.647 28.079 L 66.372 27.925 L 67.963 28.112 L 69.359 28.641 L 70.506 29.494 L 71.359 30.641 L 71.888 32.037 L 72.075 33.628 L 71.921 35.353 L 71.443 37.147 L 70.676 38.949 L 69.667 40.698 L 68.478 42.346 L 67.178 43.854 L 65.843 45.194 L 64.550 46.355 L 63.374 47.340 L 62.381 48.163 L 61.629 48.855 L 61.159 49.452 L 61.000 50.000 Z"
|
|
17
|
+
/>
|
|
18
|
+
</svg>
|
|
@@ -4,27 +4,28 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta name="color-scheme" content="light dark" />
|
|
7
|
-
<link rel="icon"
|
|
8
|
-
<link rel="icon" type="image/svg+xml" href="/
|
|
9
|
-
<link rel="icon" type="image/
|
|
10
|
-
<link rel="
|
|
7
|
+
<link rel="icon" href="/favicon.ico?v=20260621-4" sizes="any" />
|
|
8
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg?v=20260621-4" />
|
|
9
|
+
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png?v=20260621-4" />
|
|
10
|
+
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png?v=20260621-4" />
|
|
11
|
+
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260621-4" />
|
|
11
12
|
<title>xopc</title>
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-slwUkhxH.js"></script>
|
|
13
14
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
14
15
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
|
|
15
16
|
<link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-DYoKfS8f.js">
|
|
16
17
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
|
|
17
18
|
<link rel="modulepreload" crossorigin href="/assets/Combination-HAlzriaz.js">
|
|
18
19
|
<link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/url-
|
|
20
|
+
<link rel="modulepreload" crossorigin href="/assets/url-DQRqHuL-.js">
|
|
20
21
|
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DPHK1VkS.js">
|
|
21
22
|
<link rel="modulepreload" crossorigin href="/assets/circle-check-C23XjkUj.js">
|
|
22
23
|
<link rel="modulepreload" crossorigin href="/assets/copy-Dv6d4Dvw.js">
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/theme-store-
|
|
24
|
-
<link rel="modulepreload" crossorigin href="/assets/fetch-
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/theme-store-BZozwAeK.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/fetch-CFdKBnE6.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-DdngdObI.js">
|
|
26
27
|
<link rel="modulepreload" crossorigin href="/assets/toast-z0toXu32.js">
|
|
27
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
28
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DI5_GsZt.css">
|
|
28
29
|
</head>
|
|
29
30
|
<body>
|
|
30
31
|
<div id="root"></div>
|
package/dist/package.js
CHANGED
|
@@ -101,11 +101,15 @@ export interface StorePublishedPackageHead {
|
|
|
101
101
|
latestVersion: {
|
|
102
102
|
version: string;
|
|
103
103
|
downloadUrl: string;
|
|
104
|
+
checksum?: string;
|
|
105
|
+
integrity?: string;
|
|
106
|
+
sha256?: string;
|
|
104
107
|
};
|
|
105
108
|
}
|
|
106
109
|
export declare function resolveExtensionZipDownloadUrl(storeBaseUrl: string, packageName: string, version?: string): Promise<{
|
|
107
110
|
downloadUrl: string;
|
|
108
111
|
version: string;
|
|
112
|
+
integrity?: string;
|
|
109
113
|
}>;
|
|
110
114
|
export declare function downloadExtensionStoreZipBuffer(storeBaseUrl: string, downloadUrl: string): Promise<Buffer>;
|
|
111
115
|
export declare function skillIdForMarketplaceInstall(packageName: string): string | undefined;
|
|
@@ -135,7 +135,8 @@ async function resolveExtensionZipDownloadUrl(storeBaseUrl, packageName, version
|
|
|
135
135
|
assertDownloadUrlAllowed(detail.downloadUrl, base);
|
|
136
136
|
return {
|
|
137
137
|
downloadUrl: detail.downloadUrl,
|
|
138
|
-
version: detail.version
|
|
138
|
+
version: detail.version,
|
|
139
|
+
integrity: detail.integrity ?? detail.checksum ?? detail.sha256
|
|
139
140
|
};
|
|
140
141
|
}
|
|
141
142
|
const lv = meta.latestVersion;
|
|
@@ -143,7 +144,8 @@ async function resolveExtensionZipDownloadUrl(storeBaseUrl, packageName, version
|
|
|
143
144
|
assertDownloadUrlAllowed(lv.downloadUrl, base);
|
|
144
145
|
return {
|
|
145
146
|
downloadUrl: lv.downloadUrl,
|
|
146
|
-
version: lv.version
|
|
147
|
+
version: lv.version,
|
|
148
|
+
integrity: lv.integrity ?? lv.checksum ?? lv.sha256
|
|
147
149
|
};
|
|
148
150
|
}
|
|
149
151
|
async function downloadExtensionStoreZipBuffer(storeBaseUrl, downloadUrl) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-api-client.js","names":[],"sources":["../../../../../../../src/agent/skills/marketplace/adapters/store/store-api-client.ts"],"sourcesContent":["/**\n * HTTP client for the public xopc-store-compatible REST API (packages list, detail, zip download).\n * Used by the store marketplace adapter and SSRF-safe download helpers.\n *\n * Facade: {@link ../../../skills-marketplace.js}.\n */\n\nimport type { Config } from '../../../../../config/schema.js';\nimport { MAX_EXTENSION_STORE_ZIP_BYTES } from '../../../../../extensions/store-zip-limits.js';\nimport { isValidSkillId, MAX_SKILL_ZIP_BYTES } from '../../../managed-store.js';\nimport type { SkillMarkdownPreviewPayload } from '../../../types.js';\n\nconst DEFAULT_STORE_BASE = 'https://store.xopc.ai';\n\n/**\n * Marketplace provider identifier. Dynamic — extensions can register additional providers\n * via `api.registerMarketplaceAdapter()`. Built-in values: 'store', 'skillhub', 'clawhub'.\n */\nexport type SkillsMarketplaceProvider = string;\n\nexport interface SkillsStoreListParams {\n q?: string;\n page?: number;\n pageSize?: number;\n sort?: 'downloads' | 'newest';\n /** Adapter-defined category id (exact match against package `categories`). */\n category?: string;\n}\n\n/** Category option for marketplace filter chips (from adapter). */\nexport interface MarketplaceCategoryOption {\n id: string;\n label: string;\n}\n\n/** Mirrors xopc-store GET /api/v1/packages list response (subset used by UI). */\nexport interface SkillsStorePackageListItem {\n id: string;\n name: string;\n type: string;\n description: string;\n downloads: number;\n author: { username: string; avatarUrl: string | null };\n latestVersion?: string;\n updatedAt: string;\n /** Taxonomy / tags from the marketplace (adapter-specific). */\n categories?: string[];\n tags?: string[];\n stars?: number;\n /** Short provenance label for the row (e.g. ClawHub). */\n sourceLabel?: string;\n}\n\n/** Unified marketplace package list item (works for all adapters). */\nexport type MarketplacePackageListItem = SkillsStorePackageListItem;\n\nexport interface SkillsStoreListResponse {\n items: SkillsStorePackageListItem[];\n meta: { page: number; pageSize: number; total: number; totalPages: number };\n}\n\nexport function resolveSkillsStoreBaseUrl(config: Config): string {\n const env = process.env.XOPC_SKILLS_STORE_URL?.trim();\n if (env) {\n try {\n return normalizeBaseUrl(new URL(env).toString());\n } catch {\n // fall through\n }\n }\n const fromConfig = config.gateway?.skillsStoreBaseUrl?.trim();\n if (fromConfig) {\n try {\n return normalizeBaseUrl(new URL(fromConfig).toString());\n } catch {\n return DEFAULT_STORE_BASE;\n }\n }\n return DEFAULT_STORE_BASE;\n}\n\nexport { MAX_EXTENSION_STORE_ZIP_BYTES };\n\n/**\n * Base URL for extension downloads (defaults to skills store host — usually store.xopc.ai).\n * Override with `XOPC_EXTENSIONS_STORE_URL`.\n */\nexport function resolveExtensionsStoreBaseUrl(config: Config): string {\n const env = process.env.XOPC_EXTENSIONS_STORE_URL?.trim();\n if (env) {\n try {\n return normalizeBaseUrl(new URL(env).toString());\n } catch {\n // fall through\n }\n }\n return resolveSkillsStoreBaseUrl(config);\n}\n\nfunction normalizeBaseUrl(url: string): string {\n return url.replace(/\\/$/, '');\n}\n\nexport function getStoreOrigin(baseUrl: string): string {\n const u = new URL(baseUrl);\n return `${u.protocol}//${u.host}`;\n}\n\n/**\n * Allow download URLs whose origin matches the configured store base (SSRF guard).\n * Production store is HTTPS-only; local dev (`http://localhost` / `127.0.0.1`) may use HTTP.\n */\nexport function assertDownloadUrlAllowed(downloadUrl: string, storeBaseUrl: string): URL {\n let u: URL;\n try {\n u = new URL(downloadUrl);\n } catch {\n throw new Error('Invalid download URL from store');\n }\n const allowed = new URL(storeBaseUrl);\n const localHttpDev =\n allowed.protocol === 'http:' &&\n (allowed.hostname === 'localhost' || allowed.hostname === '127.0.0.1');\n if (localHttpDev) {\n if (u.protocol !== 'http:' && u.protocol !== 'https:') {\n throw new Error('Download URL must use HTTP or HTTPS');\n }\n } else if (u.protocol !== 'https:') {\n throw new Error('Download URL must use HTTPS');\n }\n if (u.host !== allowed.host) {\n throw new Error('Download URL host does not match configured store host');\n }\n return u;\n}\n\nasync function fetchJson<T>(url: string, init?: RequestInit): Promise<T> {\n const res = await fetch(url, {\n ...init,\n headers: { Accept: 'application/json', ...init?.headers },\n });\n const text = await res.text();\n if (!res.ok) {\n let msg = `Store request failed (${res.status})`;\n try {\n const j = JSON.parse(text) as { error?: { message?: string } };\n if (j.error?.message) msg = j.error.message;\n } catch {\n if (text) msg = text.slice(0, 200);\n }\n throw new Error(msg);\n }\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new Error('Store returned invalid JSON');\n }\n}\n\nexport async function listSkillPackages(\n storeBaseUrl: string,\n params: SkillsStoreListParams,\n): Promise<SkillsStoreListResponse> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const sp = new URLSearchParams();\n sp.set('type', 'skill');\n if (params.q?.trim()) sp.set('q', params.q.trim());\n if (params.page != null) sp.set('page', String(params.page));\n if (params.pageSize != null) sp.set('pageSize', String(params.pageSize));\n if (params.sort) sp.set('sort', params.sort);\n if (params.category?.trim()) sp.set('category', params.category.trim());\n\n const url = `${base}/api/v1/packages?${sp.toString()}`;\n return fetchJson<SkillsStoreListResponse>(url);\n}\n\n/** GET /api/v1/packages/:name — published skill package (public). */\nexport interface MarketplacePackageDetail {\n id: string;\n name: string;\n type: string;\n description: string;\n readme: string | null;\n downloads: number;\n author: { username: string; avatarUrl: string | null };\n latestVersion: {\n version: string;\n changelog: string | null;\n publishedAt: string;\n };\n}\n\nexport async function fetchMarketplacePackageDetail(\n storeBaseUrl: string,\n packageName: string,\n): Promise<MarketplacePackageDetail> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const enc = encodeURIComponent(packageName.trim());\n return fetchJson<MarketplacePackageDetail>(`${base}/api/v1/packages/${enc}`);\n}\n\nexport async function resolveSkillZipDownloadUrl(\n storeBaseUrl: string,\n packageName: string,\n version?: string,\n): Promise<{ downloadUrl: string; version: string }> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const enc = encodeURIComponent(packageName);\n if (version?.trim()) {\n const v = encodeURIComponent(version.trim());\n const detail = await fetchJson<{\n downloadUrl: string;\n version: string;\n }>(`${base}/api/v1/packages/${enc}/versions/${v}`);\n if (!detail.downloadUrl) {\n throw new Error('Store version has no download URL');\n }\n assertDownloadUrlAllowed(detail.downloadUrl, base);\n return { downloadUrl: detail.downloadUrl, version: detail.version };\n }\n\n const pkg = await fetchJson<{\n name: string;\n latestVersion: { downloadUrl: string; version: string };\n }>(`${base}/api/v1/packages/${enc}`);\n if (!pkg.latestVersion?.downloadUrl) {\n throw new Error('Package has no published version');\n }\n assertDownloadUrlAllowed(pkg.latestVersion.downloadUrl, base);\n return {\n downloadUrl: pkg.latestVersion.downloadUrl,\n version: pkg.latestVersion.version,\n };\n}\n\nexport async function downloadSkillZipBuffer(\n storeBaseUrl: string,\n downloadUrl: string,\n): Promise<Buffer> {\n const base = normalizeBaseUrl(storeBaseUrl);\n assertDownloadUrlAllowed(downloadUrl, base);\n\n const res = await fetch(downloadUrl, { redirect: 'follow' });\n if (!res.ok) {\n throw new Error(`Failed to download skill archive (${res.status})`);\n }\n const len = res.headers.get('content-length');\n if (len) {\n const n = Number(len);\n if (Number.isFinite(n) && n > MAX_SKILL_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_SKILL_ZIP_BYTES} bytes)`);\n }\n }\n const ab = await res.arrayBuffer();\n const buf = Buffer.from(ab);\n if (buf.length > MAX_SKILL_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_SKILL_ZIP_BYTES} bytes)`);\n }\n return buf;\n}\n\n/** GET /api/v1/packages/:name — subset used for extension installs. */\nexport interface StorePublishedPackageHead {\n name: string;\n type: string;\n latestVersion: {\n version: string;\n downloadUrl: string;\n };\n}\n\nexport async function resolveExtensionZipDownloadUrl(\n storeBaseUrl: string,\n packageName: string,\n version?: string,\n): Promise<{ downloadUrl: string; version: string }> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const enc = encodeURIComponent(packageName.trim());\n const meta = await fetchJson<StorePublishedPackageHead>(`${base}/api/v1/packages/${enc}`);\n if (meta.type !== 'extension') {\n throw new Error(\n `Package \"${packageName}\" has type \"${meta.type}\" (expected extension). ` +\n 'Use `xopc skills install` for skills.',\n );\n }\n if (version?.trim()) {\n const v = encodeURIComponent(version.trim());\n const detail = await fetchJson<{ downloadUrl: string; version: string }>(\n `${base}/api/v1/packages/${enc}/versions/${v}`,\n );\n if (!detail.downloadUrl) {\n throw new Error('Store version has no download URL');\n }\n assertDownloadUrlAllowed(detail.downloadUrl, base);\n return { downloadUrl: detail.downloadUrl, version: detail.version };\n }\n const lv = meta.latestVersion;\n if (!lv?.downloadUrl) {\n throw new Error('Package has no published version');\n }\n assertDownloadUrlAllowed(lv.downloadUrl, base);\n return { downloadUrl: lv.downloadUrl, version: lv.version };\n}\n\nexport async function downloadExtensionStoreZipBuffer(\n storeBaseUrl: string,\n downloadUrl: string,\n): Promise<Buffer> {\n const base = normalizeBaseUrl(storeBaseUrl);\n assertDownloadUrlAllowed(downloadUrl, base);\n const res = await fetch(downloadUrl, { redirect: 'follow' });\n if (!res.ok) {\n throw new Error(`Failed to download extension archive (${res.status})`);\n }\n const len = res.headers.get('content-length');\n if (len) {\n const n = Number(len);\n if (Number.isFinite(n) && n > MAX_EXTENSION_STORE_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_EXTENSION_STORE_ZIP_BYTES} bytes)`);\n }\n }\n const ab = await res.arrayBuffer();\n const buf = Buffer.from(ab);\n if (buf.length > MAX_EXTENSION_STORE_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_EXTENSION_STORE_ZIP_BYTES} bytes)`);\n }\n return buf;\n}\n\nexport function skillIdForMarketplaceInstall(packageName: string): string | undefined {\n const trimmed = packageName.trim();\n if (!trimmed) return undefined;\n return isValidSkillId(trimmed) ? trimmed : undefined;\n}\n\n/**\n * Unified marketplace list response (adapter fills `provider`).\n */\nexport interface UnifiedMarketplaceListResponse {\n items: MarketplacePackageListItem[];\n meta: { page: number; pageSize: number; total: number; totalPages: number };\n provider: string;\n}\n\n/**\n * Unified marketplace package detail response.\n */\nexport interface UnifiedMarketplacePackageDetail extends MarketplacePackageDetail {\n provider: string;\n /** Gateway-normalized structured meta + body rendered by the console. */\n skillDocPreview: SkillMarkdownPreviewPayload;\n /** SkillHub-specific fields */\n skillHubInfo?: {\n category: string;\n installs: number;\n stars: number;\n securityReports?: {\n keen?: { status: string; statusText: string; reportUrl?: string };\n sanbu?: { status: string; statusText: string; reportUrl?: string };\n };\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store-api-client.js","names":[],"sources":["../../../../../../../src/agent/skills/marketplace/adapters/store/store-api-client.ts"],"sourcesContent":["/**\n * HTTP client for the public xopc-store-compatible REST API (packages list, detail, zip download).\n * Used by the store marketplace adapter and SSRF-safe download helpers.\n *\n * Facade: {@link ../../../skills-marketplace.js}.\n */\n\nimport type { Config } from '../../../../../config/schema.js';\nimport { MAX_EXTENSION_STORE_ZIP_BYTES } from '../../../../../extensions/store-zip-limits.js';\nimport { isValidSkillId, MAX_SKILL_ZIP_BYTES } from '../../../managed-store.js';\nimport type { SkillMarkdownPreviewPayload } from '../../../types.js';\n\nconst DEFAULT_STORE_BASE = 'https://store.xopc.ai';\n\n/**\n * Marketplace provider identifier. Dynamic — extensions can register additional providers\n * via `api.registerMarketplaceAdapter()`. Built-in values: 'store', 'skillhub', 'clawhub'.\n */\nexport type SkillsMarketplaceProvider = string;\n\nexport interface SkillsStoreListParams {\n q?: string;\n page?: number;\n pageSize?: number;\n sort?: 'downloads' | 'newest';\n /** Adapter-defined category id (exact match against package `categories`). */\n category?: string;\n}\n\n/** Category option for marketplace filter chips (from adapter). */\nexport interface MarketplaceCategoryOption {\n id: string;\n label: string;\n}\n\n/** Mirrors xopc-store GET /api/v1/packages list response (subset used by UI). */\nexport interface SkillsStorePackageListItem {\n id: string;\n name: string;\n type: string;\n description: string;\n downloads: number;\n author: { username: string; avatarUrl: string | null };\n latestVersion?: string;\n updatedAt: string;\n /** Taxonomy / tags from the marketplace (adapter-specific). */\n categories?: string[];\n tags?: string[];\n stars?: number;\n /** Short provenance label for the row (e.g. ClawHub). */\n sourceLabel?: string;\n}\n\n/** Unified marketplace package list item (works for all adapters). */\nexport type MarketplacePackageListItem = SkillsStorePackageListItem;\n\nexport interface SkillsStoreListResponse {\n items: SkillsStorePackageListItem[];\n meta: { page: number; pageSize: number; total: number; totalPages: number };\n}\n\nexport function resolveSkillsStoreBaseUrl(config: Config): string {\n const env = process.env.XOPC_SKILLS_STORE_URL?.trim();\n if (env) {\n try {\n return normalizeBaseUrl(new URL(env).toString());\n } catch {\n // fall through\n }\n }\n const fromConfig = config.gateway?.skillsStoreBaseUrl?.trim();\n if (fromConfig) {\n try {\n return normalizeBaseUrl(new URL(fromConfig).toString());\n } catch {\n return DEFAULT_STORE_BASE;\n }\n }\n return DEFAULT_STORE_BASE;\n}\n\nexport { MAX_EXTENSION_STORE_ZIP_BYTES };\n\n/**\n * Base URL for extension downloads (defaults to skills store host — usually store.xopc.ai).\n * Override with `XOPC_EXTENSIONS_STORE_URL`.\n */\nexport function resolveExtensionsStoreBaseUrl(config: Config): string {\n const env = process.env.XOPC_EXTENSIONS_STORE_URL?.trim();\n if (env) {\n try {\n return normalizeBaseUrl(new URL(env).toString());\n } catch {\n // fall through\n }\n }\n return resolveSkillsStoreBaseUrl(config);\n}\n\nfunction normalizeBaseUrl(url: string): string {\n return url.replace(/\\/$/, '');\n}\n\nexport function getStoreOrigin(baseUrl: string): string {\n const u = new URL(baseUrl);\n return `${u.protocol}//${u.host}`;\n}\n\n/**\n * Allow download URLs whose origin matches the configured store base (SSRF guard).\n * Production store is HTTPS-only; local dev (`http://localhost` / `127.0.0.1`) may use HTTP.\n */\nexport function assertDownloadUrlAllowed(downloadUrl: string, storeBaseUrl: string): URL {\n let u: URL;\n try {\n u = new URL(downloadUrl);\n } catch {\n throw new Error('Invalid download URL from store');\n }\n const allowed = new URL(storeBaseUrl);\n const localHttpDev =\n allowed.protocol === 'http:' &&\n (allowed.hostname === 'localhost' || allowed.hostname === '127.0.0.1');\n if (localHttpDev) {\n if (u.protocol !== 'http:' && u.protocol !== 'https:') {\n throw new Error('Download URL must use HTTP or HTTPS');\n }\n } else if (u.protocol !== 'https:') {\n throw new Error('Download URL must use HTTPS');\n }\n if (u.host !== allowed.host) {\n throw new Error('Download URL host does not match configured store host');\n }\n return u;\n}\n\nasync function fetchJson<T>(url: string, init?: RequestInit): Promise<T> {\n const res = await fetch(url, {\n ...init,\n headers: { Accept: 'application/json', ...init?.headers },\n });\n const text = await res.text();\n if (!res.ok) {\n let msg = `Store request failed (${res.status})`;\n try {\n const j = JSON.parse(text) as { error?: { message?: string } };\n if (j.error?.message) msg = j.error.message;\n } catch {\n if (text) msg = text.slice(0, 200);\n }\n throw new Error(msg);\n }\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new Error('Store returned invalid JSON');\n }\n}\n\nexport async function listSkillPackages(\n storeBaseUrl: string,\n params: SkillsStoreListParams,\n): Promise<SkillsStoreListResponse> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const sp = new URLSearchParams();\n sp.set('type', 'skill');\n if (params.q?.trim()) sp.set('q', params.q.trim());\n if (params.page != null) sp.set('page', String(params.page));\n if (params.pageSize != null) sp.set('pageSize', String(params.pageSize));\n if (params.sort) sp.set('sort', params.sort);\n if (params.category?.trim()) sp.set('category', params.category.trim());\n\n const url = `${base}/api/v1/packages?${sp.toString()}`;\n return fetchJson<SkillsStoreListResponse>(url);\n}\n\n/** GET /api/v1/packages/:name — published skill package (public). */\nexport interface MarketplacePackageDetail {\n id: string;\n name: string;\n type: string;\n description: string;\n readme: string | null;\n downloads: number;\n author: { username: string; avatarUrl: string | null };\n latestVersion: {\n version: string;\n changelog: string | null;\n publishedAt: string;\n };\n}\n\nexport async function fetchMarketplacePackageDetail(\n storeBaseUrl: string,\n packageName: string,\n): Promise<MarketplacePackageDetail> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const enc = encodeURIComponent(packageName.trim());\n return fetchJson<MarketplacePackageDetail>(`${base}/api/v1/packages/${enc}`);\n}\n\nexport async function resolveSkillZipDownloadUrl(\n storeBaseUrl: string,\n packageName: string,\n version?: string,\n): Promise<{ downloadUrl: string; version: string }> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const enc = encodeURIComponent(packageName);\n if (version?.trim()) {\n const v = encodeURIComponent(version.trim());\n const detail = await fetchJson<{\n downloadUrl: string;\n version: string;\n }>(`${base}/api/v1/packages/${enc}/versions/${v}`);\n if (!detail.downloadUrl) {\n throw new Error('Store version has no download URL');\n }\n assertDownloadUrlAllowed(detail.downloadUrl, base);\n return { downloadUrl: detail.downloadUrl, version: detail.version };\n }\n\n const pkg = await fetchJson<{\n name: string;\n latestVersion: { downloadUrl: string; version: string };\n }>(`${base}/api/v1/packages/${enc}`);\n if (!pkg.latestVersion?.downloadUrl) {\n throw new Error('Package has no published version');\n }\n assertDownloadUrlAllowed(pkg.latestVersion.downloadUrl, base);\n return {\n downloadUrl: pkg.latestVersion.downloadUrl,\n version: pkg.latestVersion.version,\n };\n}\n\nexport async function downloadSkillZipBuffer(\n storeBaseUrl: string,\n downloadUrl: string,\n): Promise<Buffer> {\n const base = normalizeBaseUrl(storeBaseUrl);\n assertDownloadUrlAllowed(downloadUrl, base);\n\n const res = await fetch(downloadUrl, { redirect: 'follow' });\n if (!res.ok) {\n throw new Error(`Failed to download skill archive (${res.status})`);\n }\n const len = res.headers.get('content-length');\n if (len) {\n const n = Number(len);\n if (Number.isFinite(n) && n > MAX_SKILL_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_SKILL_ZIP_BYTES} bytes)`);\n }\n }\n const ab = await res.arrayBuffer();\n const buf = Buffer.from(ab);\n if (buf.length > MAX_SKILL_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_SKILL_ZIP_BYTES} bytes)`);\n }\n return buf;\n}\n\n/** GET /api/v1/packages/:name — subset used for extension installs. */\nexport interface StorePublishedPackageHead {\n name: string;\n type: string;\n latestVersion: {\n version: string;\n downloadUrl: string;\n checksum?: string;\n integrity?: string;\n sha256?: string;\n };\n}\n\nexport async function resolveExtensionZipDownloadUrl(\n storeBaseUrl: string,\n packageName: string,\n version?: string,\n): Promise<{ downloadUrl: string; version: string; integrity?: string }> {\n const base = normalizeBaseUrl(storeBaseUrl);\n const enc = encodeURIComponent(packageName.trim());\n const meta = await fetchJson<StorePublishedPackageHead>(`${base}/api/v1/packages/${enc}`);\n if (meta.type !== 'extension') {\n throw new Error(\n `Package \"${packageName}\" has type \"${meta.type}\" (expected extension). ` +\n 'Use `xopc skills install` for skills.',\n );\n }\n if (version?.trim()) {\n const v = encodeURIComponent(version.trim());\n const detail = await fetchJson<{\n downloadUrl: string;\n version: string;\n checksum?: string;\n integrity?: string;\n sha256?: string;\n }>(`${base}/api/v1/packages/${enc}/versions/${v}`);\n if (!detail.downloadUrl) {\n throw new Error('Store version has no download URL');\n }\n assertDownloadUrlAllowed(detail.downloadUrl, base);\n return {\n downloadUrl: detail.downloadUrl,\n version: detail.version,\n integrity: detail.integrity ?? detail.checksum ?? detail.sha256,\n };\n }\n const lv = meta.latestVersion;\n if (!lv?.downloadUrl) {\n throw new Error('Package has no published version');\n }\n assertDownloadUrlAllowed(lv.downloadUrl, base);\n return {\n downloadUrl: lv.downloadUrl,\n version: lv.version,\n integrity: lv.integrity ?? lv.checksum ?? lv.sha256,\n };\n}\n\nexport async function downloadExtensionStoreZipBuffer(\n storeBaseUrl: string,\n downloadUrl: string,\n): Promise<Buffer> {\n const base = normalizeBaseUrl(storeBaseUrl);\n assertDownloadUrlAllowed(downloadUrl, base);\n const res = await fetch(downloadUrl, { redirect: 'follow' });\n if (!res.ok) {\n throw new Error(`Failed to download extension archive (${res.status})`);\n }\n const len = res.headers.get('content-length');\n if (len) {\n const n = Number(len);\n if (Number.isFinite(n) && n > MAX_EXTENSION_STORE_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_EXTENSION_STORE_ZIP_BYTES} bytes)`);\n }\n }\n const ab = await res.arrayBuffer();\n const buf = Buffer.from(ab);\n if (buf.length > MAX_EXTENSION_STORE_ZIP_BYTES) {\n throw new Error(`Zip exceeds maximum size (${MAX_EXTENSION_STORE_ZIP_BYTES} bytes)`);\n }\n return buf;\n}\n\nexport function skillIdForMarketplaceInstall(packageName: string): string | undefined {\n const trimmed = packageName.trim();\n if (!trimmed) return undefined;\n return isValidSkillId(trimmed) ? trimmed : undefined;\n}\n\n/**\n * Unified marketplace list response (adapter fills `provider`).\n */\nexport interface UnifiedMarketplaceListResponse {\n items: MarketplacePackageListItem[];\n meta: { page: number; pageSize: number; total: number; totalPages: number };\n provider: string;\n}\n\n/**\n * Unified marketplace package detail response.\n */\nexport interface UnifiedMarketplacePackageDetail extends MarketplacePackageDetail {\n provider: string;\n /** Gateway-normalized structured meta + body rendered by the console. */\n skillDocPreview: SkillMarkdownPreviewPayload;\n /** SkillHub-specific fields */\n skillHubInfo?: {\n category: string;\n installs: number;\n stars: number;\n securityReports?: {\n keen?: { status: string; statusText: string; reportUrl?: string };\n sanbu?: { status: string; statusText: string; reportUrl?: string };\n };\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Config } from '../config/schema.js';
|
|
2
|
+
export declare const STARTER_AGENTS_INITIALIZED_VERSION = 1;
|
|
3
|
+
type StarterAgent = {
|
|
4
|
+
id: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
description: string;
|
|
7
|
+
emoji: string;
|
|
8
|
+
tools?: {
|
|
9
|
+
disable?: string[];
|
|
10
|
+
};
|
|
11
|
+
profileFiles: Record<string, string>;
|
|
12
|
+
};
|
|
13
|
+
export declare const STARTER_AGENTS: readonly StarterAgent[];
|
|
14
|
+
export declare function materializeStarterAgentFiles(cfg: Config): void;
|
|
15
|
+
export declare function ensureStarterAgentsInitialized(cfg: Config): {
|
|
16
|
+
config: Config;
|
|
17
|
+
changed: boolean;
|
|
18
|
+
};
|
|
19
|
+
export {};
|