@xopcai/xopc 0.0.141 → 0.0.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BRTCpm3t.js → agent-avatar-dicebear-BawPxiu5.js} +1 -1
- package/dist/gateway/static/root/assets/agents-CyvCIHnB.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DaMMZBAT.js → app-management-settings-panel-81xd1p9R.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BXHThPyM.js → appearance-settings-DYeQsYU8.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-B4omjLxa.js → apps-page-DK_Vx6nl.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-izB-4N4L.js → archive-plugin-D_oa7oti.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-CJihXa5y.js → attachment-load-Cd-bwI2N.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-fgtj5Gek.js → automation-suggestion-card-B1LV3YYv.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-fzrovqhv.js +4 -0
- package/dist/gateway/static/root/assets/{binary-plugins-D3VUeG8s.js → binary-plugins-O8svLKWw.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-KnA0sLI3.js → block-editor-Dhj5f4Bx.js} +47 -47
- package/dist/gateway/static/root/assets/browser-settings-page-BDn-n-UB.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-D8rRNhc6.js → capability-presets-api-dJy1Eqgx.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-sCHojZr4.js → capability-presets-settings-panel-Co5ipo_Q.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-BWgqwC5h.js → channel-recipient-api-Bfuhp2ty.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BWlpaxg9.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-D_jkIZLV.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-BcekbW4q.js +2 -0
- package/dist/gateway/static/root/assets/{desktop-pet-CzdqX001.js → desktop-pet-DFMfIb5F.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DqqUPC7G.js → desktop-pet-settings-BJCUuL8Y.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-PzlO5tSM.js → directory-picker-path-field-BrYt1gAr.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-BmL54kQq.js → dreaming-settings-BN1Z2mIo.js} +3 -3
- package/dist/gateway/static/root/assets/{extension-debug-page-DcW8Ie3r.js → extension-debug-page-Bh630pLD.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DT5cpace.js → extension-page-B-1KxvVy.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CbMk4GhQ.js → extension-settings-page-BF9NACI3.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-06q5eCMA.js → fetch-B1WtuprY.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-4VXUJtLz.js → gateway-config-api-De2N821l.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CdghmKHJ.js → gateway-settings-DN9sNREz.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-2f7_vsv7.js → gateway-startup-retry-nEujFSDj.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-BpoQW8cD.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-CBRSPd0b.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-BpuQTufF.js → goals-config-api-DUy3eEse.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-BCcBi407.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-CW1NwxvV.js → goals-settings-pkTXzXkh.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-C86k5tff.js → heartbeat-settings-ezsufgLQ.js} +1 -1
- package/dist/gateway/static/root/assets/{index-ehajXmqL.js → index-DcUaXYeb.js} +65 -65
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-CVIwwM15.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-DQtTRXtj.js +7 -0
- package/dist/gateway/static/root/assets/{markdown-split-zS4KLNAf.js → markdown-split-B_6us9j7.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-_BgNJ9_7.js → media-plugins-D_fryIyj.js} +1 -1
- package/dist/gateway/static/root/assets/messages-BXNELNBa.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-BP2M9n6Q.js +2 -0
- package/dist/gateway/static/root/assets/notes-page-CspveYaO.js +1 -0
- package/dist/gateway/static/root/assets/notes-workbench-BHwzJ0OC.js +2 -0
- package/dist/gateway/static/root/assets/{page-tabs-B7sGQkgU.js → page-tabs-D_8jGlqx.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-D1ri4s_O.js → preview-open-alternatives-BBLMK8Mp.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-Dy3rsobs.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-CWKpPE0L.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-CqNRyXEo.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BClrOinh.js → save-bar-controls-DVS3FR5r.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CL7YTwLV.js → schedule-field-D6vKd6-T.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-ww4PiIje.js → schema-form-BPy4lbIh.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-MEME7ivF.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-JVd0qaSF.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-D9gEEVm2.js → settings-collapsible-section-WzdikxPt.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-DGeEoBkb.js → settings-form-section-CvfzhBV-.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-BXUeMR37.js → settings-loading-skeleton-BxR-Ulhi.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-C5G2klUB.js → settings-page-DYEbB1EV.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-CEepfbCa.js → settings-page-layout-CKefvbYi.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-oQ8OLnw3.js → setup-status-panel-dWN8BJ3z.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-CXtDHMSi.js → share-preview-page-D8foINzP.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-Tgbv1s7G.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-D_YK0b_Z.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-DGytfoZK.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-W6MBJXrr.js → system-settings-panel-BokgAgf7.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-BkODXN7T.js → typed-models-lib-BwHlNL3L.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-CTbwLZXc.js → use-channel-catalog-DR11ap3A.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-CeC308-E.js → user-profile-settings-panel-8YtygcJp.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-ZxrKHxyb.js → utils-BKUWB-TT.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BVH71EFf.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-JeTE7XNM.js +1 -0
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-CL_rnAUB.js +3 -0
- package/dist/gateway/static/root/assets/{workflow-start-dialog-CtLTtNUB.js → workflow-start-dialog-_u8Uc1ze.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-ixgk_y1l.js +18 -0
- package/dist/gateway/static/root/index.html +4 -4
- package/dist/package.js +1 -1
- package/dist/src/agent/embedded/session-runner.js +5 -5
- package/dist/src/agent/embedded/session-runner.js.map +1 -1
- package/dist/src/agent/embedded/xopc-auth-storage.d.ts +4 -3
- package/dist/src/agent/embedded/xopc-auth-storage.js +6 -6
- package/dist/src/agent/embedded/xopc-auth-storage.js.map +1 -1
- package/dist/src/agent/embedded/xopc-stream-bridge.js +1 -0
- package/dist/src/agent/embedded/xopc-stream-bridge.js.map +1 -1
- package/dist/src/agent/goals/checklist-judge.js +3 -3
- package/dist/src/agent/goals/checklist-judge.js.map +1 -1
- package/dist/src/agent/goals/judge.js +2 -2
- package/dist/src/agent/goals/judge.js.map +1 -1
- package/dist/src/agent/image/understanding/pi-ai-provider.js +2 -2
- package/dist/src/agent/image/understanding/pi-ai-provider.js.map +1 -1
- package/dist/src/agent/memory/compaction.js +2 -2
- package/dist/src/agent/memory/compaction.js.map +1 -1
- package/dist/src/agent/service/btw-query.d.ts +4 -0
- package/dist/src/agent/service/btw-query.js +94 -13
- package/dist/src/agent/service/btw-query.js.map +1 -1
- package/dist/src/agent/session/session-inspector.js +9 -1
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/tools/session-search-tool.js +2 -2
- package/dist/src/agent/tools/session-search-tool.js.map +1 -1
- package/dist/src/agent/tools/web-extract.js +2 -2
- package/dist/src/agent/tools/web-extract.js.map +1 -1
- package/dist/src/ai-assist/text-assist.d.ts +2 -1
- package/dist/src/ai-assist/text-assist.js +10 -23
- package/dist/src/ai-assist/text-assist.js.map +1 -1
- package/dist/src/auth/credentials.js +5 -2
- package/dist/src/auth/credentials.js.map +1 -1
- package/dist/src/auth/oauth/github-copilot.d.ts +3 -4
- package/dist/src/auth/oauth/github-copilot.js +66 -2
- package/dist/src/auth/oauth/github-copilot.js.map +1 -0
- package/dist/src/auth/oauth/index.js +2 -2
- package/dist/src/automations/draft/automation-draft-service.js +3 -3
- package/dist/src/automations/draft/automation-draft-service.js.map +1 -1
- package/dist/src/chat-commands/builtins/review.js +22 -5
- package/dist/src/chat-commands/builtins/review.js.map +1 -1
- package/dist/src/chat-commands/types.d.ts +4 -0
- package/dist/src/gateway/hono/routes/models.js +1 -0
- package/dist/src/gateway/hono/routes/models.js.map +1 -1
- package/dist/src/gateway/hono/routes/voice.js +2 -2
- package/dist/src/gateway/hono/routes/voice.js.map +1 -1
- package/dist/src/goals/goal-contract-draft.js +2 -2
- package/dist/src/goals/goal-contract-draft.js.map +1 -1
- package/dist/src/goals/goal-evidence-review.js +2 -2
- package/dist/src/goals/goal-evidence-review.js.map +1 -1
- package/dist/src/notes/service.js +2 -2
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/providers/constants.d.ts +2 -0
- package/dist/src/providers/constants.js +11 -0
- package/dist/src/providers/constants.js.map +1 -0
- package/dist/src/providers/extension-stream-bridge.js +1 -0
- package/dist/src/providers/extension-stream-bridge.js.map +1 -1
- package/dist/src/providers/index.d.ts +3 -3
- package/dist/src/providers/index.js +5 -4
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/model-call.d.ts +17 -0
- package/dist/src/providers/model-call.js +60 -0
- package/dist/src/providers/model-call.js.map +1 -0
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/session-title.js.map +1 -1
- package/dist/src/voice/tts/summarize.js +2 -2
- package/dist/src/voice/tts/summarize.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft-service.js +2 -2
- package/dist/src/workflows/draft/workflow-draft-service.js.map +1 -1
- package/package.json +5 -5
- package/dist/gateway/static/root/assets/agents-Bd863Akz.js +0 -2
- package/dist/gateway/static/root/assets/automations-page-Dz2mgjIR.js +0 -4
- package/dist/gateway/static/root/assets/browser-settings-page-DZZz5v_i.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-UyVSnf9s.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CB5FzcLf.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BzhHiUO4.js +0 -2
- package/dist/gateway/static/root/assets/goal-create-dialog-CAlsM9MP.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-CLPa4F2y.js +0 -4
- package/dist/gateway/static/root/assets/goals-page-B2VpdzfH.js +0 -2
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-8xwKEhui.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-C_BMONOO.js +0 -7
- package/dist/gateway/static/root/assets/messages-B-8CqAeX.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-Do_cwNjF.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-5IdlPHaX.js +0 -1
- package/dist/gateway/static/root/assets/notes-workbench-0KsRZJIZ.js +0 -2
- package/dist/gateway/static/root/assets/project-detail-page-Dk2zB1gy.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CJQntm2G.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CHeZZg7O.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-9Hb_r0AG.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-PmzVFvAv.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-BlNoairj.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BYV5x1KO.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-ClBcKQZP.js +0 -2
- package/dist/gateway/static/root/assets/voice-api-key-field-BE57S-nS.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-Di1ww5Aa.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-CzK84i-B.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-CZFZdua9.js +0 -18
|
@@ -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{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-BXNELNBa.js";import{a as o}from"./fetch-B1WtuprY.js";import{n as s}from"./locale-store-Ba72bFmP.js";import{i as c}from"./vendor-swr-BIWyz7Rc.js";import{$ as l,$s as u,A as d,Al as f,B as p,Bc as m,Co as h,Ct as g,E as _,Es as v,F as y,G as b,Ga as x,H as S,I as C,Ic as w,J as T,Ja as E,K as D,Ka as O,L as k,M as A,Mc as j,Ml as M,Mo as N,Ms as P,N as F,O as I,Os as L,P as R,Pc as z,Qc as B,Qn as V,R as H,Ro as ee,S as te,Si as ne,St as re,U,Ua as W,Uc as G,Uo as K,V as q,W as J,Wa as ie,Ws as ae,X as oe,Xa as se,Y as ce,Ya as le,Z as ue,_ as de,_t as fe,ac as pe,ar as me,ba as he,bt as ge,cl as _e,dt as ve,et as ye,fl as be,ft as Y,g as xe,gt as Se,io as Ce,it as we,j as Te,k as Ee,ko as X,lt as De,mt as Oe,nl as ke,nt as Ae,oo as je,ps as Me,pt as Ne,q as Pe,qa as Fe,rs as Ie,rt as Le,sc as Re,sl as ze,ss as Be,tt as Ve,ut as He,vs as Ue,vt as We,xc as Ge,yo as Ke,yt as qe,zc as Je}from"./index-DcUaXYeb.js";import{t as Ye}from"./page-tabs-D_8jGlqx.js";import{i as Xe}from"./workflow-run-setup-panel-CL_rnAUB.js";import{t as Ze}from"./automation-suggestion-card-B1LV3YYv.js";import{t as Qe}from"./workflow-start-dialog-_u8Uc1ze.js";var Z=e(t(),1),Q=n(),$e=[`queued`,`running`,`succeeded`,`attention`],et=new Set([`failed`,`timeout`,`cancelled`]);function tt(e){return e.metadata?.sessionKey?.trim()||null}function nt(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function rt(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 it(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||rt(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||rt(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?nt(n,t):null}function at(e,t=90){return it(e,t)??nt(e.title?.trim()||e.definitionId,t)}function ot(e,t=44){return nt(e.title?.trim()||e.definitionId,t)}function st(e,t){let n=t.trim().toLowerCase();return n?[it(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function ct(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!C(e,t.triggerFilter??`all`)?!1:st(e,t.searchQuery))}function lt(e){return e.completedAtMs??e.createdAtMs}function ut(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?`succeeded`:et.has(e.status)?`attention`:null}function dt(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)=>lt(t)-lt(e))}function ft(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=ut(r,t);e&&n[e].push(r)}return $e.map(e=>{if(e===`succeeded`){let t=dt(`succeeded`,n.succeeded);return{id:e,runs:t,totalInWindow:t.length}}return{id:e,runs:dt(e,n[e])}})}var pt=new Map;function mt(e){let t=pt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),pt.set(e,t)),t}function ht(e,t,n){let r=Math.round((t-e)/1e3),i=mt(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 gt(e){return e.status===`queued`||e.status===`running`}function _t(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),vt=(0,Z.memo)(function(e){let t=(0,Q.c)(76),{run:n,language:r,localeTag:o,nowMs:s,selected:c,onOpen:l,onOpenChat:u,onCancel:f,onRetry:p}=e,m=a(r).workflows,[g,_]=(0,Z.useState)(!1),v;t[0]===n?v=t[1]:(v=tt(n),t[0]=n,t[1]=v);let y=!v,b;t[2]===n?b=t[3]:(b=gt(n),t[2]=n,t[3]=b);let x=b,S=n.status===`running`||n.status===`queued`,C;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(C=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]=C):C=t[6];let w=C,T=n.metrics.errorAgentCount>0,E=n.startedAtMs??n.createdAtMs,D=d(x?s-E:n.metrics.durationMs),O=F(m.taskArtifacts,{count:n.metrics.artifactCount}),A;t[7]===n?A=t[8]:(A=at(n),t[7]=n,t[8]=A);let j=A,M;t[9]===n?M=t[10]:(M=ot(n),t[9]=n,t[10]=M);let N=M,P;t[11]!==l||t[12]!==n?(P=()=>{l(n)},t[11]=l,t[12]=n,t[13]=P):P=t[13];let I=P,L;t[14]!==y||t[15]!==u||t[16]!==n?(L=()=>{y||u(n)},t[14]=y,t[15]=u,t[16]=n,t[17]=L):L=t[17];let R=L,B=c&&`ring-1 ring-accent/30`,V;t[18]===B?V=t[19]:(V=i(`group relative min-h-24 overflow-hidden rounded-lg bg-surface-panel px-3 py-3 shadow-surface transition-colors`,B,`hover:bg-surface-hover`),t[18]=B,t[19]=V);let H;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(H=i(`w-full text-left`,h.focusRingPanel),t[20]=H):H=t[20];let ee;t[21]===j?ee=t[22]:(ee=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-medium leading-5 text-fg`,children:j}),t[21]=j,t[22]=ee);let te;t[23]===N?te=t[24]:(te=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:N}),t[23]=N,t[24]=te);let ne;t[25]!==ee||t[26]!==te?(ne=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[ee,te]}),t[25]=ee,t[26]=te,t[27]=ne):ne=t[27];let re;t[28]===n.status?re=t[29]:(re=i(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,k(n.status)),t[28]=n.status,t[29]=re);let U;t[30]!==o||t[31]!==s||t[32]!==E?(U=ht(E,s,o),t[30]=o,t[31]=s,t[32]=E,t[33]=U):U=t[33];let W;t[34]===U?W=t[35]:(W=(0,$.jsx)(`span`,{children:U}),t[34]=U,t[35]=W);let G=D===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:F(m.taskElapsed,{duration:D})})]}),q;t[36]!==W||t[37]!==G?(q=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[W,G]}),t[36]=W,t[37]=G,t[38]=q):q=t[38];let J=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:O}):null,ie=c?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:m.taskOpenDetails}):null,ae;t[39]!==J||t[40]!==ie?(ae=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[J,ie]}),t[39]=J,t[40]=ie,t[41]=ae):ae=t[41];let oe=y&&`cursor-not-allowed text-fg-disabled hover:bg-transparent`,se;t[42]===oe?se=t[43]:(se=i(`rounded-md px-2 py-1 text-xs font-medium`,`text-accent-fg hover:bg-accent-soft`,h.focusRingPanel,oe),t[42]=oe,t[43]=se);let ce;t[44]!==y||t[45]!==R||t[46]!==m.continueInChat||t[47]!==se?(ce=(0,$.jsx)(`button`,{type:`button`,className:se,disabled:y,onClick:R,children:m.continueInChat}),t[44]=y,t[45]=R,t[46]=m.continueInChat,t[47]=se,t[48]=ce):ce=t[48];let le;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(le=i(`rounded-md px-2 py-1 text-xs font-medium text-fg-muted hover:bg-surface-hover hover:text-fg`,h.focusRingPanel),t[49]=le):le=t[49];let ue;t[50]!==I||t[51]!==m.taskOpenDetails?(ue=(0,$.jsx)(`button`,{type:`button`,className:le,onClick:I,children:m.taskOpenDetails}),t[50]=I,t[51]=m.taskOpenDetails,t[52]=ue):ue=t[52];let de;t[53]!==ce||t[54]!==ue?(de=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 border-t border-edge-subtle pt-2`,children:[ce,ue]}),t[53]=ce,t[54]=ue,t[55]=de):de=t[55];let fe;t[56]===_?fe=t[57]:(fe=()=>_(bt),t[56]=_,t[57]=fe);let pe;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,$.jsx)(z,{className:`size-4`,"aria-hidden":!0}),t[58]=pe):pe=t[58];let me;t[59]!==m.taskActionsAria||t[60]!==g||t[61]!==fe?(me=(0,$.jsx)(X,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":m.taskActionsAria,"aria-expanded":g,onClick:fe,children:pe}),t[59]=m.taskActionsAria,t[60]=g,t[61]=fe,t[62]=me):me=t[62];let he;t[63]!==x||t[64]!==m.cancel||t[65]!==m.rerun||t[66]!==m.taskCloseMenu||t[67]!==g||t[68]!==f||t[69]!==p||t[70]!==n||t[71]!==_?(he=g?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":m.taskCloseMenu,onClick:()=>_(!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:[x?(0,$.jsx)(yt,{label:m.cancel,tone:`danger`,onClick:()=>{_(!1),f(n.id)}}):null,_t(n)?(0,$.jsx)(yt,{label:m.rerun,onClick:()=>{_(!1),p(n.id)}}):null]})]}):null,t[63]=x,t[64]=m.cancel,t[65]=m.rerun,t[66]=m.taskCloseMenu,t[67]=g,t[68]=f,t[69]=p,t[70]=n,t[71]=_,t[72]=he):he=t[72];let ge;return t[73]!==me||t[74]!==he?(ge=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[me,he]}),t[73]=me,t[74]=he,t[75]=ge):ge=t[75],(0,$.jsxs)(`div`,{className:V,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:I,"aria-label":`${m.taskOpenDetails}: ${j}`,"aria-current":c?`true`:void 0,className:H,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[ne,(0,$.jsx)(`span`,{className:re,children:m.status[n.status]??n.status})]}),q]}),S?(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:F(m.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[w,`%`]})]}),(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:`${w}%`}})})]}):null,ae,T?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(K,{className:`size-3 shrink-0`,"aria-hidden":!0}),F(m.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),de,ge]})});function yt(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:a,onClick:o}=e,s=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,c=a===`danger`&&!r&&`text-red-600 dark:text-red-300`,l;t[0]!==s||t[1]!==c?(l=i(`block w-full px-3 py-1.5 text-left text-xs`,s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let u;return t[3]!==r||t[4]!==n||t[5]!==o||t[6]!==l?(u=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:o,className:l,children:n}),t[3]=r,t[4]=n,t[5]=o,t[6]=l,t[7]=u):u=t[7],u}function bt(e){return!e}function xt(e,t){return t.boardColumns[e]}var St=(0,Z.memo)(function(e){let t=(0,Q.c)(17),{column:n,language:r,localeTag:o,nowMs:s,selectedRunId:c,loading:l,onOpenRun:u,onOpenRunChat:d,onCancelRun:f,onRetryRun:p}=e,m=a(r).workflows,[h,g]=(0,Z.useState)(!1),_=n.id===`succeeded`,v=_?5:n.runs.length,y;t[0]!==v||t[1]!==n.runs||t[2]!==h||t[3]!==_?(y=_&&!h?n.runs.slice(0,v):n.runs,t[0]=v,t[1]=n.runs,t[2]=h,t[3]=_,t[4]=y):y=t[4];let b=y,x=_&&n.runs.length>5&&!h,S=_&&h,C;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(C=i(`flex max-h-full w-72 min-w-72 max-w-72 shrink-0 flex-col overflow-y-auto rounded-lg bg-surface-base shadow-surface`),t[5]=C):C=t[5];let w;t[6]===n.runs.length?w=t[7]:(w=(0,$.jsx)(`span`,{className:`shrink-0 text-xs text-fg-subtle`,children:n.runs.length}),t[6]=n.runs.length,t[7]=w);let T;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,$.jsx)(z,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[8]=T):T=t[8];let E=l&&b.length===0?(0,$.jsx)(Ct,{}):b.length===0?(0,$.jsx)(`div`,{className:`rounded-lg bg-surface-panel/70 px-3 py-6 text-center text-xs text-fg-subtle`,children:m.boardColumnEmpty}):b.map(e=>(0,$.jsx)(vt,{run:e,language:r,localeTag:o,nowMs:s,selected:e.id===c,onOpen:u,onOpenChat:d,onCancel:f,onRetry:p},e.id)),D=x?(0,$.jsx)(X,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!0),children:F(m.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,O;t[9]!==S||t[10]!==m||t[11]!==g?(O=S?(0,$.jsx)(X,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!1),children:m.boardCollapseSucceeded}):null,t[9]=S,t[10]=m,t[11]=g,t[12]=O):O=t[12];let k;return t[13]!==E||t[14]!==D||t[15]!==O?(k=(0,$.jsxs)(`div`,{className:`mx-2 mt-3 grid min-h-0 min-w-0 content-start gap-2 pb-2 pr-1 [scrollbar-gutter:stable]`,children:[E,D,O]}),t[13]=E,t[14]=D,t[15]=O,t[16]=k):k=t[16],(0,$.jsxs)(`section`,{className:C,"aria-label":xt(n.id,m),children:[(0,$.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between gap-2 px-3 py-3`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:xt(n.id,m)}),w]}),T]}),k]})});function Ct(){let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`article`,{className:`min-h-24 rounded-lg bg-surface-panel px-3 py-3 shadow-surface`,"aria-hidden":`true`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(he,{className:`h-4 w-4/5`}),(0,$.jsx)(he,{className:`mt-2 h-3 w-24`})]}),(0,$.jsx)(he,{className:`h-5 w-14 rounded-full`})]}),(0,$.jsx)(he,{className:`mt-3 h-3 w-2/3`}),(0,$.jsx)(he,{className:`mt-4 h-5 w-20 rounded-full`})]}),e[0]=t):t=e[0],t}function wt(e){return e instanceof Element?!!e.closest(`a,button,input,select,textarea,[contenteditable="true"],[draggable="true"],[data-board-pan-skip="true"]`):!0}var Tt=(0,Z.memo)(function(e){let t=(0,Q.c)(54),{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(Et),t[0]=n,t[1]=g);let _=g,v=(0,Z.useRef)(null),y=(0,Z.useRef)(null),[b,x]=(0,Z.useState)(Dt),[S,C]=(0,Z.useState)(!1),w,T;t[2]===_?(w=t[3],T=t[4]):(w=()=>{if(!_)return;let e=window.setInterval(()=>x(Date.now()),1e3);return()=>window.clearInterval(e)},T=[_],t[2]=_,t[3]=w,t[4]=T),(0,Z.useEffect)(w,T);let E;t[5]!==b||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(E=ft(ct(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),b),t[5]=b,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=E):E=t[10];let D=E,O=D.reduce(Ot,0),k;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(k=e=>{let t=y.current;!t||t.pointerId!==e.pointerId||(y.current=null,C(!1),e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId))},t[11]=k):k=t[11];let A=k,j;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(j=e=>{if(e.button!==0||wt(e.target))return;let t=v.current;t&&(y.current={pointerId:e.pointerId,startX:e.clientX,scrollLeft:t.scrollLeft,active:!1},e.currentTarget.setPointerCapture(e.pointerId))},t[12]=j):j=t[12];let M=j,N;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(N=e=>{let t=y.current,n=v.current;if(!t||!n||t.pointerId!==e.pointerId)return;let r=e.clientX-t.startX;!t.active&&Math.abs(r)<5||(t.active||(t.active=!0,C(!0)),e.preventDefault(),n.scrollLeft=t.scrollLeft-r)},t[13]=N):N=t[13];let P=N;if(!u&&O===0){let e;t[14]===a.boardEmptyTitle?e=t[15]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[14]=a.boardEmptyTitle,t[15]=e);let n;t[16]===a.boardEmptyHint?n=t[17]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[16]=a.boardEmptyHint,t[17]=n);let r;t[18]!==a.boardStart||t[19]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(X,{variant:`primary`,onClick:h,children:a.boardStart})}),t[18]=a.boardStart,t[19]=h,t[20]=r):r=t[20];let i;return t[21]!==r||t[22]!==e||t[23]!==n?(i=(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col items-center justify-center rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[21]=r,t[22]=e,t[23]=n,t[24]=i):i=t[24],i}let F=S?`cursor-grabbing select-none`:`cursor-grab`,I;t[25]===F?I=t[26]:(I=[`min-h-0 h-full min-w-0 overflow-x-auto rounded-lg px-2 py-2`,F],t[25]=F,t[26]=I);let L=I.join(` `),R;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(R=e=>{y.current?.pointerId===e.pointerId&&(y.current=null,C(!1))},t[27]=R):R=t[27];let z;if(t[28]!==D||t[29]!==r||t[30]!==u||t[31]!==i||t[32]!==b||t[33]!==p||t[34]!==d||t[35]!==f||t[36]!==m||t[37]!==l){let e;t[39]!==r||t[40]!==u||t[41]!==i||t[42]!==b||t[43]!==p||t[44]!==d||t[45]!==f||t[46]!==m||t[47]!==l?(e=e=>(0,$.jsx)(St,{column:e,language:r,localeTag:i,nowMs:b,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[39]=r,t[40]=u,t[41]=i,t[42]=b,t[43]=p,t[44]=d,t[45]=f,t[46]=m,t[47]=l,t[48]=e):e=t[48],z=D.map(e),t[28]=D,t[29]=r,t[30]=u,t[31]=i,t[32]=b,t[33]=p,t[34]=d,t[35]=f,t[36]=m,t[37]=l,t[38]=z}else z=t[38];let B;t[49]===z?B=t[50]:(B=(0,$.jsx)(`div`,{className:`flex min-h-full min-w-max items-start gap-3 pr-4`,children:z}),t[49]=z,t[50]=B);let V;return t[51]!==L||t[52]!==B?(V=(0,$.jsx)(`div`,{ref:v,className:L,onPointerDown:M,onPointerMove:P,onPointerUp:A,onPointerCancel:A,onLostPointerCapture:R,children:B}),t[51]=L,t[52]=B,t[53]=V):V=t[53],V});function Et(e){return e.status===`queued`||e.status===`running`}function Dt(){return Date.now()}function Ot(e,t){return e+t.runs.length}var kt=`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 At(e){let t=(0,Q.c)(48),{open:n,language:r,ownerAgentId:i,saving:o,initialDraft:s,onClose:c,onSave:l,onSaveAndStart:u}=e,d;t[0]===r?d=t[1]:(d=a(r),t[0]=r,t[1]=d);let f=d.workflows,[p,m]=(0,Z.useState)(`ai`),[h,g]=(0,Z.useState)(``),[_,v]=(0,Z.useState)(``),y=s?.mode===`edit`,b=y?f.editWorkflowTitle:f.createWorkflowTitle,S=y?f.editWorkflowHint:s?.mode===`copy`?f.createWorkflowHintFromCopy:f.createWorkflowHint,C,w;t[2]!==s||t[3]!==n?(C=()=>{n&&(m(s?`manual`:`ai`),g(s?.name??``),v(s?.script??``))},w=[s,n],t[2]=s,t[3]=n,t[4]=C,t[5]=w):(C=t[4],w=t[5]),(0,Z.useEffect)(C,w);let T;t[6]===c?T=t[7]:(T=e=>!e&&c(),t[6]=c,t[7]=T);let D;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,$.jsx)(O,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[8]=D):D=t[8];let k;t[9]===b?k=t[10]:(k=(0,$.jsx)(le,{className:`text-base font-semibold text-fg`,children:b}),t[9]=b,t[10]=k);let A;t[11]===S?A=t[12]:(A=(0,$.jsx)(x,{className:`mt-1 text-sm text-fg-muted`,children:S}),t[11]=S,t[12]=A);let j=p===`ai`,M,N;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(N=()=>m(`ai`),M=(0,$.jsx)(Ie,{className:`size-4`,"aria-hidden":!0}),t[13]=M,t[14]=N):(M=t[13],N=t[14]);let P;t[15]!==f.createWorkflowAiTab||t[16]!==j?(P=(0,$.jsx)(jt,{active:j,onClick:N,icon:M,children:f.createWorkflowAiTab}),t[15]=f.createWorkflowAiTab,t[16]=j,t[17]=P):P=t[17];let F=p===`manual`,I,L;t[18]===Symbol.for(`react.memo_cache_sentinel`)?(I=()=>m(`manual`),L=(0,$.jsx)(G,{className:`size-4`,"aria-hidden":!0}),t[18]=I,t[19]=L):(I=t[18],L=t[19]);let R;t[20]!==f.createWorkflowManualTab||t[21]!==F?(R=(0,$.jsx)(jt,{active:F,onClick:I,icon:L,children:f.createWorkflowManualTab}),t[20]=f.createWorkflowManualTab,t[21]=F,t[22]=R):R=t[22];let z;t[23]!==P||t[24]!==R?(z=(0,$.jsxs)(`div`,{className:`mt-4 inline-flex rounded-xl border border-edge bg-surface-base p-1`,children:[P,R]}),t[23]=P,t[24]=R,t[25]=z):z=t[25];let B;t[26]!==z||t[27]!==k||t[28]!==A?(B=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[k,A,z]}),t[26]=z,t[27]=k,t[28]=A,t[29]=B):B=t[29];let V;t[30]!==s||t[31]!==r||t[32]!==p||t[33]!==c||t[34]!==l||t[35]!==u||t[36]!==i||t[37]!==o||t[38]!==h||t[39]!==_?(V=p===`ai`?(0,$.jsx)(Mt,{language:r,ownerAgentId:i,saving:o,initialDraft:s,name:h,setName:g,script:_,setScript:v,onClose:c,onSave:l,onSaveAndStart:u}):(0,$.jsx)(Nt,{language:r,saving:o,initialDraft:s,name:h,setName:g,script:_,setScript:v,onClose:c,onSave:l}),t[30]=s,t[31]=r,t[32]=p,t[33]=c,t[34]=l,t[35]=u,t[36]=i,t[37]=o,t[38]=h,t[39]=_,t[40]=V):V=t[40];let H;t[41]!==B||t[42]!==V?(H=(0,$.jsxs)(Fe,{children:[D,(0,$.jsxs)(ie,{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:[B,V]})]}),t[41]=B,t[42]=V,t[43]=H):H=t[43];let ee;return t[44]!==n||t[45]!==H||t[46]!==T?(ee=(0,$.jsx)(E,{open:n,onOpenChange:T,children:H}),t[44]=n,t[45]=H,t[46]=T,t[47]=ee):ee=t[47],ee}function jt(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 Mt({language:e,ownerAgentId:t,saving:n,initialDraft:r,name:i,setName:o,script:s,setScript:c,onClose:l,onSave:u,onSaveAndStart:d}){let f=a(e).workflows,[p,m]=(0,Z.useState)(``),[h,g]=(0,Z.useState)(null),[_,v]=(0,Z.useState)({allowNetwork:!1,fileSystem:`read`,maxPhases:4,maxSubagents:8,outputFormat:`report`}),[y,b]=(0,Z.useState)(!1),[x,S]=(0,Z.useState)(null),C=(0,Z.useMemo)(()=>h?.validation.errors.map(e=>e.message)??[],[h]),w=(0,Z.useMemo)(()=>h?.lint.filter(e=>e.severity===`error`)??[],[h]),T=p.trim().length>0&&!y,E=!!(h&&i.trim()&&s.trim()&&h.validation.valid&&w.length===0&&!n),D=s.trim().length>0,O=D?f.nlBuilderEditPromptLabel:f.nlBuilderPromptLabel,k=D?f.nlBuilderEditPromptPlaceholder:f.nlBuilderPromptPlaceholder,A=D?`improve`:`create`,j=async n=>{if(p.trim()){b(!0),S(null);try{let r=await He({prompt:p,agentId:t,language:e===`zh`?`zh`:`en`,mode:n,existingScript:n===`improve`?s:void 0,constraints:_});g(r),o(r.name),c(r.script)}catch(e){S(e instanceof Error?e.message:f.nlBuilderGenerateFailed)}finally{b(!1)}}},M=async()=>{E&&await u({name:i.trim(),script:s})&&l()},N=async()=>{E&&await d({name:i.trim(),script:s,goal:p.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:O}),(0,$.jsx)(`textarea`,{value:p,onChange:e=>m(e.target.value),placeholder:k,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)(Pt,{label:f.nlBuilderMaxPhases,value:_.maxPhases??4,min:1,max:8,onChange:e=>v(t=>({...t,maxPhases:e}))}),(0,$.jsx)(Pt,{label:f.nlBuilderMaxAgents,value:_.maxSubagents??8,min:1,max:20,onChange:e=>v(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:!!_.allowNetwork,onChange:e=>v(t=>({...t,allowNetwork:e.target.checked}))}),f.nlBuilderAllowNetwork]}),(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:f.nlBuilderFilesystem}),(0,$.jsxs)(Ce,{value:_.fileSystem??`read`,onChange:e=>v(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)(je,{value:`none`,children:`none`}),(0,$.jsx)(je,{value:`read`,children:`read`}),(0,$.jsx)(je,{value:`write`,children:`write`})]})]})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(0,$.jsxs)(X,{variant:`primary`,disabled:!T,onClick:()=>void j(A),children:[(0,$.jsx)(Ie,{className:`size-4`,"aria-hidden":!0}),y?f.nlBuilderGenerating:D?f.nlBuilderRewriteExisting:f.nlBuilderGenerate]})}),x?(0,$.jsx)(qt,{text:x}):null,h?(0,$.jsx)(Rt,{draft:h,labels:f}):null]}),(0,$.jsxs)(`section`,{className:`min-w-0 space-y-3`,children:[(0,$.jsx)(It,{initialDraft:r,labels:f}),(0,$.jsx)(Ft,{labels:f,name:i,setName:o}),(0,$.jsx)(Lt,{labels:f,script:s,setScript:c,minHeightClass:`min-h-96`}),h?(0,$.jsx)(zt,{draft:h,labels:f,validationIssues:C}):null]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(X,{variant:`secondary`,onClick:l,disabled:n||y,children:f.cancelDialog}),(0,$.jsx)(X,{variant:`secondary`,disabled:!E,onClick:()=>void M(),children:n?f.savingWorkflow:f.saveWorkflow}),(0,$.jsx)(X,{variant:`primary`,disabled:!E,onClick:()=>void N(),children:f.nlBuilderSaveAndStart})]})]})}function Nt({language:e,saving:t,initialDraft:n,name:r,setName:i,script:o,setScript:s,onClose:c,onSave:l}){let u=a(e).workflows,[d,f]=(0,Z.useState)(!1),[p,m]=(0,Z.useState)(!1),[h,_]=(0,Z.useState)(null),[v,y]=(0,Z.useState)(null),b=r.trim(),x=!!(b&&o.trim());(0,Z.useEffect)(()=>{if(!x){m(!1),_(null),y(null);return}let e=!1,t=window.setTimeout(()=>{m(!0),_(null),g(b,o).then(t=>{e||y(t)}).catch(t=>{e||(y(null),_(t instanceof Error?t.message:u.validateWorkflowFailed))}).finally(()=>{e||m(!1)})},450);return()=>{e=!0,window.clearTimeout(t)}},[x,u.validateWorkflowFailed,o,b]);let S=(0,Z.useMemo)(()=>h?[h]:v?.errors.map(e=>e.message)??[],[h,v]),C=d||p||v!=null||h!=null,w=x&&!t&&!p&&v?.valid===!0;(0,Z.useEffect)(()=>{!n&&!o.trim()&&s(kt),f(!1),m(!1),_(null),y(null)},[n,o,s]);let T=async()=>{if(f(!0),!(!x||t)){m(!0),_(null);try{let e=await g(b,o);if(y(e),!e.valid)return;await l({name:b,script:o})&&c()}catch(e){y(null),_(e instanceof Error?e.message:u.validateWorkflowFailed)}finally{m(!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)(It,{initialDraft:n,labels:u}),(0,$.jsx)(Ft,{labels:u,name:r,setName:e=>{i(e),y(null),_(null)}}),(0,$.jsx)(Lt,{labels:u,script:o,setScript:e=>{s(e),y(null),_(null)},minHeightClass:`min-h-72`}),C?(0,$.jsx)(Ut,{labels:u,validating:p,validationIssues:S,validationResult:v}):null]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(X,{variant:`secondary`,onClick:c,disabled:t,children:u.cancelDialog}),(0,$.jsx)(X,{variant:`primary`,disabled:!w,onClick:()=>void T(),children:t?u.savingWorkflow:u.saveWorkflow})]})]})}function Pt(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 Ft(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 It(e){let t=(0,Q.c)(7),{initialDraft:n,labels:r}=e;if(!n)return null;let i;t[0]!==n.mode||t[1]!==n.sourceTitle||t[2]!==r.copyWorkflowNotice||t[3]!==r.editWorkflowNotice?(i=n.mode===`copy`?r.copyWorkflowNotice.replace(`{{title}}`,n.sourceTitle):r.editWorkflowNotice.replace(`{{title}}`,n.sourceTitle),t[0]=n.mode,t[1]=n.sourceTitle,t[2]=r.copyWorkflowNotice,t[3]=r.editWorkflowNotice,t[4]=i):i=t[4];let a=i,o;return t[5]===a?o=t[6]:(o=(0,$.jsx)(`div`,{className:`rounded-xl border border-accent/20 bg-accent-soft/60 px-3 py-2 text-sm leading-6 text-accent-fg`,children:a}),t[5]=a,t[6]=o),o}function Lt(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 Rt(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)(Gt,{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)(Gt,{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)(Gt,{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 zt(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(Ht),t[0]=n.validation.valid,t[1]=a,t[2]=o):o=t[2];let s=o,c=s?`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`,l;t[3]===s?l=t[4]:(l=s?(0,$.jsx)(ke,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(K,{className:`size-4`,"aria-hidden":!0}),t[3]=s,t[4]=l);let u=s?r.validationPassed:r.nlBuilderReviewIssues,d;t[5]!==l||t[6]!==u?(d=(0,$.jsxs)(`div`,{className:`flex items-center gap-2 font-medium`,children:[l,u]}),t[5]=l,t[6]=u,t[7]=d):d=t[7];let f;t[8]!==n.validation.definition?.phases||t[9]!==r.validationPreview||t[10]!==a||t[11]!==i?(f=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(Vt),a.map(Bt)]}):(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]=f):f=t[12];let p;return t[13]!==c||t[14]!==d||t[15]!==f?(p=(0,$.jsxs)(`div`,{className:c,children:[d,f]}),t[13]=c,t[14]=d,t[15]=f,t[16]=p):p=t[16],p}function Bt(e){return(0,$.jsx)(`li`,{children:e.message},`${e.code}:${e.message}`)}function Vt(e){return(0,$.jsx)(`li`,{children:e},e)}function Ht(e){return e.severity!==`error`}function Ut(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(Wt)}):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 Wt(e){return(0,$.jsx)(`li`,{children:e},e)}function Gt(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)(be,{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(Kt),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 Kt(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 qt(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 Jt(e){let t=(0,Q.c)(98),{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 u=c.workflows;if(!r)return null;let d,f,p,m,h,g,_,v,y,b,S,C;if(t[2]!==r||t[3]!==u.templateBestFor||t[4]!==u.templateExample||t[5]!==i||t[6]!==o||t[7]!==n){let e=l(r,i);m=r.runtime?.source??``,p=E,S=n,t[20]===o?C=t[21]:(C=e=>!e&&o(),t[20]=o,t[21]=C),f=Fe,t[22]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(O,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[22]=b):b=t[22],d=ie,v=`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`;let a;t[23]===r.title?a=t[24]:(a=(0,$.jsx)(le,{className:`text-base font-semibold text-fg`,children:r.title}),t[23]=r.title,t[24]=a),y=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[a,(0,$.jsx)(x,{className:`mt-1 text-sm text-fg-muted`,children:e.description})]}),h=`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,g=e.whenToUse?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:u.templateBestFor}),(0,$.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:e.whenToUse})]}):null,_=e.examplePrompts?.length?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:u.templateExample}),(0,$.jsx)(`div`,{className:`mt-2 grid gap-2`,children:e.examplePrompts.slice(0,3).map(Xt)})]}):null,t[2]=r,t[3]=u.templateBestFor,t[4]=u.templateExample,t[5]=i,t[6]=o,t[7]=n,t[8]=d,t[9]=f,t[10]=p,t[11]=m,t[12]=h,t[13]=g,t[14]=_,t[15]=v,t[16]=y,t[17]=b,t[18]=S,t[19]=C}else d=t[8],f=t[9],p=t[10],m=t[11],h=t[12],g=t[13],_=t[14],v=t[15],y=t[16],b=t[17],S=t[18],C=t[19];let w;t[25]===u.templateInputs?w=t[26]:(w=(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:u.templateInputs}),t[25]=u.templateInputs,t[26]=w);let T=r.inputSchema?u.templateInputsStructured:u.templateInputsGoalOnly,D;t[27]===T?D=t[28]:(D=(0,$.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:T}),t[27]=T,t[28]=D);let k;t[29]!==w||t[30]!==D?(k=(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[w,D]}),t[29]=w,t[30]=D,t[31]=k):k=t[31];let A;t[32]===u.templateExpectedOutput?A=t[33]:(A=(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:u.templateExpectedOutput}),t[32]=u.templateExpectedOutput,t[33]=A);let j;t[34]===u.templateOutputReport?j=t[35]:(j=(0,$.jsx)(`p`,{className:`mt-1 text-sm text-fg-muted`,children:u.templateOutputReport}),t[34]=u.templateOutputReport,t[35]=j);let M;t[36]!==A||t[37]!==j?(M=(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2`,children:[A,j]}),t[36]=A,t[37]=j,t[38]=M):M=t[38];let N;t[39]!==k||t[40]!==M?(N=(0,$.jsxs)(`section`,{className:`grid gap-2 sm:grid-cols-2`,children:[k,M]}),t[39]=k,t[40]=M,t[41]=N):N=t[41];let P;t[42]!==r.phases||t[43]!==u.templatePlan?(P=r.phases.length>0?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:u.templatePlan}),(0,$.jsx)(`ol`,{className:`mt-2 space-y-2`,children:r.phases.map(Yt)})]}):null,t[42]=r.phases,t[43]=u.templatePlan,t[44]=P):P=t[44];let F;t[45]===u.advancedTemplateDetails?F=t[46]:(F=(0,$.jsx)(`summary`,{className:`cursor-pointer px-3 py-2 text-sm font-medium text-fg`,children:u.advancedTemplateDetails}),t[45]=u.advancedTemplateDetails,t[46]=F);let I;t[47]!==r||t[48]!==u?(I=(0,$.jsx)(Zt,{definition:r,labels:u}),t[47]=r,t[48]=u,t[49]=I):I=t[49];let L;t[50]!==r.inputSchema||t[51]!==u.inputsHeading?(L=r.inputSchema?(0,$.jsx)($t,{title:u.inputsHeading,schema:r.inputSchema}):null,t[50]=r.inputSchema,t[51]=u.inputsHeading,t[52]=L):L=t[52];let R;t[53]!==r.outputSchema||t[54]!==u.outputsHeading?(R=r.outputSchema?(0,$.jsx)($t,{title:u.outputsHeading,schema:r.outputSchema}):null,t[53]=r.outputSchema,t[54]=u.outputsHeading,t[55]=R):R=t[55];let z;t[56]!==u.scriptHeading||t[57]!==m?(z=m?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:u.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:m})]}):null,t[56]=u.scriptHeading,t[57]=m,t[58]=z):z=t[58];let B;t[59]!==I||t[60]!==L||t[61]!==R||t[62]!==z?(B=(0,$.jsxs)(`div`,{className:`space-y-4 border-t border-edge px-3 py-3`,children:[I,L,R,z]}),t[59]=I,t[60]=L,t[61]=R,t[62]=z,t[63]=B):B=t[63];let V;t[64]!==F||t[65]!==B?(V=(0,$.jsxs)(`details`,{className:`rounded-xl border border-edge bg-surface-base/35`,children:[F,B]}),t[64]=F,t[65]=B,t[66]=V):V=t[66];let H;t[67]!==N||t[68]!==P||t[69]!==h||t[70]!==V||t[71]!==g||t[72]!==_?(H=(0,$.jsxs)(`div`,{className:h,children:[g,_,N,P,V]}),t[67]=N,t[68]=P,t[69]=h,t[70]=V,t[71]=g,t[72]=_,t[73]=H):H=t[73];let ee;t[74]!==u.closeResult||t[75]!==o?(ee=(0,$.jsx)(X,{variant:`secondary`,onClick:o,children:u.closeResult}),t[74]=u.closeResult,t[75]=o,t[76]=ee):ee=t[76];let te;t[77]!==u.runWorkflow||t[78]!==s?(te=(0,$.jsx)(X,{variant:`primary`,onClick:s,children:u.runWorkflow}),t[77]=u.runWorkflow,t[78]=s,t[79]=te):te=t[79];let ne;t[80]!==ee||t[81]!==te?(ne=(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[ee,te]}),t[80]=ee,t[81]=te,t[82]=ne):ne=t[82];let re;t[83]!==d||t[84]!==H||t[85]!==ne||t[86]!==v||t[87]!==y?(re=(0,$.jsxs)(d,{className:v,children:[y,H,ne]}),t[83]=d,t[84]=H,t[85]=ne,t[86]=v,t[87]=y,t[88]=re):re=t[88];let U;t[89]!==f||t[90]!==re||t[91]!==b?(U=(0,$.jsxs)(f,{children:[b,re]}),t[89]=f,t[90]=re,t[91]=b,t[92]=U):U=t[92];let W;return t[93]!==p||t[94]!==U||t[95]!==S||t[96]!==C?(W=(0,$.jsx)(p,{open:S,onOpenChange:C,children:U}),t[93]=p,t[94]=U,t[95]=S,t[96]=C,t[97]=W):W=t[97],W}function Yt(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 Xt(e){return(0,$.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-base/40 px-3 py-2 text-sm text-fg-muted`,children:e.text},`${e.field}:${e.text}`)}function Zt(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(Qt)}):(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 Qt(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)(Be,{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 $t(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)(be,{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(en)}):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 en(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 tn(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?F(t.agentScaleExact,{count:n.min}):F(t.agentScaleRange,{min:n.min,max:n.max}):null}function nn(e){let t=(0,Q.c)(81),{definition:n,language:r,labels:a,onPick:o,onDetail:s,onEdit:c}=e,u;t[0]!==n||t[1]!==r?(u=l(n,r),t[0]=n,t[1]=r,t[2]=u):u=t[2];let d=u,f;t[3]!==n||t[4]!==a?(f=tn(n,a),t[3]=n,t[4]=a,t[5]=f):f=t[5];let p=f,g=n.metadata.source===`user`,_;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(_=i(`group flex h-full flex-col rounded-xl bg-surface-panel p-4 text-left shadow-surface transition-colors`,`hover:bg-surface-hover`),t[6]=_):_=t[6];let v;t[7]!==n||t[8]!==s?(v=()=>s(n),t[7]=n,t[8]=s,t[9]=v):v=t[9];let y;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(y=i(`flex flex-1 flex-col text-left`,h.focusRingPanel),t[10]=y):y=t[10];let b=g?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`,x;t[11]===b?x=t[12]:(x=i(`rounded-full px-2 py-0.5 text-[10px] font-medium`,b),t[11]=b,t[12]=x);let S=g?a.badgeUser:a.badgeBuiltin,C;t[13]!==x||t[14]!==S?(C=(0,$.jsx)(`span`,{className:x,children:S}),t[13]=x,t[14]=S,t[15]=C):C=t[15];let w;t[16]!==n.inputSchema||t[17]!==a.inputSchemaBadge?(w=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)(be,{className:`size-2.5`,"aria-hidden":!0}),a.inputSchemaBadge]}):null,t[16]=n.inputSchema,t[17]=a.inputSchemaBadge,t[18]=w):w=t[18];let T;t[19]===n.metadata.tags?T=t[20]:(T=n.metadata.tags.slice(0,2).map(rn),t[19]=n.metadata.tags,t[20]=T);let E;t[21]!==w||t[22]!==T||t[23]!==C?(E=(0,$.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-1.5`,children:[C,w,T]}),t[21]=w,t[22]=T,t[23]=C,t[24]=E):E=t[24];let D;t[25]===n.title?D=t[26]:(D=(0,$.jsx)(`span`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:n.title}),t[25]=n.title,t[26]=D);let O;t[27]!==E||t[28]!==D?(O=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[E,D]}),t[27]=E,t[28]=D,t[29]=O):O=t[29];let k;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(k=(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)(j,{className:`size-3.5`,"aria-hidden":!0})}),t[30]=k):k=t[30];let A;t[31]===O?A=t[32]:(A=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[O,k]}),t[31]=O,t[32]=A);let M;t[33]===d.description?M=t[34]:(M=d.description?(0,$.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs leading-5 text-fg-muted`,children:d.description}):null,t[33]=d.description,t[34]=M);let N;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,$.jsx)(Re,{className:`size-3`,"aria-hidden":!0}),t[35]=N):N=t[35];let I;t[36]!==n.phases.length||t[37]!==a.phaseCount?(I=F(a.phaseCount,{count:n.phases.length}),t[36]=n.phases.length,t[37]=a.phaseCount,t[38]=I):I=t[38];let R;t[39]===I?R=t[40]:(R=(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[N,I]}),t[39]=I,t[40]=R);let z;t[41]===p?z=t[42]:(z=p?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,$.jsx)(ee,{className:`size-3`,"aria-hidden":!0}),p]}):null,t[41]=p,t[42]=z);let B;t[43]!==R||t[44]!==z?(B=(0,$.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-3 pt-3 text-[11px] text-fg-subtle`,children:[R,z]}),t[43]=R,t[44]=z,t[45]=B):B=t[45];let V;t[46]!==A||t[47]!==M||t[48]!==B||t[49]!==v?(V=(0,$.jsxs)(`button`,{type:`button`,onClick:v,className:y,children:[A,M,B]}),t[46]=A,t[47]=M,t[48]=B,t[49]=v,t[50]=V):V=t[50];let H;t[51]!==n||t[52]!==o?(H=()=>o(n),t[51]=n,t[52]=o,t[53]=H):H=t[53];let te;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(te=(0,$.jsx)(L,{className:`size-3.5`,"aria-hidden":!0}),t[54]=te):te=t[54];let ne;t[55]!==a.runWorkflow||t[56]!==H?(ne=(0,$.jsxs)(X,{type:`button`,variant:`primary`,className:`h-8 flex-1 rounded-lg text-xs`,onClick:H,children:[te,a.runWorkflow]}),t[55]=a.runWorkflow,t[56]=H,t[57]=ne):ne=t[57];let re;t[58]!==n||t[59]!==s?(re=()=>s(n),t[58]=n,t[59]=s,t[60]=re):re=t[60];let U;t[61]===Symbol.for(`react.memo_cache_sentinel`)?(U=(0,$.jsx)(j,{className:`size-3.5`,"aria-hidden":!0}),t[61]=U):U=t[61];let W;t[62]!==a.viewDetails||t[63]!==re?(W=(0,$.jsxs)(X,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg text-xs`,onClick:re,children:[U,a.viewDetails]}),t[62]=a.viewDetails,t[63]=re,t[64]=W):W=t[64];let G;t[65]!==n||t[66]!==c?(G=()=>c(n),t[65]=n,t[66]=c,t[67]=G):G=t[67];let K;t[68]===g?K=t[69]:(K=g?(0,$.jsx)(P,{className:`size-3.5`,"aria-hidden":!0}):(0,$.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),t[68]=g,t[69]=K);let q=g?a.editWorkflow:a.copyAndEditWorkflow,J;t[70]!==G||t[71]!==K||t[72]!==q?(J=(0,$.jsxs)(X,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg text-xs`,onClick:G,children:[K,q]}),t[70]=G,t[71]=K,t[72]=q,t[73]=J):J=t[73];let ie;t[74]!==ne||t[75]!==W||t[76]!==J?(ie=(0,$.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2 border-t border-edge-subtle pt-3`,children:[ne,W,J]}),t[74]=ne,t[75]=W,t[76]=J,t[77]=ie):ie=t[77];let ae;return t[78]!==V||t[79]!==ie?(ae=(0,$.jsxs)(`article`,{className:_,children:[V,ie]}),t[78]=V,t[79]=ie,t[80]=ae):ae=t[80],ae}function rn(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 an(e,t){return e===`uncategorized`?t.categories.uncategorized:t.categories[e]}function on(e){let t=(0,Q.c)(11),{definitions:n,language:r,onPick:o,onDetail:s,onEdit:c}=e,l=a(r).workflows,[u,d]=(0,Z.useState)(``),[f,p]=(0,Z.useState)(`all`),m;t[0]!==f||t[1]!==n||t[2]!==u?(m=Ee(n,u,f,`all`),t[0]=f,t[1]=n,t[2]=u,t[3]=m):m=t[3];let g=m,_;t[4]===g?_=t[5]:(_=A(g),t[4]=g,t[5]=_);let v=_,y;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsx)(Me,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[6]=y):y=t[6];let b;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(b=e=>d(e.target.value),t[7]=b):b=t[7];let x=l.searchPlaceholder,S;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(S=i(`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`,h.focusRingPanel),t[8]=S):S=t[8];let C=g.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:l.noDefinitions}),(0,$.jsx)(`p`,{className:`mt-1 max-w-sm text-xs leading-5 text-fg-subtle`,children:l.noDefinitionsHint})]}):f===`all`?(0,$.jsx)(`div`,{className:`flex flex-col gap-6 pb-1`,children:v.map(e=>(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:an(e.category,l)}),(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)(nn,{definition:e,language:r,labels:l,onPick:o,onDetail:s,onEdit:c},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:g.map(e=>(0,$.jsx)(nn,{definition:e,language:r,labels:l,onPick:o,onDetail:s,onEdit:c},e.id))}),w;return t[9]===C?w=t[10]:(w=(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:C}),t[9]=C,t[10]=w),(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:[y,(0,$.jsx)(`input`,{value:u,onChange:b,placeholder:x,className:S})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`group`,"aria-label":l.categoryFilterAria,children:J.map(e=>(0,$.jsx)(X,{type:`button`,variant:f===e?`secondary`:`ghost`,className:`h-8 rounded-full px-3 py-1.5 text-xs`,onClick:()=>p(e),children:l.categories[e]},e))})]}),w]})}function sn(e){let t=(0,Q.c)(32),{open:n,definitions:r,language:o,onClose:s,onPick:c,onDetail:l,onEdit:u}=e,d;t[0]===o?d=t[1]:(d=a(o),t[0]=o,t[1]=d);let f=d.workflows,p;t[2]===s?p=t[3]:(p=e=>!e&&s(),t[2]=s,t[3]=p);let m;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,$.jsx)(O,{className:`fixed inset-0 z-50 bg-scrim`}),t[4]=m):m=t[4];let g;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(g=i(`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`,h.focusRingPanel),t[5]=g):g=t[5];let _;t[6]===f.pickStartTitle?_=t[7]:(_=(0,$.jsx)(le,{className:`text-lg font-semibold text-fg`,children:f.pickStartTitle}),t[6]=f.pickStartTitle,t[7]=_);let v;t[8]===f.pickStartHint?v=t[9]:(v=(0,$.jsx)(x,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:f.pickStartHint}),t[8]=f.pickStartHint,t[9]=v);let y;t[10]!==_||t[11]!==v?(y=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[_,v]}),t[10]=_,t[11]=v,t[12]=y):y=t[12];let b;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,$.jsx)(N,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0}),t[13]=b):b=t[13];let S;t[14]===f.pickStartClose?S=t[15]:(S=(0,$.jsx)(W,{asChild:!0,children:(0,$.jsx)(X,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":f.pickStartClose,children:b})}),t[14]=f.pickStartClose,t[15]=S);let C;t[16]!==y||t[17]!==S?(C=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge-subtle px-6 py-5`,children:[y,S]}),t[16]=y,t[17]=S,t[18]=C):C=t[18];let w;t[19]!==r||t[20]!==o||t[21]!==l||t[22]!==u||t[23]!==c?(w=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-6 py-5`,children:(0,$.jsx)(on,{definitions:r,language:o,onPick:c,onDetail:l,onEdit:u})}),t[19]=r,t[20]=o,t[21]=l,t[22]=u,t[23]=c,t[24]=w):w=t[24];let T;t[25]!==C||t[26]!==w?(T=(0,$.jsxs)(Fe,{children:[m,(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none`,children:(0,$.jsxs)(ie,{className:g,onOpenAutoFocus:cn,children:[C,w]})})]}),t[25]=C,t[26]=w,t[27]=T):T=t[27];let D;return t[28]!==n||t[29]!==T||t[30]!==p?(D=(0,$.jsx)(E,{open:n,onOpenChange:p,children:T}),t[28]=n,t[29]=T,t[30]=p,t[31]=D):D=t[31],D}function cn(e){return e.preventDefault()}function ln(e,t){return t.status[e]??e}function un(e,t){return t.phaseStatus[e]??e}function dn(e,t){let{run:n}=e;return n.status===`succeeded`?F(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:F(t.runSummaryActive,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}function fn(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 pn(e){return y(e)}function mn({view:e,comparison:t,loading:n,language:r,localeTag:o,activeTab:s,onTabChange:c,onCancel:l,onRetry:u,onReplay:m,onOpenRunId:h,ownerAgentId:g,onClose:v}){let y=a(r).workflows,b=a(r).automations.suggestions,x=_(r),S=f(),[C,T]=(0,Z.useState)(!0),[D,A]=(0,Z.useState)(!1),[j,M]=(0,Z.useState)(null),[P,L]=(0,Z.useState)(!1),[z,V]=(0,Z.useState)(null),[ee,ne]=(0,Z.useState)(null),[,re]=(0,Z.useState)(0),U=e?.run.status,W=U?q.has(U):!1;(0,Z.useEffect)(()=>{e?.run.id&&(T(W||U===`failed`||U===`timeout`),V(null))},[e?.run.id,W,U,e?.run.metrics.errorAgentCount]),(0,Z.useEffect)(()=>{if(!W)return;let e=window.setInterval(()=>re(e=>e+1),1e3);return()=>window.clearInterval(e)},[W]);let G=(0,Z.useMemo)(()=>e?te(e):null,[e]),K=(0,Z.useMemo)(()=>G?we(G):{phases:[],unphased:null},[G]),J=(0,Z.useMemo)(()=>j==null||!G?null:G.agents.find(e=>e.id===j)??null,[j,G]);(0,Z.useEffect)(()=>{G?.runId&&M((G.agents.find(e=>e.status===`error`||e.status===`skipped`)??G.agents.find(e=>e.status===`running`)??null)?.id??null)},[G?.runId]);let oe=(0,Z.useCallback)(e=>{M(e.id)},[]),se=(0,Z.useMemo)(()=>e?I(e):[],[e]),ce=e?R(e.run.result):void 0,ue=ce?An(ce):null,fe=ce?H(ce):``,pe=!!ce,me=(0,Z.useCallback)(async()=>{pe&&await Ke(fe)&&(L(!0),window.setTimeout(()=>L(!1),1500))},[pe,fe]),he=(0,Z.useCallback)(()=>{if(!pe||!e)return;let t=new Blob([fe],{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)},[pe,fe,e]),ge=(0,Z.useCallback)(()=>{if(!e)return;let t=pn(e);t&&S(p(t))},[S,e]),ve=(0,Z.useCallback)(async t=>{if(e){V(null),ne(t.id);try{On(await Y(e.run.id,t.id,{ownerAgentId:g}),t.name||t.id)}catch(e){V(e instanceof Error?e.message:String(e))}finally{ne(null)}}},[g,e]),be=(0,Z.useCallback)(t=>{if(!e||!t.prompt)return;let n=pn(e);if(!n){Ke(t.prompt);return}S(p(n,t.prompt))},[S,e]),xe=(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);M(Number.isFinite(i)?i:r+1)},[e]),Se=e?pn(e):null,Ce=U===`failed`;if(n)return(0,$.jsx)(E,{open:!0,onOpenChange:e=>!e&&v(),children:(0,$.jsxs)(Fe,{children:[(0,$.jsx)(O,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(ie,{className:`fixed left-1/2 top-1/2 z-66 flex 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)(le,{className:`text-base font-semibold tracking-tight text-fg`,children:y.runSummaryTitle}),(0,$.jsx)(X,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":y.pickStartClose,onClick:v,children:(0,$.jsx)(N,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsx)(`div`,{className:`p-5 text-sm text-fg-muted`,children:y.loading})]})]})});if(!e||!G)return null;let{run:Ee}=e,De=e.controls.canCancel&&W,Oe=W&&Ee.startedAtMs!=null?d(Date.now()-Ee.startedAtMs):d(Ee.metrics.durationMs??void 0),ke=dn(e,y),Ae=fn(e,y),je=e.controls.canRetry&&e.agents.some(e=>(e.status===`error`||e.status===`skipped`)&&e.prompt?.trim()),Me=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())),Ne=Ee.goal?.trim()||Ee.title,Pe=se.length>0||!!Ae,Ie=!!Se||De,Le=e.controls.canRetry||je||Me,Re=pe,ze=Ie||Le||Re,Be=s===`diagnostics`||s===`debug`?`process`:s;return(0,$.jsx)($.Fragment,{children:(0,$.jsx)(E,{open:!0,onOpenChange:e=>!e&&v(),children:(0,$.jsxs)(Fe,{children:[(0,$.jsx)(O,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(ie,{className:`fixed left-1/2 top-1/2 z-66 flex 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)(le,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:Ne}),(0,$.jsx)(X,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":y.pickStartClose,onClick:v,children:(0,$.jsx)(N,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsxs)(`section`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,$.jsxs)(`header`,{className:`rounded-2xl border border-edge-subtle bg-surface-base/60 p-4`,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 leading-7 text-fg`,children:Ne}),(0,$.jsx)(`span`,{className:i(`rounded-full px-2 py-0.5 text-xs font-medium`,k(Ee.status)),children:ln(Ee.status,y)})]}),(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[Ee.title,` · `,Ee.definitionId]}),(0,$.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:ke}),Ae?(0,$.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-fg-subtle`,children:Ae}):null]})}),(0,$.jsxs)(`dl`,{className:`mt-4 grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,$.jsx)(Fn,{label:y.metrics.startedAt,value:Te(Ee.startedAtMs??Ee.createdAtMs,o)}),(0,$.jsx)(Fn,{label:y.metrics.duration,value:Oe}),(0,$.jsx)(Fn,{label:y.metrics.agents,value:F(y.agentProgress,{done:Ee.metrics.doneAgentCount,total:Ee.metrics.agentCount})}),(0,$.jsx)(Fn,{label:y.metrics.artifacts,value:String(Ee.metrics.artifactCount)})]})]}),(0,$.jsx)(de,{eventType:`workflow.run.completed`,source:`workflows`,payloadKey:`runId`,payloadValue:Ee.id,className:`mt-4`}),Ce?(0,$.jsx)(Ze,{title:b.workflowFailedTitle,description:b.workflowFailedDescription,prompt:F(b.workflowFailedPrompt,{runId:Ee.id,definitionId:Ee.definitionId}),coverage:{eventType:`workflow.run.completed`,source:`workflows`,eventPayload:{runId:Ee.id,status:`failed`}},className:`mt-4`}):null,(0,$.jsx)(gn,{activeTab:Be,onChange:c,labels:y,artifactCount:ue?.artifacts.length??e.artifacts.length}),Be===`result`?(0,$.jsxs)(`section`,{className:`mt-5 space-y-4`,children:[pe?(0,$.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-base/50 p-3`,children:(0,$.jsx)(ye,{result:ce,labels:x.result})}):(0,$.jsx)(`div`,{className:`rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:y.noResult}),ze?(0,$.jsxs)(`section`,{className:`rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:y.nextActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-3`,children:[Ie?(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-medium text-fg-subtle`,children:y.primaryActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[Se?(0,$.jsxs)(X,{variant:`primary`,onClick:ge,children:[(0,$.jsx)(ae,{className:`size-4`,"aria-hidden":!0}),y.continueInChat]}):null,De?(0,$.jsxs)(X,{variant:`secondary`,onClick:l,className:`text-red-600 dark:text-red-300`,children:[(0,$.jsx)(B,{className:`size-4`,"aria-hidden":!0}),y.cancel]}):null]})]}):null,Le?(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-medium text-fg-subtle`,children:y.recoveryActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[je?(0,$.jsxs)(X,{variant:`secondary`,onClick:()=>m(`failed_agents`),children:[(0,$.jsx)(Ue,{className:`size-4`,"aria-hidden":!0}),y.replayFailedAgents]}):null,Me?(0,$.jsxs)(X,{variant:`secondary`,onClick:()=>m(`failed_phases`),children:[(0,$.jsx)(Ue,{className:`size-4`,"aria-hidden":!0}),y.replayFailedPhases]}):null,e.controls.canRetry?(0,$.jsxs)(X,{variant:`secondary`,onClick:u,children:[(0,$.jsx)(Ue,{className:`size-4`,"aria-hidden":!0}),y.rerun]}):null]})]}):null,Re?(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-medium text-fg-subtle`,children:y.resultActionsTitle}),(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,$.jsxs)(X,{variant:`secondary`,onClick:me,children:[P?(0,$.jsx)(_e,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(Je,{className:`size-4`,"aria-hidden":!0}),P?y.copied:y.copyResult]}),(0,$.jsxs)(X,{variant:`secondary`,onClick:he,children:[(0,$.jsx)(w,{className:`size-4`,"aria-hidden":!0}),y.exportResult]})]})]}):null]})]}):null,Pe?(0,$.jsx)(hn,{diagnostics:se,labels:y,hint:Ae,onOpenAgent:xe}):null,(0,$.jsx)(Cn,{view:e,comparison:t,labels:y,onOpenRunId:h}),(0,$.jsx)(wn,{view:e,labels:y})]}):null,Be===`process`?(0,$.jsxs)($.Fragment,{children:[Pe?(0,$.jsx)(hn,{diagnostics:se,labels:y,hint:Ae,onOpenAgent:xe}):null,(0,$.jsx)(_n,{snapshot:G,rollup:K,view:e,labels:y,cardLabels:x,isActive:W,processExpanded:C,logsExpanded:D,selectedAgentId:j,selectedAgent:J,durationText:Oe,onToggleProcess:()=>T(e=>!e),onToggleLogs:()=>A(e=>!e),onSelectAgent:oe})]}):null,Be===`artifacts`?(0,$.jsx)(Dn,{outcome:ue,labels:y,downloadingArtifactId:ee,downloadError:z,onCopyText:e=>void Ke(e),onDownloadArtifact:e=>void ve(e),onStartFollowUp:be}):null]})]})]})})})}function hn(e){let t=(0,Q.c)(13),{diagnostics:n,labels:r,hint:i,onOpenAgent:a}=e;if(n.length===0&&!i)return null;let o;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,$.jsx)(`div`,{className:`rounded-xl bg-rose-500/10 p-2 text-rose-700 dark:text-rose-300`,children:(0,$.jsx)(K,{className:`size-4`,"aria-hidden":!0})}),t[0]=o):o=t[0];let s;t[1]===r.reliabilityTitle?s=t[2]:(s=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.reliabilityTitle}),t[1]=r.reliabilityTitle,t[2]=s);let c=i??r.reliabilityHint,l;t[3]===c?l=t[4]:(l=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:c}),t[3]=c,t[4]=l);let u;t[5]!==n||t[6]!==r||t[7]!==a?(u=n.length>0?(0,$.jsx)(`ul`,{className:`mt-3 space-y-2`,children:n.slice(0,5).map(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:Sn(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)(X,{type:`button`,variant:`ghost`,className:`h-8 shrink-0 px-2 text-xs`,onClick:()=>a(e.agentId),children:r.openAgentDetails})]})},e.key))}):null,t[5]=n,t[6]=r,t[7]=a,t[8]=u):u=t[8];let d;return t[9]!==s||t[10]!==l||t[11]!==u?(d=(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:[o,(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[s,l,u]})]})}),t[9]=s,t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function gn(e){let t=(0,Q.c)(16),{activeTab:n,onChange:r,labels:i,artifactCount:a}=e,o;t[0]===i.resultTitle?o=t[1]:(o={id:`result`,label:i.resultTitle},t[0]=i.resultTitle,t[1]=o);let s;t[2]===i.process?s=t[3]:(s={id:`process`,label:i.process},t[2]=i.process,t[3]=s);let c=a||void 0,l;t[4]!==i.outcomeArtifacts||t[5]!==c?(l={id:`artifacts`,label:i.outcomeArtifacts,count:c},t[4]=i.outcomeArtifacts,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==o||t[8]!==s||t[9]!==l?(u=[o,s,l],t[7]=o,t[8]=s,t[9]=l,t[10]=u):u=t[10];let d=u,f;return t[11]!==n||t[12]!==i.taskActionsAria||t[13]!==r||t[14]!==d?(f=(0,$.jsx)(`div`,{className:`mt-5 flex overflow-x-auto border-b border-edge pb-2`,children:(0,$.jsx)(Ye,{items:d,activeTab:n,onChange:r,ariaLabel:i.taskActionsAria})}),t[11]=n,t[12]=i.taskActionsAria,t[13]=r,t[14]=d,t[15]=f):f=t[15],f}function _n(e){let t=(0,Q.c)(37),{snapshot:n,rollup:r,view:a,labels:o,cardLabels:s,isActive:c,processExpanded:l,logsExpanded:u,selectedAgentId:d,selectedAgent:f,durationText:p,onToggleProcess:m,onToggleLogs:h,onSelectAgent:g}=e,_;t[0]===o.process?_=t[1]:(_=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:o.process}),t[0]=o.process,t[1]=_);let v;t[2]!==o.agentProgress||t[3]!==a.run.metrics.agentCount||t[4]!==a.run.metrics.doneAgentCount?(v=F(o.agentProgress,{done:a.run.metrics.doneAgentCount,total:a.run.metrics.agentCount}),t[2]=o.agentProgress,t[3]=a.run.metrics.agentCount,t[4]=a.run.metrics.doneAgentCount,t[5]=v):v=t[5];let y;t[6]!==p||t[7]!==v?(y=(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[v,` · `,p]}),t[6]=p,t[7]=v,t[8]=y):y=t[8];let b;t[9]!==_||t[10]!==y?(b=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[_,y]}),t[9]=_,t[10]=y,t[11]=b):b=t[11];let x=l?`rotate-180`:null,S;t[12]===x?S=t[13]:(S=i(`size-4 shrink-0 text-fg-subtle transition-transform`,x),t[12]=x,t[13]=S);let C;t[14]===S?C=t[15]:(C=(0,$.jsx)(ze,{className:S,"aria-hidden":!0}),t[14]=S,t[15]=C);let w;t[16]!==m||t[17]!==l||t[18]!==b||t[19]!==C?(w=(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-4 px-4 py-3 text-left`,onClick:m,"aria-expanded":l,children:[b,C]}),t[16]=m,t[17]=l,t[18]=b,t[19]=C,t[20]=w):w=t[20];let T;t[21]!==s||t[22]!==c||t[23]!==o||t[24]!==u||t[25]!==g||t[26]!==h||t[27]!==l||t[28]!==r||t[29]!==f||t[30]!==d||t[31]!==n||t[32]!==a.phases?(T=l?(0,$.jsx)(`div`,{className:`border-t border-edge px-4 pb-4 pt-4`,children:(0,$.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_minmax(20rem,26rem)]`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[c?(0,$.jsx)(Ae,{snapshot:n,labels:s,logsExpanded:u,onToggleLogs:h,selectedAgentId:d,onSelectAgent:g}):(0,$.jsx)(Ve,{rollup:r,currentPhase:n.currentPhase,labels:s.phase,recentLogs:n.logs,recentLogsHeading:s.recentLogsHeading,showAllLogsLabel:s.showAllLogs,logsExpanded:u,onToggleLogs:h,selectedAgentId:d,onSelectAgent:g}),a.phases.length>0?(0,$.jsx)(`div`,{className:`mt-4 grid gap-2 sm:grid-cols-2`,children:a.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:un(e.status,o)})]})},e.id))}):null]}),(0,$.jsx)(vn,{agent:f,snapshot:n,labels:o,cardLabels:s})]})}):null,t[21]=s,t[22]=c,t[23]=o,t[24]=u,t[25]=g,t[26]=h,t[27]=l,t[28]=r,t[29]=f,t[30]=d,t[31]=n,t[32]=a.phases,t[33]=T):T=t[33];let E;return t[34]!==w||t[35]!==T?(E=(0,$.jsxs)(`div`,{className:`mt-5 rounded-2xl border border-edge bg-surface-base/35`,children:[w,T]}),t[34]=w,t[35]=T,t[36]=E):E=t[36],E}function vn(e){let t=(0,Q.c)(68),{agent:n,snapshot:r,labels:a,cardLabels:o}=e,[s,c]=(0,Z.useState)(!1),l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>{c(!1)},t[0]=l):l=t[0];let u=n?.id,d;if(t[1]===u?d=t[2]:(d=[u],t[1]=u,t[2]=d),(0,Z.useEffect)(l,d),!n){let e;return t[3]===a.noSubagents?e=t[4]:(e=(0,$.jsx)(`aside`,{className:`min-w-0 rounded-2xl border border-dashed border-edge bg-surface-panel/45 p-4 text-sm text-fg-muted`,children:a.noSubagents}),t[3]=a.noSubagents,t[4]=e),e}let f;t[5]===n?f=t[6]:(f=Le(n),t[5]=n,t[6]=f);let p=f,m=n.error||n.resultPreview||n.currentStep||o.checkDetail.runningPlaceholder,h;t[7]===n.label?h=t[8]:(h=(0,$.jsx)(`h3`,{className:`truncate text-sm font-semibold text-fg`,children:n.label}),t[7]=n.label,t[8]=h);let g=n.phase||a.process,_;t[9]===g?_=t[10]:(_=(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:g}),t[9]=g,t[10]=_);let v;t[11]!==h||t[12]!==_?(v=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[h,_]}),t[11]=h,t[12]=_,t[13]=v):v=t[13];let y;t[14]===n.status?y=t[15]:(y=i(`rounded-full px-2 py-0.5 text-xs font-medium`,Pn(n.status)),t[14]=n.status,t[15]=y);let b=a.agentStatus[n.status]??n.status,x;t[16]!==b||t[17]!==y?(x=(0,$.jsx)(`span`,{className:y,children:b}),t[16]=b,t[17]=y,t[18]=x):x=t[18];let S;t[19]!==x||t[20]!==v?(S=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[v,x]}),t[19]=x,t[20]=v,t[21]=S):S=t[21];let C=n.invocation?.modelRef??n.invocation?.resolvedModelRef??`—`,w;t[22]!==a.agentInvocationModel||t[23]!==C?(w=(0,$.jsx)(In,{label:a.agentInvocationModel,value:C}),t[22]=a.agentInvocationModel,t[23]=C,t[24]=w):w=t[24];let T=p||`—`,E;t[25]!==a.metrics.duration||t[26]!==T?(E=(0,$.jsx)(In,{label:a.metrics.duration,value:T}),t[25]=a.metrics.duration,t[26]=T,t[27]=E):E=t[27];let D;t[28]!==w||t[29]!==E?(D=(0,$.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-xs sm:grid-cols-2 xl:grid-cols-1`,children:[w,E]}),t[28]=w,t[29]=E,t[30]=D):D=t[30];let O;t[31]===a.agentOutputHeading?O=t[32]:(O=(0,$.jsx)(`h4`,{className:`text-xs font-semibold text-fg`,children:a.agentOutputHeading}),t[31]=a.agentOutputHeading,t[32]=O);let k=n.error?`font-mono text-rose-600 dark:text-rose-400`:`text-fg-muted`,A;t[33]===k?A=t[34]:(A=i(`mt-2 max-h-72 overflow-auto whitespace-pre-wrap wrap-break-word text-sm leading-6`,k),t[33]=k,t[34]=A);let j;t[35]!==m||t[36]!==A?(j=(0,$.jsx)(`div`,{className:A,children:m}),t[35]=m,t[36]=A,t[37]=j):j=t[37];let M;t[38]!==O||t[39]!==j?(M=(0,$.jsxs)(`section`,{className:`mt-4 rounded-xl border border-edge-subtle bg-surface-base/60 p-3`,children:[O,j]}),t[38]=O,t[39]=j,t[40]=M):M=t[40];let N;t[41]!==n.steps||t[42]!==o?(N=n.steps?.length?(0,$.jsxs)(`section`,{className:`mt-3 rounded-xl border border-edge-subtle bg-surface-base/40 p-3`,children:[(0,$.jsx)(`h4`,{className:`text-xs font-semibold text-fg`,children:o.checkDetail.stepsHeading}),(0,$.jsx)(`div`,{className:`mt-2 space-y-2`,children:n.steps.slice(0,4).map(xn)})]}):null,t[41]=n.steps,t[42]=o,t[43]=N):N=t[43];let P;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>c(bn),t[44]=P):P=t[44];let F=a.debugDetailsTitle,I=s&&`rotate-180`,L;t[45]===I?L=t[46]:(L=i(`size-4 shrink-0 text-fg-subtle transition-transform`,I),t[45]=I,t[46]=L);let R;t[47]===L?R=t[48]:(R=(0,$.jsx)(ze,{className:L,"aria-hidden":!0}),t[47]=L,t[48]=R);let z;t[49]!==s||t[50]!==a.debugDetailsTitle||t[51]!==R?(z=(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-3 px-3 py-2 text-left text-xs font-semibold text-fg`,onClick:P,"aria-expanded":s,children:[F,R]}),t[49]=s,t[50]=a.debugDetailsTitle,t[51]=R,t[52]=z):z=t[52];let B;t[53]!==s||t[54]!==n||t[55]!==o||t[56]!==a||t[57]!==r?(B=s?(0,$.jsxs)(`div`,{className:`space-y-3 border-t border-edge-subtle p-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:a.agentInputHeading}),(0,$.jsx)(`pre`,{className:`mt-1 max-h-44 overflow-auto whitespace-pre-wrap wrap-break-word rounded-lg bg-surface-panel p-2 font-mono text-xs leading-5 text-fg-muted`,children:n.prompt||`—`})]}),(0,$.jsx)(jn,{agent:n,labels:a}),r.logs.length>0?(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:o.recentLogsHeading}),(0,$.jsx)(`div`,{className:`mt-1 max-h-36 space-y-0.5 overflow-auto rounded-lg bg-surface-panel p-2 font-mono text-xs text-fg-subtle`,children:r.logs.map(yn)})]}):null]}):null,t[53]=s,t[54]=n,t[55]=o,t[56]=a,t[57]=r,t[58]=B):B=t[58];let V;t[59]!==z||t[60]!==B?(V=(0,$.jsxs)(`section`,{className:`mt-3 rounded-xl border border-edge-subtle bg-surface-base/40`,children:[z,B]}),t[59]=z,t[60]=B,t[61]=V):V=t[61];let H;return t[62]!==S||t[63]!==D||t[64]!==M||t[65]!==N||t[66]!==V?(H=(0,$.jsxs)(`aside`,{className:`min-w-0 rounded-2xl border border-edge bg-surface-panel p-4`,children:[S,D,M,N,V]}),t[62]=S,t[63]=D,t[64]=M,t[65]=N,t[66]=V,t[67]=H):H=t[67],H}function yn(e){return(0,$.jsx)(`div`,{className:`wrap-break-word`,children:e},e)}function bn(e){return!e}function xn(e){return(0,$.jsxs)(`div`,{className:`rounded-lg bg-surface-panel px-2.5 py-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`min-w-0 truncate text-xs font-medium text-fg`,children:e.label}),(0,$.jsx)(`span`,{className:`shrink-0 text-[10px] text-fg-subtle`,children:e.status})]}),e.detail||e.resultPreview||e.error?(0,$.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs leading-5 text-fg-muted`,children:e.error||e.resultPreview||e.detail}):null]},e.id)}function Sn(e,t){return e.kind===`run_error`?e.code?F(t.diagnosticsRunErrorWithCode,{code:e.code}):t.diagnosticsRunError:e.kind===`agent_error`?F(t.diagnosticsAgentError,{agent:e.agentLabel??String(e.agentId??`—`)}):e.kind===`step_error`?F(t.diagnosticsStepError,{agent:e.agentLabel??String(e.agentId??`—`),step:e.stepLabel??e.stepId??`—`}):F(t.diagnosticsAgentSkipped,{agent:e.agentLabel??String(e.agentId??`—`)})}function Cn(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=F(i.replayLineageSummary,{scope:En(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)(In,{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)(In,{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)(Fn,{label:i.replayFixedAgents,value:String(r.fixedAgentIds.length)}),(0,$.jsx)(Fn,{label:i.replayStillFailingAgents,value:String(r.stillFailingAgentIds.length)}),(0,$.jsx)(Fn,{label:i.replayDurationDelta,value:Tn(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)(X,{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 wn(e){let t=(0,Q.c)(36),{view:n,labels:r}=e,i;t[0]===n.run.metadata?.contextRefs?i=t[1]:(i=n.run.metadata?.contextRefs??[],t[0]=n.run.metadata?.contextRefs,t[1]=i);let a=i,o;t[2]===n.run.metadata?.writebackPolicy?.targets?o=t[3]:(o=n.run.metadata?.writebackPolicy?.targets??[],t[2]=n.run.metadata?.writebackPolicy?.targets,t[3]=o);let s=o;if(!a.length&&!s.length)return null;let c;t[4]===r.contextRefsTitle?c=t[5]:(c=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.contextRefsTitle}),t[4]=r.contextRefsTitle,t[5]=c);let l;t[6]===r.contextRefsHint?l=t[7]:(l=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:r.contextRefsHint}),t[6]=r.contextRefsHint,t[7]=l);let u;t[8]!==r.contextRefKinds||t[9]!==r.noContextRefs||t[10]!==a?(u=a.length?a.map(e=>(0,$.jsx)(In,{label:r.contextRefKinds[e.kind]??e.kind,value:[e.title||e.id,e.role].filter(Boolean).join(` · `)},`${e.kind}:${e.id}:${e.role??``}`)):(0,$.jsx)(`p`,{className:`text-xs text-fg-muted`,children:r.noContextRefs}),t[8]=r.contextRefKinds,t[9]=r.noContextRefs,t[10]=a,t[11]=u):u=t[11];let d;t[12]===u?d=t[13]:(d=(0,$.jsx)(`div`,{className:`mt-3 grid gap-2`,children:u}),t[12]=u,t[13]=d);let f;t[14]!==c||t[15]!==l||t[16]!==d?(f=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[c,l,d]}),t[14]=c,t[15]=l,t[16]=d,t[17]=f):f=t[17];let p;t[18]===r.writebackTitle?p=t[19]:(p=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.writebackTitle}),t[18]=r.writebackTitle,t[19]=p);let m;t[20]===r.writebackHint?m=t[21]:(m=(0,$.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-subtle`,children:r.writebackHint}),t[20]=r.writebackHint,t[21]=m);let h;t[22]!==r.noWritebackTargets||t[23]!==r.writebackModes||t[24]!==r.writebackTargetKinds||t[25]!==s?(h=s.length?s.map(e=>(0,$.jsx)(In,{label:r.writebackTargetKinds[e.kind]??e.kind,value:`${e.id} · ${r.writebackModes[e.mode]??e.mode}`},`${e.kind}:${e.id}:${e.mode}`)):(0,$.jsx)(`p`,{className:`text-xs text-fg-muted`,children:r.noWritebackTargets}),t[22]=r.noWritebackTargets,t[23]=r.writebackModes,t[24]=r.writebackTargetKinds,t[25]=s,t[26]=h):h=t[26];let g;t[27]===h?g=t[28]:(g=(0,$.jsx)(`div`,{className:`mt-3 grid gap-2`,children:h}),t[27]=h,t[28]=g);let _;t[29]!==g||t[30]!==p||t[31]!==m?(_=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[p,m,g]}),t[29]=g,t[30]=p,t[31]=m,t[32]=_):_=t[32];let v;return t[33]!==_||t[34]!==f?(v=(0,$.jsx)(`section`,{className:`mt-5 rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:(0,$.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-2`,children:[f,_]})}),t[33]=_,t[34]=f,t[35]=v):v=t[35],v}function Tn(e){return e==null?`—`:`${e>0?`+`:e<0?`-`:``}${d(Math.abs(e))}`}function En(e,t){return e===`failed_phases`?t.replayScopeFailedPhases:t.replayScopeFailedAgents}function Dn(e){let t=(0,Q.c)(20),{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){let e;return t[0]===r.noArtifacts?e=t[1]:(e=(0,$.jsx)(`section`,{className:`mt-5 rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:r.noArtifacts}),t[0]=r.noArtifacts,t[1]=e),e}let l;t[2]!==a||t[3]!==i||t[4]!==r||t[5]!==s||t[6]!==n.artifacts?(l=n.artifacts.length>0?(0,$.jsxs)(kn,{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)(w,{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[2]=a,t[3]=i,t[4]=r,t[5]=s,t[6]=n.artifacts,t[7]=l):l=t[7];let u;t[8]!==r||t[9]!==o||t[10]!==c||t[11]!==n.followUps?(u=n.followUps.length>0?(0,$.jsx)(kn,{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[8]=r,t[9]=o,t[10]=c,t[11]=n.followUps,t[12]=u):u=t[12];let d;t[13]!==r||t[14]!==n.structuredOutput?(d=n.structuredOutput===void 0?null:(0,$.jsx)(kn,{title:r.outcomeStructuredOutput,className:`lg:col-span-3`,children:(0,$.jsx)(`pre`,{className:`max-h-[28rem] min-w-0 overflow-auto whitespace-pre-wrap break-words rounded-lg bg-surface-base p-3 font-mono text-xs leading-5 text-fg-muted`,children:H(n.structuredOutput)})}),t[13]=r,t[14]=n.structuredOutput,t[15]=d):d=t[15];let f;return t[16]!==l||t[17]!==u||t[18]!==d?(f=(0,$.jsxs)(`div`,{className:`mt-5 grid gap-3 lg:grid-cols-3`,children:[l,u,d]}),t[16]=l,t[17]=u,t[18]=d,t[19]=f):f=t[19],f}function On(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.click(),URL.revokeObjectURL(n)}function kn(e){let t=(0,Q.c)(10),{title:n,children:r,className:a}=e,o;t[0]===a?o=t[1]:(o=i(`min-w-0 rounded-xl border border-edge-subtle bg-surface-base/35 p-3`,a),t[0]=a,t[1]=o);let s;t[2]===n?s=t[3]:(s=(0,$.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:n}),t[2]=n,t[3]=s);let c;t[4]===r?c=t[5]:(c=(0,$.jsx)(`div`,{className:`mt-2`,children:r}),t[4]=r,t[5]=c);let l;return t[6]!==o||t[7]!==s||t[8]!==c?(l=(0,$.jsxs)(`section`,{className:o,children:[s,c]}),t[6]=o,t[7]=s,t[8]=c,t[9]=l):l=t[9],l}function An(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 jn(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(Nn),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(Mn)}),t[19]=m,t[20]=h),h}function Mn(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 Nn(e){return!!e.value}function Pn(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 Fn(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 In(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}function Ln(e){let t=(0,Q.c)(30),{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]?F(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),f;t[5]!==i.statsTotalRuns||t[6]!==u?(f=(0,$.jsx)(Rn,{label:l,value:u}),t[5]=i.statsTotalRuns,t[6]=u,t[7]=f):f=t[7];let p=i.statsActiveRuns,m=String(n.activeRuns),h;t[8]!==i.statsActiveRuns||t[9]!==m?(h=(0,$.jsx)(Rn,{label:p,value:m}),t[8]=i.statsActiveRuns,t[9]=m,t[10]=h):h=t[10];let g;t[11]!==n.succeededRuns||t[12]!==n.totalRuns?(g=n.totalRuns>0?`${Math.round(n.succeededRuns/n.totalRuns*100)}%`:`—`,t[11]=n.succeededRuns,t[12]=n.totalRuns,t[13]=g):g=t[13];let _;t[14]!==i.statsSuccessRate||t[15]!==g?(_=(0,$.jsx)(Rn,{label:i.statsSuccessRate,value:g}),t[14]=i.statsSuccessRate,t[15]=g,t[16]=_):_=t[16];let v;t[17]===n.averageDurationMs?v=t[18]:(v=n.averageDurationMs==null?`—`:d(n.averageDurationMs),t[17]=n.averageDurationMs,t[18]=v);let y;t[19]!==i.statsAvgDuration||t[20]!==v?(y=(0,$.jsx)(Rn,{label:i.statsAvgDuration,value:v}),t[19]=i.statsAvgDuration,t[20]=v,t[21]=y):y=t[21];let b;t[22]===c?b=t[23]:(b=c?(0,$.jsx)(`span`,{className:`min-w-0 truncate text-xs text-fg-muted`,children:c}):null,t[22]=c,t[23]=b);let x;return t[24]!==_||t[25]!==y||t[26]!==b||t[27]!==f||t[28]!==h?(x=(0,$.jsxs)(`section`,{className:`flex min-w-0 flex-wrap items-center gap-2 rounded-lg bg-surface-panel/70 px-3 py-2 shadow-surface`,children:[f,h,_,y,b]}),t[24]=_,t[25]=y,t[26]=b,t[27]=f,t[28]=h,t[29]=x):x=t[29],x}function Rn(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`span`,{children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`span`,{className:`font-semibold tabular-nums text-fg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full bg-surface-muted px-2.5 py-1 text-xs text-fg-muted`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function zn(e){let t=(0,Q.c)(20),{vm:n}=e,{labels:r,loading:i,refreshAll:a,setManageOpen:o,setPickStartOpen:s}=n,c;t[0]===s?c=t[1]:(c=()=>s(!0),t[0]=s,t[1]=c);let l;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(L,{className:`size-4`,"aria-hidden":!0}),t[2]=l):l=t[2];let u;t[3]!==r.boardStart||t[4]!==c?(u=(0,$.jsxs)(X,{variant:`primary`,className:`h-9 rounded-lg`,onClick:c,children:[l,r.boardStart]}),t[3]=r.boardStart,t[4]=c,t[5]=u):u=t[5];let d;t[6]===o?d=t[7]:(d=()=>o(!0),t[6]=o,t[7]=d);let f;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(v,{className:`size-4`,"aria-hidden":!0}),t[8]=f):f=t[8];let p;t[9]!==r.addWorkflow||t[10]!==d?(p=(0,$.jsxs)(X,{variant:`secondary`,className:`h-9 rounded-lg`,onClick:d,children:[f,r.addWorkflow]}),t[9]=r.addWorkflow,t[10]=d,t[11]=p):p=t[11];let m;t[12]!==r.refresh||t[13]!==i||t[14]!==a?(m=(0,$.jsx)(ne,{className:`size-9 shrink-0 p-0`,loading:i,label:r.refresh,onClick:a}),t[12]=r.refresh,t[13]=i,t[14]=a,t[15]=m):m=t[15];let h;return t[16]!==u||t[17]!==p||t[18]!==m?(h=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[u,p,m]}),t[16]=u,t[17]=p,t[18]=m,t[19]=h):h=t[19],h}var Bn=[`attention`,`running`,`queued`,`recent`],Vn=[`pr_review`,`implementation_plan`,`research`,`debug_incident`,`meeting_prep`,`content_draft`];function Hn(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`?`attention`:e.status===`running`?`running`:e.status===`queued`?`queued`:e.status===`succeeded`?`recent`:null}function Un(e){return e.completedAtMs??e.startedAtMs??e.createdAtMs}function Wn(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):n.sort((e,t)=>Un(t)-Un(e))}function Gn(e){let t=new Map(Bn.map(e=>[e,[]]));for(let n of e){let e=Hn(n);e&&t.get(e)?.push(n)}for(let e of Bn)t.set(e,Wn(e,t.get(e)??[]));return t}function Kn(){let e=(0,Q.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(he,{className:`size-4 rounded-full`}),(0,$.jsx)(he,{className:`h-4 w-32`})]}),(0,$.jsx)(he,{className:`mt-3 h-4 w-full`}),(0,$.jsx)(he,{className:`mt-2 h-4 w-2/3`})]}),(0,$.jsx)(he,{className:`h-6 w-20 rounded-full`})]}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,$.jsxs)(`article`,{className:`rounded-lg bg-surface-panel p-3 shadow-surface`,"aria-hidden":`true`,children:[t,(0,$.jsxs)(`div`,{className:`mt-4 flex gap-2`,children:[(0,$.jsx)(he,{className:`h-8 w-20 rounded-md`}),(0,$.jsx)(he,{className:`h-8 w-24 rounded-md`})]})]}),e[1]=n):n=e[1],n}function qn(e){let t=new Map(e.map(e=>[e.id,e])),n=[];for(let e of Vn){let r=t.get(e);r&&n.push(r)}for(let t of e){if(n.length>=6)break;n.some(e=>e.id===t.id)||n.push(t)}return n}function Jn(e,t){let n=U[e.name]??[];return n.length>0?n.slice(0,2).map(e=>Xe(t.args,e.labelKey)).join(` · `):e.inputSchema?.properties&&Object.keys(e.inputSchema.properties).length>0?t.templateInputsStructured:t.templateInputsGoalOnly}function Yn(e){let t=(0,Q.c)(41),{definitions:n,language:r,labels:a,onStart:o,onBrowseAll:s,onManageTemplates:c}=e,[u,d]=(0,Z.useState)(!0),f,p;if(t[0]!==n||t[1]!==u||t[2]!==a||t[3]!==r||t[4]!==s||t[5]!==c||t[6]!==o){p=Symbol.for(`react.early_return_sentinel`);bb0:{let e=qn(n);if(e.length===0){p=null;break bb0}let m;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(m=i(`flex min-w-0 flex-1 items-start gap-3 text-left`,h.focusRingPanel),t[9]=m):m=t[9];let g;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>d(Xn),t[10]=g):g=t[10];let _=u?`rotate-180`:null,v;t[11]===_?v=t[12]:(v=i(`mt-1 size-4 shrink-0 text-fg-subtle transition-transform`,_),t[11]=_,t[12]=v);let y;t[13]===v?y=t[14]:(y=(0,$.jsx)(ze,{className:v,"aria-hidden":!0}),t[13]=v,t[14]=y);let b;t[15]===a.launchRecommended?b=t[16]:(b=(0,$.jsx)(`span`,{className:`block text-xs font-medium text-accent-fg`,children:a.launchRecommended}),t[15]=a.launchRecommended,t[16]=b);let x;t[17]===a.launchTitle?x=t[18]:(x=(0,$.jsx)(`span`,{className:`mt-1 block text-base font-semibold text-fg`,children:a.launchTitle}),t[17]=a.launchTitle,t[18]=x);let S;t[19]===a.launchHint?S=t[20]:(S=(0,$.jsx)(`span`,{className:`mt-1 block max-w-3xl text-sm leading-6 text-fg-muted`,children:a.launchHint}),t[19]=a.launchHint,t[20]=S);let C;t[21]!==S||t[22]!==b||t[23]!==x?(C=(0,$.jsxs)(`span`,{className:`min-w-0`,children:[b,x,S]}),t[21]=S,t[22]=b,t[23]=x,t[24]=C):C=t[24];let w;t[25]!==u||t[26]!==C||t[27]!==y?(w=(0,$.jsxs)(`button`,{type:`button`,className:m,"aria-expanded":u,onClick:g,children:[y,C]}),t[25]=u,t[26]=C,t[27]=y,t[28]=w):w=t[28];let T;t[29]!==a.launchBrowseAll||t[30]!==s?(T=(0,$.jsx)(X,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg text-xs`,onClick:s,children:a.launchBrowseAll}),t[29]=a.launchBrowseAll,t[30]=s,t[31]=T):T=t[31];let E;t[32]!==a.launchManageTemplates||t[33]!==c?(E=(0,$.jsx)(X,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg text-xs`,onClick:c,children:a.launchManageTemplates}),t[32]=a.launchManageTemplates,t[33]=c,t[34]=E):E=t[34];let D;t[35]!==T||t[36]!==E?(D=(0,$.jsxs)(`div`,{className:`flex shrink-0 flex-wrap gap-2`,children:[T,E]}),t[35]=T,t[36]=E,t[37]=D):D=t[37];let O;t[38]!==w||t[39]!==D?(O=(0,$.jsxs)(`div`,{className:`flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between`,children:[w,D]}),t[38]=w,t[39]=D,t[40]=O):O=t[40],f=(0,$.jsxs)(`section`,{className:`rounded-lg border border-edge-subtle bg-surface-base px-4 py-4 shadow-surface`,children:[O,u?(0,$.jsx)(`div`,{className:`mt-4 grid gap-3 md:grid-cols-2 xl:grid-cols-3`,children:e.map(e=>{let t=l(e,r);return(0,$.jsxs)(`article`,{className:`min-w-0 rounded-lg border border-edge bg-surface-panel p-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h3`,{className:`line-clamp-1 text-sm font-semibold text-fg`,children:e.title}),(0,$.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs leading-5 text-fg-muted`,children:t.whenToUse||t.description})]}),(0,$.jsxs)(X,{type:`button`,variant:`primary`,className:`h-8 shrink-0 rounded-lg px-2.5 text-xs`,onClick:()=>o(e),children:[(0,$.jsx)(L,{className:`size-3.5`,"aria-hidden":!0}),a.runWorkflow]})]}),(0,$.jsxs)(`dl`,{className:`mt-3 grid gap-2 text-xs sm:grid-cols-2`,children:[(0,$.jsxs)(`div`,{className:`rounded-md bg-surface-muted/50 px-2.5 py-2`,children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg-subtle`,children:a.templateInputs}),(0,$.jsx)(`dd`,{className:`mt-0.5 line-clamp-1 text-fg-muted`,children:Jn(e,a)})]}),(0,$.jsxs)(`div`,{className:`rounded-md bg-surface-muted/50 px-2.5 py-2`,children:[(0,$.jsx)(`dt`,{className:`font-medium text-fg-subtle`,children:a.templateExpectedOutput}),(0,$.jsx)(`dd`,{className:`mt-0.5 line-clamp-1 text-fg-muted`,children:a.templateOutputReport})]})]})]},e.id)})}):null]})}t[0]=n,t[1]=u,t[2]=a,t[3]=r,t[4]=s,t[5]=c,t[6]=o,t[7]=f,t[8]=p}else f=t[7],p=t[8];return p===Symbol.for(`react.early_return_sentinel`)?f:p}function Xn(e){return!e}function Zn(e){let t=(0,Q.c)(208),{vm:n}=e,{language:r,localeTag:o,labels:s,hasToken:c,definitions:l,runs:d,searchQuery:f,setSearchQuery:p,ownerAgentId:m,agentOptions:g,setOwnerAgentId:_,workflowFilterId:v,setWorkflowFilterId:y,triggerFilter:b,setTriggerFilter:x,viewMode:S,setViewMode:C,runTab:w,setRunTab:T,selectedRunId:E,selectedRunView:D,selectedRunComparison:O,selectedRunLoading:k,selectedRunError:A,openRunDetails:j,closeRunDetails:M,openRunDetailsById:N,openRunInChat:P,pickStartOpen:F,setPickStartOpen:I,startDefinition:L,setStartDefinition:R,detailDefinition:z,setDetailDefinition:B,manageOpen:H,setManageOpen:ee,workflowEditorDraft:te,openWorkflowEditor:ne,actionError:re,actionFeedback:U,starting:W,savingWorkflow:G,loading:K,error:q,stats:J,submitStart:ie,cancelRun:ae,retryRun:oe,replayRun:ce,saveCustomWorkflow:le,saveDraftAndStart:ue}=n,de=se(tr),fe=se(er),me;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(me=Date.now(),t[0]=me):me=t[0];let he=me,ge=Gn(ct(d,{searchQuery:f,workflowFilterId:v,triggerFilter:b})),_e;t[1]!==fe||t[2]!==c||t[3]!==s.statsActiveRuns||t[4]!==s.statsTotalRuns||t[5]!==s.subtitleBoard||t[6]!==s.title||t[7]!==de||t[8]!==J||t[9]!==n?(_e=()=>{if(!c){fe();return}return de({startExtra:null,main:(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:s.title}),(0,$.jsx)(`p`,{className:`truncate text-xs text-fg-muted`,children:J?`${s.statsTotalRuns}: ${J.totalRuns} · ${s.statsActiveRuns}: ${J.activeRuns}`:s.subtitleBoard})]}),end:(0,$.jsx)(zn,{vm:n})}),()=>fe()},t[1]=fe,t[2]=c,t[3]=s.statsActiveRuns,t[4]=s.statsTotalRuns,t[5]=s.subtitleBoard,t[6]=s.title,t[7]=de,t[8]=J,t[9]=n,t[10]=_e):_e=t[10];let ve;if(t[11]!==fe||t[12]!==c||t[13]!==s.statsActiveRuns||t[14]!==s.statsTotalRuns||t[15]!==s.subtitleBoard||t[16]!==s.title||t[17]!==K||t[18]!==J||t[19]!==n?(ve=[fe,c,s.title,s.statsActiveRuns,s.statsTotalRuns,s.subtitleBoard,K,J,n,n.refreshAll,n.setManageOpen,n.setSearchQuery],t[11]=fe,t[12]=c,t[13]=s.statsActiveRuns,t[14]=s.statsTotalRuns,t[15]=s.subtitleBoard,t[16]=s.title,t[17]=K,t[18]=J,t[19]=n,t[20]=ve):ve=t[20],(0,Z.useLayoutEffect)(_e,ve),!c){let e;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(Ge,{className:`size-10 text-accent-fg`,"aria-hidden":!0}),t[21]=e):e=t[21];let n;t[22]===s.title?n=t[23]:(n=(0,$.jsx)(`h1`,{className:`mt-4 text-xl font-semibold text-fg`,children:s.title}),t[22]=s.title,t[23]=n);let r;t[24]===s.needToken?r=t[25]:(r=(0,$.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:s.needToken}),t[24]=s.needToken,t[25]=r);let i;return t[26]!==n||t[27]!==r?(i=(0,$.jsx)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-panel`,children:(0,$.jsxs)(`div`,{className:`flex w-full flex-col items-center px-3 py-16 text-center sm:px-5 xl:px-6`,children:[e,n,r]})}),t[26]=n,t[27]=r,t[28]=i):i=t[28],i}let ye;t[29]===I?ye=t[30]:(ye=()=>I(!0),t[29]=I,t[30]=ye);let be;t[31]===ee?be=t[32]:(be=()=>ee(!0),t[31]=ee,t[32]=be);let Y;t[33]!==l||t[34]!==s||t[35]!==r||t[36]!==R||t[37]!==ye||t[38]!==be?(Y=(0,$.jsx)(Yn,{definitions:l,language:r,labels:s,onStart:R,onBrowseAll:ye,onManageTemplates:be}),t[33]=l,t[34]=s,t[35]=r,t[36]=R,t[37]=ye,t[38]=be,t[39]=Y):Y=t[39];let xe;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(xe=(0,$.jsx)(Me,{className:`pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[40]=xe):xe=t[40];let Se;t[41]===p?Se=t[42]:(Se=e=>p(e.target.value),t[41]=p,t[42]=Se);let we=s.searchPlaceholder,Te;t[43]===Symbol.for(`react.memo_cache_sentinel`)?(Te=i(`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`,h.focusRingPanel),t[43]=Te):Te=t[43];let Ee;t[44]!==s.searchPlaceholder||t[45]!==f||t[46]!==Se?(Ee=(0,$.jsxs)(`div`,{className:`relative min-w-48 flex-1 sm:max-w-xs`,children:[xe,(0,$.jsx)(`input`,{value:f,onChange:Se,placeholder:we,className:Te})]}),t[44]=s.searchPlaceholder,t[45]=f,t[46]=Se,t[47]=Ee):Ee=t[47];let X;t[48]!==g||t[49]!==r||t[50]!==m||t[51]!==_?(X=g.length>1?(0,$.jsx)(Ce,{value:m??``,"aria-label":`Agent`,onChange:e=>_(e.target.value),className:i(`h-9 min-w-32 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,h.focusRingPanel),children:g.map(e=>(0,$.jsx)(je,{value:e.id,children:V(e,a(r).agentsSettings)},e.id))}):null,t[48]=g,t[49]=r,t[50]=m,t[51]=_,t[52]=X):X=t[52];let De=s.boardTriggerFilterAria,Oe;t[53]===x?Oe=t[54]:(Oe=e=>x(e.target.value),t[53]=x,t[54]=Oe);let ke;t[55]===Symbol.for(`react.memo_cache_sentinel`)?(ke=i(`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`,h.focusRingPanel),t[55]=ke):ke=t[55];let Ae;t[56]===s.boardTriggerFilterAll?Ae=t[57]:(Ae=(0,$.jsx)(je,{value:`all`,children:s.boardTriggerFilterAll}),t[56]=s.boardTriggerFilterAll,t[57]=Ae);let Ne;t[58]===s.boardTriggerFilterAutomation?Ne=t[59]:(Ne=(0,$.jsx)(je,{value:`automation`,children:s.boardTriggerFilterAutomation}),t[58]=s.boardTriggerFilterAutomation,t[59]=Ne);let Pe;t[60]===s.boardTriggerFilterWebui?Pe=t[61]:(Pe=(0,$.jsx)(je,{value:`webui`,children:s.boardTriggerFilterWebui}),t[60]=s.boardTriggerFilterWebui,t[61]=Pe);let Fe;t[62]===s.boardTriggerFilterChat?Fe=t[63]:(Fe=(0,$.jsx)(je,{value:`chat`,children:s.boardTriggerFilterChat}),t[62]=s.boardTriggerFilterChat,t[63]=Fe);let Ie;t[64]===s.boardTriggerFilterApi?Ie=t[65]:(Ie=(0,$.jsx)(je,{value:`api`,children:s.boardTriggerFilterApi}),t[64]=s.boardTriggerFilterApi,t[65]=Ie);let Le;t[66]!==s.boardTriggerFilterAria||t[67]!==Oe||t[68]!==Ae||t[69]!==Ne||t[70]!==Pe||t[71]!==Fe||t[72]!==Ie||t[73]!==b?(Le=(0,$.jsxs)(Ce,{value:b,"aria-label":De,onChange:Oe,className:ke,children:[Ae,Ne,Pe,Fe,Ie]}),t[66]=s.boardTriggerFilterAria,t[67]=Oe,t[68]=Ae,t[69]=Ne,t[70]=Pe,t[71]=Fe,t[72]=Ie,t[73]=b,t[74]=Le):Le=t[74];let Re=s.boardWorkflowFilterAria,ze;t[75]===y?ze=t[76]:(ze=e=>y(e.target.value),t[75]=y,t[76]=ze);let Be;t[77]===Symbol.for(`react.memo_cache_sentinel`)?(Be=i(`h-9 min-w-40 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,h.focusRingPanel),t[77]=Be):Be=t[77];let Ve;t[78]===s.boardWorkflowFilterAll?Ve=t[79]:(Ve=(0,$.jsx)(je,{value:``,children:s.boardWorkflowFilterAll}),t[78]=s.boardWorkflowFilterAll,t[79]=Ve);let He;t[80]===l?He=t[81]:(He=l.map($n),t[80]=l,t[81]=He);let Ue;t[82]!==s.boardWorkflowFilterAria||t[83]!==ze||t[84]!==Ve||t[85]!==He||t[86]!==v?(Ue=(0,$.jsxs)(Ce,{value:v,"aria-label":Re,onChange:ze,className:Be,children:[Ve,He]}),t[82]=s.boardWorkflowFilterAria,t[83]=ze,t[84]=Ve,t[85]=He,t[86]=v,t[87]=Ue):Ue=t[87];let We=S===`operations`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:text-fg`,Ke;t[88]===We?Ke=t[89]:(Ke=i(`inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-xs font-medium transition-colors`,We),t[88]=We,t[89]=Ke);let qe;t[90]===C?qe=t[91]:(qe=()=>C(`operations`),t[90]=C,t[91]=qe);let Je;t[92]===Symbol.for(`react.memo_cache_sentinel`)?(Je=(0,$.jsx)(u,{className:`size-3.5`,"aria-hidden":!0}),t[92]=Je):Je=t[92];let Ye;t[93]!==s.viewModes.operations||t[94]!==Ke||t[95]!==qe?(Ye=(0,$.jsxs)(`button`,{type:`button`,className:Ke,onClick:qe,children:[Je,s.viewModes.operations]}),t[93]=s.viewModes.operations,t[94]=Ke,t[95]=qe,t[96]=Ye):Ye=t[96];let Xe=S===`board`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:text-fg`,Ze;t[97]===Xe?Ze=t[98]:(Ze=i(`inline-flex h-8 items-center gap-1.5 rounded-md px-2.5 text-xs font-medium transition-colors`,Xe),t[97]=Xe,t[98]=Ze);let $e;t[99]===C?$e=t[100]:($e=()=>C(`board`),t[99]=C,t[100]=$e);let et;t[101]===Symbol.for(`react.memo_cache_sentinel`)?(et=(0,$.jsx)(pe,{className:`size-3.5`,"aria-hidden":!0}),t[101]=et):et=t[101];let tt;t[102]!==s.viewModes.board||t[103]!==Ze||t[104]!==$e?(tt=(0,$.jsxs)(`button`,{type:`button`,className:Ze,onClick:$e,children:[et,s.viewModes.board]}),t[102]=s.viewModes.board,t[103]=Ze,t[104]=$e,t[105]=tt):tt=t[105];let nt;t[106]!==Ye||t[107]!==tt?(nt=(0,$.jsxs)(`div`,{className:`flex rounded-lg bg-surface-muted p-0.5`,children:[Ye,tt]}),t[106]=Ye,t[107]=tt,t[108]=nt):nt=t[108];let rt;t[109]!==Ee||t[110]!==X||t[111]!==Le||t[112]!==Ue||t[113]!==nt?(rt=(0,$.jsxs)(`section`,{className:`flex w-full flex-wrap items-center gap-2 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 shadow-surface`,children:[Ee,X,Le,Ue,nt]}),t[109]=Ee,t[110]=X,t[111]=Le,t[112]=Ue,t[113]=nt,t[114]=rt):rt=t[114];let it;t[115]===U?it=t[116]:(it=U?(0,$.jsx)(`div`,{className:`w-full 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:U}):null,t[115]=U,t[116]=it);let at;t[117]!==re||t[118]!==q?(at=re??q?(0,$.jsx)(`div`,{className:`w-full 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:re??q}):null,t[117]=re,t[118]=q,t[119]=at):at=t[119];let ot;t[120]!==r||t[121]!==J?(ot=(0,$.jsx)(`div`,{className:`w-full`,children:(0,$.jsx)(Ln,{stats:J,language:r})}),t[120]=r,t[121]=J,t[122]=ot):ot=t[122];let st;t[123]===A?st=t[124]:(st=A?(0,$.jsx)(`div`,{className:`w-full 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:A}):null,t[123]=A,t[124]=st);let lt;if(t[125]!==l||t[126]!==D?.run){let e;t[128]===D?.run?e=t[129]:(e=e=>e.id===D?.run.definitionId,t[128]=D?.run,t[129]=e),lt=l.find(e),t[125]=l,t[126]=D?.run,t[127]=lt}else lt=t[127];let ut=!!E&&k,dt;t[130]!==ae||t[131]!==E?(dt=()=>{E&&ae(E)},t[130]=ae,t[131]=E,t[132]=dt):dt=t[132];let ft;t[133]!==oe||t[134]!==E?(ft=()=>{E&&oe(E)},t[133]=oe,t[134]=E,t[135]=ft):ft=t[135];let pt;t[136]!==ce||t[137]!==E?(pt=e=>{E&&ce(E,e)},t[136]=ce,t[137]=E,t[138]=pt):pt=t[138];let mt;t[139]!==M||t[140]!==r||t[141]!==o||t[142]!==N||t[143]!==m||t[144]!==w||t[145]!==O||t[146]!==D||t[147]!==T||t[148]!==lt||t[149]!==ut||t[150]!==dt||t[151]!==ft||t[152]!==pt?(mt=(0,$.jsx)(mn,{view:D,comparison:O,currentDefinition:lt,loading:ut,language:r,localeTag:o,activeTab:w,onTabChange:T,onCancel:dt,onRetry:ft,onReplay:pt,onOpenRunId:N,ownerAgentId:m,onClose:M}),t[139]=M,t[140]=r,t[141]=o,t[142]=N,t[143]=m,t[144]=w,t[145]=O,t[146]=D,t[147]=T,t[148]=lt,t[149]=ut,t[150]=dt,t[151]=ft,t[152]=pt,t[153]=mt):mt=t[153];let ht;t[154]===I?ht=t[155]:(ht=()=>I(!1),t[154]=I,t[155]=ht);let gt;t[156]!==I||t[157]!==R?(gt=e=>{I(!1),R(e)},t[156]=I,t[157]=R,t[158]=gt):gt=t[158];let _t;t[159]!==B||t[160]!==I?(_t=e=>{I(!1),B(e)},t[159]=B,t[160]=I,t[161]=_t):_t=t[161];let yt;t[162]!==l||t[163]!==r||t[164]!==ne||t[165]!==F||t[166]!==ht||t[167]!==gt||t[168]!==_t?(yt=(0,$.jsx)(sn,{open:F,definitions:l,language:r,onClose:ht,onPick:gt,onDetail:_t,onEdit:ne}),t[162]=l,t[163]=r,t[164]=ne,t[165]=F,t[166]=ht,t[167]=gt,t[168]=_t,t[169]=yt):yt=t[169];let bt=L!=null,xt;t[170]===R?xt=t[171]:(xt=()=>R(null),t[170]=R,t[171]=xt);let St;t[172]===ie?St=t[173]:(St=e=>void ie(e),t[172]=ie,t[173]=St);let Ct;t[174]!==r||t[175]!==L||t[176]!==W||t[177]!==bt||t[178]!==xt||t[179]!==St?(Ct=(0,$.jsx)(Qe,{open:bt,definition:L,language:r,starting:W,onClose:xt,onStart:St}),t[174]=r,t[175]=L,t[176]=W,t[177]=bt,t[178]=xt,t[179]=St,t[180]=Ct):Ct=t[180];let wt=z!=null,Et;t[181]===B?Et=t[182]:(Et=()=>B(null),t[181]=B,t[182]=Et);let Dt;t[183]!==z||t[184]!==B||t[185]!==R?(Dt=()=>{z&&(B(null),R(z))},t[183]=z,t[184]=B,t[185]=R,t[186]=Dt):Dt=t[186];let Ot;t[187]!==z||t[188]!==r||t[189]!==wt||t[190]!==Et||t[191]!==Dt?(Ot=(0,$.jsx)(Jt,{open:wt,definition:z,language:r,onClose:Et,onRun:Dt}),t[187]=z,t[188]=r,t[189]=wt,t[190]=Et,t[191]=Dt,t[192]=Ot):Ot=t[192];let kt;t[193]===te?kt=t[194]:(kt=te?{mode:te.mode,name:te.initialName,script:te.initialScript,sourceTitle:te.definition.title}:null,t[193]=te,t[194]=kt);let jt;t[195]===ee?jt=t[196]:(jt=()=>ee(!1),t[195]=ee,t[196]=jt);let Mt;t[197]===le?Mt=t[198]:(Mt=e=>le(e),t[197]=le,t[198]=Mt);let Nt;return t[199]!==r||t[200]!==H||t[201]!==m||t[202]!==ue||t[203]!==G||t[204]!==kt||t[205]!==jt||t[206]!==Mt?(Nt=(0,$.jsx)(At,{open:H,language:r,ownerAgentId:m,saving:G,initialDraft:kt,onClose:jt,onSave:Mt,onSaveAndStart:ue}),t[199]=r,t[200]=H,t[201]=m,t[202]=ue,t[203]=G,t[204]=kt,t[205]=jt,t[206]=Mt,t[207]=Nt):Nt=t[207],(0,$.jsxs)(`main`,{className:`min-h-0 flex-1 overflow-y-auto bg-surface-panel`,children:[(0,$.jsxs)(`div`,{className:`flex min-h-full w-full flex-col gap-4 px-3 py-5 sm:px-5 xl:px-6`,children:[Y,rt,it,at,(0,$.jsx)(`section`,{className:`grid w-full gap-2 sm:grid-cols-2 xl:grid-cols-4`,"aria-label":s.subtitleBoard,children:Bn.map(e=>{let t=ge.get(e)?.length??0;return(0,$.jsxs)(`button`,{type:`button`,className:i(`min-w-0 rounded-lg border border-edge-subtle bg-surface-base px-3 py-2 text-left shadow-surface`,`hover:bg-surface-hover/45`,h.focusRingPanel),onClick:()=>C(`operations`),children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsx)(`span`,{className:`truncate text-xs font-medium text-fg-muted`,children:s.operationSections[e].title}),(0,$.jsx)(`span`,{className:`font-mono text-sm font-semibold tabular-nums text-fg`,children:t})]}),(0,$.jsx)(`p`,{className:`mt-1 truncate text-xs text-fg-subtle`,children:s.operationSections[e].description})]},e)})}),ot,st,S===`operations`?(0,$.jsx)(`div`,{className:`pb-3`,children:(0,$.jsx)(`div`,{className:`grid w-full gap-4`,children:Bn.map(e=>{let t=ge.get(e)??[];return(0,$.jsxs)(`section`,{className:`rounded-lg border border-edge-subtle bg-surface-base shadow-surface`,children:[(0,$.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3 border-b border-edge-subtle px-4 py-3`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:s.operationSections[e].title}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-muted`,children:s.operationSections[e].description})]}),(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:t.length})]}),(0,$.jsxs)(`div`,{className:`grid gap-2 p-2.5 md:grid-cols-2 xl:grid-cols-3`,children:[K&&t.length===0?Array.from({length:3}).map(Qn):t.map(e=>(0,$.jsx)(vt,{run:e,language:r,localeTag:o,nowMs:he,selected:e.id===E,onOpen:j,onOpenChat:P,onCancel:e=>void ae(e),onRetry:e=>void oe(e)},e.id)),!K&&t.length===0?(0,$.jsx)(`div`,{className:`flex min-h-24 items-center justify-center rounded-md border border-dashed border-edge bg-surface-panel/40 px-4 py-5 text-center text-xs text-fg-subtle md:col-span-2 xl:col-span-3`,children:s.operationSections[e].empty}):null]})]},e)})})}):(0,$.jsx)(`div`,{className:`h-[min(72vh,48rem)] min-h-[24rem] w-full sm:min-h-[28rem]`,children:(0,$.jsx)(Tt,{runs:d,language:r,localeTag:o,labels:{boardEmptyTitle:s.boardEmptyTitle,boardEmptyHint:s.boardEmptyHint,boardStart:s.boardStart,loading:s.loading},searchQuery:f,workflowFilterId:v,triggerFilter:b,selectedRunId:E,loading:K,onOpenRun:j,onOpenRunChat:P,onCancelRun:e=>void ae(e),onRetryRun:e=>void oe(e),onStart:()=>I(!0)})})]}),mt,yt,Ct,Ot,Nt]})}function Qn(e,t){return(0,$.jsx)(Kn,{},t)}function $n(e){return(0,$.jsx)(je,{value:e.id,children:e.title},e.id)}function er(e){return e.clearPageHeader}function tr(e){return e.setPageHeader}function nr(){let e=s(e=>e.language),t=a(e).workflows,n=e===`zh`?`zh-CN`:`en-US`,r=o(e=>e.token),i=!!r,l=f(),[u,d]=M(),m=u.get(`q`)??``,h=u.get(`wf`)?.trim()??``,g=u.get(`trigger`)?.trim()||`all`,_=u.get(`run`)?.trim()??``,v=u.get(`view`)?.trim()??``,y=u.get(`runTab`)?.trim()??``,x=u.get(`agent`)?.trim()??``,C=oe.has(v)?v:`operations`,w=D.has(y)?y:`result`,[E,O]=(0,Z.useState)(null),[k,A]=(0,Z.useState)(!1),[j,N]=(0,Z.useState)(null),[P,I]=(0,Z.useState)(!1),[L,R]=(0,Z.useState)(null),[z,B]=(0,Z.useState)(null),[V,H]=(0,Z.useState)(null),[ee,te]=(0,Z.useState)(!1),[ne,U]=(0,Z.useState)(!1),W=c(i?[`workflow-agents`,r]:null,me,{revalidateOnFocus:!1}),G=(0,Z.useMemo)(()=>{let e=W.data?.agents??[];return x&&e.some(e=>e.id===x)||x&&e.length===0?x:W.data?.defaultId??(x||void 0)},[W.data,x]),K=c(i?[`workflow-definitions`,r]:null,Se,{revalidateOnFocus:!1}),q=c(i&&G?[`workflow-runs`,r,G]:null,()=>fe(100,{ownerAgentId:G}),{revalidateOnFocus:!1,refreshInterval:e=>e?.length&&e.some(e=>e.status===`queued`||e.status===`running`)?3e3:0}),J=c(i&&G?[`workflow-stats`,r,G,h]:null,()=>Oe(h,{ownerAgentId:G}),{revalidateOnFocus:!1});(0,Z.useEffect)(()=>{if(!V)return;let e=window.setTimeout(()=>H(null),4e3);return()=>window.clearTimeout(e)},[V]);let ie=K.data??[],ae=W.data?.agents??[],se=q.data??[],le=_||null,de=xe(le,{ownerAgentId:G}),pe=c(i&&G&&le&&de.view?.run.metadata?.replay?[`workflow-run-comparison`,r,G,le]:null,()=>Ne(le,{ownerAgentId:G}),{revalidateOnFocus:!1}),he=(0,Z.useMemo)(()=>Ee(ie,m,`all`,`all`),[ie,m]),_e=(0,Z.useCallback)(e=>{e&&R(null),I(e)},[]),ye=(0,Z.useCallback)(e=>{let t=new Set(ie.map(e=>e.name)),n=`${e.name}_copy`;if(!t.has(n))return n;for(let e=2;e<100;e+=1){let r=`${n}_${e}`;if(!t.has(r))return r}return`${n}_${Date.now()}`},[ie]),be=(0,Z.useCallback)((e,n)=>{let r=e.runtime?.source??``;if(!r.trim()){B(t.editWorkflowSourceMissing);return}let i=n??(e.metadata.source===`user`?`edit`:`copy`),a=i===`edit`?e.name:ye(e);B(null),A(!1),R({mode:i,definition:e,initialName:a,initialScript:i===`copy`?rr(r,a):r}),I(!0)},[ye,t.editWorkflowSourceMissing]),Y=(0,Z.useCallback)(e=>{d(t=>{let n=new URLSearchParams(t);return e(n,t),n},{replace:!0})},[d]);(0,Z.useEffect)(()=>{let e=W.data?.agents??[];!x||e.length===0||e.some(e=>e.id===x)||Y(e=>{W.data?.defaultId?e.set(S,W.data.defaultId):e.delete(S),e.delete(`run`)})},[W.data,x,Y]);let Ce=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n?t.set(`q`,n):t.delete(`q`)})},[Y]),we=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n?t.set(S,n):t.delete(S),t.delete(`run`)})},[Y]),Te=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n?t.set(`wf`,n):t.delete(`wf`)})},[Y]),X=(0,Z.useCallback)(e=>{Y(t=>{let n=e.trim();n&&n!==`all`?t.set(ce,n):t.delete(ce)})},[Y]),ke=(0,Z.useCallback)(e=>{Y(t=>{e===`operations`?t.delete(ue):t.set(ue,e)})},[Y]),Ae=(0,Z.useCallback)(e=>{Y(t=>{e===`result`?t.delete(Pe):t.set(Pe,e)})},[Y]),je=(0,Z.useCallback)(e=>{Y(t=>{G&&t.set(S,G),t.set(`run`,e.id),t.delete(Pe)})},[G,Y]),Me=(0,Z.useCallback)(()=>{Y(e=>{e.delete(`run`),e.delete(Pe)})},[Y]),Fe=(0,Z.useCallback)(e=>{Y(t=>{G&&t.set(S,G),t.set(`run`,e),t.delete(Pe)})},[G,Y]),Ie=(0,Z.useCallback)(e=>{let t=tt(e);t&&l(p(t))},[l]);(0,Z.useEffect)(()=>{let e=u.get(`def`),t=u.get(T)===`1`,n=u.get(b)===`1`;if(!e||!ie.length)return;let r=ie.find(t=>t.id===e||t.name===e);r&&(n?be(r,`copy`):t?O(r):N(r),Y(e=>{e.delete(`def`),e.delete(T),e.delete(b)}))},[ie,be,Y,u]),(0,Z.useEffect)(()=>{let e=()=>{q.mutate(),J.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)}},[q,J]);let Le=(0,Z.useCallback)(()=>{W.mutate(),K.mutate(),q.mutate(),J.mutate()},[W,K,q,J]),Re=(0,Z.useCallback)(async e=>{if(E){te(!0),B(null);try{let n=await re({definitionId:E.id,goal:e.goal,input:e.input,agentId:G,concurrency:e.concurrency,maxSubagents:e.maxSubagents});O(null),await q.mutate(),await J.mutate(),H(t.startSuccess),Y(e=>{G&&e.set(S,G),e.set(`run`,n.runId),e.delete(Pe)})}catch(e){B(e instanceof Error?e.message:t.startFailed)}finally{te(!1)}}},[t.startFailed,t.startSuccess,G,Y,q,E,J]),ze=(0,Z.useCallback)(async e=>{try{await De(e,{ownerAgentId:G}),await q.mutate(),await J.mutate()}catch(e){let n=e instanceof Error?e.message:t.cancelFailed;if(/not active|already finished/i.test(n)){await q.mutate(),await J.mutate();return}B(n)}},[t.cancelFailed,G,q,J]),Be=(0,Z.useCallback)(async e=>{try{let t=await qe(e,{ownerAgentId:G});await q.mutate(),await J.mutate(),Y(e=>{G&&e.set(S,G),e.set(`run`,t.runId),e.delete(Pe)})}catch(e){B(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,G,Y,q,J]),Ve=(0,Z.useCallback)(async(e,n)=>{try{let t=await We(e,n,{ownerAgentId:G});await q.mutate(),await J.mutate(),Y(e=>{G&&e.set(S,G),e.set(`run`,t.runId),e.delete(Pe)})}catch(e){B(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,G,Y,q,J]),He=(0,Z.useCallback)(async e=>{U(!0),B(null);try{let n=await ge(e.name,e.script);return I(!1),R(null),await K.mutate(),H(t.saveWorkflowSuccess),n}catch(e){B(e instanceof Error?e.message:t.saveWorkflowFailed)}finally{U(!1)}},[K,t.saveWorkflowFailed,t.saveWorkflowSuccess]),Ue=(0,Z.useCallback)(async e=>{U(!0),B(null);try{let n=await ge(e.name,e.script);await K.mutate();let r=await re({definitionId:n.id,goal:e.goal,input:{goal:e.goal},agentId:G});I(!1),R(null),await q.mutate(),await J.mutate(),H(t.startSuccess),Y(e=>{G&&e.set(S,G),e.set(`run`,r.runId),e.delete(Pe)})}catch(e){B(e instanceof Error?e.message:t.startFailed)}finally{U(!1)}},[K,t.startFailed,t.startSuccess,G,Y,q,J]),Ge=(0,Z.useCallback)(async e=>{if(e.metadata.source===`user`&&window.confirm(F(t.deleteConfirm,{name:e.name}))){B(null);try{await ve(e.id),await K.mutate(),H(t.deleteWorkflowSuccess)}catch(e){B(e instanceof Error?e.message:t.deleteWorkflowFailed)}}},[K,t]),Ke=W.isLoading||K.isLoading||q.isLoading,Je=W.error?.message??K.error?.message??q.error?.message??null;return{language:e,localeTag:n,labels:t,hasToken:i,searchQuery:m,setSearchQuery:Ce,ownerAgentId:G,agentOptions:ae,setOwnerAgentId:we,workflowFilterId:h,setWorkflowFilterId:Te,triggerFilter:g,setTriggerFilter:X,viewMode:C,setViewMode:ke,runTab:w,setRunTab:Ae,definitions:ie,filteredDefinitions:he,runs:se,selectedRunId:le,selectedRunView:de.view,selectedRunComparison:pe.data,selectedRunLoading:de.loading,selectedRunError:de.error?.message??pe.error?.message??null,openRunDetails:je,closeRunDetails:Me,openRunDetailsById:Fe,openRunInChat:Ie,pickStartOpen:k,setPickStartOpen:A,startDefinition:E,setStartDefinition:O,detailDefinition:j,setDetailDefinition:N,manageOpen:P,setManageOpen:_e,workflowEditorDraft:L,openWorkflowEditor:be,actionError:z,actionFeedback:V,starting:ee,savingWorkflow:ne,loading:Ke,error:Je,stats:J.data,refreshAll:Le,submitStart:Re,cancelRun:ze,retryRun:Be,replayRun:Ve,saveCustomWorkflow:He,saveDraftAndStart:Ue,removeCustomWorkflow:Ge}}function rr(e,t){return e.replace(/(name\s*:\s*['"`])([^'"`]+)(['"`])/,(e,n,r,i)=>`${n}${t}${i}`)}function ir(){let e=(0,Q.c)(2),t=nr(),n;return e[0]===t?n=e[1]:(n=(0,$.jsx)(Zn,{vm:t}),e[0]=t,e[1]=n),n}export{ir as WorkflowsPage};
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260713-1" />
|
|
12
12
|
<link rel="manifest" href="/site.webmanifest?v=20260713-1" />
|
|
13
13
|
<title>xopc</title>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-DcUaXYeb.js"></script>
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/middleware-Pd0e8Igk.js">
|
|
23
23
|
<link rel="modulepreload" crossorigin href="/assets/locale-store-Ba72bFmP.js">
|
|
24
24
|
<link rel="modulepreload" crossorigin href="/assets/config-reload-event-Bjh2zoKp.js">
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/messages-
|
|
26
|
-
<link rel="modulepreload" crossorigin href="/assets/fetch-
|
|
27
|
-
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/messages-BXNELNBa.js">
|
|
26
|
+
<link rel="modulepreload" crossorigin href="/assets/fetch-B1WtuprY.js">
|
|
27
|
+
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-nEujFSDj.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/toast-z0toXu32.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/theme-store-Bt6vAkSB.js">
|
|
30
30
|
<link rel="stylesheet" crossorigin href="/assets/index-B8s8Pq5U.css">
|
package/dist/package.js
CHANGED
|
@@ -3,11 +3,11 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { guardSessionManager } from "./session-tool-result-guard.js";
|
|
4
4
|
import { transformUserMessageForPersistence } from "../inbound/attachment-pipeline.js";
|
|
5
5
|
import { openSqliteHydratingSessionManager } from "./sqlite-hydrating-session-manager.js";
|
|
6
|
-
import { applyXopcProviderApiKey,
|
|
6
|
+
import { applyXopcProviderApiKey, createEmbeddedCredentialStore } from "./xopc-auth-storage.js";
|
|
7
7
|
import { wrapStreamFnForXopcExtensions } from "./xopc-stream-bridge.js";
|
|
8
8
|
import { xopcToolsToDefinitions } from "./xopc-tools-bridge.js";
|
|
9
9
|
import { applySystemPromptOverrideToSession } from "./system-prompt-override.js";
|
|
10
|
-
import { DefaultResourceLoader, SettingsManager, createAgentSession, getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
10
|
+
import { DefaultResourceLoader, ModelRuntime, SettingsManager, createAgentSession, getAgentDir } from "@earendil-works/pi-coding-agent";
|
|
11
11
|
//#region src/agent/embedded/session-runner.ts
|
|
12
12
|
init_logger();
|
|
13
13
|
const log = createLogger("EmbeddedSessionRunner");
|
|
@@ -167,8 +167,8 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
167
167
|
});
|
|
168
168
|
const toolDefs = xopcToolsToDefinitions(tools);
|
|
169
169
|
const toolNames = tools.map((t) => t.name);
|
|
170
|
-
const
|
|
171
|
-
applyXopcProviderApiKey(
|
|
170
|
+
const modelRuntime = await ModelRuntime.create({ credentials: createEmbeddedCredentialStore() });
|
|
171
|
+
await applyXopcProviderApiKey(modelRuntime, model.provider);
|
|
172
172
|
const resourceLoader = new DefaultResourceLoader({
|
|
173
173
|
cwd: workspaceDir,
|
|
174
174
|
agentDir: getAgentDir(),
|
|
@@ -182,7 +182,7 @@ var EmbeddedSessionRunnerPool = class {
|
|
|
182
182
|
thinkingLevel: thinkingLevel ?? "medium",
|
|
183
183
|
sessionManager: piSm,
|
|
184
184
|
settingsManager,
|
|
185
|
-
|
|
185
|
+
modelRuntime,
|
|
186
186
|
resourceLoader,
|
|
187
187
|
noTools: "builtin",
|
|
188
188
|
customTools: toolDefs,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-runner.js","names":[],"sources":["../../../../src/agent/embedded/session-runner.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport {\n createAgentSession,\n DefaultResourceLoader,\n getAgentDir,\n SettingsManager,\n type AgentSession,\n} from '@earendil-works/pi-coding-agent';\nimport type { Model, Api } from '@earendil-works/pi-ai';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { guardSessionManager, type GuardedPiTranscriptManager } from './session-tool-result-guard.js';\nimport { transformUserMessageForPersistence } from '../inbound/attachment-pipeline.js';\nimport { openSqliteHydratingSessionManager } from './sqlite-hydrating-session-manager.js';\nimport { applyXopcProviderApiKey, createEmbeddedAuthStorage } from './xopc-auth-storage.js';\nimport { wrapStreamFnForXopcExtensions } from './xopc-stream-bridge.js';\nimport { xopcToolsToDefinitions } from './xopc-tools-bridge.js';\nimport { applySystemPromptOverrideToSession } from './system-prompt-override.js';\n\nconst log = createLogger('EmbeddedSessionRunner');\n\nconst DEFAULT_IDLE_TTL_MS = 5 * 60_000;\n\nexport type EmbeddedRunnerFingerprintInput = {\n sessionId: string;\n workspaceDir: string;\n modelRef: string;\n toolNames: readonly string[];\n systemPrompt: string;\n thinkingLevel: string;\n};\n\nexport function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string {\n const tools = [...input.toolNames].sort().join('\\0');\n const promptMarker = `${input.systemPrompt.length}:${input.systemPrompt.slice(0, 128)}`;\n return [\n input.sessionId,\n input.workspaceDir,\n input.modelRef,\n tools,\n promptMarker,\n input.thinkingLevel,\n ].join('\u001f');\n}\n\ntype PooledRunner = {\n sessionKey: string;\n fingerprint: string;\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n settingsManager: SettingsManager;\n baseStreamFn: AgentSession['agent']['streamFn'];\n lastUsedAt: number;\n idleTimer: ReturnType<typeof setTimeout> | null;\n};\n\nexport type AcquireEmbeddedSessionRunnerParams = {\n sessionKey: string;\n sessionId: string;\n workspaceDir: string;\n model: Model<Api>;\n modelRef: string;\n tools: AgentTool[];\n systemPrompt: string;\n thinkingLevel: ThinkingLevel;\n};\n\nexport type AcquiredEmbeddedSessionRunner = {\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n reused: boolean;\n release: () => void;\n};\n\nexport interface EmbeddedSessionRunnerPoolStats {\n acquires: number;\n reuses: number;\n creates: number;\n evictions: number;\n pooled: number;\n}\n\nexport function isEmbeddedSessionRunnerEnabled(): boolean {\n const raw = process.env.XOPC_SESSION_RUNNER?.trim().toLowerCase();\n if (raw === '0' || raw === 'false' || raw === 'off') {\n return false;\n }\n return true;\n}\n\nexport function getEmbeddedSessionRunnerIdleTtlMs(): number {\n const raw = process.env.XOPC_SESSION_RUNNER_TTL_MS?.trim();\n if (!raw) {\n return DEFAULT_IDLE_TTL_MS;\n }\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_IDLE_TTL_MS;\n}\n\nfunction createEmbeddedSettingsManager(cwd: string): SettingsManager {\n const sm = SettingsManager.inMemory({ compaction: { enabled: false } });\n sm.setCompactionEnabled(false);\n void cwd;\n return sm;\n}\n\nexport interface EmbeddedSessionRunnerPoolOptions {\n /** Override for the env-driven enable flag (testing). */\n isEnabled?: () => boolean;\n /** Override for the env-driven idle TTL (testing). */\n getIdleTtlMs?: () => number;\n}\n\n/**\n * Owns the per-session pool of pi `AgentSession` runners. The class is the supported,\n * injectable owner; {@link defaultEmbeddedSessionRunnerPool} keeps the historic\n * module-level free functions working until every caller is migrated to DI.\n */\nexport class EmbeddedSessionRunnerPool {\n private readonly pool = new Map<string, PooledRunner>();\n private readonly isEnabledFn: () => boolean;\n private readonly getIdleTtlMsFn: () => number;\n\n private stats: Omit<EmbeddedSessionRunnerPoolStats, 'pooled'> = {\n acquires: 0,\n reuses: 0,\n creates: 0,\n evictions: 0,\n };\n\n constructor(opts: EmbeddedSessionRunnerPoolOptions = {}) {\n this.isEnabledFn = opts.isEnabled ?? isEmbeddedSessionRunnerEnabled;\n this.getIdleTtlMsFn = opts.getIdleTtlMs ?? getEmbeddedSessionRunnerIdleTtlMs;\n }\n\n getStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return { ...this.stats, pooled: this.pool.size };\n }\n\n resetForTest(): void {\n for (const entry of this.pool.values()) {\n this.clearIdleTimer(entry);\n }\n this.pool.clear();\n this.stats = { acquires: 0, reuses: 0, creates: 0, evictions: 0 };\n }\n\n evict(sessionKey: string, reason = 'explicit'): void {\n const entry = this.pool.get(sessionKey);\n if (!entry) {\n return;\n }\n this.disposePooledRunner(sessionKey, entry, reason);\n }\n\n evictAll(reason = 'dispose_all'): void {\n for (const sessionKey of [...this.pool.keys()]) {\n this.evict(sessionKey, reason);\n }\n }\n\n async acquire(params: AcquireEmbeddedSessionRunnerParams): Promise<AcquiredEmbeddedSessionRunner> {\n this.stats.acquires += 1;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId: params.sessionId,\n workspaceDir: params.workspaceDir,\n modelRef: params.modelRef,\n toolNames: params.tools.map((t) => t.name),\n systemPrompt: params.systemPrompt,\n thinkingLevel: params.thinkingLevel ?? 'medium',\n });\n\n const reuseEnabled = this.isEnabledFn();\n const existing = this.pool.get(params.sessionKey);\n\n let entry: PooledRunner;\n let reused = false;\n\n if (reuseEnabled && existing && existing.fingerprint === fingerprint) {\n this.clearIdleTimer(existing);\n entry = existing;\n entry.lastUsedAt = Date.now();\n reused = true;\n this.stats.reuses += 1;\n applySystemPromptOverrideToSession(entry.session, params.systemPrompt);\n entry.session.agent.streamFn = entry.baseStreamFn;\n log.debug({ sessionKey: params.sessionKey }, 'Reusing pooled embedded session runner');\n } else {\n if (existing) {\n this.disposePooledRunner(params.sessionKey, existing, 'fingerprint_mismatch');\n }\n entry = await this.createPooledRunner(params);\n this.pool.set(params.sessionKey, entry);\n this.stats.creates += 1;\n log.debug({ sessionKey: params.sessionKey }, 'Created embedded session runner');\n }\n\n return {\n session: entry.session,\n piSm: entry.piSm,\n reused,\n release: () => {\n if (!this.isEnabledFn()) {\n this.disposePooledRunner(params.sessionKey, entry, 'runner_disabled');\n return;\n }\n entry.lastUsedAt = Date.now();\n this.scheduleIdleEviction(params.sessionKey, entry);\n },\n };\n }\n\n private clearIdleTimer(entry: PooledRunner): void {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = null;\n }\n }\n\n private scheduleIdleEviction(sessionKey: string, entry: PooledRunner): void {\n this.clearIdleTimer(entry);\n const ttlMs = this.getIdleTtlMsFn();\n entry.idleTimer = setTimeout(() => {\n const current = this.pool.get(sessionKey);\n if (current === entry) {\n this.disposePooledRunner(sessionKey, entry, 'idle_ttl');\n }\n }, ttlMs);\n entry.idleTimer.unref?.();\n }\n\n private disposePooledRunner(sessionKey: string, entry: PooledRunner, reason: string): void {\n this.clearIdleTimer(entry);\n this.pool.delete(sessionKey);\n this.stats.evictions += 1;\n try {\n entry.piSm.flushPendingToolResults?.();\n } catch {\n /* ignore */\n }\n log.debug({ sessionKey, reason }, 'Embedded session runner evicted');\n }\n\n private async createPooledRunner(params: AcquireEmbeddedSessionRunnerParams): Promise<PooledRunner> {\n const { sessionKey, sessionId, workspaceDir, model, thinkingLevel, tools, systemPrompt } = params;\n\n const settingsManager = createEmbeddedSettingsManager(workspaceDir);\n\n const piSm = guardSessionManager(\n openSqliteHydratingSessionManager({\n sessionKey,\n sessionId,\n cwd: workspaceDir,\n }),\n {\n sessionKey,\n contextWindowTokens: model.contextWindow ?? 128_000,\n transformMessageForPersistence: (message) =>\n transformUserMessageForPersistence(sessionKey, message),\n },\n );\n\n const toolDefs = xopcToolsToDefinitions(tools);\n const toolNames = tools.map((t) => t.name);\n\n const authStorage = createEmbeddedAuthStorage();\n applyXopcProviderApiKey(authStorage, model.provider);\n\n const resourceLoader = new DefaultResourceLoader({\n cwd: workspaceDir,\n agentDir: getAgentDir(),\n settingsManager,\n noContextFiles: true,\n });\n await resourceLoader.reload();\n\n const { session } = await createAgentSession({\n cwd: workspaceDir,\n model,\n thinkingLevel: thinkingLevel ?? 'medium',\n sessionManager: piSm,\n settingsManager,\n authStorage,\n resourceLoader,\n noTools: 'builtin',\n customTools: toolDefs,\n tools: toolNames,\n });\n\n applySystemPromptOverrideToSession(session, systemPrompt);\n const baseStreamFn = wrapStreamFnForXopcExtensions(session.agent.streamFn);\n session.agent.streamFn = baseStreamFn;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId,\n workspaceDir,\n modelRef: params.modelRef,\n toolNames,\n systemPrompt,\n thinkingLevel: thinkingLevel ?? 'medium',\n });\n\n return {\n sessionKey,\n fingerprint,\n session,\n piSm,\n settingsManager,\n baseStreamFn,\n lastUsedAt: Date.now(),\n idleTimer: null,\n };\n }\n}\n\nexport const defaultEmbeddedSessionRunnerPool = new EmbeddedSessionRunnerPool();\n\nexport function getEmbeddedSessionRunnerStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return defaultEmbeddedSessionRunnerPool.getStats();\n}\n\nexport function resetEmbeddedSessionRunnerForTest(): void {\n defaultEmbeddedSessionRunnerPool.resetForTest();\n}\n\nexport function evictEmbeddedSessionRunner(sessionKey: string, reason = 'explicit'): void {\n defaultEmbeddedSessionRunnerPool.evict(sessionKey, reason);\n}\n\nexport function evictAllEmbeddedSessionRunners(reason = 'dispose_all'): void {\n defaultEmbeddedSessionRunnerPool.evictAll(reason);\n}\n\nexport function acquireEmbeddedSessionRunner(\n params: AcquireEmbeddedSessionRunnerParams,\n): Promise<AcquiredEmbeddedSessionRunner> {\n return defaultEmbeddedSessionRunnerPool.acquire(params);\n}\n\n/** Resolve session identity used by embedded runner acquire and turn execution. */\nexport async function resolveEmbeddedTranscriptInputs(\n sessionStore: import('../../session/store.js').SessionStore,\n sessionKey: string,\n): Promise<{\n sessionId: string;\n sessionKey: string;\n}> {\n return sessionStore.resolveTranscriptPath(sessionKey);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-runner.js","names":[],"sources":["../../../../src/agent/embedded/session-runner.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { ThinkingLevel } from '@earendil-works/pi-agent-core';\nimport {\n createAgentSession,\n DefaultResourceLoader,\n getAgentDir,\n ModelRuntime,\n SettingsManager,\n type AgentSession,\n} from '@earendil-works/pi-coding-agent';\nimport type { Model, Api } from '@earendil-works/pi-ai';\n\nimport { createLogger } from '../../utils/logger.js';\nimport { guardSessionManager, type GuardedPiTranscriptManager } from './session-tool-result-guard.js';\nimport { transformUserMessageForPersistence } from '../inbound/attachment-pipeline.js';\nimport { openSqliteHydratingSessionManager } from './sqlite-hydrating-session-manager.js';\nimport { applyXopcProviderApiKey, createEmbeddedCredentialStore } from './xopc-auth-storage.js';\nimport { wrapStreamFnForXopcExtensions } from './xopc-stream-bridge.js';\nimport { xopcToolsToDefinitions } from './xopc-tools-bridge.js';\nimport { applySystemPromptOverrideToSession } from './system-prompt-override.js';\n\nconst log = createLogger('EmbeddedSessionRunner');\n\nconst DEFAULT_IDLE_TTL_MS = 5 * 60_000;\n\nexport type EmbeddedRunnerFingerprintInput = {\n sessionId: string;\n workspaceDir: string;\n modelRef: string;\n toolNames: readonly string[];\n systemPrompt: string;\n thinkingLevel: string;\n};\n\nexport function buildEmbeddedRunnerFingerprint(input: EmbeddedRunnerFingerprintInput): string {\n const tools = [...input.toolNames].sort().join('\\0');\n const promptMarker = `${input.systemPrompt.length}:${input.systemPrompt.slice(0, 128)}`;\n return [\n input.sessionId,\n input.workspaceDir,\n input.modelRef,\n tools,\n promptMarker,\n input.thinkingLevel,\n ].join('\u001f');\n}\n\ntype PooledRunner = {\n sessionKey: string;\n fingerprint: string;\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n settingsManager: SettingsManager;\n baseStreamFn: AgentSession['agent']['streamFn'];\n lastUsedAt: number;\n idleTimer: ReturnType<typeof setTimeout> | null;\n};\n\nexport type AcquireEmbeddedSessionRunnerParams = {\n sessionKey: string;\n sessionId: string;\n workspaceDir: string;\n model: Model<Api>;\n modelRef: string;\n tools: AgentTool[];\n systemPrompt: string;\n thinkingLevel: ThinkingLevel;\n};\n\nexport type AcquiredEmbeddedSessionRunner = {\n session: AgentSession;\n piSm: GuardedPiTranscriptManager;\n reused: boolean;\n release: () => void;\n};\n\nexport interface EmbeddedSessionRunnerPoolStats {\n acquires: number;\n reuses: number;\n creates: number;\n evictions: number;\n pooled: number;\n}\n\nexport function isEmbeddedSessionRunnerEnabled(): boolean {\n const raw = process.env.XOPC_SESSION_RUNNER?.trim().toLowerCase();\n if (raw === '0' || raw === 'false' || raw === 'off') {\n return false;\n }\n return true;\n}\n\nexport function getEmbeddedSessionRunnerIdleTtlMs(): number {\n const raw = process.env.XOPC_SESSION_RUNNER_TTL_MS?.trim();\n if (!raw) {\n return DEFAULT_IDLE_TTL_MS;\n }\n const parsed = Number.parseInt(raw, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_IDLE_TTL_MS;\n}\n\nfunction createEmbeddedSettingsManager(cwd: string): SettingsManager {\n const sm = SettingsManager.inMemory({ compaction: { enabled: false } });\n sm.setCompactionEnabled(false);\n void cwd;\n return sm;\n}\n\nexport interface EmbeddedSessionRunnerPoolOptions {\n /** Override for the env-driven enable flag (testing). */\n isEnabled?: () => boolean;\n /** Override for the env-driven idle TTL (testing). */\n getIdleTtlMs?: () => number;\n}\n\n/**\n * Owns the per-session pool of pi `AgentSession` runners. The class is the supported,\n * injectable owner; {@link defaultEmbeddedSessionRunnerPool} keeps the historic\n * module-level free functions working until every caller is migrated to DI.\n */\nexport class EmbeddedSessionRunnerPool {\n private readonly pool = new Map<string, PooledRunner>();\n private readonly isEnabledFn: () => boolean;\n private readonly getIdleTtlMsFn: () => number;\n\n private stats: Omit<EmbeddedSessionRunnerPoolStats, 'pooled'> = {\n acquires: 0,\n reuses: 0,\n creates: 0,\n evictions: 0,\n };\n\n constructor(opts: EmbeddedSessionRunnerPoolOptions = {}) {\n this.isEnabledFn = opts.isEnabled ?? isEmbeddedSessionRunnerEnabled;\n this.getIdleTtlMsFn = opts.getIdleTtlMs ?? getEmbeddedSessionRunnerIdleTtlMs;\n }\n\n getStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return { ...this.stats, pooled: this.pool.size };\n }\n\n resetForTest(): void {\n for (const entry of this.pool.values()) {\n this.clearIdleTimer(entry);\n }\n this.pool.clear();\n this.stats = { acquires: 0, reuses: 0, creates: 0, evictions: 0 };\n }\n\n evict(sessionKey: string, reason = 'explicit'): void {\n const entry = this.pool.get(sessionKey);\n if (!entry) {\n return;\n }\n this.disposePooledRunner(sessionKey, entry, reason);\n }\n\n evictAll(reason = 'dispose_all'): void {\n for (const sessionKey of [...this.pool.keys()]) {\n this.evict(sessionKey, reason);\n }\n }\n\n async acquire(params: AcquireEmbeddedSessionRunnerParams): Promise<AcquiredEmbeddedSessionRunner> {\n this.stats.acquires += 1;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId: params.sessionId,\n workspaceDir: params.workspaceDir,\n modelRef: params.modelRef,\n toolNames: params.tools.map((t) => t.name),\n systemPrompt: params.systemPrompt,\n thinkingLevel: params.thinkingLevel ?? 'medium',\n });\n\n const reuseEnabled = this.isEnabledFn();\n const existing = this.pool.get(params.sessionKey);\n\n let entry: PooledRunner;\n let reused = false;\n\n if (reuseEnabled && existing && existing.fingerprint === fingerprint) {\n this.clearIdleTimer(existing);\n entry = existing;\n entry.lastUsedAt = Date.now();\n reused = true;\n this.stats.reuses += 1;\n applySystemPromptOverrideToSession(entry.session, params.systemPrompt);\n entry.session.agent.streamFn = entry.baseStreamFn;\n log.debug({ sessionKey: params.sessionKey }, 'Reusing pooled embedded session runner');\n } else {\n if (existing) {\n this.disposePooledRunner(params.sessionKey, existing, 'fingerprint_mismatch');\n }\n entry = await this.createPooledRunner(params);\n this.pool.set(params.sessionKey, entry);\n this.stats.creates += 1;\n log.debug({ sessionKey: params.sessionKey }, 'Created embedded session runner');\n }\n\n return {\n session: entry.session,\n piSm: entry.piSm,\n reused,\n release: () => {\n if (!this.isEnabledFn()) {\n this.disposePooledRunner(params.sessionKey, entry, 'runner_disabled');\n return;\n }\n entry.lastUsedAt = Date.now();\n this.scheduleIdleEviction(params.sessionKey, entry);\n },\n };\n }\n\n private clearIdleTimer(entry: PooledRunner): void {\n if (entry.idleTimer) {\n clearTimeout(entry.idleTimer);\n entry.idleTimer = null;\n }\n }\n\n private scheduleIdleEviction(sessionKey: string, entry: PooledRunner): void {\n this.clearIdleTimer(entry);\n const ttlMs = this.getIdleTtlMsFn();\n entry.idleTimer = setTimeout(() => {\n const current = this.pool.get(sessionKey);\n if (current === entry) {\n this.disposePooledRunner(sessionKey, entry, 'idle_ttl');\n }\n }, ttlMs);\n entry.idleTimer.unref?.();\n }\n\n private disposePooledRunner(sessionKey: string, entry: PooledRunner, reason: string): void {\n this.clearIdleTimer(entry);\n this.pool.delete(sessionKey);\n this.stats.evictions += 1;\n try {\n entry.piSm.flushPendingToolResults?.();\n } catch {\n /* ignore */\n }\n log.debug({ sessionKey, reason }, 'Embedded session runner evicted');\n }\n\n private async createPooledRunner(params: AcquireEmbeddedSessionRunnerParams): Promise<PooledRunner> {\n const { sessionKey, sessionId, workspaceDir, model, thinkingLevel, tools, systemPrompt } = params;\n\n const settingsManager = createEmbeddedSettingsManager(workspaceDir);\n\n const piSm = guardSessionManager(\n openSqliteHydratingSessionManager({\n sessionKey,\n sessionId,\n cwd: workspaceDir,\n }),\n {\n sessionKey,\n contextWindowTokens: model.contextWindow ?? 128_000,\n transformMessageForPersistence: (message) =>\n transformUserMessageForPersistence(sessionKey, message),\n },\n );\n\n const toolDefs = xopcToolsToDefinitions(tools);\n const toolNames = tools.map((t) => t.name);\n\n const modelRuntime = await ModelRuntime.create({\n credentials: createEmbeddedCredentialStore(),\n });\n await applyXopcProviderApiKey(modelRuntime, model.provider);\n\n const resourceLoader = new DefaultResourceLoader({\n cwd: workspaceDir,\n agentDir: getAgentDir(),\n settingsManager,\n noContextFiles: true,\n });\n await resourceLoader.reload();\n\n const { session } = await createAgentSession({\n cwd: workspaceDir,\n model,\n thinkingLevel: thinkingLevel ?? 'medium',\n sessionManager: piSm,\n settingsManager,\n modelRuntime,\n resourceLoader,\n noTools: 'builtin',\n customTools: toolDefs,\n tools: toolNames,\n });\n\n applySystemPromptOverrideToSession(session, systemPrompt);\n const baseStreamFn = wrapStreamFnForXopcExtensions(session.agent.streamFn);\n session.agent.streamFn = baseStreamFn;\n\n const fingerprint = buildEmbeddedRunnerFingerprint({\n sessionId,\n workspaceDir,\n modelRef: params.modelRef,\n toolNames,\n systemPrompt,\n thinkingLevel: thinkingLevel ?? 'medium',\n });\n\n return {\n sessionKey,\n fingerprint,\n session,\n piSm,\n settingsManager,\n baseStreamFn,\n lastUsedAt: Date.now(),\n idleTimer: null,\n };\n }\n}\n\nexport const defaultEmbeddedSessionRunnerPool = new EmbeddedSessionRunnerPool();\n\nexport function getEmbeddedSessionRunnerStats(): Readonly<EmbeddedSessionRunnerPoolStats> {\n return defaultEmbeddedSessionRunnerPool.getStats();\n}\n\nexport function resetEmbeddedSessionRunnerForTest(): void {\n defaultEmbeddedSessionRunnerPool.resetForTest();\n}\n\nexport function evictEmbeddedSessionRunner(sessionKey: string, reason = 'explicit'): void {\n defaultEmbeddedSessionRunnerPool.evict(sessionKey, reason);\n}\n\nexport function evictAllEmbeddedSessionRunners(reason = 'dispose_all'): void {\n defaultEmbeddedSessionRunnerPool.evictAll(reason);\n}\n\nexport function acquireEmbeddedSessionRunner(\n params: AcquireEmbeddedSessionRunnerParams,\n): Promise<AcquiredEmbeddedSessionRunner> {\n return defaultEmbeddedSessionRunnerPool.acquire(params);\n}\n\n/** Resolve session identity used by embedded runner acquire and turn execution. */\nexport async function resolveEmbeddedTranscriptInputs(\n sessionStore: import('../../session/store.js').SessionStore,\n sessionKey: string,\n): Promise<{\n sessionId: string;\n sessionKey: string;\n}> {\n return sessionStore.resolveTranscriptPath(sessionKey);\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InMemoryCredentialStore } from '@earendil-works/pi-ai';
|
|
2
|
+
import type { ModelRuntime } from '@earendil-works/pi-coding-agent';
|
|
2
3
|
/**
|
|
3
4
|
* Resolve API keys the same way as {@link AgentManager} / gateway settings:
|
|
4
5
|
* auth-profiles (agent + global), OAuth files, models.json, then env.
|
|
@@ -8,9 +9,9 @@ export declare function resolveXopcProviderApiKey(providerId: string): string |
|
|
|
8
9
|
* pi-coding-agent {@link createAgentSession} defaults to `~/.pi/agent/auth.json` and env.
|
|
9
10
|
* Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.
|
|
10
11
|
*/
|
|
11
|
-
export declare function
|
|
12
|
+
export declare function createEmbeddedCredentialStore(): InMemoryCredentialStore;
|
|
12
13
|
/**
|
|
13
14
|
* Inject the resolved key as a runtime override (highest-priority, in-memory only) before
|
|
14
15
|
* the session starts so request-time auth resolution finds it.
|
|
15
16
|
*/
|
|
16
|
-
export declare function applyXopcProviderApiKey(
|
|
17
|
+
export declare function applyXopcProviderApiKey(modelRuntime: Pick<ModelRuntime, 'setRuntimeApiKey'>, providerId: string): Promise<void>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
|
|
2
2
|
import { getApiKeySync, init_providers } from "../../providers/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { InMemoryCredentialStore } from "@earendil-works/pi-ai";
|
|
4
4
|
//#region src/agent/embedded/xopc-auth-storage.ts
|
|
5
5
|
init_sync_provider_auth();
|
|
6
6
|
init_providers();
|
|
@@ -15,18 +15,18 @@ function resolveXopcProviderApiKey(providerId) {
|
|
|
15
15
|
* pi-coding-agent {@link createAgentSession} defaults to `~/.pi/agent/auth.json` and env.
|
|
16
16
|
* Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.
|
|
17
17
|
*/
|
|
18
|
-
function
|
|
19
|
-
return
|
|
18
|
+
function createEmbeddedCredentialStore() {
|
|
19
|
+
return new InMemoryCredentialStore();
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Inject the resolved key as a runtime override (highest-priority, in-memory only) before
|
|
23
23
|
* the session starts so request-time auth resolution finds it.
|
|
24
24
|
*/
|
|
25
|
-
function applyXopcProviderApiKey(
|
|
25
|
+
async function applyXopcProviderApiKey(modelRuntime, providerId) {
|
|
26
26
|
const key = resolveXopcProviderApiKey(providerId);
|
|
27
|
-
if (key && key !== "extension-managed")
|
|
27
|
+
if (key && key !== "extension-managed") await modelRuntime.setRuntimeApiKey(providerId, key);
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
|
-
export { applyXopcProviderApiKey,
|
|
30
|
+
export { applyXopcProviderApiKey, createEmbeddedCredentialStore, resolveXopcProviderApiKey };
|
|
31
31
|
|
|
32
32
|
//# sourceMappingURL=xopc-auth-storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xopc-auth-storage.js","names":[],"sources":["../../../../src/agent/embedded/xopc-auth-storage.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"xopc-auth-storage.js","names":[],"sources":["../../../../src/agent/embedded/xopc-auth-storage.ts"],"sourcesContent":["import { InMemoryCredentialStore } from '@earendil-works/pi-ai';\nimport type { ModelRuntime } from '@earendil-works/pi-coding-agent';\n\nimport { resolveProviderApiKeySync } from '../../auth/sync-provider-auth.js';\nimport { getApiKeySync } from '../../providers/index.js';\n\n/**\n * Resolve API keys the same way as {@link AgentManager} / gateway settings:\n * auth-profiles (agent + global), OAuth files, models.json, then env.\n */\nexport function resolveXopcProviderApiKey(providerId: string): string | undefined {\n return resolveProviderApiKeySync(providerId) ?? getApiKeySync(providerId);\n}\n\n/**\n * pi-coding-agent {@link createAgentSession} defaults to `~/.pi/agent/auth.json` and env.\n * Gateway / webchat turns inject xopc credentials through {@link applyXopcProviderApiKey}.\n */\nexport function createEmbeddedCredentialStore(): InMemoryCredentialStore {\n return new InMemoryCredentialStore();\n}\n\n/**\n * Inject the resolved key as a runtime override (highest-priority, in-memory only) before\n * the session starts so request-time auth resolution finds it.\n */\nexport async function applyXopcProviderApiKey(\n modelRuntime: Pick<ModelRuntime, 'setRuntimeApiKey'>,\n providerId: string,\n): Promise<void> {\n const key = resolveXopcProviderApiKey(providerId);\n if (key && key !== 'extension-managed') {\n await modelRuntime.setRuntimeApiKey(providerId, key);\n }\n}\n"],"mappings":";;;;yBAG6E;gBACpB;;;;;AAMzD,SAAgB,0BAA0B,YAAwC;AAChF,QAAO,0BAA0B,WAAW,IAAI,cAAc,WAAW;;;;;;AAO3E,SAAgB,gCAAyD;AACvE,QAAO,IAAI,yBAAyB;;;;;;AAOtC,eAAsB,wBACpB,cACA,YACe;CACf,MAAM,MAAM,0BAA0B,WAAW;AACjD,KAAI,OAAO,QAAQ,oBACjB,OAAM,aAAa,iBAAiB,YAAY,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xopc-stream-bridge.js","names":[],"sources":["../../../../src/agent/embedded/xopc-stream-bridge.ts"],"sourcesContent":["import type { Model, Api, Context, SimpleStreamOptions } from '@earendil-works/pi-ai';\nimport type { StreamFn } from '@earendil-works/pi-agent-core';\n\nimport { EXTENSION_PROVIDER_BASE_URL } from '../../providers/index.js';\nimport { createExtensionAwareStreamFn } from '../../providers/extension-stream-bridge.js';\n\n/**\n * pi-coding-agent's default {@link createAgentSession} streamFn always routes through\n * pi-ai's HTTP `streamSimple`, so xopc plugin providers (whose models carry the sentinel\n * `EXTENSION_PROVIDER_BASE_URL`) never reach their {@link ProviderPluginRegistry}\n * implementation. Wrap the original streamFn so plugin models go through xopc's bridge\n * and everything else falls through to the original auth-aware streamFn.\n *\n * Use this by reassigning {@link Agent.streamFn} after `createAgentSession` returns.\n */\nexport function wrapStreamFnForXopcExtensions(originalStreamFn: StreamFn): StreamFn {\n const extensionStreamFn = createExtensionAwareStreamFn();\n\n return ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n if (model.baseUrl === EXTENSION_PROVIDER_BASE_URL) {\n return extensionStreamFn(model, context, options);\n }\n return originalStreamFn(model, context, options);\n }) as StreamFn;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"xopc-stream-bridge.js","names":[],"sources":["../../../../src/agent/embedded/xopc-stream-bridge.ts"],"sourcesContent":["import type { Model, Api, Context, SimpleStreamOptions } from '@earendil-works/pi-ai';\nimport type { StreamFn } from '@earendil-works/pi-agent-core';\n\nimport { EXTENSION_PROVIDER_BASE_URL } from '../../providers/index.js';\nimport { createExtensionAwareStreamFn } from '../../providers/extension-stream-bridge.js';\n\n/**\n * pi-coding-agent's default {@link createAgentSession} streamFn always routes through\n * pi-ai's HTTP `streamSimple`, so xopc plugin providers (whose models carry the sentinel\n * `EXTENSION_PROVIDER_BASE_URL`) never reach their {@link ProviderPluginRegistry}\n * implementation. Wrap the original streamFn so plugin models go through xopc's bridge\n * and everything else falls through to the original auth-aware streamFn.\n *\n * Use this by reassigning {@link Agent.streamFn} after `createAgentSession` returns.\n */\nexport function wrapStreamFnForXopcExtensions(originalStreamFn: StreamFn): StreamFn {\n const extensionStreamFn = createExtensionAwareStreamFn();\n\n return ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n if (model.baseUrl === EXTENSION_PROVIDER_BASE_URL) {\n return extensionStreamFn(model, context, options);\n }\n return originalStreamFn(model, context, options);\n }) as StreamFn;\n}\n"],"mappings":";;;;gBAGuE;;;;;;;;;;AAYvE,SAAgB,8BAA8B,kBAAsC;CAClF,MAAM,oBAAoB,8BAA8B;AAExD,UAAS,OAAmB,SAAkB,YAAkC;AAC9E,MAAI,MAAM,YAAA,8BACR,QAAO,kBAAkB,OAAO,SAAS,QAAQ;AAEnD,SAAO,iBAAiB,OAAO,SAAS,QAAQ"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { init_providers, resolveModel } from "../../providers/index.js";
|
|
2
|
+
import { completeWithResolvedCredentials } from "../../providers/model-call.js";
|
|
2
3
|
import { JUDGE_REASON_EN } from "../../i18n/goals-bundle.js";
|
|
3
4
|
import { goalUiLocaleOrFallback, judgeReasonText, judgeResponseLanguageNote, localizeJudgeReasonText } from "./goal-locale.js";
|
|
4
5
|
import { DEFAULT_JUDGE_TIMEOUT_MS, extractAssistantText, getAssistantMessageErrorReason, resolveGoalJudgeApiKey, stripCodeFences, truncateGoalText } from "./judge.js";
|
|
5
|
-
import { complete } from "@earendil-works/pi-ai/compat";
|
|
6
6
|
//#region src/agent/goals/checklist-judge.ts
|
|
7
7
|
init_providers();
|
|
8
8
|
const GOAL_TRUNC = 4e3;
|
|
@@ -59,7 +59,7 @@ async function decomposeGoalChecklist(opts) {
|
|
|
59
59
|
timestamp: Date.now()
|
|
60
60
|
};
|
|
61
61
|
const apiKey = await resolveGoalJudgeApiKey(model);
|
|
62
|
-
const result = await
|
|
62
|
+
const result = await completeWithResolvedCredentials(model, { messages: [user] }, {
|
|
63
63
|
apiKey,
|
|
64
64
|
maxTokens: 2e3,
|
|
65
65
|
temperature: 0,
|
|
@@ -138,7 +138,7 @@ async function evaluateGoalChecklistJudge(opts) {
|
|
|
138
138
|
timestamp: Date.now()
|
|
139
139
|
};
|
|
140
140
|
const apiKey = await resolveGoalJudgeApiKey(model);
|
|
141
|
-
const result = await
|
|
141
|
+
const result = await completeWithResolvedCredentials(model, { messages: [user] }, {
|
|
142
142
|
apiKey,
|
|
143
143
|
maxTokens: 1500,
|
|
144
144
|
temperature: 0,
|