@xopcai/xopc 0.0.104 → 0.0.106
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/feishu/src/adapters/gateway-setup.js +2 -2
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +1 -1
- package/dist/extensions/feishu/src/directory/directory-adapter.js +1 -1
- package/dist/extensions/feishu/src/directory/directory-adapter.js.map +1 -1
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js +4 -3
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +1 -1
- package/dist/extensions/feishu/src/plugin.d.ts +6 -3
- package/dist/extensions/feishu/src/plugin.js +59 -40
- package/dist/extensions/feishu/src/plugin.js.map +1 -1
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js +20 -16
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +1 -1
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +1 -1
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +1 -1
- package/dist/extensions/feishu/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/feishu/src/workflow-progress.js +2 -2
- package/dist/extensions/feishu/src/workflow-progress.js.map +1 -1
- package/dist/extensions/telegram/src/adapters/gateway-setup.js +8 -6
- package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +1 -1
- package/dist/extensions/telegram/src/command-handler.d.ts +1 -1
- package/dist/extensions/telegram/src/command-handler.js +11 -9
- package/dist/extensions/telegram/src/command-handler.js.map +1 -1
- package/dist/extensions/telegram/src/inbound-processor.js +1 -2
- package/dist/extensions/telegram/src/inbound-processor.js.map +1 -1
- package/dist/extensions/telegram/src/plugin.d.ts +1 -0
- package/dist/extensions/telegram/src/plugin.js +6 -6
- package/dist/extensions/telegram/src/plugin.js.map +1 -1
- package/dist/extensions/telegram/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js.map +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/cli/gateway-qr-login.d.ts +4 -0
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js +34 -5
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +1 -1
- package/dist/extensions/weixin/src/cli/qr-login.js +4 -3
- package/dist/extensions/weixin/src/cli/qr-login.js.map +1 -1
- package/dist/extensions/weixin/src/plugin.d.ts +1 -0
- package/dist/extensions/weixin/src/plugin.js +7 -6
- package/dist/extensions/weixin/src/plugin.js.map +1 -1
- package/dist/extensions/weixin/src/workflow-progress.d.ts +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js.map +1 -1
- package/dist/gateway/static/root/assets/agents-3eP0vqFO.js +396 -0
- package/dist/gateway/static/root/assets/{apps-page-L-IwQTe0.js → apps-page-CZ2ZKrko.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BbETa93K.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-DCtUkHMu.js +1 -0
- package/dist/gateway/static/root/assets/{dist-C6vclgEL.js → dist-OM9qGfm5.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-D4JYAbsX.js → extension-debug-page-D-WHrr_w.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-_T62gi6e.js → extension-page-CCgjSoKn.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CkJbjyM-.js → extension-settings-page-BJH5a-Gn.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-B5aiIguv.js → fetch-CkvRO30i.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DqmLXhs6.js → gateway-startup-retry-BkKyRDrF.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-HwJV1K_Y.js → heartbeat-config-api-CVyP6pFj.js} +1 -1
- package/dist/gateway/static/root/assets/index-CEZxETzw.js +4845 -0
- package/dist/gateway/static/root/assets/{logs-page-DsjtTjBy.js → logs-page-R6Vv_Ja6.js} +2 -2
- package/dist/gateway/static/root/assets/{note-detail-page-B2V7RhgD.js → note-detail-page-BUDarLhh.js} +54 -54
- package/dist/gateway/static/root/assets/{note-time-BG8GCTr4.js → note-time-Cc2-T21g.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-xrcVBQ6Z.js → notes-page-EAHl16bq.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-S-QUvhul.js → schema-form-CrlOmEZt.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-Ce_xuuSB.js +1 -0
- package/dist/gateway/static/root/assets/{settings-advanced-gate-DujQl9c7.js → settings-advanced-gate-BBAQxxew.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-r1V7dRV6.js → settings-form-section-DjPD-ErC.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-KhQ9QgH0.js +3 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DOFy0FNt.js → share-preview-page-BjvPht3V.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-C0laq7l1.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-Bo3j5Ovv.js → theme-store-DYgVdRB4.js} +1 -1
- package/dist/gateway/static/root/assets/url-DPEStU4M.js +3 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-AjmUAlEQ.js → voice-api-key-field-DeGckWkl.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-page.utils-DLEJ92gK.js → workflow-page.utils-D4sqR0yX.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-DFjM95g5.js +27 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/context/workspace-seed.js +1 -1
- package/dist/src/agent/inbound/turn-dispatcher.d.ts +2 -0
- package/dist/src/agent/inbound/turn-dispatcher.js +1 -0
- package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
- package/dist/src/agent/mcp/bundle-mcp-config.js +16 -8
- package/dist/src/agent/mcp/bundle-mcp-config.js.map +1 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js +2 -2
- package/dist/src/agent/mcp/bundle-mcp-policy.js.map +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-http.js +1 -1
- package/dist/src/agent/mcp/mcp-http.js.map +1 -1
- package/dist/src/agent/mcp/mcp-transport-config.js +2 -6
- package/dist/src/agent/mcp/mcp-transport-config.js.map +1 -1
- package/dist/src/agent/prompt/memory/index.js +30 -2
- package/dist/src/agent/prompt/memory/index.js.map +1 -1
- package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -0
- package/dist/src/agent/service/direct-turn-helpers.js +5 -2
- package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
- package/dist/src/agent/service/process-direct-streaming.d.ts +2 -0
- package/dist/src/agent/service/process-direct-streaming.js +15 -1
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service.js +2 -1
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +3 -0
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/source-context/index.d.ts +2 -0
- package/dist/src/agent/source-context/index.js +3 -0
- package/dist/src/agent/source-context/injector.d.ts +3 -0
- package/dist/src/agent/source-context/injector.js +36 -0
- package/dist/src/agent/source-context/injector.js.map +1 -0
- package/dist/src/agent/source-context/types.d.ts +19 -0
- package/dist/src/agent/source-context/types.js +10 -0
- package/dist/src/agent/source-context/types.js.map +1 -0
- package/dist/src/agent/tools/factory.js +5 -5
- package/dist/src/agent/tools/index.js +3 -3
- package/dist/src/agent/tools/session-search-tool.js +1 -1
- package/dist/src/agent/tools/shell.js +1 -1
- package/dist/src/agent/tools/web-extract.js +2 -2
- package/dist/src/agent/tools/web.js +1 -1
- package/dist/src/agent/workflow/index.js +2 -1
- package/dist/src/agent/workflow/runtime.d.ts +2 -2
- package/dist/src/agent/workflow/runtime.js +1 -14
- package/dist/src/agent/workflow/runtime.js.map +1 -1
- package/dist/src/agent/workflow/snapshot-empty.d.ts +2 -0
- package/dist/src/agent/workflow/snapshot-empty.js +19 -0
- package/dist/src/agent/workflow/snapshot-empty.js.map +1 -0
- package/dist/src/agent/workflow/snapshot.js +1 -1
- package/dist/src/agent/workflow/snapshot.js.map +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js +1 -1
- package/dist/src/browser/actions/registry.js +2 -2
- package/dist/src/browser/cdp-local-launcher.js +1 -1
- package/dist/src/browser/index.js +3 -3
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/browser/providers/cloakbrowser.js +1 -1
- package/dist/src/cli/commands/browser-cli-helpers.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/config/paths.d.ts +1 -0
- package/dist/src/config/paths.js +5 -1
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/connectors/install.js +1 -1
- package/dist/src/document-understanding/extract.d.ts +13 -0
- package/dist/src/document-understanding/extract.js +63 -0
- package/dist/src/document-understanding/extract.js.map +1 -0
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/notes.js +46 -27
- package/dist/src/gateway/hono/routes/notes.js.map +1 -1
- package/dist/src/gateway/service.js +11 -0
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/notes/agent-context.d.ts +40 -0
- package/dist/src/notes/agent-context.js +383 -0
- package/dist/src/notes/agent-context.js.map +1 -0
- package/dist/src/notes/index.d.ts +2 -0
- package/dist/src/notes/index.js +2 -1
- package/dist/src/notes/service.d.ts +5 -0
- package/dist/src/notes/service.js +22 -0
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +2 -0
- package/dist/src/notes/store.js.map +1 -1
- package/dist/src/share/share-thumbnail.js +1 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/migrations/005_add_note_agent_contexts.sql +10 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.d.ts +10 -0
- package/dist/src/storage/sqlite/note-agent-context-repository.js +35 -0
- package/dist/src/storage/sqlite/note-agent-context-repository.js.map +1 -0
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/voice/stt/availability.d.ts +6 -0
- package/dist/src/voice/stt/availability.js +14 -6
- package/dist/src/voice/stt/availability.js.map +1 -1
- package/dist/src/voice/stt/index.js +2 -1
- package/dist/src/voice/stt/index.js.map +1 -1
- package/dist/src/voice/stt/mention.d.ts +2 -0
- package/dist/src/voice/stt/mention.js +20 -0
- package/dist/src/voice/stt/mention.js.map +1 -0
- package/dist/src/voice/stt/preflight.d.ts +1 -4
- package/dist/src/voice/stt/preflight.js +1 -18
- package/dist/src/voice/stt/preflight.js.map +1 -1
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/agents-CvsBrBfi.js +0 -396
- package/dist/gateway/static/root/assets/channels-settings-D95KuPeP.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-CfkWXDAI.js +0 -1
- package/dist/gateway/static/root/assets/index-DvTb6wNR.js +0 -4845
- package/dist/gateway/static/root/assets/sessions-page-CrQer6Au.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-C9nrONQ2.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-DmTsrs_a.js +0 -2
- package/dist/gateway/static/root/assets/url-WgQIjFZu.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-BnjjKrM1.js +0 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./url-WgQIjFZu.js";import{o as a}from"./vendor-swr-BIWyz7Rc.js";import{a as o,n as s}from"./fetch-B5aiIguv.js";import{i as c,r as l}from"./gateway-startup-retry-DqmLXhs6.js";import{Ao as u,Da as d,Jr as f,U as p,W as m,Zi as h,ci as g,oi as _,q as v,qo as y,si as b,so as x}from"./index-DvTb6wNR.js";var S=`/api/image/providers`;async function C(){return(await s(i(`/api/image/providers`)))?.payload?.providers??[]}var w=e(t(),1),ee=n();function T(){return{apiKey:``,region:``,baseUrl:``,imageBaseUrl:``}}function te(e){return e?.apiKey?`••••••••••••`:``}function E(e,t){let n=(()=>{if(!e||typeof e!=`object`||!(`providersConfig`in e))return;let t=e.providersConfig;if(!(!t||typeof t!=`object`||Array.isArray(t)))return t})(),r={};for(let e of t){let t=n?.[e];r[e]={apiKey:te(t),region:t?.region??``,baseUrl:t?.baseUrl??``,imageBaseUrl:t?.imageBaseUrl??``}}return r}function D(e,t,n){let r=e[n].trim();if(r!==t[n].trim())return r||null}function O(e,t){let n=e.trim(),r=t.trim();if(n!==r&&!(v(n)&&v(r)))return n||(r?null:void 0)}function k(e,t,n){let r={};for(let i of e){let e=t[i]??T(),a=n[i]??T();if(JSON.stringify(e)===JSON.stringify(a))continue;let o={},s=O(e.apiKey,a.apiKey);s!==void 0&&(o.apiKey=s);let c=D(e,a,`region`);c!==void 0&&(o.region=c);let l=D(e,a,`baseUrl`);l!==void 0&&(o.baseUrl=l);let u=D(e,a,`imageBaseUrl`);u!==void 0&&(o.imageBaseUrl=u),Object.keys(o).length>0&&(r[i]=o)}return r}async function A(e){let t=await s(i(`/api/image/providers/${encodeURIComponent(e)}/reveal-api-key`),{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok||!t.payload)throw Error(t.error?.message??`Reveal failed`);return t.payload}async function j(e){Object.keys(e).length!==0&&(await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({providersConfig:e})}),await l())}var M=r();function ne(e){let t=(0,ee.c)(18),{providerId:n,value:r,onChange:i,labels:a,apiKeyLinks:o,apiKeyLinkLabels:s}=e,c;t[0]===n?c=t[1]:(c=()=>A(n).then(N),t[0]=n,t[1]=c);let l=c,u=`img-cred-key-${n}`,d;t[2]!==a.apiKeyLabel||t[3]!==u?(d=(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:u,children:a.apiKeyLabel}),t[2]=a.apiKeyLabel,t[3]=u,t[4]=d):d=t[4];let p;t[5]!==s||t[6]!==o?(p=o.length>0?(0,M.jsx)(`div`,{className:`flex flex-col gap-1`,children:o.map(e=>(0,M.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[m(e.kind,s),(0,M.jsx)(x,{className:`size-3`,"aria-hidden":!0})]},`${e.kind}-${e.href}`))}):null,t[5]=s,t[6]=o,t[7]=p):p=t[7];let h=`img-cred-key-${n}`,g;t[8]!==a||t[9]!==i||t[10]!==l||t[11]!==h||t[12]!==r?(g=(0,M.jsx)(f,{id:h,value:r,onChange:i,placeholder:a.optionalPlaceholder,labels:a,reveal:l,loadFailedLabel:a.loadFailed,maskedHelp:a.maskedHelp,notInConfigFile:a.notInConfigFile}),t[8]=a,t[9]=i,t[10]=l,t[11]=h,t[12]=r,t[13]=g):g=t[13];let _;return t[14]!==d||t[15]!==p||t[16]!==g?(_=(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[d,p,g]}),t[14]=d,t[15]=p,t[16]=g,t[17]=_):_=t[17],_}function N(e){return e.apiKey??null}function P(){return g(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,_)}function re(){return g(P(),`appearance-none bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat pr-9`)}var F=`__custom__`;function ie(e,t){if(!e.region.trim()&&!e.imageBaseUrl.trim())return``;let n=e.region.trim().toLowerCase();return t.some(e=>e.value===n)?n:F}function ae(e,t){let n=e.baseUrl.trim().replace(/\/+$/,``);if(!n)return``;let r=t.map(e=>e.value.replace(/\/+$/,``)).indexOf(n);return r>=0?t[r].value:F}function oe(e,t,n){return t===`beijing`?e.dashscopeRegion_beijing:t===`singapore`?e.dashscopeRegion_singapore:t===`us`?e.dashscopeRegion_us:n}function se(e,t){return t===`minimax`?e.minimaxClusterLabel:t===`fal`?e.falQueueBaseLabel:e.baseUrlLabel}function ce(e,t){return t===`minimax`?e.minimaxClusterHint:t===`fal`?e.falQueueBaseHint:null}function le(e,t){return JSON.stringify(e)!==JSON.stringify(t)}function ue(e,t){return t===1?e.modelCountOne:e.modelCountMany.replace(`{count}`,String(t))}function I(e){let t=(0,ee.c)(76),{summaries:n,credDraft:r,credBaseline:i,credDirty:a,credSaving:o,credError:s,credSavedFlash:c,credNoopFlash:l,updateCredRow:f,onDiscardCredentials:m,onSaveCredentials:_,extensionIds:v,showExtensionLinks:S,showImageModelsLink:C,hideActions:te,language:E,apiKeyLinkLabels:D,messages:O}=e,k=te===void 0?!1:te,A;t[0]===n?A=t[1]:(A=n.some(he),t[0]=n,t[1]=A);let j=A,N;t[2]===n?N=t[3]:(N=n.some(me),t[2]=n,t[3]=N);let I=N,[ge,_e]=(0,w.useState)(pe),[ve,L]=(0,w.useState)(fe),R;if(t[4]!==i||t[5]!==r||t[6]!==n){R=new Set;for(let e of n)le(r[e.id]??T(),i[e.id]??T())&&R.add(e.id);t[4]=i,t[5]=r,t[6]=n,t[7]=R}else R=t[7];let z=R,B;t[8]!==z||t[9]!==ve||t[10]!==ge?(B=e=>ve.has(e)?!1:ge.has(e)?!0:z.has(e),t[8]=z,t[9]=ve,t[10]=ge,t[11]=B):B=t[11];let V=B,H;t[12]===V?H=t[13]:(H=e=>{if(V(e)){L(t=>new Set(t).add(e)),_e(t=>{let n=new Set(t);return n.delete(e),n});return}L(t=>{let n=new Set(t);return n.delete(e),n}),_e(t=>new Set(t).add(e))},t[12]=V,t[13]=H);let U=H;if(n.length===0)return null;let W;t[14]===O.credentialsIntro?W=t[15]:(W=(0,M.jsx)(`p`,{children:O.credentialsIntro}),t[14]=O.credentialsIntro,t[15]=W);let G;t[16]!==j||t[17]!==O.regionHint?(G=j?(0,M.jsx)(`p`,{className:`text-fg-subtle`,children:O.regionHint}):null,t[16]=j,t[17]=O.regionHint,t[18]=G):G=t[18];let K;t[19]!==I||t[20]!==O.endpointPresetsHint?(K=I?(0,M.jsx)(`p`,{className:`text-fg-subtle`,children:O.endpointPresetsHint}):null,t[19]=I,t[20]=O.endpointPresetsHint,t[21]=K):K=t[21];let q;t[22]!==C||t[23]!==O.imageModelsLinkTitle||t[24]!==O.openImageModelsPage?(q=C?(0,M.jsx)(`p`,{children:(0,M.jsx)(y,{to:`/settings/credentials?tab=image-models`,className:`font-medium text-accent hover:underline`,title:O.imageModelsLinkTitle,children:O.openImageModelsPage})}):null,t[22]=C,t[23]=O.imageModelsLinkTitle,t[24]=O.openImageModelsPage,t[25]=q):q=t[25];let J;t[26]!==W||t[27]!==G||t[28]!==K||t[29]!==q?(J=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1 text-xs leading-relaxed text-fg-muted`,children:[W,G,K,q]}),t[26]=W,t[27]=G,t[28]=K,t[29]=q,t[30]=J):J=t[30];let Y;t[31]===s?Y=t[32]:(Y=s?(0,M.jsx)(`div`,{className:`rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:s}):null,t[31]=s,t[32]=Y);let X;t[33]!==a||t[34]!==l||t[35]!==c||t[36]!==o||t[37]!==k||t[38]!==m||t[39]!==_||t[40]!==O.credentialsNothingToSave||t[41]!==O.credentialsSaved||t[42]!==O.discardCredentials||t[43]!==O.saveCredentials||t[44]!==O.savingCredentials?(X=k?null:(0,M.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[c?(0,M.jsx)(`span`,{className:`text-sm text-fg-muted`,children:O.credentialsSaved}):null,l?(0,M.jsx)(`span`,{className:`text-sm text-fg-muted`,children:O.credentialsNothingToSave}):null,(0,M.jsx)(b,{type:`button`,variant:`secondary`,onClick:m,disabled:!a||o,children:O.discardCredentials}),(0,M.jsx)(b,{type:`button`,variant:`primary`,onClick:_,disabled:!a||o,children:o?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(d,{className:`size-3.5 animate-spin`}),(0,M.jsx)(`span`,{className:`ml-1.5`,children:O.savingCredentials})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(h,{className:`size-3.5`}),(0,M.jsx)(`span`,{className:`ml-1.5`,children:O.saveCredentials})]})})]}),t[33]=a,t[34]=l,t[35]=c,t[36]=o,t[37]=k,t[38]=m,t[39]=_,t[40]=O.credentialsNothingToSave,t[41]=O.credentialsSaved,t[42]=O.discardCredentials,t[43]=O.saveCredentials,t[44]=O.savingCredentials,t[45]=X):X=t[45];let Z;if(t[46]!==D||t[47]!==i||t[48]!==r||t[49]!==v||t[50]!==V||t[51]!==E||t[52]!==S||t[53]!==n||t[54]!==O||t[55]!==U||t[56]!==f){let e;t[58]!==D||t[59]!==i||t[60]!==r||t[61]!==v||t[62]!==V||t[63]!==E||t[64]!==S||t[65]!==O||t[66]!==U||t[67]!==f?(e=e=>{let t=r[e.id]??T(),n=e.ui,a=S&&v.has(e.id)?`/settings/ext/${encodeURIComponent(e.id)}`:null,o=le(t,i[e.id]??T()),s=V(e.id),c=e.label??e.id,l=ue(O,e.models.length);return(0,M.jsxs)(`section`,{className:g(`overflow-hidden rounded-xl border bg-surface-panel shadow-sm transition-colors dark:shadow-none`,o?`border-accent/50`:`border-edge`),children:[(0,M.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-3 px-4 py-3 text-left hover:bg-surface-hover/70`,"aria-expanded":s,"aria-controls":`img-provider-credentials-${e.id}`,onClick:()=>U(e.id),children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsx)(`span`,{className:`truncate text-sm font-semibold text-fg`,children:c}),(0,M.jsx)(`span`,{className:`rounded-full bg-surface-subtle px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:e.id}),o?(0,M.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:O.unsavedChanges}):null,e.configured?(0,M.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:O.configured}):(0,M.jsx)(`span`,{className:`rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:text-amber-300`,children:O.missingKey})]}),(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,M.jsx)(`span`,{children:l}),e.defaultModel?(0,M.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,M.jsxs)(`span`,{className:`text-fg-muted`,children:[O.defaultModel,`:`]}),` `,e.id,`/`,e.defaultModel]}):null]})]}),(0,M.jsx)(u,{className:g(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,s?`rotate-180`:`rotate-0`),"aria-hidden":`true`}),(0,M.jsx)(`span`,{className:`sr-only`,children:s?O.collapseProvider:O.expandProvider})]}),s?(0,M.jsxs)(`div`,{id:`img-provider-credentials-${e.id}`,className:`border-t border-edge px-4 py-4`,children:[a?(0,M.jsxs)(y,{to:a,className:`mb-3 inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,title:O.extensionSettingsLinkTitle,children:[(0,M.jsx)(x,{className:`size-3`}),O.openExtensionSettings]}):null,e.models.length>0?(0,M.jsxs)(`p`,{className:`mb-3 text-xs leading-relaxed text-fg-subtle`,children:[(0,M.jsxs)(`span`,{className:`text-fg-muted`,children:[O.modelsLabel,`:`]}),` `,e.models.map(t=>`${e.id}/${t}`).join(`, `)]}):null,(0,M.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,M.jsx)(ne,{providerId:e.id,value:t.apiKey,onChange:t=>f(e.id,{apiKey:t}),apiKeyLinks:p(e.id,E),apiKeyLinkLabels:D,labels:{apiKeyLabel:O.apiKeyLabel,optionalPlaceholder:O.optionalPlaceholder,maskedHelp:O.apiKeyMaskedHelp,copy:O.apiKeyCopy,copied:O.apiKeyCopied,show:O.apiKeyShow,hide:O.apiKeyHide,notInConfigFile:O.apiKeyNotInConfigFile,loadFailed:O.apiKeyRevealFailed}}),n?.regions?.length?(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-region-preset-${e.id}`,children:O.regionLabel}),(0,M.jsxs)(`select`,{id:`img-cred-region-preset-${e.id}`,className:re(),value:ie(t,n.regions),onChange:t=>{let r=t.target.value;if(r===``){f(e.id,{region:``,imageBaseUrl:``});return}if(r===F){f(e.id,{region:``,imageBaseUrl:``});return}let i=n.regions.find(e=>e.value===r);i&&f(e.id,{region:i.value,imageBaseUrl:i.imageBaseUrl})},children:[(0,M.jsx)(`option`,{value:``,children:O.regionPresetDefault}),n.regions.map(e=>(0,M.jsx)(`option`,{value:e.value,children:oe(O,e.value,e.label)},e.value)),(0,M.jsx)(`option`,{value:F,children:O.regionPresetCustom})]}),ie(t,n.regions)===F?(0,M.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,M.jsx)(`input`,{type:`text`,className:P(),value:t.region,placeholder:`region`,onChange:t=>f(e.id,{region:t.target.value})}),(0,M.jsx)(`input`,{type:`url`,className:P(),value:t.imageBaseUrl,placeholder:O.imageBaseUrlLabel,onChange:t=>f(e.id,{imageBaseUrl:t.target.value})})]}):null]}):null,n?.baseUrlPresets?.length?(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-base-preset-${e.id}`,children:se(O,n.baseUrlPresetKind)}),ce(O,n.baseUrlPresetKind)?(0,M.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:ce(O,n.baseUrlPresetKind)}):null,(0,M.jsxs)(`select`,{id:`img-cred-base-preset-${e.id}`,className:re(),value:ae(t,n.baseUrlPresets),onChange:t=>{let n=t.target.value;if(n===``){f(e.id,{baseUrl:``});return}if(n===F){f(e.id,{baseUrl:``});return}f(e.id,{baseUrl:n.replace(/\/+$/,``)})},children:[(0,M.jsx)(`option`,{value:``,children:O.baseUrlPresetDefault}),n.baseUrlPresets.map(de),(0,M.jsx)(`option`,{value:F,children:O.baseUrlPresetCustom})]}),ae(t,n.baseUrlPresets)===F?(0,M.jsx)(`input`,{type:`url`,className:g(P(),`mt-2`),value:t.baseUrl,placeholder:`https://…`,onChange:t=>f(e.id,{baseUrl:t.target.value})}):null]}):null,n?.regions?.length&&ie(t,n.regions)!==F?(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-imgbase-ro-${e.id}`,children:O.imageBaseUrlLabel}),(0,M.jsx)(`input`,{id:`img-cred-imgbase-ro-${e.id}`,type:`url`,readOnly:!0,className:g(P(),`cursor-not-allowed opacity-90`),value:t.imageBaseUrl,title:O.imageBaseUrlPresetHint}),(0,M.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:O.imageBaseUrlPresetHint})]}):null]})]}):null]},e.id)},t[58]=D,t[59]=i,t[60]=r,t[61]=v,t[62]=V,t[63]=E,t[64]=S,t[65]=O,t[66]=U,t[67]=f,t[68]=e):e=t[68],Z=n.map(e),t[46]=D,t[47]=i,t[48]=r,t[49]=v,t[50]=V,t[51]=E,t[52]=S,t[53]=n,t[54]=O,t[55]=U,t[56]=f,t[57]=Z}else Z=t[57];let Q;t[69]===Z?Q=t[70]:(Q=(0,M.jsx)(`div`,{className:`flex flex-col gap-4`,children:Z}),t[69]=Z,t[70]=Q);let $;return t[71]!==J||t[72]!==Y||t[73]!==X||t[74]!==Q?($=(0,M.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[J,Y,X,Q]}),t[71]=J,t[72]=Y,t[73]=X,t[74]=Q,t[75]=$):$=t[75],$}function de(e){return(0,M.jsx)(`option`,{value:e.value,children:e.label},e.value)}function fe(){return new Set}function pe(){return new Set}function me(e){return(e.ui?.baseUrlPresets?.length??0)>0}function he(e){return(e.ui?.regions?.length??0)>0}function ge(e){let t=c(o(e=>!!e.token)),n=t.data,r=(0,w.useMemo)(()=>e.map(e=>e.id),[e]),s=(0,w.useRef)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(!1),[p,m]=(0,w.useState)(null),[h,g]=(0,w.useState)(!1),[_,v]=(0,w.useState)(!1),y=(0,w.useMemo)(()=>E(n?.payload?.config,r),[n?.payload?.config,r]),b=l??y,x=y;return{gwSwr:t,credDraft:b,credBaseline:x,credDirty:(0,w.useMemo)(()=>JSON.stringify(b)!==JSON.stringify(x),[b,x]),credSaving:d,credError:p,credSavedFlash:h,credNoopFlash:_,updateCredRow:(0,w.useCallback)((e,t)=>{s.current=!0,u(n=>{let r=n??y,i=r[e]??T();return{...r,[e]:{...i,...t}}})},[y]),onDiscardCredentials:(0,w.useCallback)(()=>{s.current=!1,u(null),m(null),g(!1),v(!1)},[]),saveCredentials:(0,w.useCallback)(async e=>{let n=k(r,b,x);if(Object.keys(n).length===0){v(!0),window.setTimeout(()=>v(!1),2200);return}f(!0),m(null),g(!1);try{await j(n),await t.mutate?.(),a(i(S)),s.current=!1,u(null),g(!0),window.setTimeout(()=>g(!1),2e3)}catch(t){m(t instanceof Error?t.message:e)}finally{f(!1)}},[r,b,x,t])}}function _e(){return{enabled:!1,provider:`alibaba`,alibaba:{model:`paraformer-v2`},openai:{model:`whisper-1`},fallback:{enabled:!0,order:[`alibaba`,`openai`]}}}function ve(){return{enabled:!1,provider:`openai`,trigger:`always`,maxTextLength:512,timeoutMs:6e4,alibaba:{model:`qwen-tts`,voice:`Cherry`},openai:{model:`tts-1`,voice:`alloy`},edge:{voice:`en-US-MichelleNeural`},minimax:{model:`speech-2.8-hd`,voice:`male-qn-qingse`},"tts-local-cli":{command:``,outputFormat:`wav`}}}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return typeof e==`string`&&e.trim().length>0?e.trim():`alibaba`}function z(e,t,n){let r=L(e.providers)?e.providers:void 0,i=r&&L(r[t])?r[t]:void 0;return{...n,...i??{}}}function B(e){let t=_e();if(!L(e))return t;let n=R(e.provider),r=z(e,`alibaba`,t.alibaba??{}),i=z(e,`openai`,t.openai??{}),a=t.fallback??{enabled:!0,order:[`alibaba`,`openai`]};if(L(e.fallback)){let t=Array.isArray(e.fallback.order)?e.fallback.order.filter(e=>typeof e==`string`&&e.trim().length>0):a.order;a={enabled:typeof e.fallback.enabled==`boolean`?e.fallback.enabled:a.enabled,order:t.length?t:a.order}}let o=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,alibaba:r,openai:i,...o?{providers:o}:{},fallback:a}}function V(e){return typeof e==`string`&&e.trim().length>0?e.trim():`openai`}function H(e){let t=ve();if(!L(e))return t;let n=V(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`always`,i=t[`tts-local-cli`]??{},a=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,...a?{providers:a}:{},alibaba:z(e,`alibaba`,t.alibaba??{}),openai:z(e,`openai`,t.openai??{}),edge:z(e,`edge`,t.edge??{}),minimax:z(e,`minimax`,t.minimax??{}),"tts-local-cli":z(e,`tts-local-cli`,i)}}function U(e){let{alibaba:t,openai:n,providers:r,...i}=e,a={...r??{}};return t&&(a.alibaba={...a.alibaba??{},...t}),n&&(a.openai={...a.openai??{},...n}),{...i,...Object.keys(a).length>0?{providers:a}:{}}}function W(e){let{alibaba:t,openai:n,edge:r,minimax:i,"tts-local-cli":a,providers:o,...s}=e,c={...o??{}};return t&&(c.alibaba={...c.alibaba??{},...t}),n&&(c.openai={...c.openai??{},...n}),r&&(c.edge={...c.edge??{},...r}),i&&(c.minimax={...c.minimax??{},...i}),a&&(c[`tts-local-cli`]={...c[`tts-local-cli`]??{},...a}),{...s,...Object.keys(c).length>0?{providers:c}:{}}}function G(e){let t=L(e)?e:{};return{stt:B(t.stt),tts:H(t.tts)}}async function K(){return G((await s(i(`/api/config`))).payload?.config??{})}async function q(e){await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:U(e.stt),tts:W(e.tts)})}),l()}async function J(){let e=await s(i(`/api/voice/models`));if(!e.payload?.models)throw Error(`Missing voice models payload`);return e.payload.models}async function Y(){let e=await s(i(`/api/voice/providers`));if(!e.payload?.providers)throw Error(`Missing voice providers payload`);return e.payload}async function X(){let e=await s(i(`/api/voice/stt-providers`));if(!e.payload?.providers)throw Error(`Missing STT providers payload`);return e.payload}async function Z(e){let t=await s(i(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(e)});if(!t.payload)throw Error(`Missing reveal payload`);return t.payload}function Q(e){let t=(0,ee.c)(15),{kind:n,providerId:r,fieldId:i,value:a,onChange:o,labels:s,placeholder:c,className:l}=e,u=c===void 0?`sk-...`:c,d;t[0]!==n||t[1]!==r?(d=()=>Z({kind:n,provider:r}).then($),t[0]=n,t[1]=r,t[2]=d):d=t[2];let p=d,m;t[3]===l?m=t[4]:(m=g(`flex min-w-0 flex-col gap-1.5`,l),t[3]=l,t[4]=m);let h;t[5]!==i||t[6]!==s||t[7]!==o||t[8]!==u||t[9]!==p||t[10]!==a?(h=(0,M.jsx)(f,{id:i,value:a,onChange:o,placeholder:u,labels:s,reveal:p,loadFailedLabel:s.loadFailed,maskedHelp:s.maskedHelp,notInConfigFile:s.notInConfigFile,inputClassName:`text-xs`}),t[5]=i,t[6]=s,t[7]=o,t[8]=u,t[9]=p,t[10]=a,t[11]=h):h=t[11];let _;return t[12]!==m||t[13]!==h?(_=(0,M.jsx)(`div`,{className:m,children:h}),t[12]=m,t[13]=h,t[14]=_):_=t[14],_}function $(e){return e.apiKey??null}export{X as a,ge as c,S as d,K as i,I as l,J as n,G as o,Y as r,q as s,Q as t,C as u};
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./url-DPEStU4M.js";import{o as a}from"./vendor-swr-BIWyz7Rc.js";import{a as o,n as s}from"./fetch-CkvRO30i.js";import{i as c,r as l}from"./gateway-startup-retry-BkKyRDrF.js";import{$i as u,Mo as d,U as f,W as p,Xr as m,Yo as h,ci as g,ka as _,li as v,lo as y,q as b,ui as x}from"./index-CEZxETzw.js";var S=`/api/image/providers`;async function C(){return(await s(i(`/api/image/providers`)))?.payload?.providers??[]}var w=e(t(),1),ee=n();function T(){return{apiKey:``,region:``,baseUrl:``,imageBaseUrl:``}}function te(e){return e?.apiKey?`••••••••••••`:``}function E(e,t){let n=(()=>{if(!e||typeof e!=`object`||!(`providersConfig`in e))return;let t=e.providersConfig;if(!(!t||typeof t!=`object`||Array.isArray(t)))return t})(),r={};for(let e of t){let t=n?.[e];r[e]={apiKey:te(t),region:t?.region??``,baseUrl:t?.baseUrl??``,imageBaseUrl:t?.imageBaseUrl??``}}return r}function D(e,t,n){let r=e[n].trim();if(r!==t[n].trim())return r||null}function O(e,t){let n=e.trim(),r=t.trim();if(n!==r&&!(b(n)&&b(r)))return n||(r?null:void 0)}function k(e,t,n){let r={};for(let i of e){let e=t[i]??T(),a=n[i]??T();if(JSON.stringify(e)===JSON.stringify(a))continue;let o={},s=O(e.apiKey,a.apiKey);s!==void 0&&(o.apiKey=s);let c=D(e,a,`region`);c!==void 0&&(o.region=c);let l=D(e,a,`baseUrl`);l!==void 0&&(o.baseUrl=l);let u=D(e,a,`imageBaseUrl`);u!==void 0&&(o.imageBaseUrl=u),Object.keys(o).length>0&&(r[i]=o)}return r}async function A(e){let t=await s(i(`/api/image/providers/${encodeURIComponent(e)}/reveal-api-key`),{method:`POST`,headers:{"Content-Type":`application/json`},body:`{}`});if(!t.ok||!t.payload)throw Error(t.error?.message??`Reveal failed`);return t.payload}async function j(e){Object.keys(e).length!==0&&(await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({providersConfig:e})}),await l())}var M=r();function ne(e){let t=(0,ee.c)(18),{providerId:n,value:r,onChange:i,labels:a,apiKeyLinks:o,apiKeyLinkLabels:s}=e,c;t[0]===n?c=t[1]:(c=()=>A(n).then(N),t[0]=n,t[1]=c);let l=c,u=`img-cred-key-${n}`,d;t[2]!==a.apiKeyLabel||t[3]!==u?(d=(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:u,children:a.apiKeyLabel}),t[2]=a.apiKeyLabel,t[3]=u,t[4]=d):d=t[4];let f;t[5]!==s||t[6]!==o?(f=o.length>0?(0,M.jsx)(`div`,{className:`flex flex-col gap-1`,children:o.map(e=>(0,M.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex w-fit items-center gap-1 text-xs font-medium text-accent-fg hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent`,children:[p(e.kind,s),(0,M.jsx)(y,{className:`size-3`,"aria-hidden":!0})]},`${e.kind}-${e.href}`))}):null,t[5]=s,t[6]=o,t[7]=f):f=t[7];let h=`img-cred-key-${n}`,g;t[8]!==a||t[9]!==i||t[10]!==l||t[11]!==h||t[12]!==r?(g=(0,M.jsx)(m,{id:h,value:r,onChange:i,placeholder:a.optionalPlaceholder,labels:a,reveal:l,loadFailedLabel:a.loadFailed,maskedHelp:a.maskedHelp,notInConfigFile:a.notInConfigFile}),t[8]=a,t[9]=i,t[10]=l,t[11]=h,t[12]=r,t[13]=g):g=t[13];let _;return t[14]!==d||t[15]!==f||t[16]!==g?(_=(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[d,f,g]}),t[14]=d,t[15]=f,t[16]=g,t[17]=_):_=t[17],_}function N(e){return e.apiKey??null}function P(){return x(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,g)}function re(){return x(P(),`appearance-none bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat pr-9`)}var F=`__custom__`;function ie(e,t){if(!e.region.trim()&&!e.imageBaseUrl.trim())return``;let n=e.region.trim().toLowerCase();return t.some(e=>e.value===n)?n:F}function ae(e,t){let n=e.baseUrl.trim().replace(/\/+$/,``);if(!n)return``;let r=t.map(e=>e.value.replace(/\/+$/,``)).indexOf(n);return r>=0?t[r].value:F}function oe(e,t,n){return t===`beijing`?e.dashscopeRegion_beijing:t===`singapore`?e.dashscopeRegion_singapore:t===`us`?e.dashscopeRegion_us:n}function se(e,t){return t===`minimax`?e.minimaxClusterLabel:t===`fal`?e.falQueueBaseLabel:e.baseUrlLabel}function ce(e,t){return t===`minimax`?e.minimaxClusterHint:t===`fal`?e.falQueueBaseHint:null}function le(e,t){return JSON.stringify(e)!==JSON.stringify(t)}function ue(e,t){return t===1?e.modelCountOne:e.modelCountMany.replace(`{count}`,String(t))}function I(e){let t=(0,ee.c)(76),{summaries:n,credDraft:r,credBaseline:i,credDirty:a,credSaving:o,credError:s,credSavedFlash:c,credNoopFlash:l,updateCredRow:p,onDiscardCredentials:m,onSaveCredentials:g,extensionIds:b,showExtensionLinks:S,showImageModelsLink:C,hideActions:te,language:E,apiKeyLinkLabels:D,messages:O}=e,k=te===void 0?!1:te,A;t[0]===n?A=t[1]:(A=n.some(he),t[0]=n,t[1]=A);let j=A,N;t[2]===n?N=t[3]:(N=n.some(me),t[2]=n,t[3]=N);let I=N,[ge,_e]=(0,w.useState)(pe),[ve,L]=(0,w.useState)(fe),R;if(t[4]!==i||t[5]!==r||t[6]!==n){R=new Set;for(let e of n)le(r[e.id]??T(),i[e.id]??T())&&R.add(e.id);t[4]=i,t[5]=r,t[6]=n,t[7]=R}else R=t[7];let z=R,B;t[8]!==z||t[9]!==ve||t[10]!==ge?(B=e=>ve.has(e)?!1:ge.has(e)?!0:z.has(e),t[8]=z,t[9]=ve,t[10]=ge,t[11]=B):B=t[11];let V=B,H;t[12]===V?H=t[13]:(H=e=>{if(V(e)){L(t=>new Set(t).add(e)),_e(t=>{let n=new Set(t);return n.delete(e),n});return}L(t=>{let n=new Set(t);return n.delete(e),n}),_e(t=>new Set(t).add(e))},t[12]=V,t[13]=H);let U=H;if(n.length===0)return null;let W;t[14]===O.credentialsIntro?W=t[15]:(W=(0,M.jsx)(`p`,{children:O.credentialsIntro}),t[14]=O.credentialsIntro,t[15]=W);let G;t[16]!==j||t[17]!==O.regionHint?(G=j?(0,M.jsx)(`p`,{className:`text-fg-subtle`,children:O.regionHint}):null,t[16]=j,t[17]=O.regionHint,t[18]=G):G=t[18];let K;t[19]!==I||t[20]!==O.endpointPresetsHint?(K=I?(0,M.jsx)(`p`,{className:`text-fg-subtle`,children:O.endpointPresetsHint}):null,t[19]=I,t[20]=O.endpointPresetsHint,t[21]=K):K=t[21];let q;t[22]!==C||t[23]!==O.imageModelsLinkTitle||t[24]!==O.openImageModelsPage?(q=C?(0,M.jsx)(`p`,{children:(0,M.jsx)(h,{to:`/settings/credentials?tab=image-models`,className:`font-medium text-accent hover:underline`,title:O.imageModelsLinkTitle,children:O.openImageModelsPage})}):null,t[22]=C,t[23]=O.imageModelsLinkTitle,t[24]=O.openImageModelsPage,t[25]=q):q=t[25];let J;t[26]!==W||t[27]!==G||t[28]!==K||t[29]!==q?(J=(0,M.jsxs)(`div`,{className:`flex flex-col gap-1 text-xs leading-relaxed text-fg-muted`,children:[W,G,K,q]}),t[26]=W,t[27]=G,t[28]=K,t[29]=q,t[30]=J):J=t[30];let Y;t[31]===s?Y=t[32]:(Y=s?(0,M.jsx)(`div`,{className:`rounded-lg border border-red-500/30 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:s}):null,t[31]=s,t[32]=Y);let X;t[33]!==a||t[34]!==l||t[35]!==c||t[36]!==o||t[37]!==k||t[38]!==m||t[39]!==g||t[40]!==O.credentialsNothingToSave||t[41]!==O.credentialsSaved||t[42]!==O.discardCredentials||t[43]!==O.saveCredentials||t[44]!==O.savingCredentials?(X=k?null:(0,M.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[c?(0,M.jsx)(`span`,{className:`text-sm text-fg-muted`,children:O.credentialsSaved}):null,l?(0,M.jsx)(`span`,{className:`text-sm text-fg-muted`,children:O.credentialsNothingToSave}):null,(0,M.jsx)(v,{type:`button`,variant:`secondary`,onClick:m,disabled:!a||o,children:O.discardCredentials}),(0,M.jsx)(v,{type:`button`,variant:`primary`,onClick:g,disabled:!a||o,children:o?(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(_,{className:`size-3.5 animate-spin`}),(0,M.jsx)(`span`,{className:`ml-1.5`,children:O.savingCredentials})]}):(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(u,{className:`size-3.5`}),(0,M.jsx)(`span`,{className:`ml-1.5`,children:O.saveCredentials})]})})]}),t[33]=a,t[34]=l,t[35]=c,t[36]=o,t[37]=k,t[38]=m,t[39]=g,t[40]=O.credentialsNothingToSave,t[41]=O.credentialsSaved,t[42]=O.discardCredentials,t[43]=O.saveCredentials,t[44]=O.savingCredentials,t[45]=X):X=t[45];let Z;if(t[46]!==D||t[47]!==i||t[48]!==r||t[49]!==b||t[50]!==V||t[51]!==E||t[52]!==S||t[53]!==n||t[54]!==O||t[55]!==U||t[56]!==p){let e;t[58]!==D||t[59]!==i||t[60]!==r||t[61]!==b||t[62]!==V||t[63]!==E||t[64]!==S||t[65]!==O||t[66]!==U||t[67]!==p?(e=e=>{let t=r[e.id]??T(),n=e.ui,a=S&&b.has(e.id)?`/settings/ext/${encodeURIComponent(e.id)}`:null,o=le(t,i[e.id]??T()),s=V(e.id),c=e.label??e.id,l=ue(O,e.models.length);return(0,M.jsxs)(`section`,{className:x(`overflow-hidden rounded-xl border bg-surface-panel shadow-sm transition-colors dark:shadow-none`,o?`border-accent/50`:`border-edge`),children:[(0,M.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-3 px-4 py-3 text-left hover:bg-surface-hover/70`,"aria-expanded":s,"aria-controls":`img-provider-credentials-${e.id}`,onClick:()=>U(e.id),children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,M.jsx)(`span`,{className:`truncate text-sm font-semibold text-fg`,children:c}),(0,M.jsx)(`span`,{className:`rounded-full bg-surface-subtle px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:e.id}),o?(0,M.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:O.unsavedChanges}):null,e.configured?(0,M.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:O.configured}):(0,M.jsx)(`span`,{className:`rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:text-amber-300`,children:O.missingKey})]}),(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,M.jsx)(`span`,{children:l}),e.defaultModel?(0,M.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,M.jsxs)(`span`,{className:`text-fg-muted`,children:[O.defaultModel,`:`]}),` `,e.id,`/`,e.defaultModel]}):null]})]}),(0,M.jsx)(d,{className:x(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,s?`rotate-180`:`rotate-0`),"aria-hidden":`true`}),(0,M.jsx)(`span`,{className:`sr-only`,children:s?O.collapseProvider:O.expandProvider})]}),s?(0,M.jsxs)(`div`,{id:`img-provider-credentials-${e.id}`,className:`border-t border-edge px-4 py-4`,children:[a?(0,M.jsxs)(h,{to:a,className:`mb-3 inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,title:O.extensionSettingsLinkTitle,children:[(0,M.jsx)(y,{className:`size-3`}),O.openExtensionSettings]}):null,e.models.length>0?(0,M.jsxs)(`p`,{className:`mb-3 text-xs leading-relaxed text-fg-subtle`,children:[(0,M.jsxs)(`span`,{className:`text-fg-muted`,children:[O.modelsLabel,`:`]}),` `,e.models.map(t=>`${e.id}/${t}`).join(`, `)]}):null,(0,M.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,M.jsx)(ne,{providerId:e.id,value:t.apiKey,onChange:t=>p(e.id,{apiKey:t}),apiKeyLinks:f(e.id,E),apiKeyLinkLabels:D,labels:{apiKeyLabel:O.apiKeyLabel,optionalPlaceholder:O.optionalPlaceholder,maskedHelp:O.apiKeyMaskedHelp,copy:O.apiKeyCopy,copied:O.apiKeyCopied,show:O.apiKeyShow,hide:O.apiKeyHide,notInConfigFile:O.apiKeyNotInConfigFile,loadFailed:O.apiKeyRevealFailed}}),n?.regions?.length?(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-region-preset-${e.id}`,children:O.regionLabel}),(0,M.jsxs)(`select`,{id:`img-cred-region-preset-${e.id}`,className:re(),value:ie(t,n.regions),onChange:t=>{let r=t.target.value;if(r===``){p(e.id,{region:``,imageBaseUrl:``});return}if(r===F){p(e.id,{region:``,imageBaseUrl:``});return}let i=n.regions.find(e=>e.value===r);i&&p(e.id,{region:i.value,imageBaseUrl:i.imageBaseUrl})},children:[(0,M.jsx)(`option`,{value:``,children:O.regionPresetDefault}),n.regions.map(e=>(0,M.jsx)(`option`,{value:e.value,children:oe(O,e.value,e.label)},e.value)),(0,M.jsx)(`option`,{value:F,children:O.regionPresetCustom})]}),ie(t,n.regions)===F?(0,M.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,M.jsx)(`input`,{type:`text`,className:P(),value:t.region,placeholder:`region`,onChange:t=>p(e.id,{region:t.target.value})}),(0,M.jsx)(`input`,{type:`url`,className:P(),value:t.imageBaseUrl,placeholder:O.imageBaseUrlLabel,onChange:t=>p(e.id,{imageBaseUrl:t.target.value})})]}):null]}):null,n?.baseUrlPresets?.length?(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-base-preset-${e.id}`,children:se(O,n.baseUrlPresetKind)}),ce(O,n.baseUrlPresetKind)?(0,M.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:ce(O,n.baseUrlPresetKind)}):null,(0,M.jsxs)(`select`,{id:`img-cred-base-preset-${e.id}`,className:re(),value:ae(t,n.baseUrlPresets),onChange:t=>{let n=t.target.value;if(n===``){p(e.id,{baseUrl:``});return}if(n===F){p(e.id,{baseUrl:``});return}p(e.id,{baseUrl:n.replace(/\/+$/,``)})},children:[(0,M.jsx)(`option`,{value:``,children:O.baseUrlPresetDefault}),n.baseUrlPresets.map(de),(0,M.jsx)(`option`,{value:F,children:O.baseUrlPresetCustom})]}),ae(t,n.baseUrlPresets)===F?(0,M.jsx)(`input`,{type:`url`,className:x(P(),`mt-2`),value:t.baseUrl,placeholder:`https://…`,onChange:t=>p(e.id,{baseUrl:t.target.value})}):null]}):null,n?.regions?.length&&ie(t,n.regions)!==F?(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,M.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-imgbase-ro-${e.id}`,children:O.imageBaseUrlLabel}),(0,M.jsx)(`input`,{id:`img-cred-imgbase-ro-${e.id}`,type:`url`,readOnly:!0,className:x(P(),`cursor-not-allowed opacity-90`),value:t.imageBaseUrl,title:O.imageBaseUrlPresetHint}),(0,M.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:O.imageBaseUrlPresetHint})]}):null]})]}):null]},e.id)},t[58]=D,t[59]=i,t[60]=r,t[61]=b,t[62]=V,t[63]=E,t[64]=S,t[65]=O,t[66]=U,t[67]=p,t[68]=e):e=t[68],Z=n.map(e),t[46]=D,t[47]=i,t[48]=r,t[49]=b,t[50]=V,t[51]=E,t[52]=S,t[53]=n,t[54]=O,t[55]=U,t[56]=p,t[57]=Z}else Z=t[57];let Q;t[69]===Z?Q=t[70]:(Q=(0,M.jsx)(`div`,{className:`flex flex-col gap-4`,children:Z}),t[69]=Z,t[70]=Q);let $;return t[71]!==J||t[72]!==Y||t[73]!==X||t[74]!==Q?($=(0,M.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[J,Y,X,Q]}),t[71]=J,t[72]=Y,t[73]=X,t[74]=Q,t[75]=$):$=t[75],$}function de(e){return(0,M.jsx)(`option`,{value:e.value,children:e.label},e.value)}function fe(){return new Set}function pe(){return new Set}function me(e){return(e.ui?.baseUrlPresets?.length??0)>0}function he(e){return(e.ui?.regions?.length??0)>0}function ge(e){let t=c(o(e=>!!e.token)),n=t.data,r=(0,w.useMemo)(()=>e.map(e=>e.id),[e]),s=(0,w.useRef)(!1),[l,u]=(0,w.useState)(null),[d,f]=(0,w.useState)(!1),[p,m]=(0,w.useState)(null),[h,g]=(0,w.useState)(!1),[_,v]=(0,w.useState)(!1),y=(0,w.useMemo)(()=>E(n?.payload?.config,r),[n?.payload?.config,r]),b=l??y,x=y;return{gwSwr:t,credDraft:b,credBaseline:x,credDirty:(0,w.useMemo)(()=>JSON.stringify(b)!==JSON.stringify(x),[b,x]),credSaving:d,credError:p,credSavedFlash:h,credNoopFlash:_,updateCredRow:(0,w.useCallback)((e,t)=>{s.current=!0,u(n=>{let r=n??y,i=r[e]??T();return{...r,[e]:{...i,...t}}})},[y]),onDiscardCredentials:(0,w.useCallback)(()=>{s.current=!1,u(null),m(null),g(!1),v(!1)},[]),saveCredentials:(0,w.useCallback)(async e=>{let n=k(r,b,x);if(Object.keys(n).length===0){v(!0),window.setTimeout(()=>v(!1),2200);return}f(!0),m(null),g(!1);try{await j(n),await t.mutate?.(),a(i(S)),s.current=!1,u(null),g(!0),window.setTimeout(()=>g(!1),2e3)}catch(t){m(t instanceof Error?t.message:e)}finally{f(!1)}},[r,b,x,t])}}function _e(){return{enabled:!1,provider:`alibaba`,alibaba:{model:`paraformer-v2`},openai:{model:`whisper-1`},fallback:{enabled:!0,order:[`alibaba`,`openai`]}}}function ve(){return{enabled:!1,provider:`openai`,trigger:`always`,maxTextLength:512,timeoutMs:6e4,alibaba:{model:`qwen-tts`,voice:`Cherry`},openai:{model:`tts-1`,voice:`alloy`},edge:{voice:`en-US-MichelleNeural`},minimax:{model:`speech-2.8-hd`,voice:`male-qn-qingse`},"tts-local-cli":{command:``,outputFormat:`wav`}}}function L(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function R(e){return typeof e==`string`&&e.trim().length>0?e.trim():`alibaba`}function z(e,t,n){let r=L(e.providers)?e.providers:void 0,i=r&&L(r[t])?r[t]:void 0;return{...n,...i??{}}}function B(e){let t=_e();if(!L(e))return t;let n=R(e.provider),r=z(e,`alibaba`,t.alibaba??{}),i=z(e,`openai`,t.openai??{}),a=t.fallback??{enabled:!0,order:[`alibaba`,`openai`]};if(L(e.fallback)){let t=Array.isArray(e.fallback.order)?e.fallback.order.filter(e=>typeof e==`string`&&e.trim().length>0):a.order;a={enabled:typeof e.fallback.enabled==`boolean`?e.fallback.enabled:a.enabled,order:t.length?t:a.order}}let o=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,alibaba:r,openai:i,...o?{providers:o}:{},fallback:a}}function V(e){return typeof e==`string`&&e.trim().length>0?e.trim():`openai`}function H(e){let t=ve();if(!L(e))return t;let n=V(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`always`,i=t[`tts-local-cli`]??{},a=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,...a?{providers:a}:{},alibaba:z(e,`alibaba`,t.alibaba??{}),openai:z(e,`openai`,t.openai??{}),edge:z(e,`edge`,t.edge??{}),minimax:z(e,`minimax`,t.minimax??{}),"tts-local-cli":z(e,`tts-local-cli`,i)}}function U(e){let{alibaba:t,openai:n,providers:r,...i}=e,a={...r??{}};return t&&(a.alibaba={...a.alibaba??{},...t}),n&&(a.openai={...a.openai??{},...n}),{...i,...Object.keys(a).length>0?{providers:a}:{}}}function W(e){let{alibaba:t,openai:n,edge:r,minimax:i,"tts-local-cli":a,providers:o,...s}=e,c={...o??{}};return t&&(c.alibaba={...c.alibaba??{},...t}),n&&(c.openai={...c.openai??{},...n}),r&&(c.edge={...c.edge??{},...r}),i&&(c.minimax={...c.minimax??{},...i}),a&&(c[`tts-local-cli`]={...c[`tts-local-cli`]??{},...a}),{...s,...Object.keys(c).length>0?{providers:c}:{}}}function G(e){let t=L(e)?e:{};return{stt:B(t.stt),tts:H(t.tts)}}async function K(){return G((await s(i(`/api/config`))).payload?.config??{})}async function q(e){await s(i(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:U(e.stt),tts:W(e.tts)})}),l()}async function J(){let e=await s(i(`/api/voice/models`));if(!e.payload?.models)throw Error(`Missing voice models payload`);return e.payload.models}async function Y(){let e=await s(i(`/api/voice/providers`));if(!e.payload?.providers)throw Error(`Missing voice providers payload`);return e.payload}async function X(){let e=await s(i(`/api/voice/stt-providers`));if(!e.payload?.providers)throw Error(`Missing STT providers payload`);return e.payload}async function Z(e){let t=await s(i(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(e)});if(!t.payload)throw Error(`Missing reveal payload`);return t.payload}function Q(e){let t=(0,ee.c)(15),{kind:n,providerId:r,fieldId:i,value:a,onChange:o,labels:s,placeholder:c,className:l}=e,u=c===void 0?`sk-...`:c,d;t[0]!==n||t[1]!==r?(d=()=>Z({kind:n,provider:r}).then($),t[0]=n,t[1]=r,t[2]=d):d=t[2];let f=d,p;t[3]===l?p=t[4]:(p=x(`flex min-w-0 flex-col gap-1.5`,l),t[3]=l,t[4]=p);let h;t[5]!==i||t[6]!==s||t[7]!==o||t[8]!==u||t[9]!==f||t[10]!==a?(h=(0,M.jsx)(m,{id:i,value:a,onChange:o,placeholder:u,labels:s,reveal:f,loadFailedLabel:s.loadFailed,maskedHelp:s.maskedHelp,notInConfigFile:s.notInConfigFile,inputClassName:`text-xs`}),t[5]=i,t[6]=s,t[7]=o,t[8]=u,t[9]=f,t[10]=a,t[11]=h):h=t[11];let g;return t[12]!==p||t[13]!==h?(g=(0,M.jsx)(`div`,{className:p,children:h}),t[12]=p,t[13]=h,t[14]=g):g=t[14],g}function $(e){return e.apiKey??null}export{X as a,ge as c,S as d,K as i,I as l,J as n,G as o,Y as r,q as s,Q as t,C as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{c as e,er as t,l as n}from"./index-CEZxETzw.js";function r(e){return e===`zh`?`zh`:`en`}function i(e,t){let n=r(t),i=n===`en`?void 0:e.metadata.i18n?.[n],a=i?.examplePrompts&&i.examplePrompts.length>0?i.examplePrompts:e.metadata.examplePrompts??[];return{description:o(i?.description,e.description),whenToUse:s(i?.whenToUse,e.metadata.whenToUse),examplePrompts:a}}function a(e){return[e.name,e.title,e.description,e.metadata.whenToUse??``,...(e.metadata.examplePrompts??[]).map(e=>e.text),...Object.values(e.metadata.i18n??{}).flatMap(e=>[e.description??``,e.whenToUse??``,...(e.examplePrompts??[]).map(e=>e.text)]),...e.metadata.tags].join(` `).toLowerCase()}function o(e,t){return e?.trim()||t}function s(e,t){return e?.trim()||t?.trim()||void 0}function c(e,t,n){if(e.field===`goal`){t(e.text);return}n(t=>({...t,[e.field]:e.text}))}function l(e,t){return e.replace(/\{\{(\w+)\}\}/g,(e,n)=>String(t[n]??``))}function u(e,t){return e?new Intl.DateTimeFormat(t,{month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`}).format(new Date(e)):`—`}function d(e){if(!e||!Number.isFinite(e))return`—`;let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;if(n<60)return r?`${n}m ${r}s`:`${n}m`;let i=Math.floor(n/60),a=n%60;return a?`${i}h ${a}m`:`${i}h`}function f(e){return e===`succeeded`?`bg-emerald-500/15 text-emerald-700 dark:text-emerald-300`:e===`failed`||e===`timeout`?`bg-red-500/15 text-red-700 dark:text-red-300`:e===`cancelled`?`bg-amber-500/15 text-amber-700 dark:text-amber-300`:`bg-accent-soft text-accent-fg`}function p(t){let r=t.metadata.tags.map(e=>e.toLowerCase());for(let t of e)if(n[t].some(e=>r.includes(e)))return t;return null}function m(e,t){if(t===`all`)return!0;let r=e.metadata.tags.map(e=>e.toLowerCase());return n[t].some(e=>r.includes(e))}function h(t){let n=new Map;for(let e of t){let t=p(e)??`uncategorized`,r=n.get(t)??[];r.push(e),n.set(t,r)}let r=[];for(let t of e){let e=n.get(t);e?.length&&r.push({category:t,items:e})}let i=n.get(`uncategorized`);return i?.length&&r.push({category:`uncategorized`,items:i}),r}function g(e,t){return t===`all`?!0:t===`builtin`?e.metadata.builtIn:e.metadata.source===`user`}function _(e,t,n,r){let i=t.trim().toLowerCase();return e.filter(e=>!m(e,n)||!g(e,r)?!1:i?a(e).includes(i):!0)}function v(e){if(e==null)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function y(e){if(e==null)return e;if(typeof e==`object`&&e&&`raw`in e){let t=e.raw;return t===void 0?e:t}return e}function b(e){let n=e.run.metadata?.sessionKey?.trim();return n&&t(n)?n:null}function x(e){return`/chat/${encodeURIComponent(e)}`}function S(e){let t=e.source;return t&&typeof t==`object`&&`kind`in t&&typeof t.kind==`string`?t.kind:e.metadata?.triggerSource?.trim()||`unknown`}function C(e,t){let n=t.trim();return!n||n===`all`?!0:S(e)===n}function w(e){let t={};for(let[n,r]of Object.entries(e)){let e=r.trim();e&&(t[n]=e)}return Object.keys(t).length>0?t:void 0}export{h as a,b as c,v as d,x as f,u as i,C as l,i as m,_ as n,l as o,c as p,d as r,y as s,w as t,f as u};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{i,o as a}from"./url-DPEStU4M.js";import{i as o}from"./vendor-swr-BIWyz7Rc.js";import{t as s}from"./copy-Dv6d4Dvw.js";import{a as c}from"./fetch-CkvRO30i.js";import{Bi as l,C as u,Cr as d,D as f,Dr as p,E as m,Er as h,It as g,Lo as _,Mo as v,No as y,O as b,Oi as x,Or as S,Qo as C,Ri as w,Rr as T,S as E,Si as D,Sr as O,T as k,To as A,Tr as j,Ui as ee,Va as M,Yi as N,Zr as te,_ as ne,_i as P,a as F,b as re,ca as ie,d as ae,es as I,f as L,fi as R,fo as z,g as B,h as V,i as H,kt as U,li as W,m as oe,na as G,o as K,r as se,s as ce,ta as q,ti as le,to as J,u as ue,ua as de,ui as Y,uo as fe,v as pe,va as me,w as he,wa as ge,wr as _e,x as ve,y as ye}from"./index-CEZxETzw.js";import{a as be,c as xe,d as Se,f as Ce,i as we,l as Te,m as Ee,n as De,o as X,p as Oe,r as ke,s as Ae,t as je,u as Me}from"./workflow-page.utils-D4sqR0yX.js";var Z=e(t(),1),Q=n(),Ne=[`queued`,`running`,`succeeded`,`attention`],Pe=10080*60*1e3,Fe=new Set([`failed`,`timeout`,`cancelled`]);function Ie(e){return e.metadata?.sessionKey?.trim()||null}function Le(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function Re(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 ze(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||Re(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||Re(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?Le(n,t):null}function Be(e,t=90){return ze(e,t)??Le(e.title?.trim()||e.definitionId,t)}function Ve(e,t=44){return Le(e.title?.trim()||e.definitionId,t)}function He(e,t){let n=t.trim().toLowerCase();return n?[ze(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function Ue(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!Te(e,t.triggerFilter??`all`)?!1:He(e,t.searchQuery))}function We(e){return e.completedAtMs??e.createdAtMs}function Ge(e,t){return t-We(e)<=Pe}function Ke(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?Ge(e,t)?`succeeded`:null:Fe.has(e.status)?`attention`:null}function qe(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)=>We(t)-We(e))}function Je(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=Ke(r,t);e&&n[e].push(r)}let r=qe(`succeeded`,n.succeeded),i=r.length,a=r.slice(0,20),o=Math.max(0,i-20);return Ne.map(e=>e===`succeeded`?{id:e,runs:a,totalInWindow:i,hiddenByCap:o}:{id:e,runs:qe(e,n[e])})}var Ye=new Map;function Xe(e){let t=Ye.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),Ye.set(e,t)),t}function Ze(e,t,n){let r=Math.round((t-e)/1e3),i=Xe(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 Qe(e){return e.status===`queued`||e.status===`running`}function $e(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),et=(0,Z.memo)(function(e){let t=(0,Q.c)(65),{run:n,language:r,localeTag:i,nowMs:o,selected:s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h;t[0]===n?h=t[1]:(h=Ie(n),t[0]=n,t[1]=h);let g=!h,_;t[2]===n?_=t[3]:(_=Qe(n),t[2]=n,t[3]=_);let v=_,y=n.status===`running`||n.status===`queued`,b;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(b=n.metrics.agentCount>0?Math.round(n.metrics.doneAgentCount/n.metrics.agentCount*100):0,t[4]=n.metrics.agentCount,t[5]=n.metrics.doneAgentCount,t[6]=b):b=t[6];let x=b,S=n.metrics.errorAgentCount>0,C=n.startedAtMs??n.createdAtMs,w=ke(v?o-C:n.metrics.durationMs),T=X(f.taskArtifacts,{count:n.metrics.artifactCount}),E;t[7]===n?E=t[8]:(E=Be(n),t[7]=n,t[8]=E);let O=E,k;t[9]===n?k=t[10]:(k=Ve(n),t[9]=n,t[10]=k);let A=k,j;t[11]!==c||t[12]!==n?(j=()=>{c(n)},t[11]=c,t[12]=n,t[13]=j):j=t[13];let ee=j,M;t[14]!==g||t[15]!==l||t[16]!==n?(M=()=>{g||l(n)},t[14]=g,t[15]=l,t[16]=n,t[17]=M):M=t[17];let N=M,te=s?`border-accent/70 ring-1 ring-accent/30`:`border-edge`,ne;t[18]===te?ne=t[19]:(ne=Y(`group relative overflow-hidden rounded-xl border bg-surface-panel p-3.5 transition-colors`,te,`hover:border-edge-strong hover:bg-surface-hover/50`),t[18]=te,t[19]=ne);let P;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(P=Y(`w-full text-left`,le.focusRingPanel),t[20]=P):P=t[20];let F;t[21]===O?F=t[22]:(F=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:O}),t[21]=O,t[22]=F);let re;t[23]===A?re=t[24]:(re=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:A}),t[23]=A,t[24]=re);let ie;t[25]!==F||t[26]!==re?(ie=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[F,re]}),t[25]=F,t[26]=re,t[27]=ie):ie=t[27];let ae;t[28]===n.status?ae=t[29]:(ae=Y(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,Me(n.status)),t[28]=n.status,t[29]=ae);let I;t[30]!==i||t[31]!==o||t[32]!==C?(I=Ze(C,o,i),t[30]=i,t[31]=o,t[32]=C,t[33]=I):I=t[33];let L;t[34]===I?L=t[35]:(L=(0,$.jsx)(`span`,{children:I}),t[34]=I,t[35]=L);let R=w===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:X(f.taskElapsed,{duration:w})})]}),z;t[36]!==L||t[37]!==R?(z=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[L,R]}),t[36]=L,t[37]=R,t[38]=z):z=t[38];let B=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:T}):null,V=s?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:f.taskOpenDetails}):null,H;t[39]!==B||t[40]!==V?(H=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[B,V]}),t[39]=B,t[40]=V,t[41]=H):H=t[41];let U;t[42]===m?U=t[43]:(U=()=>m(nt),t[42]=m,t[43]=U);let oe;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(oe=(0,$.jsx)(fe,{className:`size-4`,"aria-hidden":!0}),t[44]=oe):oe=t[44];let G;t[45]!==f.taskActionsAria||t[46]!==p||t[47]!==U?(G=(0,$.jsx)(W,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":f.taskActionsAria,"aria-expanded":p,onClick:U,children:oe}),t[45]=f.taskActionsAria,t[46]=p,t[47]=U,t[48]=G):G=t[48];let K;t[49]!==v||t[50]!==g||t[51]!==N||t[52]!==f.cancel||t[53]!==f.continueInChat||t[54]!==f.rerun||t[55]!==f.taskCloseMenu||t[56]!==p||t[57]!==u||t[58]!==d||t[59]!==n||t[60]!==m?(K=p?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":f.taskCloseMenu,onClick:()=>m(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[(0,$.jsx)(tt,{label:f.continueInChat,disabled:g,onClick:()=>{m(!1),N()}}),v?(0,$.jsx)(tt,{label:f.cancel,tone:`danger`,onClick:()=>{m(!1),u(n.id)}}):null,$e(n)?(0,$.jsx)(tt,{label:f.rerun,onClick:()=>{m(!1),d(n.id)}}):null]})]}):null,t[49]=v,t[50]=g,t[51]=N,t[52]=f.cancel,t[53]=f.continueInChat,t[54]=f.rerun,t[55]=f.taskCloseMenu,t[56]=p,t[57]=u,t[58]=d,t[59]=n,t[60]=m,t[61]=K):K=t[61];let se;return t[62]!==G||t[63]!==K?(se=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[G,K]}),t[62]=G,t[63]=K,t[64]=se):se=t[64],(0,$.jsxs)(`div`,{className:ne,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:ee,"aria-label":`${f.taskOpenDetails}: ${O}`,"aria-current":s?`true`:void 0,className:P,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[ie,(0,$.jsx)(`span`,{className:ae,children:f.status[n.status]??n.status})]}),z]}),y?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:X(f.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[x,`%`]})]}),(0,$.jsx)(`div`,{className:`mt-1.5 h-1.5 overflow-hidden rounded-full bg-surface-hover`,children:(0,$.jsx)(`div`,{className:`h-full rounded-full bg-accent transition-all`,style:{width:`${x}%`}})})]}):null,H,S?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(D,{className:`size-3 shrink-0`,"aria-hidden":!0}),X(f.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),se]})});function tt(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:i,onClick:a}=e,o=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,s=i===`danger`&&!r&&`text-red-600 dark:text-red-300`,c;t[0]!==o||t[1]!==s?(c=Y(`block w-full px-3 py-1.5 text-left text-xs`,o,s),t[0]=o,t[1]=s,t[2]=c):c=t[2];let l;return t[3]!==r||t[4]!==n||t[5]!==a||t[6]!==c?(l=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:a,className:c,children:n}),t[3]=r,t[4]=n,t[5]=a,t[6]=c,t[7]=l):l=t[7],l}function nt(e){return!e}function rt(e,t){return t.boardColumns[e]}var it=(0,Z.memo)(function(e){let t=(0,Q.c)(14),{column:n,language:r,localeTag:i,nowMs:o,selectedRunId:s,onOpenRun:c,onOpenRunChat:l,onCancelRun:u,onRetryRun:d}=e,f=a(r).workflows,[p,m]=(0,Z.useState)(!1),h=n.id===`succeeded`,g=h?5:n.runs.length,_;t[0]!==g||t[1]!==n.runs||t[2]!==p||t[3]!==h?(_=h&&!p?n.runs.slice(0,g):n.runs,t[0]=g,t[1]=n.runs,t[2]=p,t[3]=h,t[4]=_):_=t[4];let v=_,y=h&&n.runs.length>5&&!p,b=h&&p,x;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(x=Y(`flex min-h-112 w-73 shrink-0 snap-center flex-col rounded-2xl border border-edge bg-surface-panel/40`),t[5]=x):x=t[5];let S;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,$.jsx)(`span`,{className:`size-2 rounded-full bg-accent`,"aria-hidden":!0}),t[6]=S):S=t[6];let C;t[7]===n.runs.length?C=t[8]:(C=(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2.5 py-1 text-xs font-semibold tabular-nums text-fg-muted`,children:n.runs.length}),t[7]=n.runs.length,t[8]=C);let w=v.length===0?(0,$.jsx)(`div`,{className:`flex min-h-32 items-center justify-center rounded-xl border border-dashed border-edge bg-surface-panel/40 px-4 py-6 text-center text-xs text-fg-subtle`,children:f.boardColumnEmpty}):v.map(e=>(0,$.jsx)(et,{run:e,language:r,localeTag:i,nowMs:o,selected:e.id===s,onOpen:c,onOpenChat:l,onCancel:u,onRetry:d},e.id)),T=y?(0,$.jsx)(W,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!0),children:X(f.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,E=b?(0,$.jsx)(W,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>m(!1),children:f.boardCollapseSucceeded}):null,D=h&&(n.hiddenByCap??0)>0?(0,$.jsx)(`p`,{className:`px-1 text-center text-[11px] text-fg-subtle`,children:X(f.boardSucceededCapHint,{count:n.hiddenByCap??0})}):null,O;return t[9]!==w||t[10]!==T||t[11]!==E||t[12]!==D?(O=(0,$.jsxs)(`div`,{className:`flex flex-1 flex-col gap-3 p-2.5`,children:[w,T,E,D]}),t[9]=w,t[10]=T,t[11]=E,t[12]=D,t[13]=O):O=t[13],(0,$.jsxs)(`section`,{className:x,"aria-label":rt(n.id,f),children:[(0,$.jsxs)(`header`,{className:`sticky top-0 z-10 flex items-center justify-between gap-2 rounded-t-2xl border-b border-edge-subtle bg-surface-panel/90 px-3.5 py-3 backdrop-blur`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[S,(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:rt(n.id,f)})]}),C]}),O]})}),at=(0,Z.memo)(function(e){let t=(0,Q.c)(45),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m,onStart:h}=e,g;t[0]===n?g=t[1]:(g=n.some(ot),t[0]=n,t[1]=g);let _=g,[v,y]=(0,Z.useState)(st),b,x;t[2]===_?(b=t[3],x=t[4]):(b=()=>{if(!_)return;let e=window.setInterval(()=>y(Date.now()),1e3);return()=>window.clearInterval(e)},x=[_],t[2]=_,t[3]=b,t[4]=x),(0,Z.useEffect)(b,x);let S;t[5]!==v||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(S=Je(Ue(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),v),t[5]=v,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=S):S=t[10];let C=S,w=C.reduce(ct,0);if(u&&w===0){let e;return t[11]===a.loading?e=t[12]:(e=(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:a.loading}),t[11]=a.loading,t[12]=e),e}if(!u&&w===0){let e;t[13]===a.boardEmptyTitle?e=t[14]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[13]=a.boardEmptyTitle,t[14]=e);let n;t[15]===a.boardEmptyHint?n=t[16]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[15]=a.boardEmptyHint,t[16]=n);let r;t[17]!==a.boardStart||t[18]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(W,{variant:`primary`,onClick:h,children:a.boardStart})}),t[17]=a.boardStart,t[18]=h,t[19]=r):r=t[19];let i;return t[20]!==e||t[21]!==n||t[22]!==r?(i=(0,$.jsxs)(`div`,{className:`rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[20]=e,t[21]=n,t[22]=r,t[23]=i):i=t[23],i}let T;if(t[24]!==C||t[25]!==r||t[26]!==i||t[27]!==v||t[28]!==p||t[29]!==d||t[30]!==f||t[31]!==m||t[32]!==l){let e;t[34]!==r||t[35]!==i||t[36]!==v||t[37]!==p||t[38]!==d||t[39]!==f||t[40]!==m||t[41]!==l?(e=e=>(0,$.jsx)(it,{column:e,language:r,localeTag:i,nowMs:v,selectedRunId:l,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[34]=r,t[35]=i,t[36]=v,t[37]=p,t[38]=d,t[39]=f,t[40]=m,t[41]=l,t[42]=e):e=t[42],T=C.map(e),t[24]=C,t[25]=r,t[26]=i,t[27]=v,t[28]=p,t[29]=d,t[30]=f,t[31]=m,t[32]=l,t[33]=T}else T=t[33];let E;return t[43]===T?E=t[44]:(E=(0,$.jsx)(`div`,{className:`-mx-1 flex min-w-0 snap-x snap-mandatory gap-3 overflow-x-auto px-1 pb-2`,children:T}),t[43]=T,t[44]=E),E});function ot(e){return e.status===`queued`||e.status===`running`}function st(){return Date.now()}function ct(e,t){return e+t.runs.length}function lt(e){let t=(0,Q.c)(57),{open:n,definition:r,language:i,onClose:o,onRun:s}=e,c;t[0]===i?c=t[1]:(c=a(i),t[0]=i,t[1]=c);let l=c.workflows;if(!r)return null;let u;t[2]!==r||t[3]!==i?(u=Ee(r,i),t[2]=r,t[3]=i,t[4]=u):u=t[4];let f=u,m=r.runtime?.source??``,g;t[5]===o?g=t[6]:(g=e=>!e&&o(),t[5]=o,t[6]=g);let _;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,$.jsx)(j,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[7]=_):_=t[7];let v;t[8]===r.title?v=t[9]:(v=(0,$.jsx)(S,{className:`text-base font-semibold text-fg`,children:r.title}),t[8]=r.title,t[9]=v);let y;t[10]===f.description?y=t[11]:(y=(0,$.jsx)(_e,{className:`mt-1 text-sm text-fg-muted`,children:f.description}),t[10]=f.description,t[11]=y);let b;t[12]!==v||t[13]!==y?(b=(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[v,y]}),t[12]=v,t[13]=y,t[14]=b):b=t[14];let x;t[15]!==l.whenToUseHeading||t[16]!==f.whenToUse?(x=f.whenToUse?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.whenToUseHeading}),(0,$.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-fg-muted`,children:f.whenToUse})]}):null,t[15]=l.whenToUseHeading,t[16]=f.whenToUse,t[17]=x):x=t[17];let C;t[18]!==r||t[19]!==l?(C=(0,$.jsx)(dt,{definition:r,labels:l}),t[18]=r,t[19]=l,t[20]=C):C=t[20];let w;t[21]!==r.inputSchema||t[22]!==l.inputsHeading?(w=r.inputSchema?(0,$.jsx)(pt,{title:l.inputsHeading,schema:r.inputSchema}):null,t[21]=r.inputSchema,t[22]=l.inputsHeading,t[23]=w):w=t[23];let T;t[24]!==r.outputSchema||t[25]!==l.outputsHeading?(T=r.outputSchema?(0,$.jsx)(pt,{title:l.outputsHeading,schema:r.outputSchema}):null,t[24]=r.outputSchema,t[25]=l.outputsHeading,t[26]=T):T=t[26];let E;t[27]!==r.phases||t[28]!==l.phasesHeading?(E=r.phases.length>0?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.phasesHeading}),(0,$.jsx)(`ol`,{className:`mt-2 space-y-2`,children:r.phases.map(ut)})]}):null,t[27]=r.phases,t[28]=l.phasesHeading,t[29]=E):E=t[29];let D;t[30]!==l.scriptHeading||t[31]!==m?(D=m?(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:l.scriptHeading}),(0,$.jsx)(`pre`,{className:`mt-2 max-h-64 overflow-auto rounded-xl border border-edge bg-surface-base/50 p-3 font-mono text-xs leading-5 text-fg-muted`,children:m})]}):null,t[30]=l.scriptHeading,t[31]=m,t[32]=D):D=t[32];let O;t[33]!==w||t[34]!==T||t[35]!==E||t[36]!==D||t[37]!==x||t[38]!==C?(O=(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[x,C,w,T,E,D]}),t[33]=w,t[34]=T,t[35]=E,t[36]=D,t[37]=x,t[38]=C,t[39]=O):O=t[39];let k;t[40]!==l.closeResult||t[41]!==o?(k=(0,$.jsx)(W,{variant:`secondary`,onClick:o,children:l.closeResult}),t[40]=l.closeResult,t[41]=o,t[42]=k):k=t[42];let A;t[43]!==l.runWorkflow||t[44]!==s?(A=(0,$.jsx)(W,{variant:`primary`,onClick:s,children:l.runWorkflow}),t[43]=l.runWorkflow,t[44]=s,t[45]=A):A=t[45];let ee;t[46]!==k||t[47]!==A?(ee=(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[k,A]}),t[46]=k,t[47]=A,t[48]=ee):ee=t[48];let M;t[49]!==O||t[50]!==ee||t[51]!==b?(M=(0,$.jsxs)(h,{children:[_,(0,$.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,44rem)] w-[min(100%-2rem,48rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[b,O,ee]})]}),t[49]=O,t[50]=ee,t[51]=b,t[52]=M):M=t[52];let N;return t[53]!==n||t[54]!==M||t[55]!==g?(N=(0,$.jsx)(p,{open:n,onOpenChange:g,children:M}),t[53]=n,t[54]=M,t[55]=g,t[56]=N):N=t[56],N}function ut(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 dt(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(ft)}):(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 ft(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)(ee,{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 pt(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)(_,{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(mt)}):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 mt(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 ht({open:e,language:t,saving:n,onClose:r,onSave:i}){let o=a(t).workflows,[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(``),[f,m]=(0,Z.useState)(!1),[g,_]=(0,Z.useState)(!1),[v,y]=(0,Z.useState)(null),[x,C]=(0,Z.useState)(null);(0,Z.useEffect)(()=>{e&&(c(``),m(!1),_(!1),y(null),C(null),u(`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
|
+
i18n: {
|
|
9
|
+
zh: {
|
|
10
|
+
description: '描述此工作流做什么。',
|
|
11
|
+
whenToUse: '当用户需要 … 时使用',
|
|
12
|
+
examplePrompts: [
|
|
13
|
+
{ field: 'goal', text: '此工作流的示例目标' },
|
|
14
|
+
],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
tags: ['custom'],
|
|
18
|
+
estimatedAgents: { min: 2, max: 4 },
|
|
19
|
+
phases: [{ title: 'Step 1' }, { title: 'Synthesize' }],
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
phase('Step 1')
|
|
23
|
+
const first = await agent('Do the first step.', { label: 'step 1' })
|
|
24
|
+
|
|
25
|
+
phase('Synthesize')
|
|
26
|
+
return await agent('Summarize:\\n\\n' + first, { label: 'synthesis' })
|
|
27
|
+
`))},[e]);let w=s.trim(),T=!!(w&&l.trim());(0,Z.useEffect)(()=>{if(!e||!T){_(!1),y(null),C(null);return}let t=!1,n=window.setTimeout(()=>{_(!0),y(null),b(w,l).then(e=>{t||C(e)}).catch(e=>{t||(C(null),y(e instanceof Error?e.message:o.validateWorkflowFailed))}).finally(()=>{t||_(!1)})},450);return()=>{t=!0,window.clearTimeout(n)}},[T,o.validateWorkflowFailed,e,l,w]);let E=(0,Z.useMemo)(()=>v?[v]:x?.errors.map(e=>e.message)??[],[v,x]),D=f||g||x!=null||v!=null,O=T&&!n&&!g&&x?.valid===!0,k=async()=>{if(m(!0),!(!T||n)){_(!0),y(null);try{let e=await b(w,l);if(C(e),!e.valid)return;await i({name:w,script:l})}catch(e){C(null),y(e instanceof Error?e.message:o.validateWorkflowFailed)}finally{_(!1)}}};return(0,$.jsx)(p,{open:e,onOpenChange:e=>!e&&r(),children:(0,$.jsxs)(h,{children:[(0,$.jsx)(j,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(90vh,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:`border-b border-edge px-5 py-4`,children:[(0,$.jsx)(S,{className:`text-base font-semibold text-fg`,children:o.manageDialogTitle}),(0,$.jsx)(_e,{className:`mt-1 text-sm text-fg-muted`,children:o.manageDialogHint})]}),(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-3 overflow-auto px-5 py-4`,children:[(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:o.workflowNameLabel}),(0,$.jsx)(`input`,{value:s,onChange:e=>{c(e.target.value),C(null),y(null)},placeholder:o.workflowNamePlaceholder,className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm font-mono text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:o.workflowScriptLabel}),(0,$.jsx)(`textarea`,{value:l,onChange:e=>{u(e.target.value),C(null),y(null)},spellCheck:!1,className:`mt-1.5 min-h-72 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`})]}),D?(0,$.jsxs)(`div`,{className:E.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`,role:`status`,children:[(0,$.jsx)(`div`,{className:`font-medium`,children:g?o.validatingWorkflow:E.length>0?o.validationFailed:o.validationPassed}),E.length>0?(0,$.jsx)(`ul`,{className:`mt-1 list-disc space-y-1 pl-5`,children:E.map(e=>(0,$.jsx)(`li`,{children:e},e))}):x?.definition?(0,$.jsx)(`div`,{className:`mt-1 text-xs opacity-80`,children:o.validationPreview.replace(`{{phaseCount}}`,String(x.definition.phases.length))}):null]}):null]}),(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[(0,$.jsx)(W,{variant:`secondary`,onClick:r,disabled:n,children:o.cancelDialog}),(0,$.jsx)(W,{variant:`primary`,disabled:!O,onClick:()=>void k(),children:n?o.savingWorkflow:o.saveWorkflow})]})]})]})})}function gt(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?X(t.agentScaleExact,{count:n.min}):X(t.agentScaleRange,{min:n.min,max:n.max}):null}function _t(e){let t=(0,Q.c)(50),{definition:n,language:r,labels:i,onPick:a}=e,o;t[0]!==n||t[1]!==r?(o=Ee(n,r),t[0]=n,t[1]=r,t[2]=o):o=t[2];let s=o,c;t[3]!==n||t[4]!==i?(c=gt(n,i),t[3]=n,t[4]=i,t[5]=c):c=t[5];let l=c,u=n.metadata.source===`user`,d;t[6]!==n||t[7]!==a?(d=()=>a(n),t[6]=n,t[7]=a,t[8]=d):d=t[8];let f;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=Y(`group flex h-full flex-col rounded-xl border border-edge-subtle bg-surface-base p-4 text-left transition-colors`,`hover:border-accent/40 hover:bg-surface-hover`,le.focusRingPanel),t[9]=f):f=t[9];let p=u?`bg-accent-soft text-accent-fg`:`bg-surface-hover text-fg-muted`,m;t[10]===p?m=t[11]:(m=Y(`rounded-full px-2 py-0.5 text-[10px] font-medium`,p),t[10]=p,t[11]=m);let h=u?i.badgeUser:i.badgeBuiltin,g;t[12]!==m||t[13]!==h?(g=(0,$.jsx)(`span`,{className:m,children:h}),t[12]=m,t[13]=h,t[14]=g):g=t[14];let v;t[15]!==n.inputSchema||t[16]!==i.inputSchemaBadge?(v=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)(_,{className:`size-2.5`,"aria-hidden":!0}),i.inputSchemaBadge]}):null,t[15]=n.inputSchema,t[16]=i.inputSchemaBadge,t[17]=v):v=t[17];let y;t[18]===n.metadata.tags?y=t[19]:(y=n.metadata.tags.slice(0,2).map(vt),t[18]=n.metadata.tags,t[19]=y);let b;t[20]!==y||t[21]!==g||t[22]!==v?(b=(0,$.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center gap-1.5`,children:[g,v,y]}),t[20]=y,t[21]=g,t[22]=v,t[23]=b):b=t[23];let x;t[24]===n.title?x=t[25]:(x=(0,$.jsx)(`span`,{className:`line-clamp-2 text-sm font-semibold leading-5 text-fg`,children:n.title}),t[24]=n.title,t[25]=x);let S;t[26]!==b||t[27]!==x?(S=(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[b,x]}),t[26]=b,t[27]=x,t[28]=S):S=t[28];let C;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(C=(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)(de,{className:`size-3.5`,"aria-hidden":!0})}),t[29]=C):C=t[29];let w;t[30]===S?w=t[31]:(w=(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[S,C]}),t[30]=S,t[31]=w);let T;t[32]===s.description?T=t[33]:(T=s.description?(0,$.jsx)(`p`,{className:`mt-2 line-clamp-2 text-xs leading-5 text-fg-muted`,children:s.description}):null,t[32]=s.description,t[33]=T);let E;t[34]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(M,{className:`size-3`,"aria-hidden":!0}),t[34]=E):E=t[34];let D;t[35]!==n.phases.length||t[36]!==i.phaseCount?(D=X(i.phaseCount,{count:n.phases.length}),t[35]=n.phases.length,t[36]=i.phaseCount,t[37]=D):D=t[37];let O;t[38]===D?O=t[39]:(O=(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[E,D]}),t[38]=D,t[39]=O);let k;t[40]===l?k=t[41]:(k=l?(0,$.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,$.jsx)(P,{className:`size-3`,"aria-hidden":!0}),l]}):null,t[40]=l,t[41]=k);let A;t[42]!==O||t[43]!==k?(A=(0,$.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center gap-3 pt-3 text-[11px] text-fg-subtle`,children:[O,k]}),t[42]=O,t[43]=k,t[44]=A):A=t[44];let j;return t[45]!==w||t[46]!==T||t[47]!==A||t[48]!==d?(j=(0,$.jsxs)(`button`,{type:`button`,onClick:d,className:f,children:[w,T,A]}),t[45]=w,t[46]=T,t[47]=A,t[48]=d,t[49]=j):j=t[49],j}function vt(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 yt(e,t){return e===`uncategorized`?t.categories.uncategorized:t.categories[e]}function bt(e){let t=(0,Q.c)(11),{definitions:n,language:r,onPick:i}=e,o=a(r).workflows,[s,c]=(0,Z.useState)(``),[l,u]=(0,Z.useState)(`all`),d;t[0]!==l||t[1]!==n||t[2]!==s?(d=De(n,s,l,`all`),t[0]=l,t[1]=n,t[2]=s,t[3]=d):d=t[3];let f=d,p;t[4]===f?p=t[5]:(p=be(f),t[4]=f,t[5]=p);let m=p,h;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(N,{className:`pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[6]=h):h=t[6];let g;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(g=e=>c(e.target.value),t[7]=g):g=t[7];let _=o.searchPlaceholder,v;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(v=Y(`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`,le.focusRingPanel),t[8]=v):v=t[8];let y=f.length===0?(0,$.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center px-4 py-12 text-center`,children:[(0,$.jsx)(`p`,{className:`text-sm text-fg-muted`,children:o.noDefinitions}),(0,$.jsx)(`p`,{className:`mt-1 max-w-sm text-xs leading-5 text-fg-subtle`,children:o.noDefinitionsHint})]}):l===`all`?(0,$.jsx)(`div`,{className:`flex flex-col gap-6 pb-1`,children:m.map(e=>(0,$.jsxs)(`section`,{children:[(0,$.jsx)(`h3`,{className:`mb-3 text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:yt(e.category,o)}),(0,$.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 xl:grid-cols-3`,children:e.items.map(e=>(0,$.jsx)(_t,{definition:e,language:r,labels:o,onPick:i},e.id))})]},e.category))}):(0,$.jsx)(`div`,{className:`grid grid-cols-1 gap-3 pb-1 sm:grid-cols-2 xl:grid-cols-3`,children:f.map(e=>(0,$.jsx)(_t,{definition:e,language:r,labels:o,onPick:i},e.id))}),b;return t[9]===y?b=t[10]:(b=(0,$.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:y}),t[9]=y,t[10]=b),(0,$.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-4`,children:[(0,$.jsxs)(`div`,{className:`relative`,children:[h,(0,$.jsx)(`input`,{value:s,onChange:g,placeholder:_,className:v})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,role:`group`,"aria-label":o.categoryFilterAria,children:ce.map(e=>(0,$.jsx)(W,{type:`button`,variant:l===e?`secondary`:`ghost`,className:`h-8 rounded-full px-3 py-1.5 text-xs`,onClick:()=>u(e),children:o.categories[e]},e))})]}),b]})}function xt(e){let t=(0,Q.c)(30),{open:n,definitions:r,language:i,onClose:o,onPick:s}=e,c;t[0]===i?c=t[1]:(c=a(i),t[0]=i,t[1]=c);let l=c.workflows,u;t[2]===o?u=t[3]:(u=e=>!e&&o(),t[2]=o,t[3]=u);let f;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,$.jsx)(j,{className:`fixed inset-0 z-50 bg-scrim`}),t[4]=f):f=t[4];let m;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(m=Y(`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`,le.focusRingPanel),t[5]=m):m=t[5];let g;t[6]===l.pickStartTitle?g=t[7]:(g=(0,$.jsx)(S,{className:`text-lg font-semibold text-fg`,children:l.pickStartTitle}),t[6]=l.pickStartTitle,t[7]=g);let _;t[8]===l.pickStartHint?_=t[9]:(_=(0,$.jsx)(_e,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:l.pickStartHint}),t[8]=l.pickStartHint,t[9]=_);let v;t[10]!==g||t[11]!==_?(v=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[g,_]}),t[10]=g,t[11]=_,t[12]=v):v=t[12];let y;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,$.jsx)(R,{className:`size-5`,strokeWidth:1.75,"aria-hidden":!0}),t[13]=y):y=t[13];let b;t[14]===l.pickStartClose?b=t[15]:(b=(0,$.jsx)(O,{asChild:!0,children:(0,$.jsx)(W,{variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":l.pickStartClose,children:y})}),t[14]=l.pickStartClose,t[15]=b);let x;t[16]!==v||t[17]!==b?(x=(0,$.jsxs)(`div`,{className:`flex shrink-0 items-start justify-between gap-4 border-b border-edge-subtle px-6 py-5`,children:[v,b]}),t[16]=v,t[17]=b,t[18]=x):x=t[18];let C;t[19]!==r||t[20]!==i||t[21]!==s?(C=(0,$.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-6 py-5`,children:(0,$.jsx)(bt,{definitions:r,language:i,onPick:s})}),t[19]=r,t[20]=i,t[21]=s,t[22]=C):C=t[22];let w;t[23]!==x||t[24]!==C?(w=(0,$.jsxs)(h,{children:[f,(0,$.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none`,children:(0,$.jsxs)(d,{className:m,onOpenAutoFocus:St,children:[x,C]})})]}),t[23]=x,t[24]=C,t[25]=w):w=t[25];let T;return t[26]!==n||t[27]!==w||t[28]!==u?(T=(0,$.jsx)(p,{open:n,onOpenChange:u,children:w}),t[26]=n,t[27]=w,t[28]=u,t[29]=T):T=t[29],T}function St(e){return e.preventDefault()}function Ct(e,t){return t.status[e]??e}function wt(e,t){return t.phaseStatus[e]??e}function Tt(e,t){let{run:n}=e;return n.status===`succeeded`?X(t.runSummarySucceeded,{agents:n.metrics.doneAgentCount,artifacts:n.metrics.artifactCount}):n.status===`failed`||n.status===`timeout`?n.error?.message??t.runSummaryFailedFallback:n.status===`cancelled`?t.runSummaryCancelled:X(t.runSummaryActive,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}function Et(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 Dt(e){return xe(e)}function Ot(e){return!e||typeof e!=`object`||!(`kind`in e)?`unknown`:e.kind===`chat`?`chat · ${e.sessionKey}`:e.kind===`webui`?e.sessionKey?`webui · ${e.sessionKey}`:`webui`:e.kind===`cron`?`cron · ${e.scheduleId}`:e.kind===`api`?e.requestId?`api · ${e.requestId}`:`api`:e.kind===`im`?`${e.channel} · ${e.chatId}`:String(e.kind)}function kt({view:e,loading:t,language:n,localeTag:r,onCancel:i,onRetry:o,ownerAgentId:c,onClose:l}){let u=a(n).workflows,f=oe(n),m=C(),[g,_]=(0,Z.useState)(!0),[b,x]=(0,Z.useState)(!1),[T,E]=(0,Z.useState)(null),[O,k]=(0,Z.useState)(!1),[,ee]=(0,Z.useState)(0),M=e?.run.status,N=M?H.has(M):!1;(0,Z.useEffect)(()=>{e?.run.id&&(_(N||M===`failed`||M===`timeout`||M===`succeeded`&&e.run.metrics.errorAgentCount>0),E(null))},[e?.run.id,N,M,e?.run.metrics.errorAgentCount]),(0,Z.useEffect)(()=>{if(!N)return;let e=window.setInterval(()=>ee(e=>e+1),1e3);return()=>window.clearInterval(e)},[N]);let P=(0,Z.useMemo)(()=>e?L(e):null,[e]),F=(0,Z.useMemo)(()=>P?ye(P):{phases:[],unphased:null},[P]),re=(0,Z.useMemo)(()=>T==null||!P?null:P.agents.find(e=>e.id===T)??null,[T,P]),ie=(0,Z.useCallback)(e=>{E(e.id)},[]),ae=e?Nt(e.run.result):null,I=e?Ae(e.run.result):void 0,U=Se(I),G=U.trim().length>0,K=(0,Z.useCallback)(async()=>{G&&await te(U)&&(k(!0),window.setTimeout(()=>k(!1),1500))},[G,U]),se=(0,Z.useCallback)(()=>{if(!G||!e)return;let t=new Blob([U],{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)},[G,U,e]),ce=(0,Z.useCallback)(()=>{if(!e)return;let t=Dt(e);t&&m(Ce(t))},[m,e]),le=e?Dt(e):null;if(t)return(0,$.jsx)(p,{open:!0,onOpenChange:e=>!e&&l(),children:(0,$.jsxs)(h,{children:[(0,$.jsx)(j,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,44rem)] w-[min(100%-2rem,48rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-5 py-4`,children:[(0,$.jsx)(S,{className:`text-base font-semibold tracking-tight text-fg`,children:u.runSummaryTitle}),(0,$.jsx)(W,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":u.pickStartClose,onClick:l,children:(0,$.jsx)(R,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsx)(`div`,{className:`p-5 text-sm text-fg-muted`,children:u.loading})]})]})});if(!e||!P)return null;let{run:J}=e,ue=e.controls.canCancel&&N,de=N&&J.startedAtMs!=null?ke(Date.now()-J.startedAtMs):ke(J.metrics.durationMs??void 0),fe=Tt(e,u),he=Et(e,u),_e=J.metadata,ve=Ot(J.source);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(p,{open:!0,onOpenChange:e=>!e&&l(),children:(0,$.jsxs)(h,{children:[(0,$.jsx)(j,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),(0,$.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(90vh,52rem)] w-[min(100%-2rem,64rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-5 py-4`,children:[(0,$.jsx)(S,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:J.title}),(0,$.jsx)(W,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":u.pickStartClose,onClick:l,children:(0,$.jsx)(R,{className:`size-5`,"aria-hidden":!0})})]}),(0,$.jsxs)(`section`,{className:`min-h-0 flex-1 overflow-y-auto p-5`,children:[(0,$.jsx)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(`h2`,{className:`text-lg font-semibold text-fg`,children:J.title}),(0,$.jsx)(`span`,{className:Y(`rounded-full px-2 py-0.5 text-xs font-medium`,Me(J.status)),children:Ct(J.status,u)})]}),(0,$.jsx)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:J.definitionId}),J.goal?(0,$.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-fg-muted`,children:J.goal}):null]})}),(0,$.jsx)(`div`,{className:`mt-5 rounded-2xl border border-edge-subtle bg-surface-base/60 p-4`,children:(0,$.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,$.jsx)(`div`,{className:`rounded-xl bg-accent-soft p-2 text-accent-fg`,children:J.status===`succeeded`?(0,$.jsx)(me,{className:`size-4`,"aria-hidden":!0}):J.status===`failed`||J.status===`timeout`?(0,$.jsx)(D,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(w,{className:`size-4`,"aria-hidden":!0})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:u.runSummaryTitle}),(0,$.jsx)(`p`,{className:`mt-1 text-sm leading-6 text-fg-muted`,children:fe}),he?(0,$.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-fg-subtle`,children:he}):null]})]})}),(0,$.jsxs)(`dl`,{className:`mt-5 grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,$.jsx)(Lt,{label:u.metrics.startedAt,value:we(J.startedAtMs??J.createdAtMs,r)}),(0,$.jsx)(Lt,{label:u.metrics.duration,value:de}),(0,$.jsx)(Lt,{label:u.metrics.agents,value:X(u.agentProgress,{done:J.metrics.doneAgentCount,total:J.metrics.agentCount})}),(0,$.jsx)(Lt,{label:u.metrics.artifacts,value:String(J.metrics.artifactCount)})]}),(0,$.jsxs)(`div`,{className:`mt-5 flex flex-wrap gap-2`,children:[le?(0,$.jsxs)(W,{variant:`primary`,onClick:ce,children:[(0,$.jsx)(ge,{className:`size-4`,"aria-hidden":!0}),u.continueInChat]}):null,ue?(0,$.jsxs)(W,{variant:`secondary`,onClick:i,className:`text-red-600 dark:text-red-300`,children:[(0,$.jsx)(A,{className:`size-4`,"aria-hidden":!0}),u.cancel]}):null,e.controls.canRetry?(0,$.jsxs)(W,{variant:`secondary`,onClick:o,children:[(0,$.jsx)(q,{className:`size-4`,"aria-hidden":!0}),u.rerun]}):null,G?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(W,{variant:`secondary`,onClick:K,children:[O?(0,$.jsx)(y,{className:`size-4`,"aria-hidden":!0}):(0,$.jsx)(s,{className:`size-4`,"aria-hidden":!0}),O?u.copied:u.copyResult]}),(0,$.jsxs)(W,{variant:`secondary`,onClick:se,children:[(0,$.jsx)(z,{className:`size-4`,"aria-hidden":!0}),u.exportResult]})]}):null]}),(0,$.jsxs)(`div`,{className:`mt-6`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:u.resultTitle}),G?(0,$.jsx)(`div`,{className:`mt-3 rounded-xl border border-edge bg-surface-base/50 p-3`,children:(0,$.jsx)(V,{result:I,labels:f.result})}):(0,$.jsx)(`div`,{className:`mt-3 rounded-xl border border-dashed border-edge p-4 text-sm text-fg-muted`,children:u.noResult}),(0,$.jsx)(At,{outcome:ae,labels:u,onCopyText:e=>void te(e)})]}),(0,$.jsxs)(`div`,{className:`mt-6 rounded-2xl border border-edge bg-surface-base/35`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between gap-4 px-4 py-3 text-left`,onClick:()=>_(e=>!e),"aria-expanded":g,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:u.process}),(0,$.jsxs)(`p`,{className:`mt-1 text-xs text-fg-subtle`,children:[X(u.agentProgress,{done:J.metrics.doneAgentCount,total:J.metrics.agentCount}),` · `,de]})]}),(0,$.jsx)(v,{className:Y(`size-4 shrink-0 text-fg-subtle transition-transform`,g?`rotate-180`:null),"aria-hidden":!0})]}),g?(0,$.jsxs)(`div`,{className:`border-t border-edge px-4 pb-4 pt-4`,children:[N?(0,$.jsx)(ne,{snapshot:P,labels:f,logsExpanded:b,onToggleLogs:()=>x(e=>!e),selectedAgentId:T,onSelectAgent:ie}):(0,$.jsx)(B,{rollup:F,currentPhase:P.currentPhase,labels:f.phase,recentLogs:P.logs,recentLogsHeading:f.recentLogsHeading,showAllLogsLabel:f.showAllLogs,logsExpanded:b,onToggleLogs:()=>x(e=>!e),selectedAgentId:T,onSelectAgent:ie}),e.phases.length>0?(0,$.jsx)(`div`,{className:`mt-4 grid gap-2 sm:grid-cols-2`,children:e.phases.map(e=>(0,$.jsx)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-3 py-2`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,$.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:e.title}),(0,$.jsx)(`span`,{className:`text-xs text-fg-subtle`,children:wt(e.status,u)})]})},e.id))}):null]}):null]}),(0,$.jsx)(Pt,{agents:P.agents,labels:u,defaultExpanded:J.status===`failed`||J.status===`timeout`||J.metrics.errorAgentCount>0}),(0,$.jsxs)(`div`,{className:`mt-6 grid gap-3 rounded-2xl border border-edge-subtle bg-surface-base/35 p-4 sm:grid-cols-2 lg:grid-cols-4`,children:[(0,$.jsx)(Rt,{label:u.metadataSession,value:_e?.sessionKey??xe(e)??`—`}),(0,$.jsx)(Rt,{label:u.metadataSource,value:ve}),(0,$.jsx)(Rt,{label:u.metadataDefinition,value:`${_e?.definition.version??J.definitionVersion} · ${_e?.definition.source??`unknown`}`}),(0,$.jsx)(Rt,{label:u.metadataRetryOf,value:_e?.retryOfRunId??`—`})]})]})]})]})}),(0,$.jsx)(pe,{open:T!=null&&re!=null,agent:re,snapshot:P,sessionKey:null,ownerAgentId:c,pinnedAgentId:null,onPinAgent:()=>{},onClose:()=>E(null),labels:f.drawer})]})}function At(e){let t=(0,Q.c)(14),{outcome:n,labels:r,onCopyText:i}=e;if(!n||!n.artifacts.length&&!n.followUps.length&&n.structuredOutput===void 0)return null;let a;t[0]!==r||t[1]!==n.artifacts?(a=n.artifacts.length>0?(0,$.jsx)(Mt,{title:r.outcomeArtifacts,children:(0,$.jsx)(`ul`,{className:`space-y-2`,children:n.artifacts.map(jt)})}):null,t[0]=r,t[1]=n.artifacts,t[2]=a):a=t[2];let o;t[3]!==r||t[4]!==i||t[5]!==n.followUps?(o=n.followUps.length>0?(0,$.jsx)(Mt,{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,$.jsx)(`button`,{type:`button`,className:`mt-1 text-xs font-medium text-accent-fg hover:underline`,onClick:()=>i(e.prompt??``),children:r.copyPrompt}):null]},e.id))})}):null,t[3]=r,t[4]=i,t[5]=n.followUps,t[6]=o):o=t[6];let s;t[7]!==r||t[8]!==n.structuredOutput?(s=n.structuredOutput===void 0?null:(0,$.jsx)(Mt,{title:r.outcomeStructuredOutput,children:(0,$.jsx)(`pre`,{className:`max-h-44 overflow-auto whitespace-pre-wrap break-words rounded-lg bg-surface-base p-2 font-mono text-xs leading-5 text-fg-muted`,children:Se(n.structuredOutput)})}),t[7]=r,t[8]=n.structuredOutput,t[9]=s):s=t[9];let c;return t[10]!==a||t[11]!==o||t[12]!==s?(c=(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-3`,children:[a,o,s]}),t[10]=a,t[11]=o,t[12]=s,t[13]=c):c=t[13],c}function jt(e){return(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})]},e.id)}function Mt(e){let t=(0,Q.c)(7),{title:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`h4`,{className:`text-xs font-semibold uppercase tracking-wide text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`div`,{className:`mt-2`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`section`,{className:`min-w-0 rounded-xl border border-edge-subtle bg-surface-base/35 p-3`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function Nt(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 Pt(e){let t=(0,Q.c)(29),{agents:n,labels:r,defaultExpanded:i}=e,[a,o]=(0,Z.useState)(i),s,c;if(t[0]===i?(s=t[1],c=t[2]):(s=()=>{o(i)},c=[i],t[0]=i,t[1]=s,t[2]=c),(0,Z.useEffect)(s,c),n.length===0)return null;let l;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>o(Ft),t[3]=l):l=t[3];let u;t[4]===r.agentIoTitle?u=t[5]:(u=(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.agentIoTitle}),t[4]=r.agentIoTitle,t[5]=u);let d;t[6]===r.agentIoHint?d=t[7]:(d=(0,$.jsx)(`p`,{className:`text-xs leading-5 text-fg-subtle`,children:r.agentIoHint}),t[6]=r.agentIoHint,t[7]=d);let f;t[8]!==u||t[9]!==d?(f=(0,$.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[u,d]}),t[8]=u,t[9]=d,t[10]=f):f=t[10];let p=a?`rotate-180`:null,m;t[11]===p?m=t[12]:(m=Y(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,p),t[11]=p,t[12]=m);let h;t[13]===m?h=t[14]:(h=(0,$.jsx)(v,{className:m,"aria-hidden":!0}),t[13]=m,t[14]=h);let g;t[15]!==a||t[16]!==f||t[17]!==h?(g=(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-start justify-between gap-4 px-4 py-3 text-left`,onClick:l,"aria-expanded":a,children:[f,h]}),t[15]=a,t[16]=f,t[17]=h,t[18]=g):g=t[18];let _;t[19]!==n||t[20]!==a||t[21]!==r.agentInputHeading||t[22]!==r.agentNoOutput||t[23]!==r.agentOutputHeading||t[24]!==r.agentStatus?(_=a?(0,$.jsx)(`div`,{className:`grid gap-3 border-t border-edge px-4 py-4`,children:n.map(e=>{let t=e.error||e.resultPreview||r.agentNoOutput;return(0,$.jsxs)(`article`,{className:`rounded-xl border border-edge-subtle bg-surface-panel p-3`,children:[(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,$.jsx)(`div`,{className:`min-w-0 text-sm font-medium text-fg`,children:e.label}),(0,$.jsx)(`span`,{className:Y(`rounded-full px-2 py-0.5 text-xs font-medium`,It(e.status)),children:r.agentStatus[e.status]??e.status})]}),(0,$.jsxs)(`div`,{className:`mt-3 grid gap-3 lg:grid-cols-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:r.agentInputHeading}),(0,$.jsx)(`pre`,{className:`mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap wrap-break-word rounded-lg border border-edge-subtle bg-surface-base/50 p-2 font-mono text-xs leading-5 text-fg-muted`,children:e.prompt||`—`})]}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`div`,{className:`text-[10px] font-medium uppercase tracking-wide text-fg-subtle`,children:r.agentOutputHeading}),(0,$.jsx)(`div`,{className:Y(`mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap wrap-break-word rounded-lg border border-edge-subtle bg-surface-base/50 p-2 text-xs leading-5`,e.error?`font-mono text-rose-600 dark:text-rose-400`:`text-fg-muted`),children:t})]})]})]},e.id)})}):null,t[19]=n,t[20]=a,t[21]=r.agentInputHeading,t[22]=r.agentNoOutput,t[23]=r.agentOutputHeading,t[24]=r.agentStatus,t[25]=_):_=t[25];let y;return t[26]!==g||t[27]!==_?(y=(0,$.jsxs)(`section`,{className:`mt-6 rounded-2xl border border-edge bg-surface-base/35`,children:[g,_]}),t[26]=g,t[27]=_,t[28]=y):y=t[28],y}function Ft(e){return!e}function It(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 Lt(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 Rt(e){let t=(0,Q.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,$.jsx)(`div`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,$.jsx)(`div`,{className:`mt-1 truncate text-sm font-medium text-fg`,title:r,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}var zt=`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`;function Bt(e){return!!(e&&e.type===`object`&&e.properties&&!Array.isArray(e.properties))}function Vt({schema:e,value:t,onChange:n,labels:r}){let i=(0,Z.useMemo)(()=>Wt(e),[e]),[a,o]=(0,Z.useState)(!1),[s,c]=(0,Z.useState)(()=>JSON.stringify(t,null,2)),[l,u]=(0,Z.useState)(null);if(i.length===0)return null;let d=(e,r)=>{let i={...t,[e]:r};(r===``||r===void 0)&&delete i[e],n(i),a&&c(JSON.stringify(i,null,2))},f=e=>{c(e);try{let t=e.trim()?JSON.parse(e):{};if(!t||typeof t!=`object`||Array.isArray(t)){u(r.rawJsonInvalid);return}u(null),n(t)}catch{u(r.rawJsonInvalid)}};return(0,$.jsxs)(`section`,{className:`rounded-2xl border border-edge-subtle bg-surface-base/35 p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.inputSchemaHeading}),(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-accent-fg hover:underline`,onClick:()=>{let e=!a;o(e),e&&(c(JSON.stringify(t,null,2)),u(null))},children:r.rawJson})]}),a?(0,$.jsxs)(`div`,{className:`mt-3`,children:[(0,$.jsx)(`textarea`,{value:s,onChange:e=>f(e.target.value),spellCheck:!1,className:Y(zt,`min-h-40 font-mono text-xs leading-5`)}),l?(0,$.jsx)(`p`,{className:`mt-1 text-xs text-red-600 dark:text-red-300`,children:l}):null]}):(0,$.jsx)(`div`,{className:`mt-3 grid gap-3`,children:i.map(e=>(0,$.jsx)(Ht,{field:e,value:t[e.key],labels:r,onChange:t=>d(e.key,t)},e.key))})]})}function Ht(e){let t=(0,Q.c)(18),{field:n,value:r,labels:i,onChange:a}=e,o=n.schema.title||n.key,s=typeof n.schema.description==`string`?n.schema.description:void 0,c=Array.isArray(n.schema.type)?n.schema.type[0]:n.schema.type,l;t[0]===n.schema.enum?l=t[1]:(l=Array.isArray(n.schema.enum)?n.schema.enum:[],t[0]=n.schema.enum,t[1]=l);let u=l,d=String(o),f=n.required?` *`:``,p;t[2]!==d||t[3]!==f?(p=(0,$.jsxs)(`span`,{className:`text-xs font-medium text-fg`,children:[d,f]}),t[2]=d,t[3]=f,t[4]=p):p=t[4];let m;t[5]===s?m=t[6]:(m=s?(0,$.jsx)(`p`,{className:`mt-0.5 text-xs leading-5 text-fg-subtle`,children:s}):null,t[5]=s,t[6]=m);let h;t[7]!==s||t[8]!==u||t[9]!==i||t[10]!==a||t[11]!==c||t[12]!==r?(h=u.length>0?(0,$.jsxs)(`select`,{value:r==null?``:String(r),onChange:e=>a(e.target.value),className:zt,children:[(0,$.jsx)(`option`,{value:``}),u.map(Ut)]}):c===`boolean`?(0,$.jsxs)(`select`,{value:typeof r==`boolean`?String(r):``,onChange:e=>a(e.target.value===``?void 0:e.target.value===`true`),className:zt,children:[(0,$.jsx)(`option`,{value:``}),(0,$.jsx)(`option`,{value:`true`,children:i.booleanTrue}),(0,$.jsx)(`option`,{value:`false`,children:i.booleanFalse})]}):c===`number`||c===`integer`?(0,$.jsx)(`input`,{type:`number`,value:typeof r==`number`||typeof r==`string`?String(r):``,onChange:e=>a(e.target.value===``?void 0:Number(e.target.value)),className:zt}):(0,$.jsx)(`textarea`,{value:typeof r==`string`?r:r==null?``:String(r),onChange:e=>a(e.target.value),className:Y(zt,s&&s.length>80?`min-h-20 resize-y`:`min-h-10 resize-y`)}),t[7]=s,t[8]=u,t[9]=i,t[10]=a,t[11]=c,t[12]=r,t[13]=h):h=t[13];let g;return t[14]!==p||t[15]!==m||t[16]!==h?(g=(0,$.jsxs)(`label`,{className:`block`,children:[p,m,h]}),t[14]=p,t[15]=m,t[16]=h,t[17]=g):g=t[17],g}function Ut(e){return(0,$.jsx)(`option`,{value:String(e),children:String(e)},String(e))}function Wt(e){let t=e.properties??{},n=new Set(e.required??[]);return Object.entries(t).map(([e,t])=>({key:e,schema:t,required:n.has(e)}))}function Gt(e){let t=(0,Q.c)(12),{examples:n,labels:r,onSelect:i}=e;if(n.length===0)return null;let a;t[0]===r.examplePrompts?a=t[1]:(a=(0,$.jsx)(`div`,{className:`text-xs font-medium text-fg-muted`,children:r.examplePrompts}),t[0]=r.examplePrompts,t[1]=a);let o;if(t[2]!==n||t[3]!==i){let e;t[5]===i?e=t[6]:(e=e=>(0,$.jsx)(`button`,{type:`button`,onClick:()=>i(e),className:`rounded-lg border border-edge bg-surface-base/50 px-3 py-2 text-left text-xs text-fg-muted hover:bg-surface-hover`,children:e.text},`${e.field}:${e.text}`),t[5]=i,t[6]=e),o=n.map(e),t[2]=n,t[3]=i,t[4]=o}else o=t[4];let s;t[7]===o?s=t[8]:(s=(0,$.jsx)(`div`,{className:`mt-2 flex flex-col gap-1.5`,children:o}),t[7]=o,t[8]=s);let c;return t[9]!==a||t[10]!==s?(c=(0,$.jsxs)(`div`,{children:[a,s]}),t[9]=a,t[10]=s,t[11]=c):c=t[11],c}function Kt(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?X(t.agentScaleExact,{count:n.min}):X(t.agentScaleRange,{min:n.min,max:n.max}):X(t.agentScaleExact,{count:e.defaults.maxSubagents})}function qt(e,t,n,r){let i=Object.values(t).map(e=>e.trim()).filter(Boolean),a=e.trim()||n;return a&&i.unshift(a),i.length===0?r.noInputSummary:i.join(` · `)}function Jt(e){let t=(0,Q.c)(58),{open:n,definition:r,language:i,starting:o,onClose:s,onStart:c}=e,u=a(i).workflows,[f,m]=(0,Z.useState)(``),g;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(g={},t[0]=g):g=t[0];let[_,y]=(0,Z.useState)(g),b;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(b={},t[1]=b):b=t[1];let[C,w]=(0,Z.useState)(b),[T,E]=(0,Z.useState)(``),[D,O]=(0,Z.useState)(``),[k,A]=(0,Z.useState)(!1),ee;t[2]!==r||t[3]!==i?(ee=r?Ee(r,i):null,t[2]=r,t[3]=i,t[4]=ee):ee=t[4];let N=ee,te;t[5]===r?te=t[6]:(te=r?K[r.name]??[]:[],t[5]=r,t[6]=te);let ne=te,F;t[7]===N?.examplePrompts?F=t[8]:(F=N?.examplePrompts??[],t[7]=N?.examplePrompts,t[8]=F);let re=F,ie=r?.inputSchema,ae;t[9]===ie?ae=t[10]:(ae=Bt(ie),t[9]=ie,t[10]=ae);let I=ae,L=!I&&ne.length>0,R;t[11]!==T||t[12]!==r?.defaults?(R=T.trim()?Number(T):r?.defaults.concurrency,t[11]=T,t[12]=r?.defaults,t[13]=R):R=t[13];let z=R,B;t[14]!==r?.defaults||t[15]!==D?(B=D.trim()?Number(D):r?.defaults.maxSubagents,t[14]=r?.defaults,t[15]=D,t[16]=B):B=t[16];let V=B,H=r&&N?I&&Object.keys(C).length>0?Object.entries(C).map(Zt).join(` · `):qt(f,_,N.description,u):u.noInputSummary,U;t[17]!==r||t[18]!==n?(U=()=>{!n||!r||(m(``),y({}),w({}),E(``),O(``),A(!1))},t[17]=r,t[18]=n,t[19]=U):U=t[19];let oe=r?.id,G;if(t[20]!==n||t[21]!==oe?(G=[n,oe],t[20]=n,t[21]=oe,t[22]=G):G=t[22],(0,Z.useEffect)(U,G),!r||!N)return null;let se;t[23]===Symbol.for(`react.memo_cache_sentinel`)?(se=e=>{Oe(e,m,y)},t[23]=se):se=t[23];let ce=se,q;t[24]!==_||t[25]!==T||t[26]!==f||t[27]!==I||t[28]!==N.description||t[29]!==D||t[30]!==c||t[31]!==C?(q=()=>{let e=I&&Object.keys(C).length>0?C:je(_);c({goal:f.trim()||N.description,input:e,concurrency:T.trim()?Number(T):void 0,maxSubagents:D.trim()?Number(D):void 0})},t[24]=_,t[25]=T,t[26]=f,t[27]=I,t[28]=N.description,t[29]=D,t[30]=c,t[31]=C,t[32]=q):q=t[32];let le=q,J;t[33]===s?J=t[34]:(J=e=>!e&&s(),t[33]=s,t[34]=J);let ue;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(ue=(0,$.jsx)(j,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[35]=ue):ue=t[35];let de;t[36]===N.description?de=t[37]:(de=(0,$.jsx)(_e,{className:`mt-1 text-sm text-fg-muted`,children:N.description}),t[36]=N.description,t[37]=de);let fe;t[38]===Symbol.for(`react.memo_cache_sentinel`)?(fe=(0,$.jsx)(M,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[38]=fe):fe=t[38];let pe;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,$.jsx)(P,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[39]=pe):pe=t[39];let me;t[40]===Symbol.for(`react.memo_cache_sentinel`)?(me=(0,$.jsx)(l,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[40]=me):me=t[40];let he;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(he=e=>m(e.target.value),t[41]=he):he=t[41];let ge;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(ge=()=>A(Yt),t[42]=ge):ge=t[42];let ve=u.advancedSettings,ye=k&&`rotate-180`,be;t[43]===ye?be=t[44]:(be=Y(`size-4 transition-transform`,ye),t[43]=ye,t[44]=be);let xe;t[45]===be?xe=t[46]:(xe=(0,$.jsx)(v,{className:be}),t[45]=be,t[46]=xe);let Se;t[47]!==u.cancelDialog||t[48]!==s||t[49]!==o?(Se=(0,$.jsx)(W,{variant:`secondary`,onClick:s,disabled:o,children:u.cancelDialog}),t[47]=u.cancelDialog,t[48]=s,t[49]=o,t[50]=Se):Se=t[50];let Ce=o?u.starting:u.start,we;t[51]!==o||t[52]!==le||t[53]!==Ce?(we=(0,$.jsx)(W,{variant:`primary`,onClick:le,disabled:o,children:Ce}),t[51]=o,t[52]=le,t[53]=Ce,t[54]=we):we=t[54];let Te;return t[55]!==Se||t[56]!==we?(Te=(0,$.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[Se,we]}),t[55]=Se,t[56]=we,t[57]=Te):Te=t[57],(0,$.jsx)(p,{open:n,onOpenChange:J,children:(0,$.jsxs)(h,{children:[ue,(0,$.jsxs)(d,{className:`fixed left-1/2 top-1/2 z-66 flex max-h-[min(85vh,40rem)] w-[min(100%-2rem,32rem)] -translate-x-1/2 -translate-y-1/2 flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,children:[(0,$.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[(0,$.jsxs)(S,{className:`text-base font-semibold text-fg`,children:[u.startTitle,` · `,r.title]}),de]}),(0,$.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:[(0,$.jsxs)(`section`,{className:`rounded-2xl border border-edge bg-surface-base/70 p-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:u.runPlanPreview}),(0,$.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs leading-5 text-fg-muted`,children:H})]}),(0,$.jsx)(`span`,{className:`shrink-0 rounded-full bg-accent-soft px-2 py-1 text-[11px] font-medium text-accent-fg`,children:u.readyToStart})]}),(0,$.jsxs)(`div`,{className:`mt-4 grid gap-2 text-xs text-fg-muted sm:grid-cols-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[fe,(0,$.jsx)(`span`,{children:X(u.phaseCount,{count:r.phases.length})})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[pe,(0,$.jsx)(`span`,{children:Kt(r,u)})]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[me,(0,$.jsx)(`span`,{children:X(u.runLimitsSummary,{concurrency:z??r.defaults.concurrency,max:V??r.defaults.maxSubagents})})]})]}),r.phases.length>0?(0,$.jsxs)(`div`,{className:`mt-4`,children:[(0,$.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-fg-subtle`,children:[(0,$.jsx)(x,{className:`size-3.5`,"aria-hidden":!0}),u.startPlanPhases]}),(0,$.jsx)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,children:r.phases.map(Xt)})]}):null]}),I&&r.inputSchema?(0,$.jsx)(Vt,{schema:r.inputSchema,value:C,onChange:w,labels:{inputSchemaHeading:u.inputSchemaHeading,rawJson:u.rawJson,rawJsonInvalid:u.rawJsonInvalid,booleanTrue:u.booleanTrue,booleanFalse:u.booleanFalse}}):null,!I&&ne.map(e=>(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsxs)(`span`,{className:`text-xs font-medium text-fg`,children:[Qt(u,e.labelKey),e.required?` *`:``]}),e.multiline?(0,$.jsx)(`textarea`,{value:_[e.key]??``,onChange:t=>y(n=>({...n,[e.key]:t.target.value})),placeholder:Qt(u,e.placeholderKey),className:`mt-1.5 min-h-20 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}):(0,$.jsx)(`input`,{value:_[e.key]??``,onChange:t=>y(n=>({...n,[e.key]:t.target.value})),placeholder:Qt(u,e.placeholderKey),className:`mt-1.5 w-full rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]},e.key)),L?(0,$.jsx)(Gt,{examples:re,labels:u,onSelect:ce}):null,(0,$.jsxs)(`label`,{className:`block`,children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-fg`,children:u.goalLabel}),(0,$.jsx)(`textarea`,{value:f,onChange:he,placeholder:u.goalPlaceholder,className:`mt-1.5 min-h-24 w-full resize-y rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}),L?null:(0,$.jsx)(Gt,{examples:re,labels:u,onSelect:ce}),(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between px-3 py-2.5 text-left text-sm text-fg`,onClick:ge,children:[ve,xe]}),k?(0,$.jsxs)(`div`,{className:`grid gap-3 border-t border-edge px-3 pb-3 pt-3 sm:grid-cols-2`,children:[(0,$.jsx)(`input`,{value:T,onChange:e=>E(e.target.value),placeholder:X(u.concurrencyPlaceholder,{default:r.defaults.concurrency}),inputMode:`numeric`,className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`}),(0,$.jsx)(`input`,{value:D,onChange:e=>O(e.target.value),placeholder:X(u.maxSubagentsPlaceholder,{default:r.defaults.maxSubagents}),inputMode:`numeric`,className:`rounded-xl border border-edge bg-surface-base px-3 py-2 text-sm text-fg outline-none placeholder:text-fg-subtle focus:border-accent focus:ring-2 focus:ring-accent/20`})]}):null]})]}),Te]})]})})}function Yt(e){return!e}function Xt(e,t){return(0,$.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t>0?(0,$.jsx)(`span`,{className:`text-fg-subtle`,children:`→`}):null,(0,$.jsx)(`span`,{className:`rounded-lg border border-edge-subtle bg-surface-panel px-2 py-1 text-[11px] text-fg-muted`,children:e.title})]},e.id)}function Zt(e){let[t,n]=e;return`${t}: ${String(n)}`}function Qt(e,t){return e.args[t]??t}function $t(e){let t=(0,Q.c)(28),{stats:n,language:r}=e,i,o,s;if(t[0]!==r||t[1]!==n){s=Symbol.for(`react.early_return_sentinel`);bb0:{if(i=a(r).workflows,!n||n.totalRuns===0){s=null;break bb0}o=n.topDefinitions[0]?X(i.statsTopWorkflow,{name:n.topDefinitions[0].definitionId,count:n.topDefinitions[0].count}):null}t[0]=r,t[1]=n,t[2]=i,t[3]=o,t[4]=s}else i=t[2],o=t[3],s=t[4];if(s!==Symbol.for(`react.early_return_sentinel`))return s;let c=o,l=i.statsTotalRuns,u=String(n.totalRuns),d;t[5]!==i.statsTotalRuns||t[6]!==u?(d=(0,$.jsx)(en,{label:l,value:u}),t[5]=i.statsTotalRuns,t[6]=u,t[7]=d):d=t[7];let f=i.statsActiveRuns,p=String(n.activeRuns),m;t[8]!==i.statsActiveRuns||t[9]!==p?(m=(0,$.jsx)(en,{label:f,value:p}),t[8]=i.statsActiveRuns,t[9]=p,t[10]=m):m=t[10];let h;t[11]!==n.succeededRuns||t[12]!==n.totalRuns?(h=n.totalRuns>0?`${Math.round(n.succeededRuns/n.totalRuns*100)}%`:`—`,t[11]=n.succeededRuns,t[12]=n.totalRuns,t[13]=h):h=t[13];let g;t[14]!==i.statsSuccessRate||t[15]!==h?(g=(0,$.jsx)(en,{label:i.statsSuccessRate,value:h}),t[14]=i.statsSuccessRate,t[15]=h,t[16]=g):g=t[16];let _;t[17]===n.averageDurationMs?_=t[18]:(_=n.averageDurationMs==null?`—`:ke(n.averageDurationMs),t[17]=n.averageDurationMs,t[18]=_);let v=c??void 0,y;t[19]!==i.statsAvgDuration||t[20]!==_||t[21]!==v?(y=(0,$.jsx)(en,{label:i.statsAvgDuration,value:_,hint:v}),t[19]=i.statsAvgDuration,t[20]=_,t[21]=v,t[22]=y):y=t[22];let b;return t[23]!==g||t[24]!==y||t[25]!==d||t[26]!==m?(b=(0,$.jsxs)(`section`,{className:`grid gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[d,m,g,y]}),t[23]=g,t[24]=y,t[25]=d,t[26]=m,t[27]=b):b=t[27],b}function en(e){let t=(0,Q.c)(10),{label:n,value:r,hint:i}=e,a;t[0]===n?a=t[1]:(a=(0,$.jsx)(`div`,{className:`text-xs text-fg-subtle`,children:n}),t[0]=n,t[1]=a);let o;t[2]===r?o=t[3]:(o=(0,$.jsx)(`div`,{className:`mt-1 text-lg font-semibold tabular-nums text-fg`,children:r}),t[2]=r,t[3]=o);let s;t[4]===i?s=t[5]:(s=i?(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] text-fg-muted`,children:i}):null,t[4]=i,t[5]=s);let c;return t[6]!==a||t[7]!==o||t[8]!==s?(c=(0,$.jsxs)(`div`,{className:`rounded-xl border border-edge bg-surface-panel px-4 py-3`,children:[a,o,s]}),t[6]=a,t[7]=o,t[8]=s,t[9]=c):c=t[9],c}function tn(e){let t=(0,Q.c)(27),{vm:n}=e,{labels:r,loading:i,searchQuery:a,setSearchQuery:o,refreshAll:s,setManageOpen:c}=n,l;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,$.jsx)(N,{className:`pointer-events-none absolute left-2.5 top-1/2 size-4 -translate-y-1/2 text-fg-subtle`,"aria-hidden":!0}),t[0]=l):l=t[0];let u;t[1]===o?u=t[2]:(u=e=>o(e.target.value),t[1]=o,t[2]=u);let d=r.searchPlaceholder,f;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(f=Y(`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`,le.focusRingPanel),t[3]=f):f=t[3];let p;t[4]!==r.searchPlaceholder||t[5]!==a||t[6]!==u?(p=(0,$.jsxs)(`div`,{className:`relative min-w-[12rem] flex-1 sm:max-w-xs`,children:[l,(0,$.jsx)(`input`,{value:a,onChange:u,placeholder:d,className:f})]}),t[4]=r.searchPlaceholder,t[5]=a,t[6]=u,t[7]=p):p=t[7];let m;t[8]===c?m=t[9]:(m=()=>c(!0),t[8]=c,t[9]=m);let h;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,$.jsx)(ie,{className:`size-4`,"aria-hidden":!0}),t[10]=h):h=t[10];let g;t[11]!==r.addWorkflow||t[12]!==m?(g=(0,$.jsxs)(W,{variant:`secondary`,onClick:m,children:[h,r.addWorkflow]}),t[11]=r.addWorkflow,t[12]=m,t[13]=g):g=t[13];let _=r.refresh,v=r.refresh,y=i&&`animate-spin`,b;t[14]===y?b=t[15]:(b=Y(`size-4`,y),t[14]=y,t[15]=b);let x;t[16]===b?x=t[17]:(x=(0,$.jsx)(G,{className:b,strokeWidth:1.75,"aria-hidden":!0}),t[16]=b,t[17]=x);let S;t[18]!==r.refresh||t[19]!==i||t[20]!==s||t[21]!==x?(S=(0,$.jsx)(W,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,onClick:s,disabled:i,title:_,"aria-label":v,children:x}),t[18]=r.refresh,t[19]=i,t[20]=s,t[21]=x,t[22]=S):S=t[22];let C;return t[23]!==S||t[24]!==p||t[25]!==g?(C=(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[p,g,S]}),t[23]=S,t[24]=p,t[25]=g,t[26]=C):C=t[26],C}function nn(e){let t=(0,Q.c)(180),{vm:n}=e,{language:r,localeTag:i,labels:o,hasToken:s,definitions:c,runs:l,searchQuery:u,ownerAgentId:d,agentOptions:f,setOwnerAgentId:p,workflowFilterId:m,setWorkflowFilterId:h,triggerFilter:g,setTriggerFilter:_,selectedRunId:v,selectedRunView:y,selectedRunLoading:b,selectedRunError:x,openRunDetails:S,closeRunDetails:C,openRunInChat:w,pickStartOpen:E,setPickStartOpen:D,startDefinition:O,setStartDefinition:k,detailDefinition:A,setDetailDefinition:j,manageOpen:ee,setManageOpen:M,actionError:N,actionFeedback:te,starting:ne,savingWorkflow:P,loading:F,error:re,stats:ie,submitStart:ae,cancelRun:I,retryRun:L,saveCustomWorkflow:R}=n,z=T(on),B=T(an),V;t[0]!==B||t[1]!==s||t[2]!==o.title||t[3]!==z||t[4]!==n?(V=()=>{if(!s){B();return}return z({startExtra:null,main:(0,$.jsx)(`div`,{className:`min-w-0`,children:(0,$.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:o.title})}),end:(0,$.jsx)(tn,{vm:n})}),()=>B()},t[0]=B,t[1]=s,t[2]=o.title,t[3]=z,t[4]=n,t[5]=V):V=t[5];let H;if(t[6]!==B||t[7]!==s||t[8]!==o.title||t[9]!==F||t[10]!==n?(H=[B,s,o.title,F,n,n.refreshAll,n.setManageOpen,n.setSearchQuery],t[6]=B,t[7]=s,t[8]=o.title,t[9]=F,t[10]=n,t[11]=H):H=t[11],(0,Z.useLayoutEffect)(V,H),!s){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,$.jsx)(J,{className:`size-10 text-accent-fg`,"aria-hidden":!0}),t[12]=e):e=t[12];let n;t[13]===o.title?n=t[14]:(n=(0,$.jsx)(`h1`,{className:`mt-4 text-xl font-semibold text-fg`,children:o.title}),t[13]=o.title,t[14]=n);let r;t[15]===o.needToken?r=t[16]:(r=(0,$.jsx)(`p`,{className:`mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:o.needToken}),t[15]=o.needToken,t[16]=r);let i;return t[17]!==n||t[18]!==r?(i=(0,$.jsx)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:(0,$.jsxs)(`div`,{className:`mx-auto flex w-full max-w-app-main flex-col items-center px-4 py-16 text-center sm:px-8`,children:[e,n,r]})}),t[17]=n,t[18]=r,t[19]=i):i=t[19],i}let oe;t[20]!==f||t[21]!==r||t[22]!==d||t[23]!==p?(oe=f.length>1?(0,$.jsx)(`select`,{value:d??``,"aria-label":`Agent`,onChange:e=>p(e.target.value),className:Y(`h-9 min-w-36 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,le.focusRingPanel),children:f.map(e=>(0,$.jsx)(`option`,{value:e.id,children:U(e,a(r).agentsSettings)},e.id))}):null,t[20]=f,t[21]=r,t[22]=d,t[23]=p,t[24]=oe):oe=t[24];let G=o.boardTriggerFilterAria,K;t[25]===_?K=t[26]:(K=e=>_(e.target.value),t[25]=_,t[26]=K);let se;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(se=Y(`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`,le.focusRingPanel),t[27]=se):se=t[27];let ce;t[28]===o.boardTriggerFilterAll?ce=t[29]:(ce=(0,$.jsx)(`option`,{value:`all`,children:o.boardTriggerFilterAll}),t[28]=o.boardTriggerFilterAll,t[29]=ce);let q;t[30]===o.boardTriggerFilterCron?q=t[31]:(q=(0,$.jsx)(`option`,{value:`cron`,children:o.boardTriggerFilterCron}),t[30]=o.boardTriggerFilterCron,t[31]=q);let ue;t[32]===o.boardTriggerFilterWebui?ue=t[33]:(ue=(0,$.jsx)(`option`,{value:`webui`,children:o.boardTriggerFilterWebui}),t[32]=o.boardTriggerFilterWebui,t[33]=ue);let fe;t[34]===o.boardTriggerFilterChat?fe=t[35]:(fe=(0,$.jsx)(`option`,{value:`chat`,children:o.boardTriggerFilterChat}),t[34]=o.boardTriggerFilterChat,t[35]=fe);let pe;t[36]===o.boardTriggerFilterApi?pe=t[37]:(pe=(0,$.jsx)(`option`,{value:`api`,children:o.boardTriggerFilterApi}),t[36]=o.boardTriggerFilterApi,t[37]=pe);let me;t[38]!==o.boardTriggerFilterAria||t[39]!==fe||t[40]!==pe||t[41]!==K||t[42]!==ce||t[43]!==q||t[44]!==ue||t[45]!==g?(me=(0,$.jsxs)(`select`,{value:g,"aria-label":G,onChange:K,className:se,children:[ce,q,ue,fe,pe]}),t[38]=o.boardTriggerFilterAria,t[39]=fe,t[40]=pe,t[41]=K,t[42]=ce,t[43]=q,t[44]=ue,t[45]=g,t[46]=me):me=t[46];let he=o.boardWorkflowFilterAria,ge;t[47]===h?ge=t[48]:(ge=e=>h(e.target.value),t[47]=h,t[48]=ge);let _e;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(_e=Y(`h-9 min-w-40 rounded-lg border border-edge bg-surface-panel px-2.5 text-xs font-medium text-fg shadow-surface`,le.focusRingPanel),t[49]=_e):_e=t[49];let ve;t[50]===o.boardWorkflowFilterAll?ve=t[51]:(ve=(0,$.jsx)(`option`,{value:``,children:o.boardWorkflowFilterAll}),t[50]=o.boardWorkflowFilterAll,t[51]=ve);let ye;t[52]===c?ye=t[53]:(ye=c.map(rn),t[52]=c,t[53]=ye);let be;t[54]!==o.boardWorkflowFilterAria||t[55]!==ge||t[56]!==ve||t[57]!==ye||t[58]!==m?(be=(0,$.jsxs)(`select`,{value:m,"aria-label":he,onChange:ge,className:_e,children:[ve,ye]}),t[54]=o.boardWorkflowFilterAria,t[55]=ge,t[56]=ve,t[57]=ye,t[58]=m,t[59]=be):be=t[59];let xe;t[60]===D?xe=t[61]:(xe=()=>D(!0),t[60]=D,t[61]=xe);let Se;t[62]===Symbol.for(`react.memo_cache_sentinel`)?(Se=(0,$.jsx)(de,{className:`size-4`,"aria-hidden":!0}),t[62]=Se):Se=t[62];let Ce;t[63]!==o.boardStart||t[64]!==xe?(Ce=(0,$.jsxs)(W,{variant:`primary`,onClick:xe,children:[Se,o.boardStart]}),t[63]=o.boardStart,t[64]=xe,t[65]=Ce):Ce=t[65];let we;t[66]!==me||t[67]!==be||t[68]!==Ce||t[69]!==oe?(we=(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[oe,me,be,Ce]}),t[66]=me,t[67]=be,t[68]=Ce,t[69]=oe,t[70]=we):we=t[70];let Te;t[71]===te?Te=t[72]:(Te=te?(0,$.jsx)(`div`,{className:`rounded-xl border border-emerald-500/25 bg-emerald-500/10 px-3 py-2 text-sm text-emerald-800 dark:text-emerald-200`,children:te}):null,t[71]=te,t[72]=Te);let Ee;t[73]!==N||t[74]!==re?(Ee=N??re?(0,$.jsx)(`div`,{className:`rounded-xl border border-red-500/25 bg-red-500/10 px-3 py-2 text-sm text-red-700 dark:text-red-300`,children:N??re}):null,t[73]=N,t[74]=re,t[75]=Ee):Ee=t[75];let De;t[76]!==r||t[77]!==ie?(De=(0,$.jsx)($t,{stats:ie,language:r}),t[76]=r,t[77]=ie,t[78]=De):De=t[78];let X;t[79]===x?X=t[80]:(X=x?(0,$.jsx)(`div`,{className:`rounded-xl border border-amber-500/25 bg-amber-500/10 px-3 py-2 text-sm text-amber-800 dark:text-amber-200`,children:x}):null,t[79]=x,t[80]=X);let Oe;t[81]!==o.boardEmptyHint||t[82]!==o.boardEmptyTitle||t[83]!==o.boardStart||t[84]!==o.loading?(Oe={boardEmptyTitle:o.boardEmptyTitle,boardEmptyHint:o.boardEmptyHint,boardStart:o.boardStart,loading:o.loading},t[81]=o.boardEmptyHint,t[82]=o.boardEmptyTitle,t[83]=o.boardStart,t[84]=o.loading,t[85]=Oe):Oe=t[85];let ke;t[86]===I?ke=t[87]:(ke=e=>void I(e),t[86]=I,t[87]=ke);let Ae;t[88]===L?Ae=t[89]:(Ae=e=>void L(e),t[88]=L,t[89]=Ae);let je;t[90]===D?je=t[91]:(je=()=>D(!0),t[90]=D,t[91]=je);let Me;t[92]!==r||t[93]!==F||t[94]!==i||t[95]!==S||t[96]!==w||t[97]!==l||t[98]!==u||t[99]!==v||t[100]!==Oe||t[101]!==ke||t[102]!==Ae||t[103]!==je||t[104]!==g||t[105]!==m?(Me=(0,$.jsx)(`div`,{className:`min-w-0`,children:(0,$.jsx)(at,{runs:l,language:r,localeTag:i,labels:Oe,searchQuery:u,workflowFilterId:m,triggerFilter:g,selectedRunId:v,loading:F,onOpenRun:S,onOpenRunChat:w,onCancelRun:ke,onRetryRun:Ae,onStart:je})}),t[92]=r,t[93]=F,t[94]=i,t[95]=S,t[96]=w,t[97]=l,t[98]=u,t[99]=v,t[100]=Oe,t[101]=ke,t[102]=Ae,t[103]=je,t[104]=g,t[105]=m,t[106]=Me):Me=t[106];let Ne;t[107]!==we||t[108]!==Te||t[109]!==Ee||t[110]!==De||t[111]!==X||t[112]!==Me?(Ne=(0,$.jsxs)(`div`,{className:`mx-auto flex w-full max-w-400 flex-col gap-5 px-4 py-6 lg:px-6`,children:[we,Te,Ee,De,X,Me]}),t[107]=we,t[108]=Te,t[109]=Ee,t[110]=De,t[111]=X,t[112]=Me,t[113]=Ne):Ne=t[113];let Pe=!!v&&b,Fe;t[114]!==I||t[115]!==v?(Fe=()=>{v&&I(v)},t[114]=I,t[115]=v,t[116]=Fe):Fe=t[116];let Ie;t[117]!==L||t[118]!==v?(Ie=()=>{v&&L(v)},t[117]=L,t[118]=v,t[119]=Ie):Ie=t[119];let Le;t[120]!==C||t[121]!==r||t[122]!==i||t[123]!==d||t[124]!==y||t[125]!==Pe||t[126]!==Fe||t[127]!==Ie?(Le=(0,$.jsx)(kt,{view:y,loading:Pe,language:r,localeTag:i,onCancel:Fe,onRetry:Ie,ownerAgentId:d,onClose:C}),t[120]=C,t[121]=r,t[122]=i,t[123]=d,t[124]=y,t[125]=Pe,t[126]=Fe,t[127]=Ie,t[128]=Le):Le=t[128];let Re;t[129]===D?Re=t[130]:(Re=()=>D(!1),t[129]=D,t[130]=Re);let ze;t[131]!==D||t[132]!==k?(ze=e=>{D(!1),k(e)},t[131]=D,t[132]=k,t[133]=ze):ze=t[133];let Be;t[134]!==c||t[135]!==r||t[136]!==E||t[137]!==Re||t[138]!==ze?(Be=(0,$.jsx)(xt,{open:E,definitions:c,language:r,onClose:Re,onPick:ze}),t[134]=c,t[135]=r,t[136]=E,t[137]=Re,t[138]=ze,t[139]=Be):Be=t[139];let Ve=O!=null,He;t[140]===k?He=t[141]:(He=()=>k(null),t[140]=k,t[141]=He);let Ue;t[142]===ae?Ue=t[143]:(Ue=e=>void ae(e),t[142]=ae,t[143]=Ue);let We;t[144]!==r||t[145]!==O||t[146]!==ne||t[147]!==Ve||t[148]!==He||t[149]!==Ue?(We=(0,$.jsx)(Jt,{open:Ve,definition:O,language:r,starting:ne,onClose:He,onStart:Ue}),t[144]=r,t[145]=O,t[146]=ne,t[147]=Ve,t[148]=He,t[149]=Ue,t[150]=We):We=t[150];let Ge=A!=null,Ke;t[151]===j?Ke=t[152]:(Ke=()=>j(null),t[151]=j,t[152]=Ke);let qe;t[153]!==A||t[154]!==j||t[155]!==k?(qe=()=>{A&&(j(null),k(A))},t[153]=A,t[154]=j,t[155]=k,t[156]=qe):qe=t[156];let Je;t[157]!==A||t[158]!==r||t[159]!==Ge||t[160]!==Ke||t[161]!==qe?(Je=(0,$.jsx)(lt,{open:Ge,definition:A,language:r,onClose:Ke,onRun:qe}),t[157]=A,t[158]=r,t[159]=Ge,t[160]=Ke,t[161]=qe,t[162]=Je):Je=t[162];let Ye;t[163]===M?Ye=t[164]:(Ye=()=>M(!1),t[163]=M,t[164]=Ye);let Xe;t[165]===R?Xe=t[166]:(Xe=e=>void R(e),t[165]=R,t[166]=Xe);let Ze;t[167]!==r||t[168]!==ee||t[169]!==P||t[170]!==Ye||t[171]!==Xe?(Ze=(0,$.jsx)(ht,{open:ee,language:r,saving:P,onClose:Ye,onSave:Xe}),t[167]=r,t[168]=ee,t[169]=P,t[170]=Ye,t[171]=Xe,t[172]=Ze):Ze=t[172];let Qe;return t[173]!==Ne||t[174]!==Le||t[175]!==Be||t[176]!==We||t[177]!==Je||t[178]!==Ze?(Qe=(0,$.jsxs)(`main`,{className:`min-h-0 flex-1 overflow-auto bg-surface-base`,children:[Ne,Le,Be,We,Je,Ze]}),t[173]=Ne,t[174]=Le,t[175]=Be,t[176]=We,t[177]=Je,t[178]=Ze,t[179]=Qe):Qe=t[179],Qe}function rn(e){return(0,$.jsx)(`option`,{value:e.id,children:e.title},e.id)}function an(e){return e.clearPageHeader}function on(e){return e.setPageHeader}function sn(){let e=i(e=>e.language),t=a(e).workflows,n=e===`zh`?`zh-CN`:`en-US`,r=c(e=>e.token),s=!!r,l=C(),[d,p]=I(),h=d.get(`q`)??``,_=d.get(`wf`)?.trim()??``,v=d.get(`trigger`)?.trim()||`all`,y=d.get(`run`)?.trim()??``,b=d.get(`agent`)?.trim()??``,[x,S]=(0,Z.useState)(null),[w,T]=(0,Z.useState)(!1),[D,O]=(0,Z.useState)(null),[A,j]=(0,Z.useState)(!1),[ee,M]=(0,Z.useState)(null),[N,te]=(0,Z.useState)(null),[ne,P]=(0,Z.useState)(!1),[ie,L]=(0,Z.useState)(!1),R=o(s?[`workflow-agents`,r]:null,g,{revalidateOnFocus:!1}),z=(0,Z.useMemo)(()=>{let e=R.data?.agents??[];return b&&e.some(e=>e.id===b)||b&&e.length===0?b:R.data?.defaultId??(b||void 0)},[R.data,b]),B=o(s?[`workflow-definitions`,r]:null,u,{revalidateOnFocus:!1}),V=o(s&&z?[`workflow-runs`,r,z]:null,()=>he(100,{ownerAgentId:z}),{revalidateOnFocus:!1,refreshInterval:e=>e?.length&&e.some(e=>e.status===`queued`||e.status===`running`)?3e3:0}),H=o(s&&z?[`workflow-stats`,r,z,_]:null,()=>E(_,{ownerAgentId:z}),{revalidateOnFocus:!1});(0,Z.useEffect)(()=>{if(!N)return;let e=window.setTimeout(()=>te(null),4e3);return()=>window.clearTimeout(e)},[N]);let U=B.data??[],W=R.data?.agents??[],oe=V.data??[],G=y||null,K=se(G,{ownerAgentId:z}),ce=(0,Z.useMemo)(()=>De(U,h,`all`,`all`),[U,h]),q=(0,Z.useCallback)(e=>{p(t=>{let n=new URLSearchParams(t);return e(n,t),n},{replace:!0})},[p]);(0,Z.useEffect)(()=>{let e=R.data?.agents??[];!b||e.length===0||e.some(e=>e.id===b)||q(e=>{R.data?.defaultId?e.set(F,R.data.defaultId):e.delete(F),e.delete(`run`)})},[R.data,b,q]);let le=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n?t.set(`q`,n):t.delete(`q`)})},[q]),J=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n?t.set(F,n):t.delete(F),t.delete(`run`)})},[q]),de=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n?t.set(`wf`,n):t.delete(`wf`)})},[q]),Y=(0,Z.useCallback)(e=>{q(t=>{let n=e.trim();n&&n!==`all`?t.set(ae,n):t.delete(ae)})},[q]),fe=(0,Z.useCallback)(e=>{q(t=>{z&&t.set(F,z),t.set(`run`,e.id)})},[z,q]),pe=(0,Z.useCallback)(()=>{q(e=>{e.delete(`run`)})},[q]),me=(0,Z.useCallback)(e=>{let t=Ie(e);t&&l(Ce(t))},[l]);(0,Z.useEffect)(()=>{d.get(`tab`)&&q(e=>{e.delete(`tab`)})},[q,d]),(0,Z.useEffect)(()=>{let e=d.get(`def`),t=d.get(ue)===`1`;if(!e||!U.length)return;let n=U.find(t=>t.id===e||t.name===e);n&&(t?S(n):O(n),q(e=>{e.delete(`def`),e.delete(ue)}))},[U,q,d]),(0,Z.useEffect)(()=>{let e=()=>{V.mutate(),H.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)}},[V,H]);let ge=(0,Z.useCallback)(()=>{R.mutate(),B.mutate(),V.mutate(),H.mutate()},[R,B,V,H]),_e=(0,Z.useCallback)(async e=>{if(x){P(!0),M(null);try{let n=await f({definitionId:x.id,goal:e.goal,input:e.input,agentId:z,concurrency:e.concurrency,maxSubagents:e.maxSubagents});S(null),await V.mutate(),await H.mutate(),te(t.startSuccess),q(e=>{z&&e.set(F,z),e.set(`run`,n.runId)})}catch(e){M(e instanceof Error?e.message:t.startFailed)}finally{P(!1)}}},[t.startFailed,t.startSuccess,z,q,V,x,H]),ye=(0,Z.useCallback)(async e=>{try{await re(e,{ownerAgentId:z}),await V.mutate(),await H.mutate()}catch(e){let n=e instanceof Error?e.message:t.cancelFailed;if(/not active|already finished/i.test(n)){await V.mutate(),await H.mutate();return}M(n)}},[t.cancelFailed,z,V,H]),be=(0,Z.useCallback)(async e=>{try{let t=await k(e,{ownerAgentId:z});await V.mutate(),await H.mutate(),q(e=>{z&&e.set(F,z),e.set(`run`,t.runId)})}catch(e){M(e instanceof Error?e.message:t.retryFailed)}},[t.retryFailed,z,q,V,H]),xe=(0,Z.useCallback)(async e=>{L(!0),M(null);try{await m(e.name,e.script),j(!1),await B.mutate(),te(t.saveWorkflowSuccess)}catch(e){M(e instanceof Error?e.message:t.saveWorkflowFailed)}finally{L(!1)}},[B,t.saveWorkflowFailed,t.saveWorkflowSuccess]),Se=(0,Z.useCallback)(async e=>{if(e.metadata.source===`user`&&window.confirm(X(t.deleteConfirm,{name:e.name}))){M(null);try{await ve(e.id),await B.mutate(),te(t.deleteWorkflowSuccess)}catch(e){M(e instanceof Error?e.message:t.deleteWorkflowFailed)}}},[B,t]),we=R.isLoading||B.isLoading||V.isLoading,Te=R.error?.message??B.error?.message??V.error?.message??null;return{language:e,localeTag:n,labels:t,hasToken:s,searchQuery:h,setSearchQuery:le,ownerAgentId:z,agentOptions:W,setOwnerAgentId:J,workflowFilterId:_,setWorkflowFilterId:de,triggerFilter:v,setTriggerFilter:Y,definitions:U,filteredDefinitions:ce,runs:oe,selectedRunId:G,selectedRunView:K.view,selectedRunLoading:K.loading,selectedRunError:K.error?.message??null,openRunDetails:fe,closeRunDetails:pe,openRunInChat:me,pickStartOpen:w,setPickStartOpen:T,startDefinition:x,setStartDefinition:S,detailDefinition:D,setDetailDefinition:O,manageOpen:A,setManageOpen:j,actionError:ee,actionFeedback:N,starting:ne,savingWorkflow:ie,loading:we,error:Te,stats:H.data,refreshAll:ge,submitStart:_e,cancelRun:ye,retryRun:be,saveCustomWorkflow:xe,removeCustomWorkflow:Se}}function cn(){let e=(0,Q.c)(2),t=sn(),n;return e[0]===t?n=e[1]:(n=(0,$.jsx)(nn,{vm:t}),e[0]=t,e[1]=n),n}export{cn as WorkflowsPage};
|
|
@@ -9,20 +9,20 @@
|
|
|
9
9
|
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
|
|
10
10
|
<link rel="apple-touch-icon" href="/logo.svg" />
|
|
11
11
|
<title>xopc</title>
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
+
<script type="module" crossorigin src="/assets/index-CEZxETzw.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/vendor-codemirror-DYoKfS8f.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/Combination-HAlzriaz.js">
|
|
18
18
|
<link rel="modulepreload" crossorigin href="/assets/vendor-swr-BIWyz7Rc.js">
|
|
19
|
-
<link rel="modulepreload" crossorigin href="/assets/url-
|
|
19
|
+
<link rel="modulepreload" crossorigin href="/assets/url-DPEStU4M.js">
|
|
20
20
|
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-DPHK1VkS.js">
|
|
21
21
|
<link rel="modulepreload" crossorigin href="/assets/circle-check-C23XjkUj.js">
|
|
22
22
|
<link rel="modulepreload" crossorigin href="/assets/copy-Dv6d4Dvw.js">
|
|
23
|
-
<link rel="modulepreload" crossorigin href="/assets/theme-store-
|
|
24
|
-
<link rel="modulepreload" crossorigin href="/assets/fetch-
|
|
25
|
-
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-
|
|
23
|
+
<link rel="modulepreload" crossorigin href="/assets/theme-store-DYgVdRB4.js">
|
|
24
|
+
<link rel="modulepreload" crossorigin href="/assets/fetch-CkvRO30i.js">
|
|
25
|
+
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-BkKyRDrF.js">
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/toast-z0toXu32.js">
|
|
27
27
|
<link rel="stylesheet" crossorigin href="/assets/index-BPYKW7FB.css">
|
|
28
28
|
</head>
|
package/dist/package.js
CHANGED
|
@@ -5,8 +5,8 @@ import { WORKSPACE_FILES, init_paths } from "../../config/paths.js";
|
|
|
5
5
|
import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES } from "./workspace.js";
|
|
6
6
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { dirname, join } from "node:path";
|
|
8
|
-
import { execFileSync } from "node:child_process";
|
|
9
8
|
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { execFileSync } from "node:child_process";
|
|
10
10
|
//#region src/agent/context/workspace-seed.ts
|
|
11
11
|
/**
|
|
12
12
|
* Seed profile Markdown files into `agents/<agentId>/profile/` (and optionally `git init` the Markdown workspace).
|
|
@@ -24,6 +24,7 @@ import type { SessionStore } from '../../session/store.js';
|
|
|
24
24
|
import type { SessionContext, SessionHydrator, SessionStateBag } from '../session/index.js';
|
|
25
25
|
import type { InboundAttachmentInput, MediaRef } from '../../channels/attachments/inbound-persist.js';
|
|
26
26
|
import { type ProcessDirectStreamingSseEvent } from '../service/process-direct-streaming.js';
|
|
27
|
+
import type { AgentSourceContextResolver } from '../source-context/types.js';
|
|
27
28
|
export interface TurnDispatcherConfig {
|
|
28
29
|
log: ContextualLogger;
|
|
29
30
|
agentManager: AgentManager;
|
|
@@ -53,6 +54,7 @@ export interface TurnDispatcherConfig {
|
|
|
53
54
|
sessionId: string;
|
|
54
55
|
previousSessionId: string;
|
|
55
56
|
} | null>;
|
|
57
|
+
sourceContextResolver?: AgentSourceContextResolver;
|
|
56
58
|
}
|
|
57
59
|
export type DirectAttachment = InboundAttachmentInput;
|
|
58
60
|
export declare class TurnDispatcher {
|
|
@@ -118,6 +118,7 @@ var TurnDispatcher = class {
|
|
|
118
118
|
reloadWebchatTranscript: (sk) => {
|
|
119
119
|
c.onSessionTranscriptUpdated?.(sk);
|
|
120
120
|
},
|
|
121
|
+
sourceContextResolver: c.sourceContextResolver,
|
|
121
122
|
maybeEmitWebchatTts: (sk, hadVoice) => maybeEmitWebchatTts({
|
|
122
123
|
config: c.getConfig(),
|
|
123
124
|
sessionStore: c.sessionStore,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-dispatcher.js","names":[],"sources":["../../../../src/agent/inbound/turn-dispatcher.ts"],"sourcesContent":["/**\n * TurnDispatcher — single entry point for direct (non-bus) agent turns.\n *\n * Wraps the two existing direct-turn runners (one-shot and streaming) so the\n * parent `AgentService` no longer carries a pair of huge `createXxxDeps()`\n * factories. The public surface — `processDirect`, `processDirectStreaming`,\n * `steerWebchatSession`, `enqueueWebchatSseEvent`,\n * `notifyWebchatTranscriptAppend` — matches what `AgentService` exposed\n * previously, so callers (gateway, CLI) are unchanged.\n *\n * Like `OutboundCoordinator` and `InboundLoop`, this class accepts a wide\n * dependency bag in its constructor (the direct-turn pipeline touches almost\n * every other subsystem). The win is that AgentService becomes the only place\n * that wires those dependencies together; individual responsibilities now live\n * in their own classes and are unit-testable.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport type { ContextualLogger } from '../../utils/logger/types.js';\n\nimport type { AgentManager } from '../agent-manager.js';\nimport type { CommandHandler } from '../messaging/command-handler.js';\nimport type { ModelManager } from '../models/index.js';\nimport type { SessionConfigStore } from '../../session/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport type {\n SessionContext,\n SessionHydrator,\n SessionStateBag,\n} from '../session/index.js';\nimport { queueEmbeddedSteer } from '../embedded/runs.js';\nimport type {\n InboundAttachmentInput,\n MediaRef,\n} from '../../channels/attachments/inbound-persist.js';\nimport {\n buildDirectUserMessageContent,\n} from '../service/build-direct-message-content.js';\nimport {\n runProcessDirectStreaming,\n type ProcessDirectStreamingDeps,\n type ProcessDirectStreamingSseEvent,\n} from '../service/process-direct-streaming.js';\nimport {\n runProcessDirect,\n type RunProcessDirectDeps,\n} from '../service/process-direct-one-shot.js';\nimport { maybeEmitWebchatTts } from '../service/webchat-tts.js';\n\nexport interface TurnDispatcherConfig {\n log: ContextualLogger;\n agentManager: AgentManager;\n sessionStore: SessionStore;\n modelManager: ModelManager;\n sessionConfigStore: SessionConfigStore;\n sessionState: SessionStateBag;\n commandHandler: CommandHandler;\n getConfig: () => Config | undefined;\n /** Strict accessor — required for direct-turn paths that must have a config. */\n requireConfig: () => Config;\n parseSessionKey: (sessionKey: string) => { channel: string; chatId: string };\n /** Establish per-session context (also creates the Agent + subscribes to events). */\n initSessionContext: (sessionKey: string, channel: string, chatId: string) => SessionContext;\n /** Per-session config hydration: workspace, model, thinking. */\n sessionHydrator: SessionHydrator;\n prepareInboundAttachments: (\n sessionKey: string,\n attachments?: InboundAttachmentInput[],\n ) => Promise<MediaRef[] | undefined>;\n enqueueMaybeAutoTitleAfterPersist: (sessionKey: string) => void;\n enqueueProvisionalSessionTitle?: (sessionKey: string, userText: string) => void;\n endDirectRequestContext: () => void;\n /** Gateway hook fired after assistant text lands on disk (UI refetch). */\n onSessionTranscriptUpdated?: (sessionKey: string) => void;\n resetSession: (sessionKey: string) => Promise<{ sessionId: string; previousSessionId: string } | null>;\n}\n\nexport type DirectAttachment = InboundAttachmentInput;\n\nexport class TurnDispatcher {\n private readonly cfg: TurnDispatcherConfig;\n private readonly log: ContextualLogger;\n\n constructor(cfg: TurnDispatcherConfig) {\n this.cfg = cfg;\n this.log = cfg.log;\n }\n\n /** One-shot direct turn (CLI / embedded TUI). */\n processDirect(\n content: string,\n sessionKey = 'agent:main:main',\n attachments?: DirectAttachment[],\n thinking?: string,\n ): Promise<string> {\n return runProcessDirect(this.buildOneShotDeps(), {\n content,\n sessionKey,\n attachments,\n thinking,\n });\n }\n\n /** Streaming direct turn (webchat SSE / CLI streaming). */\n async *processDirectStreaming(\n content: string,\n sessionKey = 'agent:main:main',\n attachments?: DirectAttachment[],\n thinking?: string,\n options?: { signal?: AbortSignal; runId?: string },\n ): AsyncGenerator<ProcessDirectStreamingSseEvent, void, unknown> {\n yield* runProcessDirectStreaming(this.buildStreamingDeps(), {\n content,\n sessionKey,\n attachments,\n thinking,\n signal: options?.signal,\n runId: options?.runId,\n });\n }\n\n /** Push an out-of-band event into the live webchat stream for a session. */\n enqueueWebchatSseEvent(\n sessionKey: string,\n event: { type: string; [key: string]: unknown },\n ): void {\n const pub = this.cfg.sessionState.getWebchatPublisher(sessionKey);\n if (pub) {\n pub(event);\n }\n }\n\n /** Stream assistant text to live webchat session + notify transcript listeners. */\n notifyWebchatTranscriptAppend(sessionKey: string, assistantText: string): void {\n const trimmed = assistantText.trim();\n if (trimmed) {\n const message = {\n role: 'assistant',\n content: [{ type: 'text', text: trimmed }],\n timestamp: Date.now(),\n };\n this.enqueueWebchatSseEvent(sessionKey, { type: 'message_start', message });\n this.enqueueWebchatSseEvent(sessionKey, { type: 'message_update', message });\n this.enqueueWebchatSseEvent(sessionKey, { type: 'message_end', message });\n }\n this.cfg.onSessionTranscriptUpdated?.(sessionKey);\n }\n\n /**\n * Queue a steering user message into pi-agent's in-flight run (delivered\n * after current tool work, before the next LLM call). See `Agent.steer`\n * in `@earendil-works/pi-agent-core`.\n */\n async steerWebchatSession(sessionKey: string, text: string): Promise<boolean> {\n const trimmed = text.trim();\n if (!trimmed) return false;\n try {\n return await queueEmbeddedSteer(sessionKey, trimmed);\n } catch (err) {\n this.log.warn({ err, sessionKey }, 'steerWebchatSession failed');\n return false;\n }\n }\n\n private buildStreamingDeps(): ProcessDirectStreamingDeps {\n const c = this.cfg;\n return {\n log: this.log,\n parseSessionKey: c.parseSessionKey,\n initDirectStreamingSession: c.initSessionContext,\n registerWebchatSsePublisher: (sk, publisher) =>\n c.sessionState.registerWebchatPublisher(sk, publisher),\n unregisterWebchatSsePublisher: (sk) => c.sessionState.unregisterWebchatPublisher(sk),\n agentManager: c.agentManager,\n hydrateSessionWorkspaceFromStore: (sk) => c.sessionHydrator.workspace(sk),\n hydrateSessionModelFromStore: (sk) => c.sessionHydrator.model(sk),\n sessionStore: c.sessionStore,\n modelManager: c.modelManager,\n applyResolvedThinkingLevel: (sk, t) => c.sessionHydrator.thinking(sk, t),\n getConfig: c.getConfig,\n sessionConfigStore: c.sessionConfigStore,\n commandHandler: c.commandHandler,\n prepareInboundAttachments: c.prepareInboundAttachments,\n buildTranscriptUserMessage: async (text, prepared, sk) =>\n buildDirectUserMessageContent({\n content: text,\n attachments: prepared,\n sessionKey: sk,\n config: c.requireConfig(),\n agentManager: c.agentManager,\n modelManager: c.modelManager,\n }),\n recordPersistentGoalStreamOutcome: (sk, o) =>\n c.sessionState.recordPersistentGoalStreamOutcome(sk, o),\n enqueueProvisionalSessionTitle: (sk, userText) => {\n c.enqueueProvisionalSessionTitle?.(sk, userText);\n },\n onTurnComplete: (sk, text) => {\n if (text) {\n c.sessionState.setLastAssistantText(sk, text);\n }\n c.enqueueMaybeAutoTitleAfterPersist(sk);\n },\n reloadWebchatTranscript: (sk) => {\n c.onSessionTranscriptUpdated?.(sk);\n },\n maybeEmitWebchatTts: (sk, hadVoice) =>\n maybeEmitWebchatTts(\n {\n config: c.getConfig(),\n sessionStore: c.sessionStore,\n getLastAssistantPlainText: (sessionKey) =>\n c.sessionState.getLastAssistantText(sessionKey) ??\n c.agentManager.getLastAssistantContent(sessionKey) ??\n '',\n log: this.log,\n },\n sk,\n hadVoice,\n ),\n endDirectRequestContext: c.endDirectRequestContext,\n resetSession: c.resetSession,\n };\n }\n\n private buildOneShotDeps(): RunProcessDirectDeps {\n const c = this.cfg;\n const cfg = c.requireConfig();\n return {\n log: this.log,\n config: cfg,\n parseSessionKey: c.parseSessionKey,\n initSessionContext: (sk, channel, chatId) => {\n void c.initSessionContext(sk, channel, chatId);\n },\n hydrateSessionWorkspaceFromStore: (sk) => c.sessionHydrator.workspace(sk),\n hydrateSessionModelFromStore: (sk) => c.sessionHydrator.model(sk),\n agentManager: c.agentManager,\n sessionStore: c.sessionStore,\n modelManager: c.modelManager,\n applyResolvedThinkingLevel: (sk, t) => c.sessionHydrator.thinking(sk, t),\n prepareInboundAttachments: c.prepareInboundAttachments,\n commandHandler: c.commandHandler,\n onTurnComplete: (sk, text) => {\n if (text) {\n c.sessionState.setLastAssistantText(sk, text);\n }\n c.enqueueMaybeAutoTitleAfterPersist(sk);\n },\n endDirectRequestContext: c.endDirectRequestContext,\n resetSession: c.resetSession,\n };\n }\n}\n"],"mappings":";;;;;;AA+EA,IAAa,iBAAb,MAA4B;CAC1B;CACA;CAEA,YAAY,KAA2B;AACrC,OAAK,MAAM;AACX,OAAK,MAAM,IAAI;;;CAIjB,cACE,SACA,aAAa,mBACb,aACA,UACiB;AACjB,SAAO,iBAAiB,KAAK,kBAAkB,EAAE;GAC/C;GACA;GACA;GACA;GACD,CAAC;;;CAIJ,OAAO,uBACL,SACA,aAAa,mBACb,aACA,UACA,SAC+D;AAC/D,SAAO,0BAA0B,KAAK,oBAAoB,EAAE;GAC1D;GACA;GACA;GACA;GACA,QAAQ,SAAS;GACjB,OAAO,SAAS;GACjB,CAAC;;;CAIJ,uBACE,YACA,OACM;EACN,MAAM,MAAM,KAAK,IAAI,aAAa,oBAAoB,WAAW;AACjE,MAAI,IACF,KAAI,MAAM;;;CAKd,8BAA8B,YAAoB,eAA6B;EAC7E,MAAM,UAAU,cAAc,MAAM;AACpC,MAAI,SAAS;GACX,MAAM,UAAU;IACd,MAAM;IACN,SAAS,CAAC;KAAE,MAAM;KAAQ,MAAM;KAAS,CAAC;IAC1C,WAAW,KAAK,KAAK;IACtB;AACD,QAAK,uBAAuB,YAAY;IAAE,MAAM;IAAiB;IAAS,CAAC;AAC3E,QAAK,uBAAuB,YAAY;IAAE,MAAM;IAAkB;IAAS,CAAC;AAC5E,QAAK,uBAAuB,YAAY;IAAE,MAAM;IAAe;IAAS,CAAC;;AAE3E,OAAK,IAAI,6BAA6B,WAAW;;;;;;;CAQnD,MAAM,oBAAoB,YAAoB,MAAgC;EAC5E,MAAM,UAAU,KAAK,MAAM;AAC3B,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI;AACF,UAAO,MAAM,mBAAmB,YAAY,QAAQ;WAC7C,KAAK;AACZ,QAAK,IAAI,KAAK;IAAE;IAAK;IAAY,EAAE,6BAA6B;AAChE,UAAO;;;CAIX,qBAAyD;EACvD,MAAM,IAAI,KAAK;AACf,SAAO;GACL,KAAK,KAAK;GACV,iBAAiB,EAAE;GACnB,4BAA4B,EAAE;GAC9B,8BAA8B,IAAI,cAChC,EAAE,aAAa,yBAAyB,IAAI,UAAU;GACxD,gCAAgC,OAAO,EAAE,aAAa,2BAA2B,GAAG;GACpF,cAAc,EAAE;GAChB,mCAAmC,OAAO,EAAE,gBAAgB,UAAU,GAAG;GACzE,+BAA+B,OAAO,EAAE,gBAAgB,MAAM,GAAG;GACjE,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,6BAA6B,IAAI,MAAM,EAAE,gBAAgB,SAAS,IAAI,EAAE;GACxE,WAAW,EAAE;GACb,oBAAoB,EAAE;GACtB,gBAAgB,EAAE;GAClB,2BAA2B,EAAE;GAC7B,4BAA4B,OAAO,MAAM,UAAU,OACjD,8BAA8B;IAC5B,SAAS;IACT,aAAa;IACb,YAAY;IACZ,QAAQ,EAAE,eAAe;IACzB,cAAc,EAAE;IAChB,cAAc,EAAE;IACjB,CAAC;GACJ,oCAAoC,IAAI,MACtC,EAAE,aAAa,kCAAkC,IAAI,EAAE;GACzD,iCAAiC,IAAI,aAAa;AAChD,MAAE,iCAAiC,IAAI,SAAS;;GAElD,iBAAiB,IAAI,SAAS;AAC5B,QAAI,KACF,GAAE,aAAa,qBAAqB,IAAI,KAAK;AAE/C,MAAE,kCAAkC,GAAG;;GAEzC,0BAA0B,OAAO;AAC/B,MAAE,6BAA6B,GAAG;;GAEpC,sBAAsB,IAAI,aACxB,oBACE;IACE,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE;IAChB,4BAA4B,eAC1B,EAAE,aAAa,qBAAqB,WAAW,IAC/C,EAAE,aAAa,wBAAwB,WAAW,IAClD;IACF,KAAK,KAAK;IACX,EACD,IACA,SACD;GACH,yBAAyB,EAAE;GAC3B,cAAc,EAAE;GACjB;;CAGH,mBAAiD;EAC/C,MAAM,IAAI,KAAK;EACf,MAAM,MAAM,EAAE,eAAe;AAC7B,SAAO;GACL,KAAK,KAAK;GACV,QAAQ;GACR,iBAAiB,EAAE;GACnB,qBAAqB,IAAI,SAAS,WAAW;AACtC,MAAE,mBAAmB,IAAI,SAAS,OAAO;;GAEhD,mCAAmC,OAAO,EAAE,gBAAgB,UAAU,GAAG;GACzE,+BAA+B,OAAO,EAAE,gBAAgB,MAAM,GAAG;GACjE,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,6BAA6B,IAAI,MAAM,EAAE,gBAAgB,SAAS,IAAI,EAAE;GACxE,2BAA2B,EAAE;GAC7B,gBAAgB,EAAE;GAClB,iBAAiB,IAAI,SAAS;AAC5B,QAAI,KACF,GAAE,aAAa,qBAAqB,IAAI,KAAK;AAE/C,MAAE,kCAAkC,GAAG;;GAEzC,yBAAyB,EAAE;GAC3B,cAAc,EAAE;GACjB"}
|
|
1
|
+
{"version":3,"file":"turn-dispatcher.js","names":[],"sources":["../../../../src/agent/inbound/turn-dispatcher.ts"],"sourcesContent":["/**\n * TurnDispatcher — single entry point for direct (non-bus) agent turns.\n *\n * Wraps the two existing direct-turn runners (one-shot and streaming) so the\n * parent `AgentService` no longer carries a pair of huge `createXxxDeps()`\n * factories. The public surface — `processDirect`, `processDirectStreaming`,\n * `steerWebchatSession`, `enqueueWebchatSseEvent`,\n * `notifyWebchatTranscriptAppend` — matches what `AgentService` exposed\n * previously, so callers (gateway, CLI) are unchanged.\n *\n * Like `OutboundCoordinator` and `InboundLoop`, this class accepts a wide\n * dependency bag in its constructor (the direct-turn pipeline touches almost\n * every other subsystem). The win is that AgentService becomes the only place\n * that wires those dependencies together; individual responsibilities now live\n * in their own classes and are unit-testable.\n */\n\nimport type { Config } from '../../config/schema.js';\nimport type { ContextualLogger } from '../../utils/logger/types.js';\n\nimport type { AgentManager } from '../agent-manager.js';\nimport type { CommandHandler } from '../messaging/command-handler.js';\nimport type { ModelManager } from '../models/index.js';\nimport type { SessionConfigStore } from '../../session/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport type {\n SessionContext,\n SessionHydrator,\n SessionStateBag,\n} from '../session/index.js';\nimport { queueEmbeddedSteer } from '../embedded/runs.js';\nimport type {\n InboundAttachmentInput,\n MediaRef,\n} from '../../channels/attachments/inbound-persist.js';\nimport {\n buildDirectUserMessageContent,\n} from '../service/build-direct-message-content.js';\nimport {\n runProcessDirectStreaming,\n type ProcessDirectStreamingDeps,\n type ProcessDirectStreamingSseEvent,\n} from '../service/process-direct-streaming.js';\nimport {\n runProcessDirect,\n type RunProcessDirectDeps,\n} from '../service/process-direct-one-shot.js';\nimport { maybeEmitWebchatTts } from '../service/webchat-tts.js';\nimport type { AgentSourceContextResolver } from '../source-context/types.js';\n\nexport interface TurnDispatcherConfig {\n log: ContextualLogger;\n agentManager: AgentManager;\n sessionStore: SessionStore;\n modelManager: ModelManager;\n sessionConfigStore: SessionConfigStore;\n sessionState: SessionStateBag;\n commandHandler: CommandHandler;\n getConfig: () => Config | undefined;\n /** Strict accessor — required for direct-turn paths that must have a config. */\n requireConfig: () => Config;\n parseSessionKey: (sessionKey: string) => { channel: string; chatId: string };\n /** Establish per-session context (also creates the Agent + subscribes to events). */\n initSessionContext: (sessionKey: string, channel: string, chatId: string) => SessionContext;\n /** Per-session config hydration: workspace, model, thinking. */\n sessionHydrator: SessionHydrator;\n prepareInboundAttachments: (\n sessionKey: string,\n attachments?: InboundAttachmentInput[],\n ) => Promise<MediaRef[] | undefined>;\n enqueueMaybeAutoTitleAfterPersist: (sessionKey: string) => void;\n enqueueProvisionalSessionTitle?: (sessionKey: string, userText: string) => void;\n endDirectRequestContext: () => void;\n /** Gateway hook fired after assistant text lands on disk (UI refetch). */\n onSessionTranscriptUpdated?: (sessionKey: string) => void;\n resetSession: (sessionKey: string) => Promise<{ sessionId: string; previousSessionId: string } | null>;\n sourceContextResolver?: AgentSourceContextResolver;\n}\n\nexport type DirectAttachment = InboundAttachmentInput;\n\nexport class TurnDispatcher {\n private readonly cfg: TurnDispatcherConfig;\n private readonly log: ContextualLogger;\n\n constructor(cfg: TurnDispatcherConfig) {\n this.cfg = cfg;\n this.log = cfg.log;\n }\n\n /** One-shot direct turn (CLI / embedded TUI). */\n processDirect(\n content: string,\n sessionKey = 'agent:main:main',\n attachments?: DirectAttachment[],\n thinking?: string,\n ): Promise<string> {\n return runProcessDirect(this.buildOneShotDeps(), {\n content,\n sessionKey,\n attachments,\n thinking,\n });\n }\n\n /** Streaming direct turn (webchat SSE / CLI streaming). */\n async *processDirectStreaming(\n content: string,\n sessionKey = 'agent:main:main',\n attachments?: DirectAttachment[],\n thinking?: string,\n options?: { signal?: AbortSignal; runId?: string },\n ): AsyncGenerator<ProcessDirectStreamingSseEvent, void, unknown> {\n yield* runProcessDirectStreaming(this.buildStreamingDeps(), {\n content,\n sessionKey,\n attachments,\n thinking,\n signal: options?.signal,\n runId: options?.runId,\n });\n }\n\n /** Push an out-of-band event into the live webchat stream for a session. */\n enqueueWebchatSseEvent(\n sessionKey: string,\n event: { type: string; [key: string]: unknown },\n ): void {\n const pub = this.cfg.sessionState.getWebchatPublisher(sessionKey);\n if (pub) {\n pub(event);\n }\n }\n\n /** Stream assistant text to live webchat session + notify transcript listeners. */\n notifyWebchatTranscriptAppend(sessionKey: string, assistantText: string): void {\n const trimmed = assistantText.trim();\n if (trimmed) {\n const message = {\n role: 'assistant',\n content: [{ type: 'text', text: trimmed }],\n timestamp: Date.now(),\n };\n this.enqueueWebchatSseEvent(sessionKey, { type: 'message_start', message });\n this.enqueueWebchatSseEvent(sessionKey, { type: 'message_update', message });\n this.enqueueWebchatSseEvent(sessionKey, { type: 'message_end', message });\n }\n this.cfg.onSessionTranscriptUpdated?.(sessionKey);\n }\n\n /**\n * Queue a steering user message into pi-agent's in-flight run (delivered\n * after current tool work, before the next LLM call). See `Agent.steer`\n * in `@earendil-works/pi-agent-core`.\n */\n async steerWebchatSession(sessionKey: string, text: string): Promise<boolean> {\n const trimmed = text.trim();\n if (!trimmed) return false;\n try {\n return await queueEmbeddedSteer(sessionKey, trimmed);\n } catch (err) {\n this.log.warn({ err, sessionKey }, 'steerWebchatSession failed');\n return false;\n }\n }\n\n private buildStreamingDeps(): ProcessDirectStreamingDeps {\n const c = this.cfg;\n return {\n log: this.log,\n parseSessionKey: c.parseSessionKey,\n initDirectStreamingSession: c.initSessionContext,\n registerWebchatSsePublisher: (sk, publisher) =>\n c.sessionState.registerWebchatPublisher(sk, publisher),\n unregisterWebchatSsePublisher: (sk) => c.sessionState.unregisterWebchatPublisher(sk),\n agentManager: c.agentManager,\n hydrateSessionWorkspaceFromStore: (sk) => c.sessionHydrator.workspace(sk),\n hydrateSessionModelFromStore: (sk) => c.sessionHydrator.model(sk),\n sessionStore: c.sessionStore,\n modelManager: c.modelManager,\n applyResolvedThinkingLevel: (sk, t) => c.sessionHydrator.thinking(sk, t),\n getConfig: c.getConfig,\n sessionConfigStore: c.sessionConfigStore,\n commandHandler: c.commandHandler,\n prepareInboundAttachments: c.prepareInboundAttachments,\n buildTranscriptUserMessage: async (text, prepared, sk) =>\n buildDirectUserMessageContent({\n content: text,\n attachments: prepared,\n sessionKey: sk,\n config: c.requireConfig(),\n agentManager: c.agentManager,\n modelManager: c.modelManager,\n }),\n recordPersistentGoalStreamOutcome: (sk, o) =>\n c.sessionState.recordPersistentGoalStreamOutcome(sk, o),\n enqueueProvisionalSessionTitle: (sk, userText) => {\n c.enqueueProvisionalSessionTitle?.(sk, userText);\n },\n onTurnComplete: (sk, text) => {\n if (text) {\n c.sessionState.setLastAssistantText(sk, text);\n }\n c.enqueueMaybeAutoTitleAfterPersist(sk);\n },\n reloadWebchatTranscript: (sk) => {\n c.onSessionTranscriptUpdated?.(sk);\n },\n sourceContextResolver: c.sourceContextResolver,\n maybeEmitWebchatTts: (sk, hadVoice) =>\n maybeEmitWebchatTts(\n {\n config: c.getConfig(),\n sessionStore: c.sessionStore,\n getLastAssistantPlainText: (sessionKey) =>\n c.sessionState.getLastAssistantText(sessionKey) ??\n c.agentManager.getLastAssistantContent(sessionKey) ??\n '',\n log: this.log,\n },\n sk,\n hadVoice,\n ),\n endDirectRequestContext: c.endDirectRequestContext,\n resetSession: c.resetSession,\n };\n }\n\n private buildOneShotDeps(): RunProcessDirectDeps {\n const c = this.cfg;\n const cfg = c.requireConfig();\n return {\n log: this.log,\n config: cfg,\n parseSessionKey: c.parseSessionKey,\n initSessionContext: (sk, channel, chatId) => {\n void c.initSessionContext(sk, channel, chatId);\n },\n hydrateSessionWorkspaceFromStore: (sk) => c.sessionHydrator.workspace(sk),\n hydrateSessionModelFromStore: (sk) => c.sessionHydrator.model(sk),\n agentManager: c.agentManager,\n sessionStore: c.sessionStore,\n modelManager: c.modelManager,\n applyResolvedThinkingLevel: (sk, t) => c.sessionHydrator.thinking(sk, t),\n prepareInboundAttachments: c.prepareInboundAttachments,\n commandHandler: c.commandHandler,\n onTurnComplete: (sk, text) => {\n if (text) {\n c.sessionState.setLastAssistantText(sk, text);\n }\n c.enqueueMaybeAutoTitleAfterPersist(sk);\n },\n endDirectRequestContext: c.endDirectRequestContext,\n resetSession: c.resetSession,\n };\n }\n}\n"],"mappings":";;;;;;AAiFA,IAAa,iBAAb,MAA4B;CAC1B;CACA;CAEA,YAAY,KAA2B;AACrC,OAAK,MAAM;AACX,OAAK,MAAM,IAAI;;;CAIjB,cACE,SACA,aAAa,mBACb,aACA,UACiB;AACjB,SAAO,iBAAiB,KAAK,kBAAkB,EAAE;GAC/C;GACA;GACA;GACA;GACD,CAAC;;;CAIJ,OAAO,uBACL,SACA,aAAa,mBACb,aACA,UACA,SAC+D;AAC/D,SAAO,0BAA0B,KAAK,oBAAoB,EAAE;GAC1D;GACA;GACA;GACA;GACA,QAAQ,SAAS;GACjB,OAAO,SAAS;GACjB,CAAC;;;CAIJ,uBACE,YACA,OACM;EACN,MAAM,MAAM,KAAK,IAAI,aAAa,oBAAoB,WAAW;AACjE,MAAI,IACF,KAAI,MAAM;;;CAKd,8BAA8B,YAAoB,eAA6B;EAC7E,MAAM,UAAU,cAAc,MAAM;AACpC,MAAI,SAAS;GACX,MAAM,UAAU;IACd,MAAM;IACN,SAAS,CAAC;KAAE,MAAM;KAAQ,MAAM;KAAS,CAAC;IAC1C,WAAW,KAAK,KAAK;IACtB;AACD,QAAK,uBAAuB,YAAY;IAAE,MAAM;IAAiB;IAAS,CAAC;AAC3E,QAAK,uBAAuB,YAAY;IAAE,MAAM;IAAkB;IAAS,CAAC;AAC5E,QAAK,uBAAuB,YAAY;IAAE,MAAM;IAAe;IAAS,CAAC;;AAE3E,OAAK,IAAI,6BAA6B,WAAW;;;;;;;CAQnD,MAAM,oBAAoB,YAAoB,MAAgC;EAC5E,MAAM,UAAU,KAAK,MAAM;AAC3B,MAAI,CAAC,QAAS,QAAO;AACrB,MAAI;AACF,UAAO,MAAM,mBAAmB,YAAY,QAAQ;WAC7C,KAAK;AACZ,QAAK,IAAI,KAAK;IAAE;IAAK;IAAY,EAAE,6BAA6B;AAChE,UAAO;;;CAIX,qBAAyD;EACvD,MAAM,IAAI,KAAK;AACf,SAAO;GACL,KAAK,KAAK;GACV,iBAAiB,EAAE;GACnB,4BAA4B,EAAE;GAC9B,8BAA8B,IAAI,cAChC,EAAE,aAAa,yBAAyB,IAAI,UAAU;GACxD,gCAAgC,OAAO,EAAE,aAAa,2BAA2B,GAAG;GACpF,cAAc,EAAE;GAChB,mCAAmC,OAAO,EAAE,gBAAgB,UAAU,GAAG;GACzE,+BAA+B,OAAO,EAAE,gBAAgB,MAAM,GAAG;GACjE,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,6BAA6B,IAAI,MAAM,EAAE,gBAAgB,SAAS,IAAI,EAAE;GACxE,WAAW,EAAE;GACb,oBAAoB,EAAE;GACtB,gBAAgB,EAAE;GAClB,2BAA2B,EAAE;GAC7B,4BAA4B,OAAO,MAAM,UAAU,OACjD,8BAA8B;IAC5B,SAAS;IACT,aAAa;IACb,YAAY;IACZ,QAAQ,EAAE,eAAe;IACzB,cAAc,EAAE;IAChB,cAAc,EAAE;IACjB,CAAC;GACJ,oCAAoC,IAAI,MACtC,EAAE,aAAa,kCAAkC,IAAI,EAAE;GACzD,iCAAiC,IAAI,aAAa;AAChD,MAAE,iCAAiC,IAAI,SAAS;;GAElD,iBAAiB,IAAI,SAAS;AAC5B,QAAI,KACF,GAAE,aAAa,qBAAqB,IAAI,KAAK;AAE/C,MAAE,kCAAkC,GAAG;;GAEzC,0BAA0B,OAAO;AAC/B,MAAE,6BAA6B,GAAG;;GAEpC,uBAAuB,EAAE;GACzB,sBAAsB,IAAI,aACxB,oBACE;IACE,QAAQ,EAAE,WAAW;IACrB,cAAc,EAAE;IAChB,4BAA4B,eAC1B,EAAE,aAAa,qBAAqB,WAAW,IAC/C,EAAE,aAAa,wBAAwB,WAAW,IAClD;IACF,KAAK,KAAK;IACX,EACD,IACA,SACD;GACH,yBAAyB,EAAE;GAC3B,cAAc,EAAE;GACjB;;CAGH,mBAAiD;EAC/C,MAAM,IAAI,KAAK;EACf,MAAM,MAAM,EAAE,eAAe;AAC7B,SAAO;GACL,KAAK,KAAK;GACV,QAAQ;GACR,iBAAiB,EAAE;GACnB,qBAAqB,IAAI,SAAS,WAAW;AACtC,MAAE,mBAAmB,IAAI,SAAS,OAAO;;GAEhD,mCAAmC,OAAO,EAAE,gBAAgB,UAAU,GAAG;GACzE,+BAA+B,OAAO,EAAE,gBAAgB,MAAM,GAAG;GACjE,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,6BAA6B,IAAI,MAAM,EAAE,gBAAgB,SAAS,IAAI,EAAE;GACxE,2BAA2B,EAAE;GAC7B,gBAAgB,EAAE;GAClB,iBAAiB,IAAI,SAAS;AAC5B,QAAI,KACF,GAAE,aAAa,qBAAqB,IAAI,KAAK;AAE/C,MAAE,kCAAkC,GAAG;;GAEzC,yBAAyB,EAAE;GAC3B,cAAc,EAAE;GACjB"}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
|
-
import { isManagedConnectorServer } from "../../connectors/materialize.js";
|
|
2
1
|
import { normalizeConfiguredMcpServers } from "../../config/mcp-config-normalize.js";
|
|
2
|
+
import { loadEnabledBundleMcpConfig } from "../../extensions/bundle-mcp.js";
|
|
3
3
|
//#region src/agent/mcp/bundle-mcp-config.ts
|
|
4
|
-
function
|
|
4
|
+
function listConfiguredMcpServers(params) {
|
|
5
5
|
const configuredMcp = normalizeConfiguredMcpServers(params.cfg?.mcp?.servers);
|
|
6
|
-
return Object.fromEntries(Object.entries(configuredMcp).
|
|
6
|
+
return Object.fromEntries(Object.entries(configuredMcp).map(([name, server]) => [name, params.mapConfiguredServer(server, name)]));
|
|
7
7
|
}
|
|
8
8
|
function loadMergedBundleMcpConfig(params) {
|
|
9
9
|
const mapConfiguredServer = params.mapConfiguredServer ?? ((server) => server);
|
|
10
|
+
const bundled = loadEnabledBundleMcpConfig({
|
|
11
|
+
workspaceDir: params.workspaceDir,
|
|
12
|
+
cfg: params.cfg
|
|
13
|
+
});
|
|
14
|
+
const configured = listConfiguredMcpServers({
|
|
15
|
+
cfg: params.cfg,
|
|
16
|
+
mapConfiguredServer
|
|
17
|
+
});
|
|
10
18
|
return {
|
|
11
|
-
config: { mcpServers:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
diagnostics:
|
|
19
|
+
config: { mcpServers: {
|
|
20
|
+
...bundled.config.mcpServers,
|
|
21
|
+
...configured
|
|
22
|
+
} },
|
|
23
|
+
diagnostics: bundled.diagnostics
|
|
16
24
|
};
|
|
17
25
|
}
|
|
18
26
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-mcp-config.js","names":[],"sources":["../../../../src/agent/mcp/bundle-mcp-config.ts"],"sourcesContent":["import { normalizeConfiguredMcpServers } from '../../config/mcp-config-normalize.js';\nimport
|
|
1
|
+
{"version":3,"file":"bundle-mcp-config.js","names":[],"sources":["../../../../src/agent/mcp/bundle-mcp-config.ts"],"sourcesContent":["import { normalizeConfiguredMcpServers } from '../../config/mcp-config-normalize.js';\nimport type { Config } from '../../config/schema.js';\nimport {\n loadEnabledBundleMcpConfig,\n type BundleMcpConfig,\n type BundleMcpDiagnostic,\n type BundleMcpServerConfig,\n} from '../../extensions/bundle-mcp.js';\n\nexport type MergedBundleMcpConfig = {\n config: BundleMcpConfig;\n diagnostics: BundleMcpDiagnostic[];\n};\n\nexport type BundleMcpServerMapper = (\n server: BundleMcpServerConfig,\n name: string,\n) => BundleMcpServerConfig;\n\nfunction listConfiguredMcpServers(params: {\n cfg?: Config;\n mapConfiguredServer: BundleMcpServerMapper;\n}): BundleMcpConfig[\"mcpServers\"] {\n const configuredMcp = normalizeConfiguredMcpServers(params.cfg?.mcp?.servers);\n return Object.fromEntries(\n Object.entries(configuredMcp)\n .map(([name, server]) => [\n name,\n params.mapConfiguredServer(server as BundleMcpServerConfig, name),\n ]),\n ) satisfies BundleMcpConfig[\"mcpServers\"];\n}\n\nexport function loadMergedBundleMcpConfig(params: {\n workspaceDir: string;\n cfg?: Config;\n mapConfiguredServer?: BundleMcpServerMapper;\n}): MergedBundleMcpConfig {\n const mapConfiguredServer = params.mapConfiguredServer ?? ((server) => server);\n const bundled = loadEnabledBundleMcpConfig({\n workspaceDir: params.workspaceDir,\n cfg: params.cfg,\n });\n const configured = listConfiguredMcpServers({\n cfg: params.cfg,\n mapConfiguredServer,\n });\n\n return {\n config: {\n mcpServers: {\n ...bundled.config.mcpServers,\n ...configured,\n },\n },\n diagnostics: bundled.diagnostics,\n };\n}\n"],"mappings":";;;AAmBA,SAAS,yBAAyB,QAGA;CAChC,MAAM,gBAAgB,8BAA8B,OAAO,KAAK,KAAK,QAAQ;AAC7E,QAAO,OAAO,YACZ,OAAO,QAAQ,cAAc,CAC1B,KAAK,CAAC,MAAM,YAAY,CACvB,MACA,OAAO,oBAAoB,QAAiC,KAAK,CAClE,CAAC,CACL;;AAGH,SAAgB,0BAA0B,QAIhB;CACxB,MAAM,sBAAsB,OAAO,yBAAyB,WAAW;CACvE,MAAM,UAAU,2BAA2B;EACzC,cAAc,OAAO;EACrB,KAAK,OAAO;EACb,CAAC;CACF,MAAM,aAAa,yBAAyB;EAC1C,KAAK,OAAO;EACZ;EACD,CAAC;AAEF,QAAO;EACL,QAAQ,EACN,YAAY;GACV,GAAG,QAAQ,OAAO;GAClB,GAAG;GACJ,EACF;EACD,aAAa,QAAQ;EACtB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import "./bundle-mcp-names.js";
|
|
2
|
-
import {
|
|
2
|
+
import { hasAnyMcpServers } from "../../extensions/bundle-mcp.js";
|
|
3
3
|
//#region src/agent/mcp/bundle-mcp-policy.ts
|
|
4
4
|
function shouldCreateBundleMcpRuntimeForAttempt(params) {
|
|
5
5
|
if (params.toolsEnabled === false) return false;
|
|
6
6
|
if (params.disabledTools?.has("bundle-mcp")) return false;
|
|
7
|
-
return
|
|
7
|
+
return hasAnyMcpServers(params.cfg ?? {});
|
|
8
8
|
}
|
|
9
9
|
function isMcpToolName(toolName) {
|
|
10
10
|
return toolName.includes("__");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-mcp-policy.js","names":[],"sources":["../../../../src/agent/mcp/bundle-mcp-policy.ts"],"sourcesContent":["import { TOOL_NAME_SEPARATOR } from './bundle-mcp-names.js';\nimport {
|
|
1
|
+
{"version":3,"file":"bundle-mcp-policy.js","names":[],"sources":["../../../../src/agent/mcp/bundle-mcp-policy.ts"],"sourcesContent":["import { TOOL_NAME_SEPARATOR } from './bundle-mcp-names.js';\nimport { hasAnyMcpServers } from '../../extensions/bundle-mcp.js';\nimport type { Config } from '../../config/schema.js';\n\nexport function shouldCreateBundleMcpRuntimeForAttempt(params: {\n cfg?: Config;\n toolsEnabled?: boolean;\n disabledTools?: Set<string>;\n}): boolean {\n if (params.toolsEnabled === false) {\n return false;\n }\n if (params.disabledTools?.has('bundle-mcp')) {\n return false;\n }\n return hasAnyMcpServers(params.cfg ?? ({} as Config));\n}\n\nexport function isMcpToolName(toolName: string): boolean {\n return toolName.includes(TOOL_NAME_SEPARATOR);\n}\n\nexport function parseMcpToolName(toolName: string): { serverId: string; toolId: string } | null {\n const idx = toolName.indexOf(TOOL_NAME_SEPARATOR);\n if (idx <= 0) {\n return null;\n }\n return {\n serverId: toolName.slice(0, idx),\n toolId: toolName.slice(idx + TOOL_NAME_SEPARATOR.length),\n };\n}\n"],"mappings":";;;AAIA,SAAgB,uCAAuC,QAI3C;AACV,KAAI,OAAO,iBAAiB,MAC1B,QAAO;AAET,KAAI,OAAO,eAAe,IAAI,aAAa,CACzC,QAAO;AAET,QAAO,iBAAiB,OAAO,OAAQ,EAAE,CAAY;;AAGvD,SAAgB,cAAc,UAA2B;AACvD,QAAO,SAAS,SAAA,KAA6B;;AAG/C,SAAgB,iBAAiB,UAA+D;CAC9F,MAAM,MAAM,SAAS,QAAA,KAA4B;AACjD,KAAI,OAAO,EACT,QAAO;AAET,QAAO;EACL,UAAU,SAAS,MAAM,GAAG,IAAI;EAChC,QAAQ,SAAS,MAAM,MAAA,EAAiC;EACzD"}
|
|
@@ -3,9 +3,9 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
|
|
4
4
|
import { resolveGlobalSingleton } from "../../utils/global-singleton.js";
|
|
5
5
|
import { sanitizeServerName } from "./bundle-mcp-names.js";
|
|
6
|
-
import { resolveConnectorSecretReferences } from "../../connectors/secret-store.js";
|
|
7
6
|
import { redactSensitiveUrlLikeString } from "../../utils/redact-sensitive-url.js";
|
|
8
7
|
import { loadEmbeddedMcpConfig } from "./embedded-mcp.js";
|
|
8
|
+
import { resolveConnectorSecretReferences } from "../../connectors/secret-store.js";
|
|
9
9
|
import { isMcpConfigRecord } from "./mcp-config-shared.js";
|
|
10
10
|
import { resolveMcpTransport } from "./mcp-transport.js";
|
|
11
11
|
import crypto from "node:crypto";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-http.js","names":[],"sources":["../../../../src/agent/mcp/mcp-http.ts"],"sourcesContent":["import {\n redactSensitiveUrl,\n redactSensitiveUrlLikeString,\n} from \"../../utils/redact-sensitive-url.js\";\nimport { isMcpConfigRecord, toMcpStringRecord } from \"./mcp-config-shared.js\";\n\nexport type HttpMcpTransportType = \"sse\" | \"streamable-http\";\n\nexport type HttpMcpServerLaunchConfig = {\n transportType: HttpMcpTransportType;\n url: string;\n headers?: Record<string, string>;\n};\n\nexport type HttpMcpServerLaunchResult =\n | { ok: true; config: HttpMcpServerLaunchConfig }\n | { ok: false; reason: string };\n\nexport function resolveHttpMcpServerLaunchConfig(\n raw: unknown,\n options?: {\n transportType?: HttpMcpTransportType;\n onDroppedHeader?: (key: string, value: unknown) => void;\n onMalformedHeaders?: (value: unknown) => void;\n },\n): HttpMcpServerLaunchResult {\n if (!isMcpConfigRecord(raw)) {\n return { ok: false, reason: \"server config must be an object\" };\n }\n if (typeof raw.url !== \"string\" || raw.url.trim().length === 0) {\n return { ok: false, reason: \"its url is missing\" };\n }\n const url = raw.url.trim();\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return {\n ok: false,\n reason: `its url is not a valid URL: ${redactSensitiveUrlLikeString(url)}`,\n };\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return {\n ok: false,\n reason: `only http and https URLs are supported, got ${parsed.protocol}`,\n };\n }\n\n let headers: Record<string, string> | undefined;\n if (raw.headers !== undefined && raw.headers !== null) {\n if (!isMcpConfigRecord(raw.headers)) {\n options?.onMalformedHeaders?.(raw.headers);\n } else {\n headers = toMcpStringRecord(raw.headers, {\n onDroppedEntry: options?.onDroppedHeader,\n });\n }\n }\n\n return {\n ok: true,\n config: {\n transportType: options?.transportType ?? \"
|
|
1
|
+
{"version":3,"file":"mcp-http.js","names":[],"sources":["../../../../src/agent/mcp/mcp-http.ts"],"sourcesContent":["import {\n redactSensitiveUrl,\n redactSensitiveUrlLikeString,\n} from \"../../utils/redact-sensitive-url.js\";\nimport { isMcpConfigRecord, toMcpStringRecord } from \"./mcp-config-shared.js\";\n\nexport type HttpMcpTransportType = \"sse\" | \"streamable-http\";\n\nexport type HttpMcpServerLaunchConfig = {\n transportType: HttpMcpTransportType;\n url: string;\n headers?: Record<string, string>;\n};\n\nexport type HttpMcpServerLaunchResult =\n | { ok: true; config: HttpMcpServerLaunchConfig }\n | { ok: false; reason: string };\n\nexport function resolveHttpMcpServerLaunchConfig(\n raw: unknown,\n options?: {\n transportType?: HttpMcpTransportType;\n onDroppedHeader?: (key: string, value: unknown) => void;\n onMalformedHeaders?: (value: unknown) => void;\n },\n): HttpMcpServerLaunchResult {\n if (!isMcpConfigRecord(raw)) {\n return { ok: false, reason: \"server config must be an object\" };\n }\n if (typeof raw.url !== \"string\" || raw.url.trim().length === 0) {\n return { ok: false, reason: \"its url is missing\" };\n }\n const url = raw.url.trim();\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n return {\n ok: false,\n reason: `its url is not a valid URL: ${redactSensitiveUrlLikeString(url)}`,\n };\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n return {\n ok: false,\n reason: `only http and https URLs are supported, got ${parsed.protocol}`,\n };\n }\n\n let headers: Record<string, string> | undefined;\n if (raw.headers !== undefined && raw.headers !== null) {\n if (!isMcpConfigRecord(raw.headers)) {\n options?.onMalformedHeaders?.(raw.headers);\n } else {\n headers = toMcpStringRecord(raw.headers, {\n onDroppedEntry: options?.onDroppedHeader,\n });\n }\n }\n\n return {\n ok: true,\n config: {\n transportType: options?.transportType ?? \"streamable-http\",\n url,\n headers,\n },\n };\n}\n\nexport function describeHttpMcpServerLaunchConfig(config: HttpMcpServerLaunchConfig): string {\n return redactSensitiveUrl(config.url);\n}\n"],"mappings":";;;AAkBA,SAAgB,iCACd,KACA,SAK2B;AAC3B,KAAI,CAAC,kBAAkB,IAAI,CACzB,QAAO;EAAE,IAAI;EAAO,QAAQ;EAAmC;AAEjE,KAAI,OAAO,IAAI,QAAQ,YAAY,IAAI,IAAI,MAAM,CAAC,WAAW,EAC3D,QAAO;EAAE,IAAI;EAAO,QAAQ;EAAsB;CAEpD,MAAM,MAAM,IAAI,IAAI,MAAM;CAC1B,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,IAAI;SACf;AACN,SAAO;GACL,IAAI;GACJ,QAAQ,+BAA+B,6BAA6B,IAAI;GACzE;;AAEH,KAAI,OAAO,aAAa,WAAW,OAAO,aAAa,SACrD,QAAO;EACL,IAAI;EACJ,QAAQ,+CAA+C,OAAO;EAC/D;CAGH,IAAI;AACJ,KAAI,IAAI,YAAY,KAAA,KAAa,IAAI,YAAY,KAC/C,KAAI,CAAC,kBAAkB,IAAI,QAAQ,CACjC,UAAS,qBAAqB,IAAI,QAAQ;KAE1C,WAAU,kBAAkB,IAAI,SAAS,EACvC,gBAAgB,SAAS,iBAC1B,CAAC;AAIN,QAAO;EACL,IAAI;EACJ,QAAQ;GACN,eAAe,SAAS,iBAAiB;GACzC;GACA;GACD;EACF;;AAGH,SAAgB,kCAAkC,QAA2C;AAC3F,QAAO,mBAAmB,OAAO,IAAI"}
|