@xopcai/xopc 0.0.135 → 0.0.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DSNW1_XP.js → agent-avatar-dicebear-CER17NHM.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-Cp0OvolD.js → agents-Bv5R-N8Q.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DCudxzyC.js → app-management-settings-panel-B3Ap_wpX.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-4iY3hTlX.js → appearance-settings-3kBO22Xd.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-B3t69uNn.js → apps-page-BHYbGQcZ.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-p9SmqSsD.js → archive-plugin-D_vGeNB8.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BaouYEWE.js → attachment-load-hWV_8pHL.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-D8u5JlzD.js → automation-suggestion-card-DVKmVTIo.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-DwbpG9vH.js → automations-page-BCTXpOBp.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-LNDWi0Gl.js → binary-plugins-BuXIeSPc.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-asA_N0Fu.js → block-editor-C1m0u-UU.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-D52r4pWa.js → browser-settings-page-ChUF08V5.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-api-Du-_-Q07.js → capability-presets-api-B7WWYaEh.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-8Gf1EFrk.js → capability-presets-settings-panel-D_Bh1PnA.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-DgT9LnaF.js → channels-settings-BI2ChQc7.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-D6S3aoYT.js → connectors-page-qgvEp09M.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-NPHqSQCF.js → desktop-pet-BxMJlvb-.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CkyEB9mt.js → desktop-pet-settings-DCvpDImn.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BOIuEkkg.js → directory-picker-path-field-D1nxs9PA.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-fWPtm9_y.js → dreaming-settings-EAWkpOgw.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DUQA0Owx.js → extension-debug-page-LUQ8dE8z.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CWkgZ7Sq.js → extension-page-B_mnhoRd.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-D5i-d8_-.js → extension-settings-page-BWQsGmvW.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-DHZ9l6mK.js → gateway-config-api-M9bzPASf.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CjfkqqD2.js → gateway-settings-CbgtpprN.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-create-dialog-BYsB6qWy.js → goal-create-dialog-CbP4t9aM.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-detail-page-Bi3B3s8m.js → goal-detail-page-DlwI-MZZ.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-config-api-CLaB-6Ad.js → goals-config-api-BBhFVzBS.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-DY4KL2QC.js → goals-page-D26r7knp.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-settings-Be63XRCO.js → goals-settings-DdmVG_TR.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-CdbAl_lg.js → heartbeat-settings-DZW2Xq-U.js} +1 -1
- package/dist/gateway/static/root/assets/index-CPwVzi9x.css +1 -0
- package/dist/gateway/static/root/assets/{index-jlZ7Y0f4.js → index-DZOm5_ex.js} +7 -7
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DilldBT9.js → keyboard-shortcuts-settings-1IWd88-T.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DTKvJJMY.js → logs-page-DxoKJO7-.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-DimiuTSx.js → markdown-split-BtdBj32h.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Cep9JyW4.js → media-plugins-CpoPj3s8.js} +1 -1
- package/dist/gateway/static/root/assets/{models-hub-panel-UYswNIEe.js → models-hub-panel-D1Rp__dV.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-Ddz6sLv9.js → notes-page-CgR1bO2W.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-workbench-Dda4cPxy.js → notes-workbench-ozsnmDTV.js} +2 -2
- package/dist/gateway/static/root/assets/{page-tabs-BhskfCr7.js → page-tabs-CVLqCfQB.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-3_YS56ud.js → preview-open-alternatives-CKUXJk2t.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-BiBDFc6h.js → project-detail-page-B4dqFAQF.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-BNa9AOC5.js → projects-page-DlRGXv4a.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-DL-f9OKe.js → remote-access-hub-rZEYQMZV.js} +1 -1
- package/dist/gateway/static/root/assets/{save-bar-controls-oeQDgMWi.js → save-bar-controls-BtGni268.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-D81RPAY6.js → schedule-field-BDGzKVWn.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-Ca6WThnD.js → schema-form-DQJsKMCE.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-CEXXqYus.js → sessions-page-DxGoCGU8.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-4e8ZQwxr.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BuqHg9_W.js → settings-collapsible-section-c8XGd4-8.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-tavxDK2i.js → settings-form-section-By0YiDWo.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-DfGpkOk3.js → settings-loading-skeleton-SYCPY-WM.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-2VX4D8w8.js → settings-page-D9NwvnBt.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-DIav-9MW.js → settings-page-layout-CrICyGob.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-HGjdE0XN.js → setup-status-panel-IjK-hDxf.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-CIWy_4PV.js → share-preview-page-Dfnk9M_m.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-C8wbZ_AW.js → shares-settings-vQiRBra7.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BIWv778A.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-CkxDlDbR.js → skills-page-CruV215G.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-CDiuJRGT.js → system-settings-panel-BBVbSDFD.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-B7wPY6yX.js → typed-models-lib-CwFayhxu.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-mJd8h8wp.js → user-profile-settings-panel-_KDWzagh.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-B6mAul6d.js → utils-BiUjIHb4.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-2piOqvIc.js → voice-api-key-field-agJqlm4o.js} +1 -1
- package/dist/gateway/static/root/assets/{work-item-detail-page-BQkBfIo7.js → work-item-detail-page-Bdw4ATCb.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Bsu_O633.js → workflow-run-setup-panel-D-Dy6mTy.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-start-dialog-BfmCq61y.js → workflow-start-dialog-GammZ2GK.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CyzWdCfz.js → workflows-page-Cw5zrqti.js} +1 -1
- package/dist/gateway/static/root/index.html +2 -2
- package/dist/package.js +1 -1
- package/dist/src/session/client-history.js +3 -4
- package/dist/src/session/client-history.js.map +1 -1
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/index-ChHE66XC.css +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-2qm18PmB.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-COlSgZV2.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{a,n as o,o as s}from"./fetch-BWXmBizE.js";import{o as c}from"./vendor-swr-BIWyz7Rc.js";import{Ac as l,Eo as u,Ks as d,Kt as f,To as p,dn as m,ga as h,ha as g,ho as _,il as ee,ps as v,qt as y,ro as b,to as te,wl as ne}from"./index-jlZ7Y0f4.js";var x=`/api/image/providers`;async function S(){return(await o(s(`/api/image/providers`)))?.payload?.providers??[]}var C=e(t(),1),re=n();function w(){return{apiKey:``,region:``,baseUrl:``,imageBaseUrl:``}}function ie(e){return e?.apiKey?`••••••••••••`:``}function T(e,t){let n=(()=>{if(!e||typeof e!=`object`||!(`providersConfig`in e))return;let t=e.providersConfig;if(!(!t||typeof t!=`object`||Array.isArray(t)))return t})(),r={};for(let e of t){let t=n?.[e];r[e]={apiKey:ie(t),region:t?.region??``,baseUrl:t?.baseUrl??``,imageBaseUrl:t?.imageBaseUrl??``}}return r}function E(e,t,n){let r=e[n].trim();if(r!==t[n].trim())return r||null}function D(e,t){let n=e.trim(),r=t.trim();if(n!==r&&!(m(n)&&m(r)))return n||(r?null:void 0)}function ae(e,t,n){let r={};for(let i of e){let e=t[i]??w(),a=n[i]??w();if(JSON.stringify(e)===JSON.stringify(a))continue;let o={},s=D(e.apiKey,a.apiKey);s!==void 0&&(o.apiKey=s);let c=E(e,a,`region`);c!==void 0&&(o.region=c);let l=E(e,a,`baseUrl`);l!==void 0&&(o.baseUrl=l);let u=E(e,a,`imageBaseUrl`);u!==void 0&&(o.imageBaseUrl=u),Object.keys(o).length>0&&(r[i]=o)}return r}async function O(e){let t=await o(s(`/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 k(e){Object.keys(e).length!==0&&(await o(s(`/api/config`),{method:`PATCH`,body:JSON.stringify({providersConfig:e})}),await g())}var A=r();function oe(e){let t=(0,re.c)(18),{providerId:n,value:r,onChange:i,labels:a,apiKeyLinks:o,apiKeyLinkLabels:s}=e,c;t[0]===n?c=t[1]:(c=()=>O(n).then(j),t[0]=n,t[1]=c);let u=c,d=`img-cred-key-${n}`,f;t[2]!==a.apiKeyLabel||t[3]!==d?(f=(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:d,children:a.apiKeyLabel}),t[2]=a.apiKeyLabel,t[3]=d,t[4]=f):f=t[4];let p;t[5]!==s||t[6]!==o?(p=o.length>0?(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:o.map(e=>(0,A.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:[y(e.kind,s),(0,A.jsx)(l,{className:`size-3`,"aria-hidden":!0})]},`${e.kind}-${e.href}`))}):null,t[5]=s,t[6]=o,t[7]=p):p=t[7];let m=`img-cred-key-${n}`,h;t[8]!==a||t[9]!==i||t[10]!==u||t[11]!==m||t[12]!==r?(h=(0,A.jsx)(_,{id:m,value:r,onChange:i,placeholder:a.optionalPlaceholder,labels:a,reveal:u,loadFailedLabel:a.loadFailed,maskedHelp:a.maskedHelp,notInConfigFile:a.notInConfigFile}),t[8]=a,t[9]=i,t[10]=u,t[11]=m,t[12]=r,t[13]=h):h=t[13];let g;return t[14]!==f||t[15]!==p||t[16]!==h?(g=(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[f,p,h]}),t[14]=f,t[15]=p,t[16]=h,t[17]=g):g=t[17],g}function j(e){return e.apiKey??null}function M(){return i(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,p)}function se(){return i(M(),`appearance-none bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat pr-9`)}var N=`__custom__`;function ce(e,t){if(!e.region.trim()&&!e.imageBaseUrl.trim())return``;let n=e.region.trim().toLowerCase();return t.some(e=>e.value===n)?n:N}function le(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:N}function ue(e,t,n){return t===`beijing`?e.dashscopeRegion_beijing:t===`singapore`?e.dashscopeRegion_singapore:t===`us`?e.dashscopeRegion_us:n}function de(e,t){return t===`minimax`?e.minimaxClusterLabel:t===`fal`?e.falQueueBaseLabel:e.baseUrlLabel}function fe(e,t){return t===`minimax`?e.minimaxClusterHint:t===`fal`?e.falQueueBaseHint:null}function pe(e,t){return JSON.stringify(e)!==JSON.stringify(t)}function me(e,t){return t===1?e.modelCountOne:e.modelCountMany.replace(`{count}`,String(t))}function P(e){let t=(0,re.c)(76),{summaries:n,credDraft:r,credBaseline:a,credDirty:o,credSaving:s,credError:c,credSavedFlash:p,credNoopFlash:m,updateCredRow:h,onDiscardCredentials:g,onSaveCredentials:_,extensionIds:y,showExtensionLinks:x,showImageModelsLink:S,hideActions:ie,language:T,apiKeyLinkLabels:E,messages:D}=e,ae=ie===void 0?!1:ie,O;t[0]===n?O=t[1]:(O=n.some(ye),t[0]=n,t[1]=O);let k=O,j;t[2]===n?j=t[3]:(j=n.some(ve),t[2]=n,t[3]=j);let P=j,[F,be]=(0,C.useState)(_e),[I,L]=(0,C.useState)(ge),R;if(t[4]!==a||t[5]!==r||t[6]!==n){R=new Set;for(let e of n)pe(r[e.id]??w(),a[e.id]??w())&&R.add(e.id);t[4]=a,t[5]=r,t[6]=n,t[7]=R}else R=t[7];let z=R,B;t[8]!==z||t[9]!==I||t[10]!==F?(B=e=>I.has(e)?!1:F.has(e)?!0:z.has(e),t[8]=z,t[9]=I,t[10]=F,t[11]=B):B=t[11];let V=B,H;t[12]===V?H=t[13]:(H=e=>{if(V(e)){L(t=>new Set(t).add(e)),be(t=>{let n=new Set(t);return n.delete(e),n});return}L(t=>{let n=new Set(t);return n.delete(e),n}),be(t=>new Set(t).add(e))},t[12]=V,t[13]=H);let U=H;if(n.length===0)return null;let W;t[14]===D.credentialsIntro?W=t[15]:(W=(0,A.jsx)(`p`,{children:D.credentialsIntro}),t[14]=D.credentialsIntro,t[15]=W);let G;t[16]!==k||t[17]!==D.regionHint?(G=k?(0,A.jsx)(`p`,{className:`text-fg-subtle`,children:D.regionHint}):null,t[16]=k,t[17]=D.regionHint,t[18]=G):G=t[18];let K;t[19]!==P||t[20]!==D.endpointPresetsHint?(K=P?(0,A.jsx)(`p`,{className:`text-fg-subtle`,children:D.endpointPresetsHint}):null,t[19]=P,t[20]=D.endpointPresetsHint,t[21]=K):K=t[21];let q;t[22]!==S||t[23]!==D.imageModelsLinkTitle||t[24]!==D.openImageModelsPage?(q=S?(0,A.jsx)(`p`,{children:(0,A.jsx)(ne,{to:`/settings/credentials?tab=image-models`,className:`font-medium text-accent hover:underline`,title:D.imageModelsLinkTitle,children:D.openImageModelsPage})}):null,t[22]=S,t[23]=D.imageModelsLinkTitle,t[24]=D.openImageModelsPage,t[25]=q):q=t[25];let J;t[26]!==W||t[27]!==G||t[28]!==K||t[29]!==q?(J=(0,A.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]===c?Y=t[32]:(Y=c?(0,A.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:c}):null,t[31]=c,t[32]=Y);let X;t[33]!==o||t[34]!==m||t[35]!==p||t[36]!==s||t[37]!==ae||t[38]!==g||t[39]!==_||t[40]!==D.credentialsNothingToSave||t[41]!==D.credentialsSaved||t[42]!==D.discardCredentials||t[43]!==D.saveCredentials||t[44]!==D.savingCredentials?(X=ae?null:(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[p?(0,A.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsSaved}):null,m?(0,A.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsNothingToSave}):null,(0,A.jsx)(u,{type:`button`,variant:`secondary`,onClick:g,disabled:!o||s,children:D.discardCredentials}),(0,A.jsx)(u,{type:`button`,variant:`primary`,onClick:_,disabled:!o||s,children:s?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(d,{className:`size-3.5 animate-spin`}),(0,A.jsx)(`span`,{className:`ml-1.5`,children:D.savingCredentials})]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(v,{className:`size-3.5`}),(0,A.jsx)(`span`,{className:`ml-1.5`,children:D.saveCredentials})]})})]}),t[33]=o,t[34]=m,t[35]=p,t[36]=s,t[37]=ae,t[38]=g,t[39]=_,t[40]=D.credentialsNothingToSave,t[41]=D.credentialsSaved,t[42]=D.discardCredentials,t[43]=D.saveCredentials,t[44]=D.savingCredentials,t[45]=X):X=t[45];let Z;if(t[46]!==E||t[47]!==a||t[48]!==r||t[49]!==y||t[50]!==V||t[51]!==T||t[52]!==x||t[53]!==n||t[54]!==D||t[55]!==U||t[56]!==h){let e;t[58]!==E||t[59]!==a||t[60]!==r||t[61]!==y||t[62]!==V||t[63]!==T||t[64]!==x||t[65]!==D||t[66]!==U||t[67]!==h?(e=e=>{let t=r[e.id]??w(),n=e.ui,o=x&&y.has(e.id)?`/settings/ext/${encodeURIComponent(e.id)}`:null,s=pe(t,a[e.id]??w()),c=V(e.id),u=e.label??e.id,d=me(D,e.models.length);return(0,A.jsxs)(`section`,{className:i(`overflow-hidden rounded-xl bg-surface-panel/80 shadow-surface transition-colors`,s&&`ring-1 ring-accent/50`),children:[(0,A.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":c,"aria-controls":`img-provider-credentials-${e.id}`,onClick:()=>U(e.id),children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,A.jsx)(`span`,{className:`truncate text-sm font-semibold text-fg`,children:u}),(0,A.jsx)(`span`,{className:`rounded-full bg-surface-subtle px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:e.id}),s?(0,A.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.unsavedChanges}):null,e.configured?(0,A.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.configured}):(0,A.jsx)(`span`,{className:`rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:text-amber-300`,children:D.missingKey})]}),(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,A.jsx)(`span`,{children:d}),e.defaultModel?(0,A.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,A.jsxs)(`span`,{className:`text-fg-muted`,children:[D.defaultModel,`:`]}),` `,e.id,`/`,e.defaultModel]}):null]})]}),(0,A.jsx)(ee,{className:i(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,c?`rotate-180`:`rotate-0`),"aria-hidden":`true`}),(0,A.jsx)(`span`,{className:`sr-only`,children:c?D.collapseProvider:D.expandProvider})]}),c?(0,A.jsxs)(`div`,{id:`img-provider-credentials-${e.id}`,className:`bg-surface-base/45 px-4 py-4`,children:[o?(0,A.jsxs)(ne,{to:o,className:`mb-3 inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,title:D.extensionSettingsLinkTitle,children:[(0,A.jsx)(l,{className:`size-3`}),D.openExtensionSettings]}):null,e.models.length>0?(0,A.jsxs)(`p`,{className:`mb-3 text-xs leading-relaxed text-fg-subtle`,children:[(0,A.jsxs)(`span`,{className:`text-fg-muted`,children:[D.modelsLabel,`:`]}),` `,e.models.map(t=>`${e.id}/${t}`).join(`, `)]}):null,(0,A.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,A.jsx)(oe,{providerId:e.id,value:t.apiKey,onChange:t=>h(e.id,{apiKey:t}),apiKeyLinks:f(e.id,T),apiKeyLinkLabels:E,labels:{apiKeyLabel:D.apiKeyLabel,optionalPlaceholder:D.optionalPlaceholder,maskedHelp:D.apiKeyMaskedHelp,copy:D.apiKeyCopy,copied:D.apiKeyCopied,show:D.apiKeyShow,hide:D.apiKeyHide,notInConfigFile:D.apiKeyNotInConfigFile,loadFailed:D.apiKeyRevealFailed}}),n?.regions?.length?(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-region-preset-${e.id}`,children:D.regionLabel}),(0,A.jsxs)(te,{id:`img-cred-region-preset-${e.id}`,className:se(),value:ce(t,n.regions),onChange:t=>{let r=t.target.value;if(r===``){h(e.id,{region:``,imageBaseUrl:``});return}if(r===N){h(e.id,{region:``,imageBaseUrl:``});return}let i=n.regions.find(e=>e.value===r);i&&h(e.id,{region:i.value,imageBaseUrl:i.imageBaseUrl})},children:[(0,A.jsx)(b,{value:``,children:D.regionPresetDefault}),n.regions.map(e=>(0,A.jsx)(b,{value:e.value,children:ue(D,e.value,e.label)},e.value)),(0,A.jsx)(b,{value:N,children:D.regionPresetCustom})]}),ce(t,n.regions)===N?(0,A.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,A.jsx)(`input`,{type:`text`,className:M(),value:t.region,placeholder:`region`,onChange:t=>h(e.id,{region:t.target.value})}),(0,A.jsx)(`input`,{type:`url`,className:M(),value:t.imageBaseUrl,placeholder:D.imageBaseUrlLabel,onChange:t=>h(e.id,{imageBaseUrl:t.target.value})})]}):null]}):null,n?.baseUrlPresets?.length?(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-base-preset-${e.id}`,children:de(D,n.baseUrlPresetKind)}),fe(D,n.baseUrlPresetKind)?(0,A.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:fe(D,n.baseUrlPresetKind)}):null,(0,A.jsxs)(te,{id:`img-cred-base-preset-${e.id}`,className:se(),value:le(t,n.baseUrlPresets),onChange:t=>{let n=t.target.value;if(n===``){h(e.id,{baseUrl:``});return}if(n===N){h(e.id,{baseUrl:``});return}h(e.id,{baseUrl:n.replace(/\/+$/,``)})},children:[(0,A.jsx)(b,{value:``,children:D.baseUrlPresetDefault}),n.baseUrlPresets.map(he),(0,A.jsx)(b,{value:N,children:D.baseUrlPresetCustom})]}),le(t,n.baseUrlPresets)===N?(0,A.jsx)(`input`,{type:`url`,className:i(M(),`mt-2`),value:t.baseUrl,placeholder:`https://…`,onChange:t=>h(e.id,{baseUrl:t.target.value})}):null]}):null,n?.regions?.length&&ce(t,n.regions)!==N?(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-imgbase-ro-${e.id}`,children:D.imageBaseUrlLabel}),(0,A.jsx)(`input`,{id:`img-cred-imgbase-ro-${e.id}`,type:`url`,readOnly:!0,className:i(M(),`cursor-not-allowed opacity-90`),value:t.imageBaseUrl,title:D.imageBaseUrlPresetHint}),(0,A.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:D.imageBaseUrlPresetHint})]}):null]})]}):null]},e.id)},t[58]=E,t[59]=a,t[60]=r,t[61]=y,t[62]=V,t[63]=T,t[64]=x,t[65]=D,t[66]=U,t[67]=h,t[68]=e):e=t[68],Z=n.map(e),t[46]=E,t[47]=a,t[48]=r,t[49]=y,t[50]=V,t[51]=T,t[52]=x,t[53]=n,t[54]=D,t[55]=U,t[56]=h,t[57]=Z}else Z=t[57];let Q;t[69]===Z?Q=t[70]:(Q=(0,A.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,A.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 he(e){return(0,A.jsx)(b,{value:e.value,children:e.label},e.value)}function ge(){return new Set}function _e(){return new Set}function ve(e){return(e.ui?.baseUrlPresets?.length??0)>0}function ye(e){return(e.ui?.regions?.length??0)>0}function F(e){let t=h(a(e=>!!e.token)),n=t.data,r=(0,C.useMemo)(()=>e.map(e=>e.id),[e]),i=(0,C.useRef)(!1),[o,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(null),[m,g]=(0,C.useState)(!1),[_,ee]=(0,C.useState)(!1),v=(0,C.useMemo)(()=>T(n?.payload?.config,r),[n?.payload?.config,r]),y=o??v,b=v;return{gwSwr:t,credDraft:y,credBaseline:b,credDirty:(0,C.useMemo)(()=>JSON.stringify(y)!==JSON.stringify(b),[y,b]),credSaving:u,credError:f,credSavedFlash:m,credNoopFlash:_,updateCredRow:(0,C.useCallback)((e,t)=>{i.current=!0,l(n=>{let r=n??v,i=r[e]??w();return{...r,[e]:{...i,...t}}})},[v]),onDiscardCredentials:(0,C.useCallback)(()=>{i.current=!1,l(null),p(null),g(!1),ee(!1)},[]),saveCredentials:(0,C.useCallback)(async e=>{let n=ae(r,y,b);if(Object.keys(n).length===0){ee(!0),window.setTimeout(()=>ee(!1),2200);return}d(!0),p(null),g(!1);try{await k(n),await t.mutate?.(),c(s(x)),i.current=!1,l(null),g(!0),window.setTimeout(()=>g(!1),2e3)}catch(t){p(t instanceof Error?t.message:e)}finally{d(!1)}},[r,y,b,t])}}function be(){return{enabled:!1,provider:`alibaba`,alibaba:{model:`paraformer-v2`},openai:{model:`whisper-1`},fallback:{enabled:!0,order:[`alibaba`,`openai`]}}}function I(){return{enabled:!1,provider:`edge`,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=be();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():`edge`}function H(e){let t=I();if(!L(e))return t;let n=V(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`always`,i=t[`tts-local-cli`]??{},a=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,...a?{providers:a}:{},alibaba:z(e,`alibaba`,t.alibaba??{}),openai:z(e,`openai`,t.openai??{}),edge:z(e,`edge`,t.edge??{}),minimax:z(e,`minimax`,t.minimax??{}),"tts-local-cli":z(e,`tts-local-cli`,i)}}function U(e){let{alibaba:t,openai:n,providers:r,...i}=e,a={...r??{}};return t&&(a.alibaba={...a.alibaba??{},...t}),n&&(a.openai={...a.openai??{},...n}),{...i,...Object.keys(a).length>0?{providers:a}:{}}}function W(e){let{alibaba:t,openai:n,edge:r,minimax:i,"tts-local-cli":a,providers:o,...s}=e,c={...o??{}};return t&&(c.alibaba={...c.alibaba??{},...t}),n&&(c.openai={...c.openai??{},...n}),r&&(c.edge={...c.edge??{},...r}),i&&(c.minimax={...c.minimax??{},...i}),a&&(c[`tts-local-cli`]={...c[`tts-local-cli`]??{},...a}),{...s,...Object.keys(c).length>0?{providers:c}:{}}}function G(e){let t=L(e)?e:{};return{stt:B(t.stt),tts:H(t.tts)}}async function K(){return G((await o(s(`/api/config`))).payload?.config??{})}async function q(e){await o(s(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:U(e.stt),tts:W(e.tts)})}),g()}async function J(){let e=await o(s(`/api/voice/models`));if(!e.payload?.models)throw Error(`Missing voice models payload`);return e.payload.models}async function Y(){let e=await o(s(`/api/voice/providers`));if(!e.payload?.providers)throw Error(`Missing voice providers payload`);return e.payload}async function X(){let e=await o(s(`/api/voice/stt-providers`));if(!e.payload?.providers)throw Error(`Missing STT providers payload`);return e.payload}async function Z(e){let t=await o(s(`/api/voice/tts-test`),{method:`POST`,body:JSON.stringify(e)});if(t.ok===!1){let e=typeof t.error==`string`?t.error:t.error?.message;throw Error(e||`TTS test failed`)}if(!t.payload||typeof t.payload.audio!=`string`||!t.payload.audio.trim())throw Error(`TTS test returned no audio. Check the selected voice engine and try again.`);return t.payload}async function Q(e){let t=await o(s(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(e)});if(!t.payload)throw Error(`Missing reveal payload`);return t.payload}function $(e){let t=(0,re.c)(15),{kind:n,providerId:r,fieldId:a,value:o,onChange:s,labels:c,placeholder:l,className:u}=e,d=l===void 0?`sk-...`:l,f;t[0]!==n||t[1]!==r?(f=()=>Q({kind:n,provider:r}).then(xe),t[0]=n,t[1]=r,t[2]=f):f=t[2];let p=f,m;t[3]===u?m=t[4]:(m=i(`flex min-w-0 flex-col gap-1.5`,u),t[3]=u,t[4]=m);let h;t[5]!==a||t[6]!==c||t[7]!==s||t[8]!==d||t[9]!==p||t[10]!==o?(h=(0,A.jsx)(_,{id:a,value:o,onChange:s,placeholder:d,labels:c,reveal:p,loadFailedLabel:c.loadFailed,maskedHelp:c.maskedHelp,notInConfigFile:c.notInConfigFile,inputClassName:`text-xs`}),t[5]=a,t[6]=c,t[7]=s,t[8]=d,t[9]=p,t[10]=o,t[11]=h):h=t[11];let g;return t[12]!==m||t[13]!==h?(g=(0,A.jsx)(`div`,{className:m,children:h}),t[12]=m,t[13]=h,t[14]=g):g=t[14],g}function xe(e){return e.apiKey??null}export{X as a,Z as c,S as d,x as f,K as i,F as l,J as n,G as o,Y as r,q as s,$ as t,P 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"./cn-BQ_8x0bT.js";import{a,n as o,o as s}from"./fetch-BWXmBizE.js";import{o as c}from"./vendor-swr-BIWyz7Rc.js";import{Ac as l,Eo as u,Ks as d,Kt as f,To as p,dn as m,ga as h,ha as g,ho as _,il as ee,ps as v,qt as y,ro as b,to as te,wl as ne}from"./index-DZOm5_ex.js";var x=`/api/image/providers`;async function S(){return(await o(s(`/api/image/providers`)))?.payload?.providers??[]}var C=e(t(),1),re=n();function w(){return{apiKey:``,region:``,baseUrl:``,imageBaseUrl:``}}function ie(e){return e?.apiKey?`••••••••••••`:``}function T(e,t){let n=(()=>{if(!e||typeof e!=`object`||!(`providersConfig`in e))return;let t=e.providersConfig;if(!(!t||typeof t!=`object`||Array.isArray(t)))return t})(),r={};for(let e of t){let t=n?.[e];r[e]={apiKey:ie(t),region:t?.region??``,baseUrl:t?.baseUrl??``,imageBaseUrl:t?.imageBaseUrl??``}}return r}function E(e,t,n){let r=e[n].trim();if(r!==t[n].trim())return r||null}function D(e,t){let n=e.trim(),r=t.trim();if(n!==r&&!(m(n)&&m(r)))return n||(r?null:void 0)}function ae(e,t,n){let r={};for(let i of e){let e=t[i]??w(),a=n[i]??w();if(JSON.stringify(e)===JSON.stringify(a))continue;let o={},s=D(e.apiKey,a.apiKey);s!==void 0&&(o.apiKey=s);let c=E(e,a,`region`);c!==void 0&&(o.region=c);let l=E(e,a,`baseUrl`);l!==void 0&&(o.baseUrl=l);let u=E(e,a,`imageBaseUrl`);u!==void 0&&(o.imageBaseUrl=u),Object.keys(o).length>0&&(r[i]=o)}return r}async function O(e){let t=await o(s(`/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 k(e){Object.keys(e).length!==0&&(await o(s(`/api/config`),{method:`PATCH`,body:JSON.stringify({providersConfig:e})}),await g())}var A=r();function oe(e){let t=(0,re.c)(18),{providerId:n,value:r,onChange:i,labels:a,apiKeyLinks:o,apiKeyLinkLabels:s}=e,c;t[0]===n?c=t[1]:(c=()=>O(n).then(j),t[0]=n,t[1]=c);let u=c,d=`img-cred-key-${n}`,f;t[2]!==a.apiKeyLabel||t[3]!==d?(f=(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:d,children:a.apiKeyLabel}),t[2]=a.apiKeyLabel,t[3]=d,t[4]=f):f=t[4];let p;t[5]!==s||t[6]!==o?(p=o.length>0?(0,A.jsx)(`div`,{className:`flex flex-col gap-1`,children:o.map(e=>(0,A.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:[y(e.kind,s),(0,A.jsx)(l,{className:`size-3`,"aria-hidden":!0})]},`${e.kind}-${e.href}`))}):null,t[5]=s,t[6]=o,t[7]=p):p=t[7];let m=`img-cred-key-${n}`,h;t[8]!==a||t[9]!==i||t[10]!==u||t[11]!==m||t[12]!==r?(h=(0,A.jsx)(_,{id:m,value:r,onChange:i,placeholder:a.optionalPlaceholder,labels:a,reveal:u,loadFailedLabel:a.loadFailed,maskedHelp:a.maskedHelp,notInConfigFile:a.notInConfigFile}),t[8]=a,t[9]=i,t[10]=u,t[11]=m,t[12]=r,t[13]=h):h=t[13];let g;return t[14]!==f||t[15]!==p||t[16]!==h?(g=(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[f,p,h]}),t[14]=f,t[15]=p,t[16]=h,t[17]=g):g=t[17],g}function j(e){return e.apiKey??null}function M(){return i(`w-full rounded-lg border border-edge bg-surface-panel px-3 py-2 text-sm text-fg`,`placeholder:text-fg-subtle`,p)}function se(){return i(M(),`appearance-none bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat pr-9`)}var N=`__custom__`;function ce(e,t){if(!e.region.trim()&&!e.imageBaseUrl.trim())return``;let n=e.region.trim().toLowerCase();return t.some(e=>e.value===n)?n:N}function le(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:N}function ue(e,t,n){return t===`beijing`?e.dashscopeRegion_beijing:t===`singapore`?e.dashscopeRegion_singapore:t===`us`?e.dashscopeRegion_us:n}function de(e,t){return t===`minimax`?e.minimaxClusterLabel:t===`fal`?e.falQueueBaseLabel:e.baseUrlLabel}function fe(e,t){return t===`minimax`?e.minimaxClusterHint:t===`fal`?e.falQueueBaseHint:null}function pe(e,t){return JSON.stringify(e)!==JSON.stringify(t)}function me(e,t){return t===1?e.modelCountOne:e.modelCountMany.replace(`{count}`,String(t))}function P(e){let t=(0,re.c)(76),{summaries:n,credDraft:r,credBaseline:a,credDirty:o,credSaving:s,credError:c,credSavedFlash:p,credNoopFlash:m,updateCredRow:h,onDiscardCredentials:g,onSaveCredentials:_,extensionIds:y,showExtensionLinks:x,showImageModelsLink:S,hideActions:ie,language:T,apiKeyLinkLabels:E,messages:D}=e,ae=ie===void 0?!1:ie,O;t[0]===n?O=t[1]:(O=n.some(ye),t[0]=n,t[1]=O);let k=O,j;t[2]===n?j=t[3]:(j=n.some(ve),t[2]=n,t[3]=j);let P=j,[F,be]=(0,C.useState)(_e),[I,L]=(0,C.useState)(ge),R;if(t[4]!==a||t[5]!==r||t[6]!==n){R=new Set;for(let e of n)pe(r[e.id]??w(),a[e.id]??w())&&R.add(e.id);t[4]=a,t[5]=r,t[6]=n,t[7]=R}else R=t[7];let z=R,B;t[8]!==z||t[9]!==I||t[10]!==F?(B=e=>I.has(e)?!1:F.has(e)?!0:z.has(e),t[8]=z,t[9]=I,t[10]=F,t[11]=B):B=t[11];let V=B,H;t[12]===V?H=t[13]:(H=e=>{if(V(e)){L(t=>new Set(t).add(e)),be(t=>{let n=new Set(t);return n.delete(e),n});return}L(t=>{let n=new Set(t);return n.delete(e),n}),be(t=>new Set(t).add(e))},t[12]=V,t[13]=H);let U=H;if(n.length===0)return null;let W;t[14]===D.credentialsIntro?W=t[15]:(W=(0,A.jsx)(`p`,{children:D.credentialsIntro}),t[14]=D.credentialsIntro,t[15]=W);let G;t[16]!==k||t[17]!==D.regionHint?(G=k?(0,A.jsx)(`p`,{className:`text-fg-subtle`,children:D.regionHint}):null,t[16]=k,t[17]=D.regionHint,t[18]=G):G=t[18];let K;t[19]!==P||t[20]!==D.endpointPresetsHint?(K=P?(0,A.jsx)(`p`,{className:`text-fg-subtle`,children:D.endpointPresetsHint}):null,t[19]=P,t[20]=D.endpointPresetsHint,t[21]=K):K=t[21];let q;t[22]!==S||t[23]!==D.imageModelsLinkTitle||t[24]!==D.openImageModelsPage?(q=S?(0,A.jsx)(`p`,{children:(0,A.jsx)(ne,{to:`/settings/credentials?tab=image-models`,className:`font-medium text-accent hover:underline`,title:D.imageModelsLinkTitle,children:D.openImageModelsPage})}):null,t[22]=S,t[23]=D.imageModelsLinkTitle,t[24]=D.openImageModelsPage,t[25]=q):q=t[25];let J;t[26]!==W||t[27]!==G||t[28]!==K||t[29]!==q?(J=(0,A.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]===c?Y=t[32]:(Y=c?(0,A.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:c}):null,t[31]=c,t[32]=Y);let X;t[33]!==o||t[34]!==m||t[35]!==p||t[36]!==s||t[37]!==ae||t[38]!==g||t[39]!==_||t[40]!==D.credentialsNothingToSave||t[41]!==D.credentialsSaved||t[42]!==D.discardCredentials||t[43]!==D.saveCredentials||t[44]!==D.savingCredentials?(X=ae?null:(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-2`,children:[p?(0,A.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsSaved}):null,m?(0,A.jsx)(`span`,{className:`text-sm text-fg-muted`,children:D.credentialsNothingToSave}):null,(0,A.jsx)(u,{type:`button`,variant:`secondary`,onClick:g,disabled:!o||s,children:D.discardCredentials}),(0,A.jsx)(u,{type:`button`,variant:`primary`,onClick:_,disabled:!o||s,children:s?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(d,{className:`size-3.5 animate-spin`}),(0,A.jsx)(`span`,{className:`ml-1.5`,children:D.savingCredentials})]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(v,{className:`size-3.5`}),(0,A.jsx)(`span`,{className:`ml-1.5`,children:D.saveCredentials})]})})]}),t[33]=o,t[34]=m,t[35]=p,t[36]=s,t[37]=ae,t[38]=g,t[39]=_,t[40]=D.credentialsNothingToSave,t[41]=D.credentialsSaved,t[42]=D.discardCredentials,t[43]=D.saveCredentials,t[44]=D.savingCredentials,t[45]=X):X=t[45];let Z;if(t[46]!==E||t[47]!==a||t[48]!==r||t[49]!==y||t[50]!==V||t[51]!==T||t[52]!==x||t[53]!==n||t[54]!==D||t[55]!==U||t[56]!==h){let e;t[58]!==E||t[59]!==a||t[60]!==r||t[61]!==y||t[62]!==V||t[63]!==T||t[64]!==x||t[65]!==D||t[66]!==U||t[67]!==h?(e=e=>{let t=r[e.id]??w(),n=e.ui,o=x&&y.has(e.id)?`/settings/ext/${encodeURIComponent(e.id)}`:null,s=pe(t,a[e.id]??w()),c=V(e.id),u=e.label??e.id,d=me(D,e.models.length);return(0,A.jsxs)(`section`,{className:i(`overflow-hidden rounded-xl bg-surface-panel/80 shadow-surface transition-colors`,s&&`ring-1 ring-accent/50`),children:[(0,A.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":c,"aria-controls":`img-provider-credentials-${e.id}`,onClick:()=>U(e.id),children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,children:[(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,A.jsx)(`span`,{className:`truncate text-sm font-semibold text-fg`,children:u}),(0,A.jsx)(`span`,{className:`rounded-full bg-surface-subtle px-2 py-0.5 text-[11px] font-medium text-fg-muted`,children:e.id}),s?(0,A.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.unsavedChanges}):null,e.configured?(0,A.jsx)(`span`,{className:`rounded-full bg-accent-soft px-2 py-0.5 text-[11px] font-medium text-accent-fg`,children:D.configured}):(0,A.jsx)(`span`,{className:`rounded-full border border-amber-500/40 bg-amber-500/10 px-2 py-0.5 text-[11px] font-medium text-amber-700 dark:text-amber-300`,children:D.missingKey})]}),(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs text-fg-subtle`,children:[(0,A.jsx)(`span`,{children:d}),e.defaultModel?(0,A.jsxs)(`span`,{className:`min-w-0 truncate`,children:[(0,A.jsxs)(`span`,{className:`text-fg-muted`,children:[D.defaultModel,`:`]}),` `,e.id,`/`,e.defaultModel]}):null]})]}),(0,A.jsx)(ee,{className:i(`mt-0.5 size-4 shrink-0 text-fg-subtle transition-transform`,c?`rotate-180`:`rotate-0`),"aria-hidden":`true`}),(0,A.jsx)(`span`,{className:`sr-only`,children:c?D.collapseProvider:D.expandProvider})]}),c?(0,A.jsxs)(`div`,{id:`img-provider-credentials-${e.id}`,className:`bg-surface-base/45 px-4 py-4`,children:[o?(0,A.jsxs)(ne,{to:o,className:`mb-3 inline-flex items-center gap-1 text-xs font-medium text-accent hover:underline`,title:D.extensionSettingsLinkTitle,children:[(0,A.jsx)(l,{className:`size-3`}),D.openExtensionSettings]}):null,e.models.length>0?(0,A.jsxs)(`p`,{className:`mb-3 text-xs leading-relaxed text-fg-subtle`,children:[(0,A.jsxs)(`span`,{className:`text-fg-muted`,children:[D.modelsLabel,`:`]}),` `,e.models.map(t=>`${e.id}/${t}`).join(`, `)]}):null,(0,A.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,A.jsx)(oe,{providerId:e.id,value:t.apiKey,onChange:t=>h(e.id,{apiKey:t}),apiKeyLinks:f(e.id,T),apiKeyLinkLabels:E,labels:{apiKeyLabel:D.apiKeyLabel,optionalPlaceholder:D.optionalPlaceholder,maskedHelp:D.apiKeyMaskedHelp,copy:D.apiKeyCopy,copied:D.apiKeyCopied,show:D.apiKeyShow,hide:D.apiKeyHide,notInConfigFile:D.apiKeyNotInConfigFile,loadFailed:D.apiKeyRevealFailed}}),n?.regions?.length?(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-region-preset-${e.id}`,children:D.regionLabel}),(0,A.jsxs)(te,{id:`img-cred-region-preset-${e.id}`,className:se(),value:ce(t,n.regions),onChange:t=>{let r=t.target.value;if(r===``){h(e.id,{region:``,imageBaseUrl:``});return}if(r===N){h(e.id,{region:``,imageBaseUrl:``});return}let i=n.regions.find(e=>e.value===r);i&&h(e.id,{region:i.value,imageBaseUrl:i.imageBaseUrl})},children:[(0,A.jsx)(b,{value:``,children:D.regionPresetDefault}),n.regions.map(e=>(0,A.jsx)(b,{value:e.value,children:ue(D,e.value,e.label)},e.value)),(0,A.jsx)(b,{value:N,children:D.regionPresetCustom})]}),ce(t,n.regions)===N?(0,A.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,A.jsx)(`input`,{type:`text`,className:M(),value:t.region,placeholder:`region`,onChange:t=>h(e.id,{region:t.target.value})}),(0,A.jsx)(`input`,{type:`url`,className:M(),value:t.imageBaseUrl,placeholder:D.imageBaseUrlLabel,onChange:t=>h(e.id,{imageBaseUrl:t.target.value})})]}):null]}):null,n?.baseUrlPresets?.length?(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-base-preset-${e.id}`,children:de(D,n.baseUrlPresetKind)}),fe(D,n.baseUrlPresetKind)?(0,A.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:fe(D,n.baseUrlPresetKind)}):null,(0,A.jsxs)(te,{id:`img-cred-base-preset-${e.id}`,className:se(),value:le(t,n.baseUrlPresets),onChange:t=>{let n=t.target.value;if(n===``){h(e.id,{baseUrl:``});return}if(n===N){h(e.id,{baseUrl:``});return}h(e.id,{baseUrl:n.replace(/\/+$/,``)})},children:[(0,A.jsx)(b,{value:``,children:D.baseUrlPresetDefault}),n.baseUrlPresets.map(he),(0,A.jsx)(b,{value:N,children:D.baseUrlPresetCustom})]}),le(t,n.baseUrlPresets)===N?(0,A.jsx)(`input`,{type:`url`,className:i(M(),`mt-2`),value:t.baseUrl,placeholder:`https://…`,onChange:t=>h(e.id,{baseUrl:t.target.value})}):null]}):null,n?.regions?.length&&ce(t,n.regions)!==N?(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1 sm:col-span-2`,children:[(0,A.jsx)(`label`,{className:`text-xs font-medium text-fg-muted`,htmlFor:`img-cred-imgbase-ro-${e.id}`,children:D.imageBaseUrlLabel}),(0,A.jsx)(`input`,{id:`img-cred-imgbase-ro-${e.id}`,type:`url`,readOnly:!0,className:i(M(),`cursor-not-allowed opacity-90`),value:t.imageBaseUrl,title:D.imageBaseUrlPresetHint}),(0,A.jsx)(`p`,{className:`text-[11px] text-fg-subtle`,children:D.imageBaseUrlPresetHint})]}):null]})]}):null]},e.id)},t[58]=E,t[59]=a,t[60]=r,t[61]=y,t[62]=V,t[63]=T,t[64]=x,t[65]=D,t[66]=U,t[67]=h,t[68]=e):e=t[68],Z=n.map(e),t[46]=E,t[47]=a,t[48]=r,t[49]=y,t[50]=V,t[51]=T,t[52]=x,t[53]=n,t[54]=D,t[55]=U,t[56]=h,t[57]=Z}else Z=t[57];let Q;t[69]===Z?Q=t[70]:(Q=(0,A.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,A.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 he(e){return(0,A.jsx)(b,{value:e.value,children:e.label},e.value)}function ge(){return new Set}function _e(){return new Set}function ve(e){return(e.ui?.baseUrlPresets?.length??0)>0}function ye(e){return(e.ui?.regions?.length??0)>0}function F(e){let t=h(a(e=>!!e.token)),n=t.data,r=(0,C.useMemo)(()=>e.map(e=>e.id),[e]),i=(0,C.useRef)(!1),[o,l]=(0,C.useState)(null),[u,d]=(0,C.useState)(!1),[f,p]=(0,C.useState)(null),[m,g]=(0,C.useState)(!1),[_,ee]=(0,C.useState)(!1),v=(0,C.useMemo)(()=>T(n?.payload?.config,r),[n?.payload?.config,r]),y=o??v,b=v;return{gwSwr:t,credDraft:y,credBaseline:b,credDirty:(0,C.useMemo)(()=>JSON.stringify(y)!==JSON.stringify(b),[y,b]),credSaving:u,credError:f,credSavedFlash:m,credNoopFlash:_,updateCredRow:(0,C.useCallback)((e,t)=>{i.current=!0,l(n=>{let r=n??v,i=r[e]??w();return{...r,[e]:{...i,...t}}})},[v]),onDiscardCredentials:(0,C.useCallback)(()=>{i.current=!1,l(null),p(null),g(!1),ee(!1)},[]),saveCredentials:(0,C.useCallback)(async e=>{let n=ae(r,y,b);if(Object.keys(n).length===0){ee(!0),window.setTimeout(()=>ee(!1),2200);return}d(!0),p(null),g(!1);try{await k(n),await t.mutate?.(),c(s(x)),i.current=!1,l(null),g(!0),window.setTimeout(()=>g(!1),2e3)}catch(t){p(t instanceof Error?t.message:e)}finally{d(!1)}},[r,y,b,t])}}function be(){return{enabled:!1,provider:`alibaba`,alibaba:{model:`paraformer-v2`},openai:{model:`whisper-1`},fallback:{enabled:!0,order:[`alibaba`,`openai`]}}}function I(){return{enabled:!1,provider:`edge`,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=be();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():`edge`}function H(e){let t=I();if(!L(e))return t;let n=V(e.provider),r=e.trigger===`off`||e.trigger===`always`||e.trigger===`inbound`||e.trigger===`tagged`?e.trigger:`always`,i=t[`tts-local-cli`]??{},a=L(e.providers)?Object.fromEntries(Object.entries(e.providers).map(([e,t])=>[e,L(t)?{...t}:{}])):void 0;return{enabled:!!e.enabled,provider:n,trigger:r,maxTextLength:typeof e.maxTextLength==`number`&&Number.isFinite(e.maxTextLength)?e.maxTextLength:t.maxTextLength,timeoutMs:typeof e.timeoutMs==`number`&&Number.isFinite(e.timeoutMs)?e.timeoutMs:t.timeoutMs,...a?{providers:a}:{},alibaba:z(e,`alibaba`,t.alibaba??{}),openai:z(e,`openai`,t.openai??{}),edge:z(e,`edge`,t.edge??{}),minimax:z(e,`minimax`,t.minimax??{}),"tts-local-cli":z(e,`tts-local-cli`,i)}}function U(e){let{alibaba:t,openai:n,providers:r,...i}=e,a={...r??{}};return t&&(a.alibaba={...a.alibaba??{},...t}),n&&(a.openai={...a.openai??{},...n}),{...i,...Object.keys(a).length>0?{providers:a}:{}}}function W(e){let{alibaba:t,openai:n,edge:r,minimax:i,"tts-local-cli":a,providers:o,...s}=e,c={...o??{}};return t&&(c.alibaba={...c.alibaba??{},...t}),n&&(c.openai={...c.openai??{},...n}),r&&(c.edge={...c.edge??{},...r}),i&&(c.minimax={...c.minimax??{},...i}),a&&(c[`tts-local-cli`]={...c[`tts-local-cli`]??{},...a}),{...s,...Object.keys(c).length>0?{providers:c}:{}}}function G(e){let t=L(e)?e:{};return{stt:B(t.stt),tts:H(t.tts)}}async function K(){return G((await o(s(`/api/config`))).payload?.config??{})}async function q(e){await o(s(`/api/config`),{method:`PATCH`,body:JSON.stringify({stt:U(e.stt),tts:W(e.tts)})}),g()}async function J(){let e=await o(s(`/api/voice/models`));if(!e.payload?.models)throw Error(`Missing voice models payload`);return e.payload.models}async function Y(){let e=await o(s(`/api/voice/providers`));if(!e.payload?.providers)throw Error(`Missing voice providers payload`);return e.payload}async function X(){let e=await o(s(`/api/voice/stt-providers`));if(!e.payload?.providers)throw Error(`Missing STT providers payload`);return e.payload}async function Z(e){let t=await o(s(`/api/voice/tts-test`),{method:`POST`,body:JSON.stringify(e)});if(t.ok===!1){let e=typeof t.error==`string`?t.error:t.error?.message;throw Error(e||`TTS test failed`)}if(!t.payload||typeof t.payload.audio!=`string`||!t.payload.audio.trim())throw Error(`TTS test returned no audio. Check the selected voice engine and try again.`);return t.payload}async function Q(e){let t=await o(s(`/api/voice/reveal-api-key`),{method:`POST`,body:JSON.stringify(e)});if(!t.payload)throw Error(`Missing reveal payload`);return t.payload}function $(e){let t=(0,re.c)(15),{kind:n,providerId:r,fieldId:a,value:o,onChange:s,labels:c,placeholder:l,className:u}=e,d=l===void 0?`sk-...`:l,f;t[0]!==n||t[1]!==r?(f=()=>Q({kind:n,provider:r}).then(xe),t[0]=n,t[1]=r,t[2]=f):f=t[2];let p=f,m;t[3]===u?m=t[4]:(m=i(`flex min-w-0 flex-col gap-1.5`,u),t[3]=u,t[4]=m);let h;t[5]!==a||t[6]!==c||t[7]!==s||t[8]!==d||t[9]!==p||t[10]!==o?(h=(0,A.jsx)(_,{id:a,value:o,onChange:s,placeholder:d,labels:c,reveal:p,loadFailedLabel:c.loadFailed,maskedHelp:c.maskedHelp,notInConfigFile:c.notInConfigFile,inputClassName:`text-xs`}),t[5]=a,t[6]=c,t[7]=s,t[8]=d,t[9]=p,t[10]=o,t[11]=h):h=t[11];let g;return t[12]!==m||t[13]!==h?(g=(0,A.jsx)(`div`,{className:m,children:h}),t[12]=m,t[13]=h,t[14]=g):g=t[14],g}function xe(e){return e.apiKey??null}export{X as a,Z as c,S as d,x as f,K as i,F as l,J as n,G as o,Y as r,q as s,$ as t,P as u};
|
|
@@ -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"./cn-BQ_8x0bT.js";import{t as a}from"./messages-CQ_k8RHj.js";import{n as o}from"./locale-store-Ba72bFmP.js";import{$c as s,Ac as c,Cs as l,Dl as u,Ec as d,Eo as f,Go as p,Hs as m,Ji as ee,Ms as te,Nc as ne,Ol as h,Vo as re,_s as ie,a as ae,f as oe,gs as se,gt as ce,l as le,m as ue,o as de,p as fe,qa as g,ro as _,s as pe,sl as v,to as y,u as b,vc as me,vl as x,wl as S}from"./index-jlZ7Y0f4.js";var C=n(),w=e(t(),1),T=r();function he(e){return e===`done`||e===`in_review`?`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`:e===`blocked`||e===`needs_input`?`bg-red-500/10 text-red-700 dark:text-red-300`:e===`in_progress`?`bg-accent-soft text-accent-fg`:e===`backlog`||e===`todo`?`bg-amber-500/10 text-amber-700 dark:text-amber-300`:`bg-surface-muted text-fg-subtle`}function E(e){return e?new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)):``}function ge(e){return!Number.isFinite(e)||e<=0?`0 B`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(+(e<10*1024))} KB`:`${(e/(1024*1024)).toFixed(+(e<10*1024*1024))} MB`}function _e(e){return e.kind===`chat`?`/chat/${encodeURIComponent(e.targetId)}`:e.kind===`goal`?`/goals/${encodeURIComponent(e.targetId)}`:e.kind===`workflow_run`?`/workflows?run=${encodeURIComponent(e.targetId)}`:e.kind===`automation`?`/automations?automationId=${encodeURIComponent(e.targetId)}`:e.kind===`note`?`/notes/${encodeURIComponent(e.targetId)}`:`#`}function D(e){let t=(0,C.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,T.jsx)(`dt`,{className:`text-xs font-medium text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a=r||`-`,o;t[2]===a?o=t[3]:(o=(0,T.jsx)(`dd`,{className:`min-w-0 break-words text-sm text-fg`,children:a}),t[2]=a,t[3]=o);let s;return t[4]!==i||t[5]!==o?(s=(0,T.jsxs)(`div`,{className:`grid gap-1`,children:[i,o]}),t[4]=i,t[5]=o,t[6]=s):s=t[6],s}function ve(e){let t=(0,C.c)(9),{events:n,t:r}=e;if(!n.length){let e;return t[0]===r.detail.noActivity?e=t[1]:(e=(0,T.jsx)(`div`,{className:`rounded-lg bg-surface-panel px-4 py-8 text-center text-sm text-fg-muted shadow-surface`,children:r.detail.noActivity}),t[0]=r.detail.noActivity,t[1]=e),e}let i;if(t[2]!==n||t[3]!==r){let e;t[5]===r?e=t[6]:(e=e=>(0,T.jsx)(`article`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,T.jsx)(`h3`,{className:`text-sm font-medium text-fg`,children:r.eventTypes[e.type]??e.type}),(0,T.jsx)(`time`,{className:`shrink-0 text-xs text-fg-subtle`,children:E(e.createdAt)})]})},e.id),t[5]=r,t[6]=e),i=n.map(e),t[2]=n,t[3]=r,t[4]=i}else i=t[4];let a;return t[7]===i?a=t[8]:(a=(0,T.jsx)(`div`,{className:`grid gap-3`,children:i}),t[7]=i,t[8]=a),a}function O(e){return new Set(e.toLowerCase().split(/[^a-z0-9\u4e00-\u9fff]+/).filter(e=>e.length>=2))}function k(e,t,n){let r=t?.projectKind,i=[e.title,e.description,e.nextAction,e.blockedReason,e.status,e.priority,t?.name,t?.description,r].filter(Boolean).join(` `),a=[n.title,n.description,n.metadata.whenToUse,...n.metadata.tags??[]].filter(Boolean).join(` `),o=O(i),s=0;for(let e of O(a))o.has(e)&&(s+=3);let c=a.toLowerCase();return(e.status===`blocked`||e.status===`needs_input`)&&/debug|diagnos|review|audit|fix|检查|排查|修复/.test(c)&&(s+=8),e.status===`in_review`&&/review|audit|check|验收|评审|检查/.test(c)&&(s+=6),e.attachments?.length&&/analy|extract|summar|review|整理|分析|总结/.test(c)&&(s+=5),r===`coding`&&/code|repo|test|pr|review|代码|仓库|测试/.test(c)&&(s+=5),s}function ye(e,t,n){return[...n].sort((n,r)=>k(e,t,r)-k(e,t,n)||n.title.localeCompare(r.title))}function A(){let{workItemId:e=``}=h(),t=u(),n=a(o(e=>e.language)).projectDetailPage.workItems,[r,C]=(0,w.useState)(null),[O,A]=(0,w.useState)(null),[j,M]=(0,w.useState)([]),[N,be]=(0,w.useState)([]),[P,F]=(0,w.useState)(``),[I,L]=(0,w.useState)(``),[R,z]=(0,w.useState)(!0),[B,V]=(0,w.useState)(!1),[H,U]=(0,w.useState)(null),W=(0,w.useRef)(null),G=g(e=>e.setPageHeader),K=g(e=>e.clearPageHeader),q=(0,w.useMemo)(()=>r?`/projects/${encodeURIComponent(r.projectId)}/work-items`:`/projects`,[r]),J=(0,w.useCallback)(async()=>{if(e){z(!0),U(null);try{let[t,n]=await Promise.all([le(e),b(e).catch(()=>({events:[]}))]);C(t.item),L(t.item.nextAction||t.item.title),M(n.events);let[r,i]=await Promise.all([ee(t.item.projectId).catch(()=>null),ce().catch(()=>[])]),a=ye(t.item,r,i);A(r),be(a),F(e=>e||a[0]?.id||``)}catch(e){U(e instanceof Error?e.message:String(e))}finally{z(!1)}}},[e]);(0,w.useEffect)(()=>{J()},[J]);let Y=(0,w.useCallback)(async()=>{if(r){V(!0),U(null);try{let e=await oe(r.id);C(e.item),t(`/chat/${encodeURIComponent(e.session.key)}`)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,t]),X=(0,w.useCallback)(async()=>{if(r){V(!0),U(null);try{let e=await ae(r.id);C(e.item),t(`/goals/${encodeURIComponent(e.goal.id)}`)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,t]),Z=(0,w.useCallback)(async e=>{M((await b(e).catch(()=>({events:[]}))).events)},[]),xe=(0,w.useCallback)(async()=>{if(!(!r||!P)){V(!0),U(null);try{let e=await fe(r.id,{definitionId:P,goal:I.trim()||r.nextAction||r.title});C(e.item),await Z(e.item.id),t(`/workflows?run=${encodeURIComponent(e.runId)}`)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,t,Z,P,I]),Se=(0,w.useCallback)(async e=>{if(!(!r||!e.length)){V(!0),U(null);try{let t=await ue(r.id,e);C(t.item),await Z(t.item.id)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,Z]),Ce=(0,w.useCallback)(async e=>{if(r){V(!0),U(null);try{let t=await de(r.id,e.id);C(t.item),await Z(t.item.id)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,Z]),we=(0,w.useCallback)(async e=>{if(r){U(null);try{await pe(r.id,e)}catch(e){U(e instanceof Error?e.message:String(e))}}},[r]),Q=(0,w.useMemo)(()=>r?N.filter(e=>k(r,O,e)>0).slice(0,3):[],[r,O,N]),$=(0,w.useMemo)(()=>(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(f,{type:`button`,variant:`ghost`,className:`h-8 rounded-lg px-2.5 text-xs`,onClick:()=>void J(),children:[(0,T.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`hidden sm:inline`,children:n.refreshShort})]}),r?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:Y,children:[(0,T.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`hidden md:inline`,children:n.detail.startChat})]}),(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:X,children:[(0,T.jsx)(p,{className:`size-3.5`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`hidden md:inline`,children:n.detail.createGoal})]})]}):null]}),[B,X,Y,r,J,n.detail.createGoal,n.detail.startChat,n.refreshShort]);return(0,w.useLayoutEffect)(()=>(G({startExtra:(0,T.jsx)(S,{to:q,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg`,"aria-label":O?.name?n.detail.backToProject.replace(`{{name}}`,O.name):n.detail.backToProjects,children:(0,T.jsx)(x,{className:`size-4`,"aria-hidden":!0})}),main:(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,T.jsx)(v,{className:`size-3.5 shrink-0 text-accent-fg`,"aria-hidden":!0}),(0,T.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:r?.title??(R?n.detail.loading:n.detail.notFound)})]}),r?(0,T.jsxs)(`p`,{className:`truncate text-xs text-fg-muted`,children:[n.statuses[r.status],` · `,n.priorities[r.priority],` · `,O?.name||r.projectId,` · `,n.updated,`: `,E(r.updatedAt)]}):null]}),end:$}),()=>K()),[K,$,r,R,O?.name,q,G,n,O]),R?(0,T.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[var(--max-width-app-main)] flex-1 flex-col px-3 py-6 sm:px-5 xl:px-6`,"aria-busy":!0,children:[(0,T.jsx)(`div`,{className:`h-8 w-40 animate-pulse rounded-md bg-surface-hover`}),(0,T.jsx)(`div`,{className:`mt-5 h-44 animate-pulse rounded-xl bg-surface-hover`})]}):H||!r?(0,T.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[var(--max-width-app-main)] flex-1 flex-col px-3 py-6 sm:px-5 xl:px-6`,children:[(0,T.jsxs)(S,{to:`/projects`,className:`inline-flex items-center gap-1 text-sm font-medium text-accent hover:text-accent-fg`,children:[(0,T.jsx)(x,{className:`size-4`,"aria-hidden":!0}),n.detail.backToProjects]}),(0,T.jsx)(`div`,{className:`mt-5 rounded-lg border border-danger/30 bg-danger-soft px-4 py-3 text-sm text-danger`,children:H||n.detail.notFound})]}):(0,T.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[var(--max-width-app-main)] flex-1 flex-col px-3 py-5 sm:px-5 xl:px-6`,children:[(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-4 shadow-surface sm:px-5`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,T.jsx)(v,{className:`size-4 shrink-0 text-accent-fg`,"aria-hidden":!0}),(0,T.jsx)(`h1`,{className:`min-w-0 break-words text-lg font-semibold leading-7 text-fg`,children:r.title})]}),(0,T.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs`,children:[(0,T.jsx)(`span`,{className:i(`rounded-full px-2 py-0.5 font-medium`,he(r.status)),children:n.statuses[r.status]}),(0,T.jsx)(`span`,{className:`rounded-full bg-surface-muted px-2 py-0.5 text-fg-muted`,children:n.priorities[r.priority]}),r.archivedAt?(0,T.jsx)(`span`,{className:`rounded-full bg-surface-muted px-2 py-0.5 text-fg-muted`,children:n.detail.archived}):null]})]}),(0,T.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:[(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:Y,children:[(0,T.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),n.detail.startChat]}),(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:X,children:[(0,T.jsx)(p,{className:`size-3.5`,"aria-hidden":!0}),n.detail.createGoal]})]})]}),(0,T.jsxs)(`dl`,{className:`mt-5 grid gap-4 border-t border-edge pt-4 sm:grid-cols-2`,children:[(0,T.jsx)(D,{label:n.create.descriptionLabel,value:r.description||n.detail.noDescription}),(0,T.jsx)(D,{label:n.nextAction,value:r.nextAction||n.noNextAction}),(0,T.jsx)(D,{label:n.blockedReason,value:r.blockedReason||n.detail.noBlockedReason}),(0,T.jsx)(D,{label:n.updated,value:E(r.updatedAt)})]})]}),(0,T.jsxs)(`div`,{className:`mt-4 grid min-h-0 gap-4 lg:grid-cols-[minmax(0,1fr)_18rem]`,children:[(0,T.jsxs)(`section`,{className:`min-w-0`,children:[(0,T.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[(0,T.jsx)(d,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),(0,T.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.detail.activity})]}),(0,T.jsx)(ve,{events:j,t:n})]}),(0,T.jsxs)(`aside`,{className:`grid content-start gap-4`,children:[(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsx)(`div`,{className:`flex items-center justify-between gap-3`,children:(0,T.jsxs)(`h2`,{className:`inline-flex min-w-0 items-center gap-2 text-sm font-semibold text-fg`,children:[(0,T.jsx)(me,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`truncate`,children:n.detail.workflowTitle})]})}),(0,T.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:n.detail.workflowHint}),(0,T.jsxs)(`div`,{className:`mt-3 grid gap-2`,children:[(0,T.jsxs)(`label`,{className:`grid gap-1 text-xs font-medium text-fg-subtle`,children:[n.detail.workflowTemplate,(0,T.jsxs)(y,{className:`h-9 rounded-md border border-edge bg-surface-base px-2 text-sm font-normal text-fg outline-none focus:border-accent`,value:P,disabled:B||N.length===0,onChange:e=>F(e.target.value),children:[N.length===0?(0,T.jsx)(_,{value:``,children:n.detail.noWorkflowTemplates}):null,N.map(e=>(0,T.jsx)(_,{value:e.id,children:e.title},e.id))]})]}),Q.length?(0,T.jsxs)(`div`,{className:`grid gap-1`,children:[(0,T.jsx)(`div`,{className:`text-xs font-medium text-fg-subtle`,children:n.detail.recommendedWorkflows}),(0,T.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Q.map(e=>(0,T.jsx)(`button`,{type:`button`,className:i(`min-w-0 rounded-md border px-2 py-1 text-left text-xs transition-colors`,P===e.id?`border-accent bg-accent-soft text-accent-fg`:`border-edge bg-surface-base text-fg-muted hover:bg-surface-hover hover:text-fg`),disabled:B,onClick:()=>F(e.id),children:(0,T.jsx)(`span`,{className:`block max-w-48 truncate`,children:e.title})},e.id))})]}):null,(0,T.jsxs)(`label`,{className:`grid gap-1 text-xs font-medium text-fg-subtle`,children:[n.detail.workflowGoal,(0,T.jsx)(`textarea`,{className:`min-h-20 resize-y rounded-md border border-edge bg-surface-base px-2 py-2 text-sm font-normal text-fg outline-none focus:border-accent`,value:I,disabled:B,onChange:e=>L(e.target.value)})]}),(0,T.jsxs)(f,{type:`button`,variant:`primary`,className:`h-9 rounded-lg px-3 text-xs`,disabled:B||!P,onClick:xe,children:[(0,T.jsx)(se,{className:`size-3.5`,"aria-hidden":!0}),n.detail.startWorkflow]}),N.length?null:(0,T.jsx)(`p`,{className:`text-xs text-fg-muted`,children:n.detail.noWorkflowTemplates})]})]}),(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,T.jsxs)(`h2`,{className:`inline-flex min-w-0 items-center gap-2 text-sm font-semibold text-fg`,children:[(0,T.jsx)(te,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`truncate`,children:n.attachments.title})]}),(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:()=>W.current?.click(),children:[(0,T.jsx)(l,{className:`size-3.5`,"aria-hidden":!0}),n.attachments.add]}),(0,T.jsx)(`input`,{ref:W,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{Se(Array.from(e.target.files??[])),e.currentTarget.value=``}})]}),(0,T.jsx)(`div`,{className:`mt-3 grid gap-2`,children:r.attachments?.length?r.attachments.map(e=>(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border border-edge bg-surface-base px-2 py-2 text-sm`,children:[(0,T.jsx)(d,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsx)(`div`,{className:`truncate font-medium text-fg`,children:e.fileName}),(0,T.jsxs)(`div`,{className:`truncate text-xs text-fg-subtle`,children:[e.mimeType,` · `,ge(e.size)]})]}),(0,T.jsx)(`button`,{type:`button`,className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-hover hover:text-fg`,title:n.attachments.download,"aria-label":n.attachments.download,disabled:B,onClick:()=>void we(e),children:(0,T.jsx)(ne,{className:`size-3.5`,"aria-hidden":!0})}),(0,T.jsx)(`button`,{type:`button`,className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-hover hover:text-danger`,title:n.attachments.remove,"aria-label":n.attachments.remove,disabled:B,onClick:()=>void Ce(e),children:(0,T.jsx)(re,{className:`size-3.5`,"aria-hidden":!0})})]},e.id)):(0,T.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.attachments.empty})})]}),(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.detail.links}),(0,T.jsx)(`div`,{className:`mt-3 grid gap-1 text-sm`,children:r.links?.length?r.links.map(e=>(0,T.jsxs)(S,{to:_e(e),className:`flex min-w-0 items-center justify-between gap-3 rounded-md px-2 py-1.5 hover:bg-surface-hover`,children:[(0,T.jsx)(`span`,{className:`min-w-0 truncate text-fg`,children:e.title||e.targetId}),(0,T.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-xs text-fg-muted`,children:[n.linkKinds[e.kind],(0,T.jsx)(c,{className:`size-3.5`,"aria-hidden":!0})]})]},e.id)):(0,T.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.detail.noLinks})})]}),(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.detail.project}),(0,T.jsxs)(S,{to:q,className:`mt-2 inline-flex min-w-0 items-center gap-2 text-sm font-medium text-accent hover:text-accent-fg`,children:[(0,T.jsx)(s,{className:`size-4 shrink-0`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`min-w-0 truncate`,children:O?.name||r.projectId})]})]})]})]})]})}export{A as WorkItemDetailPage};
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-CQ_k8RHj.js";import{n as o}from"./locale-store-Ba72bFmP.js";import{$c as s,Ac as c,Cs as l,Dl as u,Ec as d,Eo as f,Go as p,Hs as m,Ji as ee,Ms as te,Nc as ne,Ol as h,Vo as re,_s as ie,a as ae,f as oe,gs as se,gt as ce,l as le,m as ue,o as de,p as fe,qa as g,ro as _,s as pe,sl as v,to as y,u as b,vc as me,vl as x,wl as S}from"./index-DZOm5_ex.js";var C=n(),w=e(t(),1),T=r();function he(e){return e===`done`||e===`in_review`?`bg-emerald-500/10 text-emerald-700 dark:text-emerald-300`:e===`blocked`||e===`needs_input`?`bg-red-500/10 text-red-700 dark:text-red-300`:e===`in_progress`?`bg-accent-soft text-accent-fg`:e===`backlog`||e===`todo`?`bg-amber-500/10 text-amber-700 dark:text-amber-300`:`bg-surface-muted text-fg-subtle`}function E(e){return e?new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(new Date(e)):``}function ge(e){return!Number.isFinite(e)||e<=0?`0 B`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(+(e<10*1024))} KB`:`${(e/(1024*1024)).toFixed(+(e<10*1024*1024))} MB`}function _e(e){return e.kind===`chat`?`/chat/${encodeURIComponent(e.targetId)}`:e.kind===`goal`?`/goals/${encodeURIComponent(e.targetId)}`:e.kind===`workflow_run`?`/workflows?run=${encodeURIComponent(e.targetId)}`:e.kind===`automation`?`/automations?automationId=${encodeURIComponent(e.targetId)}`:e.kind===`note`?`/notes/${encodeURIComponent(e.targetId)}`:`#`}function D(e){let t=(0,C.c)(7),{label:n,value:r}=e,i;t[0]===n?i=t[1]:(i=(0,T.jsx)(`dt`,{className:`text-xs font-medium text-fg-subtle`,children:n}),t[0]=n,t[1]=i);let a=r||`-`,o;t[2]===a?o=t[3]:(o=(0,T.jsx)(`dd`,{className:`min-w-0 break-words text-sm text-fg`,children:a}),t[2]=a,t[3]=o);let s;return t[4]!==i||t[5]!==o?(s=(0,T.jsxs)(`div`,{className:`grid gap-1`,children:[i,o]}),t[4]=i,t[5]=o,t[6]=s):s=t[6],s}function ve(e){let t=(0,C.c)(9),{events:n,t:r}=e;if(!n.length){let e;return t[0]===r.detail.noActivity?e=t[1]:(e=(0,T.jsx)(`div`,{className:`rounded-lg bg-surface-panel px-4 py-8 text-center text-sm text-fg-muted shadow-surface`,children:r.detail.noActivity}),t[0]=r.detail.noActivity,t[1]=e),e}let i;if(t[2]!==n||t[3]!==r){let e;t[5]===r?e=t[6]:(e=e=>(0,T.jsx)(`article`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,T.jsx)(`h3`,{className:`text-sm font-medium text-fg`,children:r.eventTypes[e.type]??e.type}),(0,T.jsx)(`time`,{className:`shrink-0 text-xs text-fg-subtle`,children:E(e.createdAt)})]})},e.id),t[5]=r,t[6]=e),i=n.map(e),t[2]=n,t[3]=r,t[4]=i}else i=t[4];let a;return t[7]===i?a=t[8]:(a=(0,T.jsx)(`div`,{className:`grid gap-3`,children:i}),t[7]=i,t[8]=a),a}function O(e){return new Set(e.toLowerCase().split(/[^a-z0-9\u4e00-\u9fff]+/).filter(e=>e.length>=2))}function k(e,t,n){let r=t?.projectKind,i=[e.title,e.description,e.nextAction,e.blockedReason,e.status,e.priority,t?.name,t?.description,r].filter(Boolean).join(` `),a=[n.title,n.description,n.metadata.whenToUse,...n.metadata.tags??[]].filter(Boolean).join(` `),o=O(i),s=0;for(let e of O(a))o.has(e)&&(s+=3);let c=a.toLowerCase();return(e.status===`blocked`||e.status===`needs_input`)&&/debug|diagnos|review|audit|fix|检查|排查|修复/.test(c)&&(s+=8),e.status===`in_review`&&/review|audit|check|验收|评审|检查/.test(c)&&(s+=6),e.attachments?.length&&/analy|extract|summar|review|整理|分析|总结/.test(c)&&(s+=5),r===`coding`&&/code|repo|test|pr|review|代码|仓库|测试/.test(c)&&(s+=5),s}function ye(e,t,n){return[...n].sort((n,r)=>k(e,t,r)-k(e,t,n)||n.title.localeCompare(r.title))}function A(){let{workItemId:e=``}=h(),t=u(),n=a(o(e=>e.language)).projectDetailPage.workItems,[r,C]=(0,w.useState)(null),[O,A]=(0,w.useState)(null),[j,M]=(0,w.useState)([]),[N,be]=(0,w.useState)([]),[P,F]=(0,w.useState)(``),[I,L]=(0,w.useState)(``),[R,z]=(0,w.useState)(!0),[B,V]=(0,w.useState)(!1),[H,U]=(0,w.useState)(null),W=(0,w.useRef)(null),G=g(e=>e.setPageHeader),K=g(e=>e.clearPageHeader),q=(0,w.useMemo)(()=>r?`/projects/${encodeURIComponent(r.projectId)}/work-items`:`/projects`,[r]),J=(0,w.useCallback)(async()=>{if(e){z(!0),U(null);try{let[t,n]=await Promise.all([le(e),b(e).catch(()=>({events:[]}))]);C(t.item),L(t.item.nextAction||t.item.title),M(n.events);let[r,i]=await Promise.all([ee(t.item.projectId).catch(()=>null),ce().catch(()=>[])]),a=ye(t.item,r,i);A(r),be(a),F(e=>e||a[0]?.id||``)}catch(e){U(e instanceof Error?e.message:String(e))}finally{z(!1)}}},[e]);(0,w.useEffect)(()=>{J()},[J]);let Y=(0,w.useCallback)(async()=>{if(r){V(!0),U(null);try{let e=await oe(r.id);C(e.item),t(`/chat/${encodeURIComponent(e.session.key)}`)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,t]),X=(0,w.useCallback)(async()=>{if(r){V(!0),U(null);try{let e=await ae(r.id);C(e.item),t(`/goals/${encodeURIComponent(e.goal.id)}`)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,t]),Z=(0,w.useCallback)(async e=>{M((await b(e).catch(()=>({events:[]}))).events)},[]),xe=(0,w.useCallback)(async()=>{if(!(!r||!P)){V(!0),U(null);try{let e=await fe(r.id,{definitionId:P,goal:I.trim()||r.nextAction||r.title});C(e.item),await Z(e.item.id),t(`/workflows?run=${encodeURIComponent(e.runId)}`)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,t,Z,P,I]),Se=(0,w.useCallback)(async e=>{if(!(!r||!e.length)){V(!0),U(null);try{let t=await ue(r.id,e);C(t.item),await Z(t.item.id)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,Z]),Ce=(0,w.useCallback)(async e=>{if(r){V(!0),U(null);try{let t=await de(r.id,e.id);C(t.item),await Z(t.item.id)}catch(e){U(e instanceof Error?e.message:String(e))}finally{V(!1)}}},[r,Z]),we=(0,w.useCallback)(async e=>{if(r){U(null);try{await pe(r.id,e)}catch(e){U(e instanceof Error?e.message:String(e))}}},[r]),Q=(0,w.useMemo)(()=>r?N.filter(e=>k(r,O,e)>0).slice(0,3):[],[r,O,N]),$=(0,w.useMemo)(()=>(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(f,{type:`button`,variant:`ghost`,className:`h-8 rounded-lg px-2.5 text-xs`,onClick:()=>void J(),children:[(0,T.jsx)(ie,{className:`size-3.5`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`hidden sm:inline`,children:n.refreshShort})]}),r?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:Y,children:[(0,T.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`hidden md:inline`,children:n.detail.startChat})]}),(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:X,children:[(0,T.jsx)(p,{className:`size-3.5`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`hidden md:inline`,children:n.detail.createGoal})]})]}):null]}),[B,X,Y,r,J,n.detail.createGoal,n.detail.startChat,n.refreshShort]);return(0,w.useLayoutEffect)(()=>(G({startExtra:(0,T.jsx)(S,{to:q,className:`inline-flex size-9 items-center justify-center rounded-lg text-fg-muted hover:bg-surface-hover hover:text-fg`,"aria-label":O?.name?n.detail.backToProject.replace(`{{name}}`,O.name):n.detail.backToProjects,children:(0,T.jsx)(x,{className:`size-4`,"aria-hidden":!0})}),main:(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,T.jsx)(v,{className:`size-3.5 shrink-0 text-accent-fg`,"aria-hidden":!0}),(0,T.jsx)(`h1`,{className:`truncate text-base font-semibold tracking-tight text-fg`,children:r?.title??(R?n.detail.loading:n.detail.notFound)})]}),r?(0,T.jsxs)(`p`,{className:`truncate text-xs text-fg-muted`,children:[n.statuses[r.status],` · `,n.priorities[r.priority],` · `,O?.name||r.projectId,` · `,n.updated,`: `,E(r.updatedAt)]}):null]}),end:$}),()=>K()),[K,$,r,R,O?.name,q,G,n,O]),R?(0,T.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[var(--max-width-app-main)] flex-1 flex-col px-3 py-6 sm:px-5 xl:px-6`,"aria-busy":!0,children:[(0,T.jsx)(`div`,{className:`h-8 w-40 animate-pulse rounded-md bg-surface-hover`}),(0,T.jsx)(`div`,{className:`mt-5 h-44 animate-pulse rounded-xl bg-surface-hover`})]}):H||!r?(0,T.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[var(--max-width-app-main)] flex-1 flex-col px-3 py-6 sm:px-5 xl:px-6`,children:[(0,T.jsxs)(S,{to:`/projects`,className:`inline-flex items-center gap-1 text-sm font-medium text-accent hover:text-accent-fg`,children:[(0,T.jsx)(x,{className:`size-4`,"aria-hidden":!0}),n.detail.backToProjects]}),(0,T.jsx)(`div`,{className:`mt-5 rounded-lg border border-danger/30 bg-danger-soft px-4 py-3 text-sm text-danger`,children:H||n.detail.notFound})]}):(0,T.jsxs)(`main`,{className:`mx-auto flex w-full max-w-[var(--max-width-app-main)] flex-1 flex-col px-3 py-5 sm:px-5 xl:px-6`,children:[(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-4 shadow-surface sm:px-5`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,T.jsx)(v,{className:`size-4 shrink-0 text-accent-fg`,"aria-hidden":!0}),(0,T.jsx)(`h1`,{className:`min-w-0 break-words text-lg font-semibold leading-7 text-fg`,children:r.title})]}),(0,T.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs`,children:[(0,T.jsx)(`span`,{className:i(`rounded-full px-2 py-0.5 font-medium`,he(r.status)),children:n.statuses[r.status]}),(0,T.jsx)(`span`,{className:`rounded-full bg-surface-muted px-2 py-0.5 text-fg-muted`,children:n.priorities[r.priority]}),r.archivedAt?(0,T.jsx)(`span`,{className:`rounded-full bg-surface-muted px-2 py-0.5 text-fg-muted`,children:n.detail.archived}):null]})]}),(0,T.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center gap-2`,children:[(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:Y,children:[(0,T.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),n.detail.startChat]}),(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:X,children:[(0,T.jsx)(p,{className:`size-3.5`,"aria-hidden":!0}),n.detail.createGoal]})]})]}),(0,T.jsxs)(`dl`,{className:`mt-5 grid gap-4 border-t border-edge pt-4 sm:grid-cols-2`,children:[(0,T.jsx)(D,{label:n.create.descriptionLabel,value:r.description||n.detail.noDescription}),(0,T.jsx)(D,{label:n.nextAction,value:r.nextAction||n.noNextAction}),(0,T.jsx)(D,{label:n.blockedReason,value:r.blockedReason||n.detail.noBlockedReason}),(0,T.jsx)(D,{label:n.updated,value:E(r.updatedAt)})]})]}),(0,T.jsxs)(`div`,{className:`mt-4 grid min-h-0 gap-4 lg:grid-cols-[minmax(0,1fr)_18rem]`,children:[(0,T.jsxs)(`section`,{className:`min-w-0`,children:[(0,T.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[(0,T.jsx)(d,{className:`size-4 text-fg-muted`,"aria-hidden":!0}),(0,T.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.detail.activity})]}),(0,T.jsx)(ve,{events:j,t:n})]}),(0,T.jsxs)(`aside`,{className:`grid content-start gap-4`,children:[(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsx)(`div`,{className:`flex items-center justify-between gap-3`,children:(0,T.jsxs)(`h2`,{className:`inline-flex min-w-0 items-center gap-2 text-sm font-semibold text-fg`,children:[(0,T.jsx)(me,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`truncate`,children:n.detail.workflowTitle})]})}),(0,T.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-fg-muted`,children:n.detail.workflowHint}),(0,T.jsxs)(`div`,{className:`mt-3 grid gap-2`,children:[(0,T.jsxs)(`label`,{className:`grid gap-1 text-xs font-medium text-fg-subtle`,children:[n.detail.workflowTemplate,(0,T.jsxs)(y,{className:`h-9 rounded-md border border-edge bg-surface-base px-2 text-sm font-normal text-fg outline-none focus:border-accent`,value:P,disabled:B||N.length===0,onChange:e=>F(e.target.value),children:[N.length===0?(0,T.jsx)(_,{value:``,children:n.detail.noWorkflowTemplates}):null,N.map(e=>(0,T.jsx)(_,{value:e.id,children:e.title},e.id))]})]}),Q.length?(0,T.jsxs)(`div`,{className:`grid gap-1`,children:[(0,T.jsx)(`div`,{className:`text-xs font-medium text-fg-subtle`,children:n.detail.recommendedWorkflows}),(0,T.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:Q.map(e=>(0,T.jsx)(`button`,{type:`button`,className:i(`min-w-0 rounded-md border px-2 py-1 text-left text-xs transition-colors`,P===e.id?`border-accent bg-accent-soft text-accent-fg`:`border-edge bg-surface-base text-fg-muted hover:bg-surface-hover hover:text-fg`),disabled:B,onClick:()=>F(e.id),children:(0,T.jsx)(`span`,{className:`block max-w-48 truncate`,children:e.title})},e.id))})]}):null,(0,T.jsxs)(`label`,{className:`grid gap-1 text-xs font-medium text-fg-subtle`,children:[n.detail.workflowGoal,(0,T.jsx)(`textarea`,{className:`min-h-20 resize-y rounded-md border border-edge bg-surface-base px-2 py-2 text-sm font-normal text-fg outline-none focus:border-accent`,value:I,disabled:B,onChange:e=>L(e.target.value)})]}),(0,T.jsxs)(f,{type:`button`,variant:`primary`,className:`h-9 rounded-lg px-3 text-xs`,disabled:B||!P,onClick:xe,children:[(0,T.jsx)(se,{className:`size-3.5`,"aria-hidden":!0}),n.detail.startWorkflow]}),N.length?null:(0,T.jsx)(`p`,{className:`text-xs text-fg-muted`,children:n.detail.noWorkflowTemplates})]})]}),(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,T.jsxs)(`h2`,{className:`inline-flex min-w-0 items-center gap-2 text-sm font-semibold text-fg`,children:[(0,T.jsx)(te,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`truncate`,children:n.attachments.title})]}),(0,T.jsxs)(f,{type:`button`,variant:`secondary`,className:`h-8 rounded-lg px-2.5 text-xs`,disabled:B,onClick:()=>W.current?.click(),children:[(0,T.jsx)(l,{className:`size-3.5`,"aria-hidden":!0}),n.attachments.add]}),(0,T.jsx)(`input`,{ref:W,type:`file`,multiple:!0,className:`hidden`,onChange:e=>{Se(Array.from(e.target.files??[])),e.currentTarget.value=``}})]}),(0,T.jsx)(`div`,{className:`mt-3 grid gap-2`,children:r.attachments?.length?r.attachments.map(e=>(0,T.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 rounded-md border border-edge bg-surface-base px-2 py-2 text-sm`,children:[(0,T.jsx)(d,{className:`size-4 shrink-0 text-fg-muted`,"aria-hidden":!0}),(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsx)(`div`,{className:`truncate font-medium text-fg`,children:e.fileName}),(0,T.jsxs)(`div`,{className:`truncate text-xs text-fg-subtle`,children:[e.mimeType,` · `,ge(e.size)]})]}),(0,T.jsx)(`button`,{type:`button`,className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-hover hover:text-fg`,title:n.attachments.download,"aria-label":n.attachments.download,disabled:B,onClick:()=>void we(e),children:(0,T.jsx)(ne,{className:`size-3.5`,"aria-hidden":!0})}),(0,T.jsx)(`button`,{type:`button`,className:`inline-flex size-7 shrink-0 items-center justify-center rounded-md text-fg-muted hover:bg-surface-hover hover:text-danger`,title:n.attachments.remove,"aria-label":n.attachments.remove,disabled:B,onClick:()=>void Ce(e),children:(0,T.jsx)(re,{className:`size-3.5`,"aria-hidden":!0})})]},e.id)):(0,T.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.attachments.empty})})]}),(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.detail.links}),(0,T.jsx)(`div`,{className:`mt-3 grid gap-1 text-sm`,children:r.links?.length?r.links.map(e=>(0,T.jsxs)(S,{to:_e(e),className:`flex min-w-0 items-center justify-between gap-3 rounded-md px-2 py-1.5 hover:bg-surface-hover`,children:[(0,T.jsx)(`span`,{className:`min-w-0 truncate text-fg`,children:e.title||e.targetId}),(0,T.jsxs)(`span`,{className:`inline-flex shrink-0 items-center gap-1 text-xs text-fg-muted`,children:[n.linkKinds[e.kind],(0,T.jsx)(c,{className:`size-3.5`,"aria-hidden":!0})]})]},e.id)):(0,T.jsx)(`p`,{className:`text-sm text-fg-muted`,children:n.detail.noLinks})})]}),(0,T.jsxs)(`section`,{className:`rounded-lg bg-surface-panel px-4 py-3 shadow-surface`,children:[(0,T.jsx)(`h2`,{className:`text-sm font-semibold text-fg`,children:n.detail.project}),(0,T.jsxs)(S,{to:q,className:`mt-2 inline-flex min-w-0 items-center gap-2 text-sm font-medium text-accent hover:text-accent-fg`,children:[(0,T.jsx)(s,{className:`size-4 shrink-0`,"aria-hidden":!0}),(0,T.jsx)(`span`,{className:`min-w-0 truncate`,children:O?.name||r.projectId})]})]})]})]})]})}export{A as WorkItemDetailPage};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-CQ_k8RHj.js";import{o,t as s}from"./fetch-BWXmBizE.js";import{$ as c,Ba as l,D as u,Eo as d,Fo as f,Ga as p,Go as m,Ka as h,N as g,Q as _,Qo as v,U as y,Ua as b,Va as x,Wa as S,_s as C,es as w,ic as T,il as E,kc as D,ko as O,ns as k,ro as A,si as j,to as M}from"./index-
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-CQ_k8RHj.js";import{o,t as s}from"./fetch-BWXmBizE.js";import{$ as c,Ba as l,D as u,Eo as d,Fo as f,Ga as p,Go as m,Ka as h,N as g,Q as _,Qo as v,U as y,Ua as b,Va as x,Wa as S,_s as C,es as w,ic as T,il as E,kc as D,ko as O,ns as k,ro as A,si as j,to as M}from"./index-DZOm5_ex.js";var N=e(t(),1),P=n();function F(e){if(!e.trim())return null;try{return JSON.parse(e)}catch{return null}}function I(e){return typeof e.message==`string`&&e.message.trim()?e.message:typeof e.error==`string`&&e.error.trim()?e.error:e.error&&typeof e.error==`object`&&typeof e.error.message==`string`?e.error.message:`AI suggestion failed`}function L(e,t={}){let n=F(e.split(`
|
|
2
2
|
`).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trimStart()).join(`
|
|
3
3
|
`));if(!n)return null;if(n.type===`text_delta`&&typeof n.delta==`string`)return t.onDelta?.(n.delta),null;if(n.type===`thinking_delta`&&typeof n.delta==`string`)return t.onThinkingDelta?.(n.delta),null;if(n.type===`done`&&typeof n.text==`string`)return n.text;if(n.type===`error`)throw Error(I(n));return null}async function R(e,t={}){let n=await s(o(`/api/ai/text-assist`),{method:`POST`,headers:{Accept:`text/event-stream`},body:JSON.stringify(e)});if(!n.ok){let e=await n.json().catch(()=>({})),t=typeof e.error==`string`?e.error:e.error?.message;throw Error(t||`AI suggestion failed (${n.status})`)}if(!n.body){let e=await n.json().catch(()=>null);if(e?.text)return e;throw Error(`AI suggestion stream is empty`)}let r=n.body.getReader(),i=new TextDecoder,a=``,c=``,l=``;for(;;){let{done:e,value:n}=await r.read();if(n){a+=i.decode(n,{stream:!e});let r=a.split(/\r?\n\r?\n/);a=r.pop()??``;for(let e of r){let n=L(e,{onDelta:e=>{c+=e,t.onDelta?.(e)},onThinkingDelta:e=>{l+=e,t.onThinkingDelta?.(e)}});n!==null&&(c=n)}}if(e)break}if(a.trim()){let e=L(a,{onDelta:e=>{c+=e,t.onDelta?.(e)},onThinkingDelta:e=>{l+=e,t.onThinkingDelta?.(e)}});e!==null&&(c=e)}let u=c.trim();if(!u)throw Error(`AI returned an empty suggestion`);return{text:u,thinking:l.trim()||void 0}}function ee(){let[e,t]=(0,N.useState)(``),[n,r]=(0,N.useState)(``),[i,a]=(0,N.useState)(!1),[o,s]=(0,N.useState)(null);return{suggestion:e,thinking:n,loading:i,error:o,generate:(0,N.useCallback)(async e=>{a(!0),s(null),t(``),r(``);try{let n=await R(e,{onDelta:e=>{t(t=>t+e)},onThinkingDelta:e=>{r(t=>t+e)}});return t(n.text),r(n.thinking??``),n.text}catch(e){return s(e instanceof Error?e.message:`AI suggestion failed`),null}finally{a(!1)}},[]),reset:(0,N.useCallback)(()=>{t(``),r(``),s(null),a(!1)},[])}}var z=r(),te=5;function ne(e){return e.startsWith(`zh`)?{title:`AI 优化文案`,buttonTitle:`优化文案`,current:`当前内容`,suggestion:`AI 建议`,editedSuggestion:`审核并编辑建议`,thinking:`模型思考`,thinkingLoading:`思考中`,edit:`编辑`,preview:`预览`,loading:`正在生成建议...`,empty:`暂无内容`,generate:`生成建议`,regenerate:`重新生成`,applyCurrent:`应用当前内容`,replace:`替换`,append:`追加`,cancel:`取消`,close:`关闭`}:{title:`AI text assist`,buttonTitle:`Improve text`,current:`Current`,suggestion:`Suggestion`,editedSuggestion:`Review and edit suggestion`,thinking:`Model thinking`,thinkingLoading:`Thinking`,edit:`Edit`,preview:`Preview`,loading:`Generating suggestion...`,empty:`No content`,generate:`Generate suggestion`,regenerate:`Regenerate`,applyCurrent:`Apply current`,replace:`Replace`,append:`Append`,cancel:`Cancel`,close:`Close`}}function B(e){let t=(0,P.c)(232),{value:n,onApply:r,fieldId:a,fieldLabel:o,scenario:s,format:c,intent:u,locale:f,context:m,disabled:g,className:_,showLabel:y}=e,T=s===void 0?`generic.text`:s,k=c===void 0?`plain`:c,A=u===void 0?`improve`:u,M=y===void 0?!0:y,[F,I]=(0,N.useState)(!1),[L,R]=(0,N.useState)(n),[B,V]=(0,N.useState)(`preview`),[H,U]=(0,N.useState)(``),[W,G]=(0,N.useState)(`edit`),[K,ae]=(0,N.useState)(!0),oe=(0,N.useRef)(null),q=(0,N.useRef)(!0),{suggestion:se,thinking:J,loading:Y,error:X,generate:ce,reset:le}=ee(),ue;t[0]===f?ue=t[1]:(ue=ne(f),t[0]=f,t[1]=ue);let Z=ue,de;t[2]!==Y||t[3]!==J?(de=Y&&J.trim().length>0,t[2]=Y,t[3]=J,t[4]=de):de=t[4];let Q=de,fe,pe;t[5]!==F||t[6]!==n?(fe=()=>{F||R(n)},pe=[F,n],t[5]=F,t[6]=n,t[7]=fe,t[8]=pe):(fe=t[7],pe=t[8]),(0,N.useEffect)(fe,pe);let me,he;t[9]===se?(me=t[10],he=t[11]):(he=()=>{U(se)},me=[se],t[9]=se,t[10]=me,t[11]=he),(0,N.useEffect)(he,me);let ge,_e;t[12]===J?(ge=t[13],_e=t[14]):(ge=()=>{J.trim()&&ae(!0)},_e=[J],t[12]=J,t[13]=ge,t[14]=_e),(0,N.useEffect)(ge,_e);let ve;t[15]!==Q||t[16]!==K?(ve=()=>{let e=oe.current;!e||!Q||!K||q.current&&(e.scrollTop=e.scrollHeight)},t[15]=Q,t[16]=K,t[17]=ve):ve=t[17];let ye;t[18]!==Q||t[19]!==J||t[20]!==K?(ye=[Q,J,K],t[18]=Q,t[19]=J,t[20]=K,t[21]=ye):ye=t[21],(0,N.useLayoutEffect)(ve,ye);let be;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(be=()=>{let e=oe.current;e&&(q.current=e.scrollHeight-e.scrollTop-e.clientHeight<=te)},t[22]=be):be=t[22];let xe=be,Se;t[23]!==m||t[24]!==a||t[25]!==o||t[26]!==k||t[27]!==ce||t[28]!==A||t[29]!==f||t[30]!==T?(Se=async e=>{G(`edit`),ae(!0),q.current=!0,await ce({intent:A,scenario:T,input:e,locale:f,field:{id:a,label:o,format:k},context:m})},t[23]=m,t[24]=a,t[25]=o,t[26]=k,t[27]=ce,t[28]=A,t[29]=f,t[30]=T,t[31]=Se):Se=t[31];let Ce=Se,we;t[32]!==le||t[33]!==n?(we=()=>{R(n),V(`preview`),U(``),G(`edit`),ae(!0),le(),I(!0)},t[32]=le,t[33]=n,t[34]=we):we=t[34];let Te=we,Ee;t[35]!==L||t[36]!==Ce?(Ee=async()=>{await Ce(L)},t[35]=L,t[36]=Ce,t[37]=Ee):Ee=t[37];let De=Ee,Oe;t[38]!==le||t[39]!==n?(Oe=()=>{I(!1),R(n),V(`preview`),U(``),G(`edit`),ae(!0),le()},t[38]=le,t[39]=n,t[40]=Oe):Oe=t[40];let $=Oe,ke;t[41]!==$||t[42]!==L||t[43]!==r?(ke=()=>{r(L),$()},t[41]=$,t[42]=L,t[43]=r,t[44]=ke):ke=t[44];let Ae=ke,je;t[45]!==$||t[46]!==H||t[47]!==r?(je=()=>{H.trim()&&(r(H),$())},t[45]=$,t[46]=H,t[47]=r,t[48]=je):je=t[48];let Me=je,Ne;t[49]!==$||t[50]!==L||t[51]!==H||t[52]!==r?(Ne=()=>{if(!H.trim())return;let e=L.trimEnd();r(e?`${e}\n\n${H}`:H),$()},t[49]=$,t[50]=L,t[51]=H,t[52]=r,t[53]=Ne):Ne=t[53];let Pe=Ne,Fe;t[54]!==H||t[55]!==X||t[56]!==Y?(Fe=!Y&&!X&&H.trim().length>0,t[54]=H,t[55]=X,t[56]=Y,t[57]=Fe):Fe=t[57];let Ie=Fe,Le=L!==n,Re;t[58]!==H||t[59]!==X||t[60]!==J?(Re=H.trim().length>0||J.trim().length>0||!!X,t[58]=H,t[59]=X,t[60]=J,t[61]=Re):Re=t[61];let ze=Re,Be=!M&&`size-7 p-0`,Ve;t[62]!==_||t[63]!==Be?(Ve=i(`h-7 gap-1 px-2 text-xs`,Be,_),t[62]=_,t[63]=Be,t[64]=Ve):Ve=t[64];let He=g||Y,Ue;t[65]===Symbol.for(`react.memo_cache_sentinel`)?(Ue=(0,z.jsx)(w,{className:`size-3.5`,strokeWidth:1.75,"aria-hidden":!0}),t[65]=Ue):Ue=t[65];let We=M?Z.buttonTitle:null,Ge;t[66]!==Z.buttonTitle||t[67]!==Te||t[68]!==Ve||t[69]!==He||t[70]!==We?(Ge=(0,z.jsxs)(d,{type:`button`,variant:`ghost`,className:Ve,title:Z.buttonTitle,"aria-label":Z.buttonTitle,disabled:He,onClick:Te,children:[Ue,We]}),t[66]=Z.buttonTitle,t[67]=Te,t[68]=Ve,t[69]=He,t[70]=We,t[71]=Ge):Ge=t[71];let Ke;t[72]===$?Ke=t[73]:(Ke=e=>e?I(!0):$(),t[72]=$,t[73]=Ke);let qe;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(qe=(0,z.jsx)(b,{className:`xopc-dialog-overlay fixed inset-0 z-[80] bg-scrim`}),t[74]=qe):qe=t[74];let Je;t[75]===Z.title?Je=t[76]:(Je=(0,z.jsx)(h,{className:`text-base font-semibold text-fg`,children:Z.title}),t[75]=Z.title,t[76]=Je);let Ye;t[77]===Symbol.for(`react.memo_cache_sentinel`)?(Ye=(0,z.jsx)(O,{className:`size-5`,strokeWidth:1.75}),t[77]=Ye):Ye=t[77];let Xe;t[78]===Z.close?Xe=t[79]:(Xe=(0,z.jsx)(l,{asChild:!0,children:(0,z.jsx)(d,{type:`button`,variant:`ghost`,className:`size-9 shrink-0 p-0`,"aria-label":Z.close,children:Ye})}),t[78]=Z.close,t[79]=Xe);let Ze;t[80]!==Je||t[81]!==Xe?(Ze=(0,z.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-b border-edge px-4 py-3`,children:[Je,Xe]}),t[80]=Je,t[81]=Xe,t[82]=Ze):Ze=t[82];let Qe;t[83]===Z.current?Qe=t[84]:(Qe=(0,z.jsx)(`div`,{className:`min-w-0 text-xs font-medium text-fg-muted`,children:Z.current}),t[83]=Z.current,t[84]=Qe);let $e=B===`edit`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:bg-surface-hover`,et;t[85]===$e?et=t[86]:(et=i(`inline-flex h-7 items-center gap-1.5 rounded-md px-2 text-xs font-medium`,$e),t[85]=$e,t[86]=et);let tt,nt;t[87]===Symbol.for(`react.memo_cache_sentinel`)?(tt=()=>V(`edit`),nt=(0,z.jsx)(v,{className:`size-3.5 shrink-0`,strokeWidth:1.75,"aria-hidden":!0}),t[87]=tt,t[88]=nt):(tt=t[87],nt=t[88]);let rt;t[89]!==Z.edit||t[90]!==et?(rt=(0,z.jsxs)(`button`,{type:`button`,className:et,onClick:tt,children:[nt,Z.edit]}),t[89]=Z.edit,t[90]=et,t[91]=rt):rt=t[91];let it=B===`preview`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:bg-surface-hover`,at;t[92]===it?at=t[93]:(at=i(`inline-flex h-7 items-center gap-1.5 rounded-md px-2 text-xs font-medium`,it),t[92]=it,t[93]=at);let ot,st;t[94]===Symbol.for(`react.memo_cache_sentinel`)?(ot=()=>V(`preview`),st=(0,z.jsx)(D,{className:`size-3.5 shrink-0`,strokeWidth:1.75,"aria-hidden":!0}),t[94]=ot,t[95]=st):(ot=t[94],st=t[95]);let ct;t[96]!==Z.preview||t[97]!==at?(ct=(0,z.jsxs)(`button`,{type:`button`,className:at,onClick:ot,children:[st,Z.preview]}),t[96]=Z.preview,t[97]=at,t[98]=ct):ct=t[98];let lt;t[99]!==rt||t[100]!==ct?(lt=(0,z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 rounded-lg border border-edge bg-surface-muted p-0.5`,children:[rt,ct]}),t[99]=rt,t[100]=ct,t[101]=lt):lt=t[101];let ut;t[102]!==Qe||t[103]!==lt?(ut=(0,z.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[Qe,lt]}),t[102]=Qe,t[103]=lt,t[104]=ut):ut=t[104];let dt;t[105]!==L||t[106]!==B||t[107]!==k||t[108]!==Z.current||t[109]!==Z.empty?(dt=B===`preview`?(0,z.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto rounded-lg border border-edge bg-surface-base p-3 text-sm leading-6 text-fg`,children:k===`markdown`?(0,z.jsx)(j,{content:L||Z.empty,compact:!0,className:`text-sm`}):(0,z.jsx)(`pre`,{className:`whitespace-pre-wrap text-sm leading-6 text-fg`,children:L||Z.empty})}):(0,z.jsx)(`textarea`,{className:`min-h-0 flex-1 resize-none overflow-auto rounded-lg border border-edge bg-surface-base p-3 text-sm leading-6 text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/25`,value:L,onChange:e=>R(e.currentTarget.value),placeholder:Z.empty,"aria-label":Z.current}),t[105]=L,t[106]=B,t[107]=k,t[108]=Z.current,t[109]=Z.empty,t[110]=dt):dt=t[110];let ft;t[111]!==ut||t[112]!==dt?(ft=(0,z.jsxs)(`div`,{className:`flex min-h-0 flex-col overflow-hidden`,children:[ut,dt]}),t[111]=ut,t[112]=dt,t[113]=ft):ft=t[113];let pt;t[114]===Z.editedSuggestion?pt=t[115]:(pt=(0,z.jsx)(`span`,{children:Z.editedSuggestion}),t[114]=Z.editedSuggestion,t[115]=pt);let mt;t[116]!==Z.loading||t[117]!==Y?(mt=Y?(0,z.jsx)(`span`,{className:`ml-2 font-normal`,children:Z.loading}):null,t[116]=Z.loading,t[117]=Y,t[118]=mt):mt=t[118];let ht;t[119]!==pt||t[120]!==mt?(ht=(0,z.jsxs)(`div`,{className:`min-w-0 text-xs font-medium text-fg-muted`,children:[pt,mt]}),t[119]=pt,t[120]=mt,t[121]=ht):ht=t[121];let gt=W===`edit`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:bg-surface-hover`,_t;t[122]===gt?_t=t[123]:(_t=i(`inline-flex h-7 items-center gap-1.5 rounded-md px-2 text-xs font-medium`,gt),t[122]=gt,t[123]=_t);let vt,yt;t[124]===Symbol.for(`react.memo_cache_sentinel`)?(vt=()=>G(`edit`),yt=(0,z.jsx)(v,{className:`size-3.5 shrink-0`,strokeWidth:1.75,"aria-hidden":!0}),t[124]=vt,t[125]=yt):(vt=t[124],yt=t[125]);let bt;t[126]!==Z.edit||t[127]!==_t?(bt=(0,z.jsxs)(`button`,{type:`button`,className:_t,onClick:vt,children:[yt,Z.edit]}),t[126]=Z.edit,t[127]=_t,t[128]=bt):bt=t[128];let xt=W===`preview`?`bg-surface-panel text-fg shadow-surface`:`text-fg-muted hover:bg-surface-hover`,St;t[129]===xt?St=t[130]:(St=i(`inline-flex h-7 items-center gap-1.5 rounded-md px-2 text-xs font-medium`,xt),t[129]=xt,t[130]=St);let Ct,wt;t[131]===Symbol.for(`react.memo_cache_sentinel`)?(Ct=()=>G(`preview`),wt=(0,z.jsx)(D,{className:`size-3.5 shrink-0`,strokeWidth:1.75,"aria-hidden":!0}),t[131]=Ct,t[132]=wt):(Ct=t[131],wt=t[132]);let Tt;t[133]!==Z.preview||t[134]!==St?(Tt=(0,z.jsxs)(`button`,{type:`button`,className:St,onClick:Ct,children:[wt,Z.preview]}),t[133]=Z.preview,t[134]=St,t[135]=Tt):Tt=t[135];let Et;t[136]!==bt||t[137]!==Tt?(Et=(0,z.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 rounded-lg border border-edge bg-surface-muted p-0.5`,children:[bt,Tt]}),t[136]=bt,t[137]=Tt,t[138]=Et):Et=t[138];let Dt;t[139]!==ht||t[140]!==Et?(Dt=(0,z.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[ht,Et]}),t[139]=ht,t[140]=Et,t[141]=Dt):Dt=t[141];let Ot=Q?`opacity-100`:`pointer-events-none opacity-0`,kt;t[142]===Ot?kt=t[143]:(kt=i(`absolute inset-0 min-h-0 transition-opacity duration-200 ease-out motion-reduce:transition-none`,Ot),t[142]=Ot,t[143]=kt);let At=!Q,jt;t[144]===Symbol.for(`react.memo_cache_sentinel`)?(jt=()=>ae(re),t[144]=jt):jt=t[144];let Mt;t[145]!==Z.thinkingLoading||t[146]!==Y?(Mt=Y?(0,z.jsxs)(`span`,{className:`ml-1 font-normal`,children:[`· `,Z.thinkingLoading]}):null,t[145]=Z.thinkingLoading,t[146]=Y,t[147]=Mt):Mt=t[147];let Nt;t[148]!==Z.thinking||t[149]!==Mt?(Nt=(0,z.jsxs)(`span`,{className:`min-w-0 truncate`,children:[Z.thinking,Mt]}),t[148]=Z.thinking,t[149]=Mt,t[150]=Nt):Nt=t[150];let Pt=K&&`rotate-180`,Ft;t[151]===Pt?Ft=t[152]:(Ft=i(`size-3.5 shrink-0 transition-transform`,Pt),t[151]=Pt,t[152]=Ft);let It;t[153]===Ft?It=t[154]:(It=(0,z.jsx)(E,{className:Ft,strokeWidth:1.75,"aria-hidden":!0}),t[153]=Ft,t[154]=It);let Lt;t[155]!==Nt||t[156]!==It?(Lt=(0,z.jsxs)(`button`,{type:`button`,className:`flex shrink-0 items-center justify-between gap-2 px-2.5 py-2 text-left text-xs font-medium text-fg-muted hover:text-fg`,onClick:jt,children:[Nt,It]}),t[155]=Nt,t[156]=It,t[157]=Lt):Lt=t[157];let Rt;t[158]!==J||t[159]!==K?(Rt=K?(0,z.jsx)(`pre`,{ref:oe,className:`min-h-0 flex-1 overflow-auto border-t border-edge px-2.5 py-2 whitespace-pre-wrap text-xs leading-5 text-fg-muted`,onScroll:xe,children:J}):null,t[158]=J,t[159]=K,t[160]=Rt):Rt=t[160];let zt;t[161]!==Lt||t[162]!==Rt?(zt=(0,z.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col rounded-lg border border-edge bg-surface-muted/70`,children:[Lt,Rt]}),t[161]=Lt,t[162]=Rt,t[163]=zt):zt=t[163];let Bt;t[164]!==kt||t[165]!==At||t[166]!==zt?(Bt=(0,z.jsx)(`div`,{className:kt,"aria-hidden":At,children:zt}),t[164]=kt,t[165]=At,t[166]=zt,t[167]=Bt):Bt=t[167];let Vt=Q?`pointer-events-none opacity-0`:`opacity-100`,Ht;t[168]===Vt?Ht=t[169]:(Ht=i(`absolute inset-0 min-h-0 transition-opacity duration-200 ease-out motion-reduce:transition-none`,Vt),t[168]=Vt,t[169]=Ht);let Ut;t[170]!==H||t[171]!==X||t[172]!==k||t[173]!==Z.empty||t[174]!==Z.loading||t[175]!==Z.suggestion||t[176]!==Y||t[177]!==W?(Ut=X?(0,z.jsx)(`pre`,{className:`h-full min-h-0 overflow-auto whitespace-pre-wrap rounded-lg border border-edge bg-surface-base p-3 text-sm leading-6 text-fg-muted`,children:X}):W===`preview`?(0,z.jsx)(`div`,{className:`h-full min-h-0 overflow-auto rounded-lg border border-edge bg-surface-base p-3 text-sm leading-6 text-fg`,children:Y&&!H.trim()?(0,z.jsx)(`p`,{className:`text-sm text-fg-muted`,children:Z.loading}):k===`markdown`?(0,z.jsx)(j,{content:H||Z.empty,compact:!0,className:`text-sm`}):(0,z.jsx)(`pre`,{className:`whitespace-pre-wrap text-sm leading-6 text-fg`,children:H||Z.empty})}):(0,z.jsx)(`textarea`,{className:`h-full min-h-0 w-full resize-none overflow-auto rounded-lg border border-edge bg-surface-base p-3 text-sm leading-6 text-fg outline-none focus:border-accent focus:ring-2 focus:ring-accent/25 disabled:text-fg-muted`,value:H,onChange:e=>U(e.currentTarget.value),disabled:Y,placeholder:Y?Z.loading:Z.empty,"aria-label":Z.suggestion}),t[170]=H,t[171]=X,t[172]=k,t[173]=Z.empty,t[174]=Z.loading,t[175]=Z.suggestion,t[176]=Y,t[177]=W,t[178]=Ut):Ut=t[178];let Wt;t[179]!==Ht||t[180]!==Ut?(Wt=(0,z.jsx)(`div`,{className:Ht,children:Ut}),t[179]=Ht,t[180]=Ut,t[181]=Wt):Wt=t[181];let Gt;t[182]!==Bt||t[183]!==Wt?(Gt=(0,z.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:[Bt,Wt]}),t[182]=Bt,t[183]=Wt,t[184]=Gt):Gt=t[184];let Kt;t[185]!==Dt||t[186]!==Gt?(Kt=(0,z.jsxs)(`div`,{className:`flex min-h-0 flex-col overflow-hidden`,children:[Dt,Gt]}),t[185]=Dt,t[186]=Gt,t[187]=Kt):Kt=t[187];let qt;t[188]!==ft||t[189]!==Kt?(qt=(0,z.jsxs)(`div`,{className:`grid min-h-0 flex-1 grid-cols-1 gap-3 overflow-hidden p-4 md:grid-cols-2`,children:[ft,Kt]}),t[188]=ft,t[189]=Kt,t[190]=qt):qt=t[190];let Jt;t[191]!==$||t[192]!==Z.cancel?(Jt=(0,z.jsx)(d,{type:`button`,variant:`secondary`,onClick:$,children:Z.cancel}),t[191]=$,t[192]=Z.cancel,t[193]=Jt):Jt=t[193];let Yt=!Le,Xt;t[194]!==Ae||t[195]!==Z.applyCurrent||t[196]!==Yt?(Xt=(0,z.jsx)(d,{type:`button`,variant:`secondary`,disabled:Yt,onClick:Ae,children:Z.applyCurrent}),t[194]=Ae,t[195]=Z.applyCurrent,t[196]=Yt,t[197]=Xt):Xt=t[197];let Zt;t[198]===De?Zt=t[199]:(Zt=()=>void De(),t[198]=De,t[199]=Zt);let Qt;t[200]===ze?Qt=t[201]:(Qt=ze?(0,z.jsx)(C,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}):(0,z.jsx)(w,{className:`size-4`,strokeWidth:1.75,"aria-hidden":!0}),t[200]=ze,t[201]=Qt);let $t=ze?Z.regenerate:Z.generate,en;t[202]!==Y||t[203]!==Zt||t[204]!==Qt||t[205]!==$t?(en=(0,z.jsxs)(d,{type:`button`,variant:`secondary`,disabled:Y,onClick:Zt,children:[Qt,$t]}),t[202]=Y,t[203]=Zt,t[204]=Qt,t[205]=$t,t[206]=en):en=t[206];let tn=!Ie,nn;t[207]!==Pe||t[208]!==Z.append||t[209]!==tn?(nn=(0,z.jsx)(d,{type:`button`,variant:`secondary`,disabled:tn,onClick:Pe,children:Z.append}),t[207]=Pe,t[208]=Z.append,t[209]=tn,t[210]=nn):nn=t[210];let rn=!Ie,an;t[211]!==Me||t[212]!==Z.replace||t[213]!==rn?(an=(0,z.jsx)(d,{type:`button`,variant:`primary`,disabled:rn,onClick:Me,children:Z.replace}),t[211]=Me,t[212]=Z.replace,t[213]=rn,t[214]=an):an=t[214];let on;t[215]!==Jt||t[216]!==Xt||t[217]!==en||t[218]!==nn||t[219]!==an?(on=(0,z.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-edge px-4 py-3`,children:[Jt,Xt,en,nn,an]}),t[215]=Jt,t[216]=Xt,t[217]=en,t[218]=nn,t[219]=an,t[220]=on):on=t[220];let sn;t[221]!==Ze||t[222]!==qt||t[223]!==on?(sn=(0,z.jsxs)(S,{children:[qe,(0,z.jsx)(`div`,{className:`fixed inset-0 z-[80] flex items-center justify-center p-4 pointer-events-none`,children:(0,z.jsxs)(x,{className:`xopc-dialog-content-pane pointer-events-auto flex h-[min(78vh,38rem)] w-full max-w-4xl flex-col overflow-hidden rounded-2xl border border-edge bg-surface-panel shadow-popover outline-none`,onOpenAutoFocus:ie,children:[Ze,qt,on]})})]}),t[221]=Ze,t[222]=qt,t[223]=on,t[224]=sn):sn=t[224];let cn;t[225]!==F||t[226]!==Ke||t[227]!==sn?(cn=(0,z.jsx)(p,{open:F,onOpenChange:Ke,children:sn}),t[225]=F,t[226]=Ke,t[227]=sn,t[228]=cn):cn=t[228];let ln;return t[229]!==cn||t[230]!==Ge?(ln=(0,z.jsxs)(z.Fragment,{children:[Ge,cn]}),t[229]=cn,t[230]=Ge,t[231]=ln):ln=t[231],ln}function re(e){return!e}function ie(e){return e.preventDefault()}function V(e,t){return e[t]??t}function H(e){let t=(0,P.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,z.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,z.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,z.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,z.jsxs)(`div`,{children:[a,s]}),t[9]=a,t[10]=s,t[11]=c):c=t[11],c}function U(e){let t=(0,P.c)(34),{workflowName:n,language:r,argValues:o,onArgValuesChange:s,goal:c,onGoalChange:l,examplePrompts:u,showGoal:d,inputClassName:f,aiAssist:p}=e,m;t[0]===u?m=t[1]:(m=u===void 0?[]:u,t[0]=u,t[1]=m);let h=m,g=d===void 0?!0:d,v,b,x,S,C,w,T;if(t[2]!==p||t[3]!==o||t[4]!==h||t[5]!==c||t[6]!==f||t[7]!==r||t[8]!==s||t[9]!==l||t[10]!==g||t[11]!==n){x=a(r).workflows;let e=y[n]??[];b=e.length>0;let u=i(`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`,f),d;t[19]!==o||t[20]!==s||t[21]!==l?(d=e=>{_(e,l,e=>{s(e(o))})},t[19]=o,t[20]=s,t[21]=l,t[22]=d):d=t[22],v=d,S=`flex flex-col gap-3`,C=e.map(e=>{let t=V(x.args,e.labelKey),a=V(x.args,e.placeholderKey),c=o[e.key]??``;return(0,z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,z.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsxs)(`span`,{className:`text-xs font-medium text-fg-muted`,children:[t,e.required?` *`:``]}),e.multiline&&p?(0,z.jsx)(B,{value:c,onApply:t=>s({...o,[e.key]:t}),fieldId:`workflow.arg.${e.key}`,fieldLabel:t,scenario:p.argScenario??`workflow.arg`,locale:r,context:{...p.context,workflowName:n,workflowArgs:o,fieldKey:e.key},disabled:p.disabled,showLabel:!1}):null]}),e.multiline?(0,z.jsx)(`textarea`,{value:c,onChange:t=>s({...o,[e.key]:t.target.value}),placeholder:a,className:i(u,`min-h-20 resize-y`)}):(0,z.jsx)(`input`,{value:c,onChange:t=>s({...o,[e.key]:t.target.value}),placeholder:a,className:u})]},e.key)}),w=b&&h.length>0?(0,z.jsx)(H,{examples:h,labels:x,onSelect:v}):null,T=g?(0,z.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,z.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[(0,z.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:x.goalLabel}),p?(0,z.jsx)(B,{value:c,onApply:l,fieldId:`workflow.goal`,fieldLabel:x.goalLabel,scenario:p.goalScenario??`cron.workflowGoal`,locale:r,context:{...p.context,workflowName:n,workflowArgs:o},disabled:p.disabled,showLabel:!1}):null]}),(0,z.jsx)(`textarea`,{value:c,onChange:e=>l(e.target.value),placeholder:x.goalPlaceholder,className:i(u,`min-h-20 resize-y`)})]}):null,t[2]=p,t[3]=o,t[4]=h,t[5]=c,t[6]=f,t[7]=r,t[8]=s,t[9]=l,t[10]=g,t[11]=n,t[12]=v,t[13]=b,t[14]=x,t[15]=S,t[16]=C,t[17]=w,t[18]=T}else v=t[12],b=t[13],x=t[14],S=t[15],C=t[16],w=t[17],T=t[18];let E;t[23]!==v||t[24]!==h||t[25]!==b||t[26]!==x?(E=!b&&h.length>0?(0,z.jsx)(H,{examples:h,labels:x,onSelect:v}):null,t[23]=v,t[24]=h,t[25]=b,t[26]=x,t[27]=E):E=t[27];let D;return t[28]!==S||t[29]!==C||t[30]!==w||t[31]!==T||t[32]!==E?(D=(0,z.jsxs)(`div`,{className:S,children:[C,w,T,E]}),t[28]=S,t[29]=C,t[30]=w,t[31]=T,t[32]=E,t[33]=D):D=t[33],D}var W=`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 G(e){return!!(e&&e.type===`object`&&e.properties&&!Array.isArray(e.properties))}function K({schema:e,value:t,onChange:n,labels:r,aiAssist:a,onValidChange:o}){let s=(0,N.useMemo)(()=>q(e),[e]),[c,l]=(0,N.useState)(!1),[u,d]=(0,N.useState)(()=>JSON.stringify(t,null,2)),[f,p]=(0,N.useState)(null);if(s.length===0)return null;let m=(e,r)=>{let i={...t,[e]:r};(r===``||r===void 0)&&delete i[e],n(i),c&&d(JSON.stringify(i,null,2))},h=e=>{d(e);try{let t=e.trim()?JSON.parse(e):{};if(!t||typeof t!=`object`||Array.isArray(t)){p(r.rawJsonInvalid),o?.(!1);return}p(null),n(t),o?.(!0,t)}catch{p(r.rawJsonInvalid),o?.(!1)}};return(0,z.jsxs)(`section`,{className:`rounded-2xl bg-surface-panel/70 p-4 shadow-surface`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,z.jsx)(`h3`,{className:`text-sm font-semibold text-fg`,children:r.inputSchemaHeading}),(0,z.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-accent-fg hover:underline`,onClick:()=>{let e=!c;l(e),e&&(d(JSON.stringify(t,null,2)),p(null),o?.(!0))},children:r.rawJson})]}),c?(0,z.jsxs)(`div`,{className:`mt-3`,children:[(0,z.jsx)(`textarea`,{value:u,onChange:e=>h(e.target.value),spellCheck:!1,className:i(W,`min-h-40 font-mono text-xs leading-5`)}),f?(0,z.jsx)(`p`,{className:`mt-1 text-xs text-red-600 dark:text-red-300`,children:f}):null]}):(0,z.jsx)(`div`,{className:`mt-3 grid gap-3`,children:s.map(e=>(0,z.jsx)(ae,{field:e,value:t[e.key],labels:r,aiAssist:a,allValues:t,onChange:t=>m(e.key,t)},e.key))})]})}function ae(e){let t=(0,P.c)(30),{field:n,value:r,labels:a,aiAssist:o,allValues:s,onChange:c}=e,l=n.schema.title||n.key,u=typeof n.schema.description==`string`?n.schema.description:void 0,d=Array.isArray(n.schema.type)?n.schema.type[0]:n.schema.type,f;t[0]===n.schema.enum?f=t[1]:(f=Array.isArray(n.schema.enum)?n.schema.enum:[],t[0]=n.schema.enum,t[1]=f);let p=f,m=!!o&&!p.length&&(d===`string`||!d),h=String(l),g=n.required?` *`:``,_;t[2]!==h||t[3]!==g?(_=(0,z.jsxs)(`span`,{className:`text-xs font-medium text-fg`,children:[h,g]}),t[2]=h,t[3]=g,t[4]=_):_=t[4];let v;t[5]!==o||t[6]!==s||t[7]!==n.key||t[8]!==n.schema||t[9]!==c||t[10]!==m||t[11]!==l||t[12]!==r?(v=m&&o?(0,z.jsx)(B,{value:typeof r==`string`?r:r==null?``:String(r),onApply:c,fieldId:`workflow.schema.${n.key}`,fieldLabel:String(l),scenario:o.scenario??`workflow.arg`,locale:o.locale,context:{...o.context,fieldKey:n.key,fieldSchema:n.schema,inputValues:s},disabled:o.disabled,showLabel:!1}):null,t[5]=o,t[6]=s,t[7]=n.key,t[8]=n.schema,t[9]=c,t[10]=m,t[11]=l,t[12]=r,t[13]=v):v=t[13];let y;t[14]!==_||t[15]!==v?(y=(0,z.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[_,v]}),t[14]=_,t[15]=v,t[16]=y):y=t[16];let b;t[17]===u?b=t[18]:(b=u?(0,z.jsx)(`p`,{className:`mt-0.5 text-xs leading-5 text-fg-subtle`,children:u}):null,t[17]=u,t[18]=b);let x;t[19]!==u||t[20]!==p||t[21]!==a||t[22]!==c||t[23]!==d||t[24]!==r?(x=p.length>0?(0,z.jsxs)(M,{value:r==null?``:String(r),onChange:e=>c(e.target.value),className:W,children:[(0,z.jsx)(A,{value:``}),p.map(oe)]}):d===`boolean`?(0,z.jsxs)(M,{value:typeof r==`boolean`?String(r):``,onChange:e=>c(e.target.value===``?void 0:e.target.value===`true`),className:W,children:[(0,z.jsx)(A,{value:``}),(0,z.jsx)(A,{value:`true`,children:a.booleanTrue}),(0,z.jsx)(A,{value:`false`,children:a.booleanFalse})]}):d===`number`||d===`integer`?(0,z.jsx)(`input`,{type:`number`,value:typeof r==`number`||typeof r==`string`?String(r):``,onChange:e=>c(e.target.value===``?void 0:Number(e.target.value)),className:W}):(0,z.jsx)(`textarea`,{value:typeof r==`string`?r:r==null?``:String(r),onChange:e=>c(e.target.value),className:i(W,u&&u.length>80?`min-h-20 resize-y`:`min-h-10 resize-y`)}),t[19]=u,t[20]=p,t[21]=a,t[22]=c,t[23]=d,t[24]=r,t[25]=x):x=t[25];let S;return t[26]!==y||t[27]!==b||t[28]!==x?(S=(0,z.jsxs)(`div`,{className:`block`,children:[y,b,x]}),t[26]=y,t[27]=b,t[28]=x,t[29]=S):S=t[29],S}function oe(e){return(0,z.jsx)(A,{value:String(e),children:String(e)},String(e))}function q(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 se(e,t){return!G(e)||!e?!0:q(e).every(e=>{if(!e.required)return!0;let n=t[e.key];return n==null?!1:typeof n==`string`?n.trim().length>0:!0})}function J(e){let t=(0,P.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,z.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,z.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,z.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,z.jsxs)(`div`,{children:[a,s]}),t[9]=a,t[10]=s,t[11]=c):c=t[11],c}function Y(e,t){if(e)return G(e.inputSchema)?Object.keys(t.schemaInput).length>0?t.schemaInput:void 0:u(t.argValues)}function X(e,t,n){let r=a(t).workflows;if(!e)return r.noInputSummary;let i=c(e,t);if(G(e.inputSchema)&&Object.keys(n.schemaInput).length>0)return Object.entries(n.schemaInput).map(([e,t])=>`${e}: ${String(t)}`).join(` · `);let o=Object.values(n.argValues).map(e=>e.trim()).filter(Boolean),s=n.goal.trim()||i.description;return s&&o.unshift(s),o.length>0?o.join(` · `):r.noInputSummary}function ce(e,t,n=!0){return e?n?G(e.inputSchema)?se(e.inputSchema,t.schemaInput)?{valid:!0}:{valid:!1,reason:`schema-required`}:{valid:(y[e.name]??[]).every(e=>!e.required||!!t.argValues[e.key]?.trim())}:{valid:!1,reason:`raw-json`}:{valid:!1}}function le(e){let t=(0,P.c)(114),{definition:n,language:r,value:o,onChange:s,aiAssist:l,inputClassName:u,onValidityChange:d}=e,f;t[0]===r?f=t[1]:(f=a(r),t[0]=r,t[1]=f);let p=f.workflows,m;t[2]!==n||t[3]!==r?(m=c(n,r),t[2]=n,t[3]=r,t[4]=m):m=t[4];let h=m,[g,_]=(0,N.useState)(!0),v;t[5]===h.examplePrompts?v=t[6]:(v=h.examplePrompts??[],t[5]=h.examplePrompts,t[6]=v);let y=v,b;t[7]===n.inputSchema?b=t[8]:(b=G(n.inputSchema),t[7]=n.inputSchema,t[8]=b);let x=b,S,C,w,T,E,D,O,k,A,j;if(t[9]!==l||t[10]!==n||t[11]!==y||t[12]!==x||t[13]!==u||t[14]!==p||t[15]!==r||t[16]!==h.description||t[17]!==s||t[18]!==d||t[19]!==g||t[20]!==o){E=Symbol.for(`react.early_return_sentinel`);bb0:{let e=i(`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`,u),a;t[31]!==n||t[32]!==s||t[33]!==d||t[34]!==g?(a=(e,t)=>{let r=t===void 0?g:t;s(e),d?.(ce(n,e,r))},t[31]=n,t[32]=s,t[33]=d,t[34]=g,t[35]=a):a=t[35];let c=a,f;t[36]!==c||t[37]!==o?(f=e=>c({...o,goal:e}),t[36]=c,t[37]=o,t[38]=f):f=t[38];let m=f,v;t[39]!==c||t[40]!==o?(v=e=>c({...o,schemaInput:e}),t[39]=c,t[40]=o,t[41]=v):v=t[41];let b=v,M;t[42]!==c||t[43]!==o?(M=e=>c({...o,argValues:e}),t[42]=c,t[43]=o,t[44]=M):M=t[44];let N=M,P;if(t[45]!==m||t[46]!==b||t[47]!==o.schemaInput?(P=e=>{if(e.field===`goal`){m(e.text);return}b({...o.schemaInput,[e.field]:e.text})},t[45]=m,t[46]=b,t[47]=o.schemaInput,t[48]=P):P=t[48],S=P,!x){let e;t[49]!==l||t[50]!==n.id||t[51]!==n.name||t[52]!==n.title||t[53]!==h.description?(e=l?{disabled:l.disabled,argScenario:l.inputScenario??`workflow.arg`,goalScenario:l.goalScenario??`workflow.goal`,context:{...l.context,workflowId:n.id,workflowName:n.name,workflowTitle:n.title,workflowDescription:h.description}}:void 0,t[49]=l,t[50]=n.id,t[51]=n.name,t[52]=n.title,t[53]=h.description,t[54]=e):e=t[54];let i;t[55]!==n.name||t[56]!==y||t[57]!==u||t[58]!==r||t[59]!==N||t[60]!==m||t[61]!==e||t[62]!==o.argValues||t[63]!==o.goal?(i=(0,z.jsx)(U,{workflowName:n.name,language:r,argValues:o.argValues,onArgValuesChange:N,goal:o.goal,onGoalChange:m,examplePrompts:y,inputClassName:u,aiAssist:e}),t[55]=n.name,t[56]=y,t[57]=u,t[58]=r,t[59]=N,t[60]=m,t[61]=e,t[62]=o.argValues,t[63]=o.goal,t[64]=i):i=t[64],E=i;break bb0}w=`flex flex-col gap-3`,t[65]!==l||t[66]!==n||t[67]!==p.booleanFalse||t[68]!==p.booleanTrue||t[69]!==p.inputSchemaHeading||t[70]!==p.rawJson||t[71]!==p.rawJsonInvalid||t[72]!==r||t[73]!==h.description||t[74]!==d||t[75]!==b||t[76]!==o?(T=n.inputSchema?(0,z.jsx)(K,{schema:n.inputSchema,value:o.schemaInput,onChange:b,onValidChange:(e,t)=>{_(e),d?.(ce(n,t?{...o,schemaInput:t}:o,e))},aiAssist:l?{locale:r,disabled:l.disabled,scenario:l.inputScenario??`workflow.arg`,context:{...l.context,workflowId:n.id,workflowName:n.name,workflowTitle:n.title,workflowDescription:h.description}}:void 0,labels:{inputSchemaHeading:p.inputSchemaHeading,rawJson:p.rawJson,rawJsonInvalid:p.rawJsonInvalid,booleanTrue:p.booleanTrue,booleanFalse:p.booleanFalse}}):null,t[65]=l,t[66]=n,t[67]=p.booleanFalse,t[68]=p.booleanTrue,t[69]=p.inputSchemaHeading,t[70]=p.rawJson,t[71]=p.rawJsonInvalid,t[72]=r,t[73]=h.description,t[74]=d,t[75]=b,t[76]=o,t[77]=T):T=t[77],j=`flex flex-col gap-1`;let F;t[78]===p.goalLabel?F=t[79]:(F=(0,z.jsx)(`span`,{className:`text-xs font-medium text-fg-muted`,children:p.goalLabel}),t[78]=p.goalLabel,t[79]=F);let I;t[80]!==l||t[81]!==n.id||t[82]!==n.name||t[83]!==n.title||t[84]!==p.goalLabel||t[85]!==r||t[86]!==h.description||t[87]!==m||t[88]!==o.goal||t[89]!==o.schemaInput?(I=l?(0,z.jsx)(B,{value:o.goal,onApply:m,fieldId:`workflow.goal`,fieldLabel:p.goalLabel,scenario:l.goalScenario??`workflow.goal`,locale:r,context:{...l.context,workflowId:n.id,workflowName:n.name,workflowTitle:n.title,workflowDescription:h.description,workflowInput:o.schemaInput},disabled:l.disabled,showLabel:!1}):null,t[80]=l,t[81]=n.id,t[82]=n.name,t[83]=n.title,t[84]=p.goalLabel,t[85]=r,t[86]=h.description,t[87]=m,t[88]=o.goal,t[89]=o.schemaInput,t[90]=I):I=t[90],t[91]!==F||t[92]!==I?(C=(0,z.jsxs)(`span`,{className:`flex items-center justify-between gap-2`,children:[F,I]}),t[91]=F,t[92]=I,t[93]=C):C=t[93],D=o.goal,t[94]===m?O=t[95]:(O=e=>m(e.target.value),t[94]=m,t[95]=O),k=p.goalPlaceholder,A=i(e,`min-h-20 resize-y`)}t[9]=l,t[10]=n,t[11]=y,t[12]=x,t[13]=u,t[14]=p,t[15]=r,t[16]=h.description,t[17]=s,t[18]=d,t[19]=g,t[20]=o,t[21]=S,t[22]=C,t[23]=w,t[24]=T,t[25]=E,t[26]=D,t[27]=O,t[28]=k,t[29]=A,t[30]=j}else S=t[21],C=t[22],w=t[23],T=t[24],E=t[25],D=t[26],O=t[27],k=t[28],A=t[29],j=t[30];if(E!==Symbol.for(`react.early_return_sentinel`))return E;let M;t[96]!==D||t[97]!==O||t[98]!==k||t[99]!==A?(M=(0,z.jsx)(`textarea`,{value:D,onChange:O,placeholder:k,className:A}),t[96]=D,t[97]=O,t[98]=k,t[99]=A,t[100]=M):M=t[100];let F;t[101]!==C||t[102]!==M||t[103]!==j?(F=(0,z.jsxs)(`div`,{className:j,children:[C,M]}),t[101]=C,t[102]=M,t[103]=j,t[104]=F):F=t[104];let I;t[105]!==S||t[106]!==y||t[107]!==p?(I=(0,z.jsx)(J,{examples:y,labels:p,onSelect:S}),t[105]=S,t[106]=y,t[107]=p,t[108]=I):I=t[108];let L;return t[109]!==w||t[110]!==T||t[111]!==F||t[112]!==I?(L=(0,z.jsxs)(`div`,{className:w,children:[T,F,I]}),t[109]=w,t[110]=T,t[111]=F,t[112]=I,t[113]=L):L=t[113],L}function ue(e,t){let n=e.metadata.estimatedAgents;return n?n.min===n.max?g(t.agentScaleExact,{count:n.min}):g(t.agentScaleRange,{min:n.min,max:n.max}):g(t.agentScaleExact,{count:e.defaults.maxSubagents})}function Z(e){let t=(0,P.c)(41),{definition:n,language:r,value:o,onChange:s,mode:l,badgeLabel:u,aiAssist:d,inputClassName:p,showTimeout:h,defaultAdvancedOpen:_,onValidityChange:v}=e,y=h===void 0?!1:h,b=_===void 0?!1:_,x=a(r).workflows,[S,C]=(0,N.useState)(b),w;t[0]!==n||t[1]!==r?(w=c(n,r),t[0]=n,t[1]=r,t[2]=w):w=t[2];let D=w,O;t[3]!==n.defaults||t[4]!==o.concurrency?(O=o.concurrency.trim()?Number(o.concurrency):n.defaults.concurrency,t[3]=n.defaults,t[4]=o.concurrency,t[5]=O):O=t[5];let A=O,j;t[6]!==n.defaults||t[7]!==o.maxSubagents?(j=o.maxSubagents.trim()?Number(o.maxSubagents):n.defaults.maxSubagents,t[6]=n.defaults,t[7]=o.maxSubagents,t[8]=j):j=t[8];let M=j,F;t[9]!==n||t[10]!==r||t[11]!==o?(F=X(n,r,o),t[9]=n,t[10]=r,t[11]=o,t[12]=F):F=t[12];let I=F,L=u??x.readyToStart,R;t[13]!==s||t[14]!==o?(R=e=>s({...o,...e}),t[13]=s,t[14]=o,t[15]=R):R=t[15];let ee=R,te=l===`automation`&&`rounded-xl bg-surface-panel/70 p-3 shadow-surface`,ne;t[16]===te?ne=t[17]:(ne=i(`space-y-4`,te),t[16]=te,t[17]=ne);let B=I||D.description,re;t[18]===B?re=t[19]:(re=(0,z.jsx)(`p`,{className:`mt-1 line-clamp-2 text-xs leading-5 text-fg-muted`,children:B}),t[18]=B,t[19]=re);let ie;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(ie=(0,z.jsx)(T,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[20]=ie):ie=t[20];let V;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(V=(0,z.jsx)(f,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[21]=V):V=t[21];let H;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(H=(0,z.jsx)(k,{className:`size-3.5 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[22]=H):H=t[22];let U;t[23]!==s||t[24]!==o?(U=e=>s({...o,...e}),t[23]=s,t[24]=o,t[25]=U):U=t[25];let W;t[26]===v?W=t[27]:(W=e=>{v?.(e)},t[26]=v,t[27]=W);let G;t[28]!==d||t[29]!==n||t[30]!==p||t[31]!==r||t[32]!==U||t[33]!==W||t[34]!==o?(G=(0,z.jsx)(le,{definition:n,language:r,value:o,onChange:U,onValidityChange:W,aiAssist:d,inputClassName:p}),t[28]=d,t[29]=n,t[30]=p,t[31]=r,t[32]=U,t[33]=W,t[34]=o,t[35]=G):G=t[35];let K;t[36]===Symbol.for(`react.memo_cache_sentinel`)?(K=()=>C(de),t[36]=K):K=t[36];let ae=x.advancedSettings,oe=S&&`rotate-180`,q;t[37]===oe?q=t[38]:(q=i(`size-4 transition-transform`,oe),t[37]=oe,t[38]=q);let se;return t[39]===q?se=t[40]:(se=(0,z.jsx)(E,{className:q}),t[39]=q,t[40]=se),(0,z.jsxs)(`div`,{className:ne,children:[(0,z.jsxs)(`section`,{className:`rounded-2xl bg-surface-panel p-4 shadow-surface`,children:[(0,z.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`min-w-0`,children:[(0,z.jsx)(`h3`,{className:`truncate text-sm font-semibold text-fg`,children:x.runPlanPreview}),re]}),(0,z.jsx)(`span`,{className:`shrink-0 rounded-full bg-accent-soft px-2 py-1 text-[11px] font-medium text-accent-fg`,children:L})]}),(0,z.jsxs)(`div`,{className:`mt-4 grid gap-2 text-xs text-fg-muted sm:grid-cols-3`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[ie,(0,z.jsx)(`span`,{children:g(x.phaseCount,{count:n.phases.length})})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[V,(0,z.jsx)(`span`,{children:ue(n,x)})]}),(0,z.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-surface-panel px-2.5 py-2`,children:[H,(0,z.jsx)(`span`,{children:g(x.runLimitsSummary,{concurrency:A,max:M})})]})]}),n.phases.length>0?(0,z.jsxs)(`div`,{className:`mt-4`,children:[(0,z.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] font-medium uppercase tracking-wide text-fg-subtle`,children:[(0,z.jsx)(m,{className:`size-3.5`,"aria-hidden":!0}),x.startPlanPhases]}),(0,z.jsx)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,children:n.phases.map(Q)})]}):null]}),G,(0,z.jsxs)(`div`,{className:`rounded-xl border border-edge`,children:[(0,z.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-between px-3 py-2.5 text-left text-sm text-fg`,onClick:K,children:[ae,se]}),S?(0,z.jsxs)(`div`,{className:`grid gap-3 border-t border-edge px-3 pb-3 pt-3 sm:grid-cols-2`,children:[(0,z.jsx)(`input`,{value:o.concurrency,onChange:e=>ee({concurrency:e.target.value}),placeholder:g(x.concurrencyPlaceholder,{default:n.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,z.jsx)(`input`,{value:o.maxSubagents,onChange:e=>ee({maxSubagents:e.target.value}),placeholder:g(x.maxSubagentsPlaceholder,{default:n.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`}),y?(0,z.jsx)(`input`,{value:o.timeoutSeconds??``,onChange:e=>ee({timeoutSeconds:e.target.value}),placeholder:g(x.timeoutSecondsPlaceholder,{default:n.defaults.timeoutSec}),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]}):null]})]})}function de(e){return!e}function Q(e,t){return(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[t>0?(0,z.jsx)(`span`,{className:`text-fg-subtle`,children:`→`}):null,(0,z.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)}export{B as a,V as i,Y as n,ce as r,Z as t};
|
|
@@ -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"./messages-CQ_k8RHj.js";import{$ as a,Eo as o,Ga as s,Ha as c,Ka as l,Ua as u,Va as d,Wa as f}from"./index-
|
|
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"./messages-CQ_k8RHj.js";import{$ as a,Eo as o,Ga as s,Ha as c,Ka as l,Ua as u,Va as d,Wa as f}from"./index-DZOm5_ex.js";import{n as p,r as m,t as h}from"./workflow-run-setup-panel-D-Dy6mTy.js";var g=n(),_=e(t(),1),v=r();function y(e){let t=(0,g.c)(69),{open:n,definition:r,language:y,starting:b,onClose:x,onStart:S}=e,C;t[0]===y?C=t[1]:(C=i(y),t[0]=y,t[1]=C);let w=C.workflows,T;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(T={goal:``,argValues:{},schemaInput:{},concurrency:``,maxSubagents:``},t[2]=T):T=t[2];let[E,D]=(0,_.useState)(T),O;t[3]!==r||t[4]!==y?(O=r?a(r,y):null,t[3]=r,t[4]=y,t[5]=O):O=t[5];let k=O,A;t[6]!==r||t[7]!==E?(A=m(r,E),t[6]=r,t[7]=E,t[8]=A):A=t[8];let j=A,M;t[9]!==E.concurrency||t[10]!==E.maxSubagents?(M=[E.concurrency,E.maxSubagents].every(ee),t[9]=E.concurrency,t[10]=E.maxSubagents,t[11]=M):M=t[11];let te=M,N=j.valid&&te&&!b,P;t[12]!==r||t[13]!==n?(P=()=>{!n||!r||D({goal:``,argValues:{},schemaInput:{},concurrency:``,maxSubagents:``})},t[12]=r,t[13]=n,t[14]=P):P=t[14];let F=r?.id,I;if(t[15]!==n||t[16]!==F?(I=[n,F],t[15]=n,t[16]=F,t[17]=I):I=t[17],(0,_.useEffect)(P,I),!r||!k)return null;let L;t[18]!==N||t[19]!==r||t[20]!==E||t[21]!==k.description||t[22]!==S?(L=()=>{if(!N)return;let e=p(r,E);S({goal:E.goal.trim()||k.description,input:e,concurrency:E.concurrency.trim()?Number(E.concurrency):void 0,maxSubagents:E.maxSubagents.trim()?Number(E.maxSubagents):void 0})},t[18]=N,t[19]=r,t[20]=E,t[21]=k.description,t[22]=S,t[23]=L):L=t[23];let R=L,z;t[24]===x?z=t[25]:(z=e=>!e&&x(),t[24]=x,t[25]=z);let B;t[26]===Symbol.for(`react.memo_cache_sentinel`)?(B=(0,v.jsx)(u,{className:`xopc-dialog-overlay fixed inset-0 z-65 bg-scrim backdrop-blur-[1px]`}),t[26]=B):B=t[26];let V;t[27]!==r.title||t[28]!==w.startTitle?(V=(0,v.jsxs)(l,{className:`text-base font-semibold text-fg`,children:[w.startTitle,` · `,r.title]}),t[27]=r.title,t[28]=w.startTitle,t[29]=V):V=t[29];let H;t[30]===k.description?H=t[31]:(H=(0,v.jsx)(c,{className:`mt-1 text-sm text-fg-muted`,children:k.description}),t[30]=k.description,t[31]=H);let U;t[32]!==V||t[33]!==H?(U=(0,v.jsxs)(`div`,{className:`border-b border-edge px-5 py-4`,children:[V,H]}),t[32]=V,t[33]=H,t[34]=U):U=t[34];let W;t[35]!==r.id||t[36]!==r.name||t[37]!==r.title||t[38]!==k.description?(W={context:{surface:`workflow-start`,workflowId:r.id,workflowName:r.name,workflowTitle:r.title,workflowDescription:k.description}},t[35]=r.id,t[36]=r.name,t[37]=r.title,t[38]=k.description,t[39]=W):W=t[39];let G;t[40]!==r||t[41]!==E||t[42]!==w.readyToStart||t[43]!==y||t[44]!==W?(G=(0,v.jsx)(`div`,{className:`min-h-0 flex-1 space-y-4 overflow-auto px-5 py-4`,children:(0,v.jsx)(h,{definition:r,language:y,value:E,onChange:D,mode:`manual`,badgeLabel:w.readyToStart,aiAssist:W})}),t[40]=r,t[41]=E,t[42]=w.readyToStart,t[43]=y,t[44]=W,t[45]=G):G=t[45];let K;t[46]!==N||t[47]!==w.inputRequiredHint?(K=N?null:(0,v.jsx)(`div`,{className:`mr-auto self-center text-xs text-fg-subtle`,children:w.inputRequiredHint}),t[46]=N,t[47]=w.inputRequiredHint,t[48]=K):K=t[48];let q;t[49]!==w.cancelDialog||t[50]!==x||t[51]!==b?(q=(0,v.jsx)(o,{variant:`secondary`,onClick:x,disabled:b,children:w.cancelDialog}),t[49]=w.cancelDialog,t[50]=x,t[51]=b,t[52]=q):q=t[52];let J=!N,Y=b?w.starting:w.start,X;t[53]!==R||t[54]!==J||t[55]!==Y?(X=(0,v.jsx)(o,{variant:`primary`,onClick:R,disabled:J,children:Y}),t[53]=R,t[54]=J,t[55]=Y,t[56]=X):X=t[56];let Z;t[57]!==K||t[58]!==q||t[59]!==X?(Z=(0,v.jsxs)(`div`,{className:`flex justify-end gap-2 border-t border-edge px-5 py-4`,children:[K,q,X]}),t[57]=K,t[58]=q,t[59]=X,t[60]=Z):Z=t[60];let Q;t[61]!==U||t[62]!==G||t[63]!==Z?(Q=(0,v.jsxs)(f,{children:[B,(0,v.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:[U,G,Z]})]}),t[61]=U,t[62]=G,t[63]=Z,t[64]=Q):Q=t[64];let $;return t[65]!==n||t[66]!==z||t[67]!==Q?($=(0,v.jsx)(s,{open:n,onOpenChange:z,children:Q}),t[65]=n,t[66]=z,t[67]=Q,t[68]=$):$=t[68],$}function ee(e){let t=e.trim();if(!t)return!0;let n=Number(t);return Number.isInteger(n)&&n>0}export{y as t};
|
package/dist/gateway/static/root/assets/{workflows-page-CyzWdCfz.js → workflows-page-Cw5zrqti.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-CQ_k8RHj.js";import{a as o}from"./fetch-BWXmBizE.js";import{n as s}from"./locale-store-Ba72bFmP.js";import{i as c}from"./vendor-swr-BIWyz7Rc.js";import{$ as l,$c as u,A as d,B as f,Ba as p,Bc as m,Bo as h,Cs as g,Ct as _,Dl as v,E as y,Eo as b,F as x,Fo as S,G as C,Ga as w,H as T,Ha as E,I as D,Ic as O,J as k,K as A,Ka as j,L as M,Lc as N,M as P,N as F,Nc as I,O as L,P as R,R as z,S as B,St as V,Ts as H,U,Ua as ee,V as te,Va as ne,Vs as W,W as G,Wa as K,X as re,Xs as q,Y as ie,Yc as J,Yn as ae,Z as oe,_ as se,_a as ce,_t as le,al as ue,bo as de,bt as fe,dt as pe,es as me,et as he,ft as ge,g as _e,go as ve,gt as ye,hs as be,ic as Y,il as xe,is as Se,it as Ce,j as we,jc as Te,k as Ee,kc as De,kl as Oe,ko as ke,ks as Ae,ll as X,lt as je,mt as Me,nc as Ne,nr as Pe,nt as Fe,pt as Ie,q as Le,qa as Re,ro as ze,rt as Be,to as Ve,tt as He,us as Ue,ut as We,vc as Ge,vt as Ke,yi as qe,yt as Je}from"./index-jlZ7Y0f4.js";import{t as Ye}from"./page-tabs-BhskfCr7.js";import{i as Xe}from"./workflow-run-setup-panel-Bsu_O633.js";import{t as Ze}from"./automation-suggestion-card-D8u5JlzD.js";import{t as Qe}from"./workflow-start-dialog-BfmCq61y.js";var Z=e(t(),1),Q=n(),$e=[`queued`,`running`,`succeeded`,`attention`],et=new Set([`failed`,`timeout`,`cancelled`]);function tt(e){return e.metadata?.sessionKey?.trim()||null}function nt(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function rt(e,t){if(!e||typeof e!=`object`)return null;let n=e;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function it(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||rt(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||rt(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?nt(n,t):null}function at(e,t=90){return it(e,t)??nt(e.title?.trim()||e.definitionId,t)}function ot(e,t=44){return nt(e.title?.trim()||e.definitionId,t)}function st(e,t){let n=t.trim().toLowerCase();return n?[it(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function ct(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!D(e,t.triggerFilter??`all`)?!1:st(e,t.searchQuery))}function lt(e){return e.completedAtMs??e.createdAtMs}function ut(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?`succeeded`:et.has(e.status)?`attention`:null}function dt(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):e===`running`?n.sort((e,t)=>(t.startedAtMs??t.createdAtMs)-(e.startedAtMs??e.createdAtMs)):n.sort((e,t)=>lt(t)-lt(e))}function ft(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=ut(r,t);e&&n[e].push(r)}return $e.map(e=>{if(e===`succeeded`){let t=dt(`succeeded`,n.succeeded);return{id:e,runs:t,totalInWindow:t.length}}return{id:e,runs:dt(e,n[e])}})}var pt=new Map;function mt(e){let t=pt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),pt.set(e,t)),t}function ht(e,t,n){let r=Math.round((t-e)/1e3),i=mt(n);if(r<60)return i.format(-r,`second`);let a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<48)return i.format(-o,`hour`);let s=Math.round(o/24);return i.format(-s,`day`)}function gt(e){return e.status===`queued`||e.status===`running`}function _t(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),vt=(0,Z.memo)(function(e){let t=(0,Q.c)(76),{run:n,language:r,localeTag:o,nowMs:s,selected:c,onOpen:l,onOpenChat:u,onCancel:f,onRetry:p}=e,m=a(r).workflows,[g,_]=(0,Z.useState)(!1),v;t[0]===n?v=t[1]:(v=tt(n),t[0]=n,t[1]=v);let y=!v,x;t[2]===n?x=t[3]:(x=gt(n),t[2]=n,t[3]=x);let S=x,C=n.status===`running`||n.status===`queued`,w;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(w=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]=w):w=t[6];let T=w,E=n.metrics.errorAgentCount>0,D=n.startedAtMs??n.createdAtMs,O=d(S?s-D:n.metrics.durationMs),k=F(m.taskArtifacts,{count:n.metrics.artifactCount}),A;t[7]===n?A=t[8]:(A=at(n),t[7]=n,t[8]=A);let j=A,N;t[9]===n?N=t[10]:(N=ot(n),t[9]=n,t[10]=N);let P=N,I;t[11]!==l||t[12]!==n?(I=()=>{l(n)},t[11]=l,t[12]=n,t[13]=I):I=t[13];let L=I,R;t[14]!==y||t[15]!==u||t[16]!==n?(R=()=>{y||u(n)},t[14]=y,t[15]=u,t[16]=n,t[17]=R):R=t[17];let z=R,B=c&&`ring-1 ring-accent/30`,V;t[18]===B?V=t[19]:(V=i(`group relative min-h-24 overflow-hidden rounded-lg bg-surface-panel px-3 py-3 shadow-surface transition-colors`,B,`hover:bg-surface-hover`),t[18]=B,t[19]=V);let H;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(H=i(`w-full text-left`,de.focusRingPanel),t[20]=H):H=t[20];let U;t[21]===j?U=t[22]:(U=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-medium leading-5 text-fg`,children:j}),t[21]=j,t[22]=U);let ee;t[23]===P?ee=t[24]:(ee=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:P}),t[23]=P,t[24]=ee);let te;t[25]!==U||t[26]!==ee?(te=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[U,ee]}),t[25]=U,t[26]=ee,t[27]=te):te=t[27];let ne;t[28]===n.status?ne=t[29]:(ne=i(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,M(n.status)),t[28]=n.status,t[29]=ne);let W;t[30]!==o||t[31]!==s||t[32]!==D?(W=ht(D,s,o),t[30]=o,t[31]=s,t[32]=D,t[33]=W):W=t[33];let G;t[34]===W?G=t[35]:(G=(0,$.jsx)(`span`,{children:W}),t[34]=W,t[35]=G);let K=O===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:F(m.taskElapsed,{duration:O})})]}),re;t[36]!==G||t[37]!==K?(re=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[G,K]}),t[36]=G,t[37]=K,t[38]=re):re=t[38];let q=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:k}):null,ie=c?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:m.taskOpenDetails}):null,J;t[39]!==q||t[40]!==ie?(J=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[q,ie]}),t[39]=q,t[40]=ie,t[41]=J):J=t[41];let ae=y&&`cursor-not-allowed text-fg-disabled hover:bg-transparent`,oe;t[42]===ae?oe=t[43]:(oe=i(`rounded-md px-2 py-1 text-xs font-medium`,`text-accent-fg hover:bg-accent-soft`,de.focusRingPanel,ae),t[42]=ae,t[43]=oe);let se;t[44]!==y||t[45]!==z||t[46]!==m.continueInChat||t[47]!==oe?(se=(0,$.jsx)(`button`,{type:`button`,className:oe,disabled:y,onClick:z,children:m.continueInChat}),t[44]=y,t[45]=z,t[46]=m.continueInChat,t[47]=oe,t[48]=se):se=t[48];let ce;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(ce=i(`rounded-md px-2 py-1 text-xs font-medium text-fg-muted hover:bg-surface-hover hover:text-fg`,de.focusRingPanel),t[49]=ce):ce=t[49];let le;t[50]!==L||t[51]!==m.taskOpenDetails?(le=(0,$.jsx)(`button`,{type:`button`,className:ce,onClick:L,children:m.taskOpenDetails}),t[50]=L,t[51]=m.taskOpenDetails,t[52]=le):le=t[52];let ue;t[53]!==se||t[54]!==le?(ue=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 border-t border-edge-subtle pt-2`,children:[se,le]}),t[53]=se,t[54]=le,t[55]=ue):ue=t[55];let fe;t[56]===_?fe=t[57]:(fe=()=>_(bt),t[56]=_,t[57]=fe);let pe;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,$.jsx)(Te,{className:`size-4`,"aria-hidden":!0}),t[58]=pe):pe=t[58];let me;t[59]!==m.taskActionsAria||t[60]!==g||t[61]!==fe?(me=(0,$.jsx)(b,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":m.taskActionsAria,"aria-expanded":g,onClick:fe,children:pe}),t[59]=m.taskActionsAria,t[60]=g,t[61]=fe,t[62]=me):me=t[62];let he;t[63]!==S||t[64]!==m.cancel||t[65]!==m.rerun||t[66]!==m.taskCloseMenu||t[67]!==g||t[68]!==f||t[69]!==p||t[70]!==n||t[71]!==_?(he=g?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":m.taskCloseMenu,onClick:()=>_(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[S?(0,$.jsx)(yt,{label:m.cancel,tone:`danger`,onClick:()=>{_(!1),f(n.id)}}):null,_t(n)?(0,$.jsx)(yt,{label:m.rerun,onClick:()=>{_(!1),p(n.id)}}):null]})]}):null,t[63]=S,t[64]=m.cancel,t[65]=m.rerun,t[66]=m.taskCloseMenu,t[67]=g,t[68]=f,t[69]=p,t[70]=n,t[71]=_,t[72]=he):he=t[72];let ge;return t[73]!==me||t[74]!==he?(ge=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[me,he]}),t[73]=me,t[74]=he,t[75]=ge):ge=t[75],(0,$.jsxs)(`div`,{className:V,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:L,"aria-label":`${m.taskOpenDetails}: ${j}`,"aria-current":c?`true`:void 0,className:H,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[te,(0,$.jsx)(`span`,{className:ne,children:m.status[n.status]??n.status})]}),re]}),C?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:F(m.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[T,`%`]})]}),(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:`${T}%`}})})]}):null,J,E?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(h,{className:`size-3 shrink-0`,"aria-hidden":!0}),F(m.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),ue,ge]})});function yt(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:a,onClick:o}=e,s=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,c=a===`danger`&&!r&&`text-red-600 dark:text-red-300`,l;t[0]!==s||t[1]!==c?(l=i(`block w-full px-3 py-1.5 text-left text-xs`,s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let u;return t[3]!==r||t[4]!==n||t[5]!==o||t[6]!==l?(u=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:o,className:l,children:n}),t[3]=r,t[4]=n,t[5]=o,t[6]=l,t[7]=u):u=t[7],u}function bt(e){return!e}function xt(e,t){return t.boardColumns[e]}var St=(0,Z.memo)(function(e){let t=(0,Q.c)(17),{column:n,language:r,localeTag:o,nowMs:s,selectedRunId:c,loading:l,onOpenRun:u,onOpenRunChat:d,onCancelRun:f,onRetryRun:p}=e,m=a(r).workflows,[h,g]=(0,Z.useState)(!1),_=n.id===`succeeded`,v=_?5:n.runs.length,y;t[0]!==v||t[1]!==n.runs||t[2]!==h||t[3]!==_?(y=_&&!h?n.runs.slice(0,v):n.runs,t[0]=v,t[1]=n.runs,t[2]=h,t[3]=_,t[4]=y):y=t[4];let x=y,S=_&&n.runs.length>5&&!h,C=_&&h,w;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(w=i(`flex max-h-full w-72 min-w-72 max-w-72 shrink-0 flex-col overflow-y-auto rounded-lg bg-surface-base shadow-surface`),t[5]=w):w=t[5];let T;t[6]===n.runs.length?T=t[7]:(T=(0,$.jsx)(`span`,{className:`shrink-0 text-xs text-fg-subtle`,children:n.runs.length}),t[6]=n.runs.length,t[7]=T);let E;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(Te,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[8]=E):E=t[8];let D=l&&x.length===0?(0,$.jsx)(Ct,{}):x.length===0?(0,$.jsx)(`div`,{className:`rounded-lg bg-surface-panel/70 px-3 py-6 text-center text-xs text-fg-subtle`,children:m.boardColumnEmpty}):x.map(e=>(0,$.jsx)(vt,{run:e,language:r,localeTag:o,nowMs:s,selected:e.id===c,onOpen:u,onOpenChat:d,onCancel:f,onRetry:p},e.id)),O=S?(0,$.jsx)(b,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!0),children:F(m.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,k;t[9]!==C||t[10]!==m||t[11]!==g?(k=C?(0,$.jsx)(b,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!1),children:m.boardCollapseSucceeded}):null,t[9]=C,t[10]=m,t[11]=g,t[12]=k):k=t[12];let A;return t[13]!==D||t[14]!==O||t[15]!==k?(A=(0,$.jsxs)(`div`,{className:`mx-2 mt-3 grid min-h-0 min-w-0 content-start gap-2 pb-2 pr-1 [scrollbar-gutter:stable]`,children:[D,O,k]}),t[13]=D,t[14]=O,t[15]=k,t[16]=A):A=t[16],(0,$.jsxs)(`section`,{className:w,"aria-label":xt(n.id,m),children:[(0,$.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between gap-2 px-3 py-3`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:xt(n.id,m)}),T]}),E]}),A]})});function Ct(){let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`article`,{className:`min-h-24 rounded-lg bg-surface-panel px-3 py-3 shadow-surface`,"aria-hidden":`true`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(ce,{className:`h-4 w-4/5`}),(0,$.jsx)(ce,{className:`mt-2 h-3 w-24`})]}),(0,$.jsx)(ce,{className:`h-5 w-14 rounded-full`})]}),(0,$.jsx)(ce,{className:`mt-3 h-3 w-2/3`}),(0,$.jsx)(ce,{className:`mt-4 h-5 w-20 rounded-full`})]}),e[0]=t):t=e[0],t}function wt(e){return e instanceof Element?!!e.closest(`a,button,input,select,textarea,[contenteditable="true"],[draggable="true"],[data-board-pan-skip="true"]`):!0}var Tt=(0,Z.memo)(function(e){let t=(0,Q.c)(54),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m,onStart:h}=e,g;t[0]===n?g=t[1]:(g=n.some(Et),t[0]=n,t[1]=g);let _=g,v=(0,Z.useRef)(null),y=(0,Z.useRef)(null),[x,S]=(0,Z.useState)(Dt),[C,w]=(0,Z.useState)(!1),T,E;t[2]===_?(T=t[3],E=t[4]):(T=()=>{if(!_)return;let e=window.setInterval(()=>S(Date.now()),1e3);return()=>window.clearInterval(e)},E=[_],t[2]=_,t[3]=T,t[4]=E),(0,Z.useEffect)(T,E);let D;t[5]!==x||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(D=ft(ct(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),x),t[5]=x,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=D):D=t[10];let O=D,k=O.reduce(Ot,0),A;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(A=e=>{let t=y.current;!t||t.pointerId!==e.pointerId||(y.current=null,w(!1),e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId))},t[11]=A):A=t[11];let j=A,M;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(M=e=>{if(e.button!==0||wt(e.target))return;let t=v.current;t&&(y.current={pointerId:e.pointerId,startX:e.clientX,scrollLeft:t.scrollLeft,active:!1},e.currentTarget.setPointerCapture(e.pointerId))},t[12]=M):M=t[12];let N=M,P;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(P=e=>{let t=y.current,n=v.current;if(!t||!n||t.pointerId!==e.pointerId)return;let r=e.clientX-t.startX;!t.active&&Math.abs(r)<5||(t.active||(t.active=!0,w(!0)),e.preventDefault(),n.scrollLeft=t.scrollLeft-r)},t[13]=P):P=t[13];let F=P;if(!u&&k===0){let e;t[14]===a.boardEmptyTitle?e=t[15]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[14]=a.boardEmptyTitle,t[15]=e);let n;t[16]===a.boardEmptyHint?n=t[17]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[16]=a.boardEmptyHint,t[17]=n);let r;t[18]!==a.boardStart||t[19]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(b,{variant:`primary`,onClick:h,children:a.boardStart})}),t[18]=a.boardStart,t[19]=h,t[20]=r):r=t[20];let i;return t[21]!==r||t[22]!==e||t[23]!==n?(i=(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col items-center justify-center rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[21]=r,t[22]=e,t[23]=n,t[24]=i):i=t[24],i}let I=C?`cursor-grabbing select-none`:`cursor-grab`,L;t[25]===I?L=t[26]:(L=[`min-h-0 h-full min-w-0 overflow-x-auto rounded-lg px-2 py-2`,I],t[25]=I,t[26]=L);let R=L.join(` `),z;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(z=e=>{y.current?.pointerId===e.pointerId&&(y.current=null,w(!1))},t[27]=z):z=t[27];let B;if(t[28]!==O||t[29]!==r||t[30]!==u||t[31]!==i||t[32]!==x||t[33]!==p||t[34]!==d||t[35]!==f||t[36]!==m||t[37]!==l){let e;t[39]!==r||t[40]!==u||t[41]!==i||t[42]!==x||t[43]!==p||t[44]!==d||t[45]!==f||t[46]!==m||t[47]!==l?(e=e=>(0,$.jsx)(St,{column:e,language:r,localeTag:i,nowMs:x,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[39]=r,t[40]=u,t[41]=i,t[42]=x,t[43]=p,t[44]=d,t[45]=f,t[46]=m,t[47]=l,t[48]=e):e=t[48],B=O.map(e),t[28]=O,t[29]=r,t[30]=u,t[31]=i,t[32]=x,t[33]=p,t[34]=d,t[35]=f,t[36]=m,t[37]=l,t[38]=B}else B=t[38];let V;t[49]===B?V=t[50]:(V=(0,$.jsx)(`div`,{className:`flex min-h-full min-w-max items-start gap-3 pr-4`,children:B}),t[49]=B,t[50]=V);let H;return t[51]!==R||t[52]!==V?(H=(0,$.jsx)(`div`,{ref:v,className:R,onPointerDown:N,onPointerMove:F,onPointerUp:j,onPointerCancel:j,onLostPointerCapture:z,children:V}),t[51]=R,t[52]=V,t[53]=H):H=t[53],H});function Et(e){return e.status===`queued`||e.status===`running`}function Dt(){return Date.now()}function Ot(e,t){return e+t.runs.length}var kt=`export const meta = {
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{a as t,n,t as r}from"./vendor-react-BOUWij0V.js";import{t as i}from"./cn-BQ_8x0bT.js";import{t as a}from"./messages-CQ_k8RHj.js";import{a as o}from"./fetch-BWXmBizE.js";import{n as s}from"./locale-store-Ba72bFmP.js";import{i as c}from"./vendor-swr-BIWyz7Rc.js";import{$ as l,$c as u,A as d,B as f,Ba as p,Bc as m,Bo as h,Cs as g,Ct as _,Dl as v,E as y,Eo as b,F as x,Fo as S,G as C,Ga as w,H as T,Ha as E,I as D,Ic as O,J as k,K as A,Ka as j,L as M,Lc as N,M as P,N as F,Nc as I,O as L,P as R,R as z,S as B,St as V,Ts as H,U,Ua as ee,V as te,Va as ne,Vs as W,W as G,Wa as K,X as re,Xs as q,Y as ie,Yc as J,Yn as ae,Z as oe,_ as se,_a as ce,_t as le,al as ue,bo as de,bt as fe,dt as pe,es as me,et as he,ft as ge,g as _e,go as ve,gt as ye,hs as be,ic as Y,il as xe,is as Se,it as Ce,j as we,jc as Te,k as Ee,kc as De,kl as Oe,ko as ke,ks as Ae,ll as X,lt as je,mt as Me,nc as Ne,nr as Pe,nt as Fe,pt as Ie,q as Le,qa as Re,ro as ze,rt as Be,to as Ve,tt as He,us as Ue,ut as We,vc as Ge,vt as Ke,yi as qe,yt as Je}from"./index-DZOm5_ex.js";import{t as Ye}from"./page-tabs-CVLqCfQB.js";import{i as Xe}from"./workflow-run-setup-panel-D-Dy6mTy.js";import{t as Ze}from"./automation-suggestion-card-DVKmVTIo.js";import{t as Qe}from"./workflow-start-dialog-GammZ2GK.js";var Z=e(t(),1),Q=n(),$e=[`queued`,`running`,`succeeded`,`attention`],et=new Set([`failed`,`timeout`,`cancelled`]);function tt(e){return e.metadata?.sessionKey?.trim()||null}function nt(e,t){return e.length<=t?e:`${e.slice(0,t-1)}…`}function rt(e,t){if(!e||typeof e!=`object`)return null;let n=e;for(let e of t){let t=n[e];if(typeof t==`string`&&t.trim())return t.trim()}return null}function it(e,t=90){let n=e.metadata?.input?.goal?.trim()||(typeof e.metadata?.input?.payload==`string`?e.metadata.input.payload.trim():null)||rt(e.metadata?.input?.payload,[`query`,`goal`,`prompt`,`input`,`message`])||rt(e.metadata?.input?.variables,[`query`,`goal`,`prompt`,`input`,`message`]);return n?nt(n,t):null}function at(e,t=90){return it(e,t)??nt(e.title?.trim()||e.definitionId,t)}function ot(e,t=44){return nt(e.title?.trim()||e.definitionId,t)}function st(e,t){let n=t.trim().toLowerCase();return n?[it(e,500),e.title,e.definitionId,e.id].filter(Boolean).join(` `).toLowerCase().includes(n):!0}function ct(e,t){let n=t.workflowFilterId.trim();return e.filter(e=>n&&e.definitionId!==n||!D(e,t.triggerFilter??`all`)?!1:st(e,t.searchQuery))}function lt(e){return e.completedAtMs??e.createdAtMs}function ut(e,t){return e.status===`queued`?`queued`:e.status===`running`?`running`:e.status===`succeeded`?`succeeded`:et.has(e.status)?`attention`:null}function dt(e,t){let n=[...t];return e===`queued`?n.sort((e,t)=>e.createdAtMs-t.createdAtMs):e===`running`?n.sort((e,t)=>(t.startedAtMs??t.createdAtMs)-(e.startedAtMs??e.createdAtMs)):n.sort((e,t)=>lt(t)-lt(e))}function ft(e,t){let n={queued:[],running:[],succeeded:[],attention:[]};for(let r of e){let e=ut(r,t);e&&n[e].push(r)}return $e.map(e=>{if(e===`succeeded`){let t=dt(`succeeded`,n.succeeded);return{id:e,runs:t,totalInWindow:t.length}}return{id:e,runs:dt(e,n[e])}})}var pt=new Map;function mt(e){let t=pt.get(e);return t||(t=new Intl.RelativeTimeFormat(e,{numeric:`auto`}),pt.set(e,t)),t}function ht(e,t,n){let r=Math.round((t-e)/1e3),i=mt(n);if(r<60)return i.format(-r,`second`);let a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<48)return i.format(-o,`hour`);let s=Math.round(o/24);return i.format(-s,`day`)}function gt(e){return e.status===`queued`||e.status===`running`}function _t(e){return e.status===`failed`||e.status===`timeout`||e.status===`cancelled`}var $=r(),vt=(0,Z.memo)(function(e){let t=(0,Q.c)(76),{run:n,language:r,localeTag:o,nowMs:s,selected:c,onOpen:l,onOpenChat:u,onCancel:f,onRetry:p}=e,m=a(r).workflows,[g,_]=(0,Z.useState)(!1),v;t[0]===n?v=t[1]:(v=tt(n),t[0]=n,t[1]=v);let y=!v,x;t[2]===n?x=t[3]:(x=gt(n),t[2]=n,t[3]=x);let S=x,C=n.status===`running`||n.status===`queued`,w;t[4]!==n.metrics.agentCount||t[5]!==n.metrics.doneAgentCount?(w=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]=w):w=t[6];let T=w,E=n.metrics.errorAgentCount>0,D=n.startedAtMs??n.createdAtMs,O=d(S?s-D:n.metrics.durationMs),k=F(m.taskArtifacts,{count:n.metrics.artifactCount}),A;t[7]===n?A=t[8]:(A=at(n),t[7]=n,t[8]=A);let j=A,N;t[9]===n?N=t[10]:(N=ot(n),t[9]=n,t[10]=N);let P=N,I;t[11]!==l||t[12]!==n?(I=()=>{l(n)},t[11]=l,t[12]=n,t[13]=I):I=t[13];let L=I,R;t[14]!==y||t[15]!==u||t[16]!==n?(R=()=>{y||u(n)},t[14]=y,t[15]=u,t[16]=n,t[17]=R):R=t[17];let z=R,B=c&&`ring-1 ring-accent/30`,V;t[18]===B?V=t[19]:(V=i(`group relative min-h-24 overflow-hidden rounded-lg bg-surface-panel px-3 py-3 shadow-surface transition-colors`,B,`hover:bg-surface-hover`),t[18]=B,t[19]=V);let H;t[20]===Symbol.for(`react.memo_cache_sentinel`)?(H=i(`w-full text-left`,de.focusRingPanel),t[20]=H):H=t[20];let U;t[21]===j?U=t[22]:(U=(0,$.jsx)(`div`,{className:`line-clamp-2 text-sm font-medium leading-5 text-fg`,children:j}),t[21]=j,t[22]=U);let ee;t[23]===P?ee=t[24]:(ee=(0,$.jsx)(`div`,{className:`mt-1 truncate text-[11px] font-medium text-fg-muted`,children:P}),t[23]=P,t[24]=ee);let te;t[25]!==U||t[26]!==ee?(te=(0,$.jsxs)(`div`,{className:`min-w-0`,children:[U,ee]}),t[25]=U,t[26]=ee,t[27]=te):te=t[27];let ne;t[28]===n.status?ne=t[29]:(ne=i(`shrink-0 rounded-full px-2 py-0.5 text-[10px] font-semibold shadow-sm`,M(n.status)),t[28]=n.status,t[29]=ne);let W;t[30]!==o||t[31]!==s||t[32]!==D?(W=ht(D,s,o),t[30]=o,t[31]=s,t[32]=D,t[33]=W):W=t[33];let G;t[34]===W?G=t[35]:(G=(0,$.jsx)(`span`,{children:W}),t[34]=W,t[35]=G);let K=O===`—`?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{"aria-hidden":!0,children:`·`}),(0,$.jsx)(`span`,{children:F(m.taskElapsed,{duration:O})})]}),re;t[36]!==G||t[37]!==K?(re=(0,$.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[11px] text-fg-subtle`,children:[G,K]}),t[36]=G,t[37]=K,t[38]=re):re=t[38];let q=n.metrics.artifactCount>0?(0,$.jsx)(`span`,{className:`rounded-full bg-surface-hover px-2 py-0.5 font-medium text-fg-muted`,children:k}):null,ie=c?(0,$.jsx)(`span`,{className:`font-medium text-accent-fg`,children:m.taskOpenDetails}):null,J;t[39]!==q||t[40]!==ie?(J=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 text-[11px] text-fg-subtle`,children:[q,ie]}),t[39]=q,t[40]=ie,t[41]=J):J=t[41];let ae=y&&`cursor-not-allowed text-fg-disabled hover:bg-transparent`,oe;t[42]===ae?oe=t[43]:(oe=i(`rounded-md px-2 py-1 text-xs font-medium`,`text-accent-fg hover:bg-accent-soft`,de.focusRingPanel,ae),t[42]=ae,t[43]=oe);let se;t[44]!==y||t[45]!==z||t[46]!==m.continueInChat||t[47]!==oe?(se=(0,$.jsx)(`button`,{type:`button`,className:oe,disabled:y,onClick:z,children:m.continueInChat}),t[44]=y,t[45]=z,t[46]=m.continueInChat,t[47]=oe,t[48]=se):se=t[48];let ce;t[49]===Symbol.for(`react.memo_cache_sentinel`)?(ce=i(`rounded-md px-2 py-1 text-xs font-medium text-fg-muted hover:bg-surface-hover hover:text-fg`,de.focusRingPanel),t[49]=ce):ce=t[49];let le;t[50]!==L||t[51]!==m.taskOpenDetails?(le=(0,$.jsx)(`button`,{type:`button`,className:ce,onClick:L,children:m.taskOpenDetails}),t[50]=L,t[51]=m.taskOpenDetails,t[52]=le):le=t[52];let ue;t[53]!==se||t[54]!==le?(ue=(0,$.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-2 border-t border-edge-subtle pt-2`,children:[se,le]}),t[53]=se,t[54]=le,t[55]=ue):ue=t[55];let fe;t[56]===_?fe=t[57]:(fe=()=>_(bt),t[56]=_,t[57]=fe);let pe;t[58]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,$.jsx)(Te,{className:`size-4`,"aria-hidden":!0}),t[58]=pe):pe=t[58];let me;t[59]!==m.taskActionsAria||t[60]!==g||t[61]!==fe?(me=(0,$.jsx)(b,{variant:`ghost`,className:`size-7 p-0 opacity-0 group-hover:opacity-100 group-focus-within:opacity-100`,"aria-label":m.taskActionsAria,"aria-expanded":g,onClick:fe,children:pe}),t[59]=m.taskActionsAria,t[60]=g,t[61]=fe,t[62]=me):me=t[62];let he;t[63]!==S||t[64]!==m.cancel||t[65]!==m.rerun||t[66]!==m.taskCloseMenu||t[67]!==g||t[68]!==f||t[69]!==p||t[70]!==n||t[71]!==_?(he=g?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{type:`button`,className:`fixed inset-0 z-10 cursor-default`,"aria-label":m.taskCloseMenu,onClick:()=>_(!1)}),(0,$.jsxs)(`div`,{className:`absolute right-0 z-20 mt-1 min-w-36 rounded-lg border border-edge bg-surface-panel py-1 shadow-surface`,children:[S?(0,$.jsx)(yt,{label:m.cancel,tone:`danger`,onClick:()=>{_(!1),f(n.id)}}):null,_t(n)?(0,$.jsx)(yt,{label:m.rerun,onClick:()=>{_(!1),p(n.id)}}):null]})]}):null,t[63]=S,t[64]=m.cancel,t[65]=m.rerun,t[66]=m.taskCloseMenu,t[67]=g,t[68]=f,t[69]=p,t[70]=n,t[71]=_,t[72]=he):he=t[72];let ge;return t[73]!==me||t[74]!==he?(ge=(0,$.jsxs)(`div`,{className:`absolute right-2 top-2`,children:[me,he]}),t[73]=me,t[74]=he,t[75]=ge):ge=t[75],(0,$.jsxs)(`div`,{className:V,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:L,"aria-label":`${m.taskOpenDetails}: ${j}`,"aria-current":c?`true`:void 0,className:H,children:[(0,$.jsxs)(`div`,{className:`pr-7`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-2`,children:[te,(0,$.jsx)(`span`,{className:ne,children:m.status[n.status]??n.status})]}),re]}),C?(0,$.jsxs)(`div`,{className:`mt-2.5`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 text-[11px] text-fg-muted`,children:[(0,$.jsx)(`span`,{children:F(m.agentProgress,{done:n.metrics.doneAgentCount,total:n.metrics.agentCount})}),(0,$.jsxs)(`span`,{children:[T,`%`]})]}),(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:`${T}%`}})})]}):null,J,E?(0,$.jsxs)(`div`,{className:`mt-2 flex items-center gap-1 text-[11px] text-amber-700 dark:text-amber-300`,children:[(0,$.jsx)(h,{className:`size-3 shrink-0`,"aria-hidden":!0}),F(m.runRowErrorSummary,{count:n.metrics.errorAgentCount})]}):null]}),ue,ge]})});function yt(e){let t=(0,Q.c)(8),{label:n,disabled:r,tone:a,onClick:o}=e,s=r?`cursor-not-allowed text-fg-subtle`:`text-fg hover:bg-surface-hover`,c=a===`danger`&&!r&&`text-red-600 dark:text-red-300`,l;t[0]!==s||t[1]!==c?(l=i(`block w-full px-3 py-1.5 text-left text-xs`,s,c),t[0]=s,t[1]=c,t[2]=l):l=t[2];let u;return t[3]!==r||t[4]!==n||t[5]!==o||t[6]!==l?(u=(0,$.jsx)(`button`,{type:`button`,disabled:r,onClick:o,className:l,children:n}),t[3]=r,t[4]=n,t[5]=o,t[6]=l,t[7]=u):u=t[7],u}function bt(e){return!e}function xt(e,t){return t.boardColumns[e]}var St=(0,Z.memo)(function(e){let t=(0,Q.c)(17),{column:n,language:r,localeTag:o,nowMs:s,selectedRunId:c,loading:l,onOpenRun:u,onOpenRunChat:d,onCancelRun:f,onRetryRun:p}=e,m=a(r).workflows,[h,g]=(0,Z.useState)(!1),_=n.id===`succeeded`,v=_?5:n.runs.length,y;t[0]!==v||t[1]!==n.runs||t[2]!==h||t[3]!==_?(y=_&&!h?n.runs.slice(0,v):n.runs,t[0]=v,t[1]=n.runs,t[2]=h,t[3]=_,t[4]=y):y=t[4];let x=y,S=_&&n.runs.length>5&&!h,C=_&&h,w;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(w=i(`flex max-h-full w-72 min-w-72 max-w-72 shrink-0 flex-col overflow-y-auto rounded-lg bg-surface-base shadow-surface`),t[5]=w):w=t[5];let T;t[6]===n.runs.length?T=t[7]:(T=(0,$.jsx)(`span`,{className:`shrink-0 text-xs text-fg-subtle`,children:n.runs.length}),t[6]=n.runs.length,t[7]=T);let E;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,$.jsx)(Te,{className:`size-4 shrink-0 text-fg-subtle`,"aria-hidden":!0}),t[8]=E):E=t[8];let D=l&&x.length===0?(0,$.jsx)(Ct,{}):x.length===0?(0,$.jsx)(`div`,{className:`rounded-lg bg-surface-panel/70 px-3 py-6 text-center text-xs text-fg-subtle`,children:m.boardColumnEmpty}):x.map(e=>(0,$.jsx)(vt,{run:e,language:r,localeTag:o,nowMs:s,selected:e.id===c,onOpen:u,onOpenChat:d,onCancel:f,onRetry:p},e.id)),O=S?(0,$.jsx)(b,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!0),children:F(m.boardExpandSucceeded,{count:Math.min(n.runs.length,n.totalInWindow??n.runs.length)})}):null,k;t[9]!==C||t[10]!==m||t[11]!==g?(k=C?(0,$.jsx)(b,{variant:`ghost`,className:`h-8 w-full text-xs`,onClick:()=>g(!1),children:m.boardCollapseSucceeded}):null,t[9]=C,t[10]=m,t[11]=g,t[12]=k):k=t[12];let A;return t[13]!==D||t[14]!==O||t[15]!==k?(A=(0,$.jsxs)(`div`,{className:`mx-2 mt-3 grid min-h-0 min-w-0 content-start gap-2 pb-2 pr-1 [scrollbar-gutter:stable]`,children:[D,O,k]}),t[13]=D,t[14]=O,t[15]=k,t[16]=A):A=t[16],(0,$.jsxs)(`section`,{className:w,"aria-label":xt(n.id,m),children:[(0,$.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between gap-2 px-3 py-3`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,$.jsx)(`h2`,{className:`truncate text-sm font-semibold text-fg`,children:xt(n.id,m)}),T]}),E]}),A]})});function Ct(){let e=(0,Q.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,$.jsxs)(`article`,{className:`min-h-24 rounded-lg bg-surface-panel px-3 py-3 shadow-surface`,"aria-hidden":`true`,children:[(0,$.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,$.jsx)(ce,{className:`h-4 w-4/5`}),(0,$.jsx)(ce,{className:`mt-2 h-3 w-24`})]}),(0,$.jsx)(ce,{className:`h-5 w-14 rounded-full`})]}),(0,$.jsx)(ce,{className:`mt-3 h-3 w-2/3`}),(0,$.jsx)(ce,{className:`mt-4 h-5 w-20 rounded-full`})]}),e[0]=t):t=e[0],t}function wt(e){return e instanceof Element?!!e.closest(`a,button,input,select,textarea,[contenteditable="true"],[draggable="true"],[data-board-pan-skip="true"]`):!0}var Tt=(0,Z.memo)(function(e){let t=(0,Q.c)(54),{runs:n,language:r,localeTag:i,labels:a,searchQuery:o,workflowFilterId:s,triggerFilter:c,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m,onStart:h}=e,g;t[0]===n?g=t[1]:(g=n.some(Et),t[0]=n,t[1]=g);let _=g,v=(0,Z.useRef)(null),y=(0,Z.useRef)(null),[x,S]=(0,Z.useState)(Dt),[C,w]=(0,Z.useState)(!1),T,E;t[2]===_?(T=t[3],E=t[4]):(T=()=>{if(!_)return;let e=window.setInterval(()=>S(Date.now()),1e3);return()=>window.clearInterval(e)},E=[_],t[2]=_,t[3]=T,t[4]=E),(0,Z.useEffect)(T,E);let D;t[5]!==x||t[6]!==n||t[7]!==o||t[8]!==c||t[9]!==s?(D=ft(ct(n,{searchQuery:o,workflowFilterId:s,triggerFilter:c}),x),t[5]=x,t[6]=n,t[7]=o,t[8]=c,t[9]=s,t[10]=D):D=t[10];let O=D,k=O.reduce(Ot,0),A;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(A=e=>{let t=y.current;!t||t.pointerId!==e.pointerId||(y.current=null,w(!1),e.currentTarget.hasPointerCapture?.(e.pointerId)&&e.currentTarget.releasePointerCapture(e.pointerId))},t[11]=A):A=t[11];let j=A,M;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(M=e=>{if(e.button!==0||wt(e.target))return;let t=v.current;t&&(y.current={pointerId:e.pointerId,startX:e.clientX,scrollLeft:t.scrollLeft,active:!1},e.currentTarget.setPointerCapture(e.pointerId))},t[12]=M):M=t[12];let N=M,P;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(P=e=>{let t=y.current,n=v.current;if(!t||!n||t.pointerId!==e.pointerId)return;let r=e.clientX-t.startX;!t.active&&Math.abs(r)<5||(t.active||(t.active=!0,w(!0)),e.preventDefault(),n.scrollLeft=t.scrollLeft-r)},t[13]=P):P=t[13];let F=P;if(!u&&k===0){let e;t[14]===a.boardEmptyTitle?e=t[15]:(e=(0,$.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:a.boardEmptyTitle}),t[14]=a.boardEmptyTitle,t[15]=e);let n;t[16]===a.boardEmptyHint?n=t[17]:(n=(0,$.jsx)(`p`,{className:`mx-auto mt-2 max-w-md text-sm leading-6 text-fg-muted`,children:a.boardEmptyHint}),t[16]=a.boardEmptyHint,t[17]=n);let r;t[18]!==a.boardStart||t[19]!==h?(r=(0,$.jsx)(`div`,{className:`mt-4 flex justify-center`,children:(0,$.jsx)(b,{variant:`primary`,onClick:h,children:a.boardStart})}),t[18]=a.boardStart,t[19]=h,t[20]=r):r=t[20];let i;return t[21]!==r||t[22]!==e||t[23]!==n?(i=(0,$.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col items-center justify-center rounded-2xl border border-dashed border-edge bg-surface-panel/40 px-6 py-12 text-center`,children:[e,n,r]}),t[21]=r,t[22]=e,t[23]=n,t[24]=i):i=t[24],i}let I=C?`cursor-grabbing select-none`:`cursor-grab`,L;t[25]===I?L=t[26]:(L=[`min-h-0 h-full min-w-0 overflow-x-auto rounded-lg px-2 py-2`,I],t[25]=I,t[26]=L);let R=L.join(` `),z;t[27]===Symbol.for(`react.memo_cache_sentinel`)?(z=e=>{y.current?.pointerId===e.pointerId&&(y.current=null,w(!1))},t[27]=z):z=t[27];let B;if(t[28]!==O||t[29]!==r||t[30]!==u||t[31]!==i||t[32]!==x||t[33]!==p||t[34]!==d||t[35]!==f||t[36]!==m||t[37]!==l){let e;t[39]!==r||t[40]!==u||t[41]!==i||t[42]!==x||t[43]!==p||t[44]!==d||t[45]!==f||t[46]!==m||t[47]!==l?(e=e=>(0,$.jsx)(St,{column:e,language:r,localeTag:i,nowMs:x,selectedRunId:l,loading:u,onOpenRun:d,onOpenRunChat:f,onCancelRun:p,onRetryRun:m},e.id),t[39]=r,t[40]=u,t[41]=i,t[42]=x,t[43]=p,t[44]=d,t[45]=f,t[46]=m,t[47]=l,t[48]=e):e=t[48],B=O.map(e),t[28]=O,t[29]=r,t[30]=u,t[31]=i,t[32]=x,t[33]=p,t[34]=d,t[35]=f,t[36]=m,t[37]=l,t[38]=B}else B=t[38];let V;t[49]===B?V=t[50]:(V=(0,$.jsx)(`div`,{className:`flex min-h-full min-w-max items-start gap-3 pr-4`,children:B}),t[49]=B,t[50]=V);let H;return t[51]!==R||t[52]!==V?(H=(0,$.jsx)(`div`,{ref:v,className:R,onPointerDown:N,onPointerMove:F,onPointerUp:j,onPointerCancel:j,onLostPointerCapture:z,children:V}),t[51]=R,t[52]=V,t[53]=H):H=t[53],H});function Et(e){return e.status===`queued`||e.status===`running`}function Dt(){return Date.now()}function Ot(e,t){return e+t.runs.length}var kt=`export const meta = {
|
|
2
2
|
name: 'my_workflow',
|
|
3
3
|
description: 'Describe what this workflow does.',
|
|
4
4
|
whenToUse: 'When the user asks for ...',
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=20260713-1" />
|
|
12
12
|
<link rel="manifest" href="/site.webmanifest?v=20260713-1" />
|
|
13
13
|
<title>xopc</title>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-DZOm5_ex.js"></script>
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js">
|
|
17
17
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BOUWij0V.js">
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/gateway-startup-retry-BALL91S7.js">
|
|
28
28
|
<link rel="modulepreload" crossorigin href="/assets/toast-z0toXu32.js">
|
|
29
29
|
<link rel="modulepreload" crossorigin href="/assets/theme-store-Bt6vAkSB.js">
|
|
30
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
30
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CPwVzi9x.css">
|
|
31
31
|
</head>
|
|
32
32
|
<body>
|
|
33
33
|
<div id="root"></div>
|
package/dist/package.js
CHANGED
|
@@ -165,9 +165,8 @@ function reviewTraceRowToClientHistory(row) {
|
|
|
165
165
|
function optionalString(value) {
|
|
166
166
|
return typeof value === "string" ? value : void 0;
|
|
167
167
|
}
|
|
168
|
-
function
|
|
169
|
-
|
|
170
|
-
return content.some((block) => asRecord(block)?.type === "review") ? content : void 0;
|
|
168
|
+
function rawAssistantContent(content) {
|
|
169
|
+
return Array.isArray(content) ? content : void 0;
|
|
171
170
|
}
|
|
172
171
|
function bashRowToClientHistory(row) {
|
|
173
172
|
const r = row;
|
|
@@ -372,7 +371,7 @@ function transcriptRowsToClientHistory(rows, opts) {
|
|
|
372
371
|
});
|
|
373
372
|
continue;
|
|
374
373
|
}
|
|
375
|
-
const rawContent =
|
|
374
|
+
const rawContent = rawAssistantContent(messageRow.content);
|
|
376
375
|
out.push({
|
|
377
376
|
id,
|
|
378
377
|
role: "assistant",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-history.js","names":[],"sources":["../../../src/session/client-history.ts"],"sourcesContent":["import type { Message } from './types.js';\nimport type { TranscriptStoredRow } from './session-context-for-llm.js';\nimport { buildTranscriptOutline } from './transcript-outline.js';\n\n/** Transcript row for TUI and HTTP clients (flattened from persisted session messages). */\nexport interface ClientHistoryMessage {\n id?: string;\n role: 'user' | 'assistant' | 'system';\n content: string;\n displayIndex?: number;\n rawContent?: string | unknown[];\n timestamp?: number;\n kind?: 'message' | 'compaction' | 'context' | 'bash' | 'custom' | 'branch';\n tokensBefore?: number;\n tokensAfter?: number;\n bash?: {\n command: string;\n output?: string;\n exitCode?: number | null;\n signal?: string | null;\n excludeFromContext?: boolean;\n truncated?: boolean;\n fullOutputPath?: string;\n };\n custom?: {\n customType: string;\n details?: unknown;\n state?: boolean;\n display?: boolean;\n };\n branch?: {\n summary: string;\n fromId?: string;\n };\n toolCalls?: Array<{ id?: string; name: string; args?: unknown; result?: string; isError?: boolean }>;\n}\n\nexport function flattenMessageContent(content: string | unknown[]): string {\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block !== 'object' || block === null) continue;\n const b = block as Record<string, unknown>;\n if (b.type === 'text' && typeof b.text === 'string') {\n parts.push(b.text);\n }\n }\n return parts.join('');\n}\n\nfunction parseTimestamp(ts: string | undefined): number | undefined {\n if (!ts) return undefined;\n const ms = Date.parse(ts);\n return Number.isFinite(ms) ? ms : undefined;\n}\n\nfunction safeJsonParseArguments(raw: string): unknown {\n const t = raw.trim();\n if (!t) return undefined;\n try {\n return JSON.parse(t) as unknown;\n } catch {\n return raw;\n }\n}\n\nfunction collectToolResults(messages: Message[]): Map<string, { text: string; isError?: boolean }> {\n const map = new Map<string, { text: string; isError?: boolean }>();\n for (const m of messages) {\n if (m.role !== 'tool' && m.role !== 'toolResult') continue;\n const id = m.tool_call_id;\n if (!id || typeof id !== 'string') continue;\n map.set(id, {\n text: flattenMessageContent(m.content),\n isError: m.isError,\n });\n }\n return map;\n}\n\nfunction toolCallsWithResults(\n tool_calls: Message['tool_calls'],\n results: Map<string, { text: string; isError?: boolean }>,\n): ClientHistoryMessage['toolCalls'] | undefined {\n if (!tool_calls?.length) return undefined;\n const out: NonNullable<ClientHistoryMessage['toolCalls']> = [];\n for (const tc of tool_calls) {\n const res = results.get(tc.id);\n out.push({\n id: tc.id,\n name: tc.function.name,\n args: safeJsonParseArguments(tc.function.arguments),\n result: res?.text,\n isError: res?.isError,\n });\n }\n return out.length ? out : undefined;\n}\n\n/**\n * Maps gateway/session API messages into a linear chat history for clients.\n * Tool / toolResult rows are merged into assistant `toolCalls` when ids match; otherwise skipped.\n */\nexport function messagesToClientHistory(\n messages: Message[],\n opts?: { limit?: number },\n): ClientHistoryMessage[] {\n const slice =\n opts?.limit !== undefined && messages.length > opts.limit\n ? messages.slice(-opts.limit)\n : messages;\n\n const results = collectToolResults(slice);\n const out: ClientHistoryMessage[] = [];\n\n for (const m of slice) {\n if (m.role === 'tool' || m.role === 'toolResult') {\n continue;\n }\n\n if (m.role === 'user' || m.role === 'system') {\n const text = flattenMessageContent(m.content);\n out.push({\n role: m.role,\n content: text,\n timestamp: parseTimestamp(m.timestamp),\n });\n continue;\n }\n\n if (m.role === 'assistant') {\n const text = flattenMessageContent(m.content);\n const toolCalls = toolCallsWithResults(m.tool_calls, results);\n out.push({\n role: 'assistant',\n content: text,\n timestamp: parseTimestamp(m.timestamp),\n toolCalls,\n });\n }\n }\n\n return out;\n}\n\ntype HistoryMessageRow = {\n role: 'system' | 'user' | 'assistant' | 'tool' | 'toolResult';\n content?: string | unknown[];\n timestamp?: string | number;\n tool_call_id?: string;\n toolCallId?: string;\n tool_calls?: Message['tool_calls'];\n toolCalls?: Message['tool_calls'];\n isError?: boolean;\n};\n\nfunction asHistoryMessageRow(row: TranscriptStoredRow): HistoryMessageRow | null {\n const role = (row as { role?: unknown }).role;\n if (\n typeof role !== 'string' ||\n !['system', 'user', 'assistant', 'tool', 'toolResult'].includes(role)\n ) {\n return null;\n }\n return row as unknown as HistoryMessageRow;\n}\n\nfunction parseTimestampValue(ts: string | number | undefined): number | undefined {\n if (typeof ts === 'number') return Number.isFinite(ts) ? ts : undefined;\n return parseTimestamp(ts);\n}\n\nfunction collectHistoryToolResults(messages: HistoryMessageRow[]): Map<string, { text: string; isError?: boolean }> {\n const map = new Map<string, { text: string; isError?: boolean }>();\n for (const m of messages) {\n if (m.role !== 'tool' && m.role !== 'toolResult') continue;\n const id = m.tool_call_id ?? m.toolCallId;\n if (!id || typeof id !== 'string') continue;\n map.set(id, {\n text: flattenMessageContent(m.content ?? ''),\n isError: m.isError,\n });\n }\n return map;\n}\n\nfunction isCompactionRow(row: TranscriptStoredRow): row is TranscriptStoredRow & {\n type: 'compaction';\n summary?: string;\n at?: string;\n tokensBefore?: number;\n tokensAfter?: number;\n} {\n return (row as { type?: unknown }).type === 'compaction';\n}\n\nfunction compactionSummaryRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'compactionSummary') return null;\n const summary = optionalString(r.summary) ?? '';\n return {\n role: 'system',\n kind: 'compaction',\n content: summary,\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n tokensBefore: typeof r.tokensBefore === 'number' ? r.tokensBefore : undefined,\n };\n}\n\nfunction contextRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n if ((row as { kind?: unknown }).kind !== 'context') return null;\n const text = (row as { text?: unknown }).text;\n if (typeof text !== 'string' || !text.trim()) return null;\n const createdAt = (row as { createdAt?: unknown }).createdAt;\n return {\n role: 'system',\n kind: 'context',\n content: text,\n timestamp: typeof createdAt === 'string' ? parseTimestamp(createdAt) : undefined,\n };\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as Record<string, unknown>\n : null;\n}\n\nfunction reviewTraceRowToClientHistory(row: TranscriptStoredRow): {\n event: 'tool_start' | 'tool_end';\n toolCallId: string;\n toolName: string;\n input?: unknown;\n resultPreview?: string;\n isError?: boolean;\n timestamp?: number;\n} | null {\n if ((row as { kind?: unknown }).kind !== 'context') return null;\n const data = asRecord((row as { data?: unknown }).data);\n if (data?.type !== 'review_trace' || data.scope !== 'review') return null;\n const event = data.event === 'tool_end'\n ? 'tool_end'\n : data.event === 'tool_start'\n ? 'tool_start'\n : null;\n if (!event) return null;\n const toolCallId = optionalString(data.toolCallId);\n const toolName = optionalString(data.toolName);\n if (!toolCallId || !toolName) return null;\n const createdAt = (row as { createdAt?: unknown }).createdAt;\n return {\n event,\n toolCallId,\n toolName,\n input: data.input,\n resultPreview: optionalString(data.resultPreview),\n isError: data.isError === true || data.status === 'error',\n timestamp: typeof createdAt === 'string' ? parseTimestamp(createdAt) : undefined,\n };\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction rawReviewContent(content: unknown): unknown[] | undefined {\n if (!Array.isArray(content)) return undefined;\n return content.some((block) => asRecord(block)?.type === 'review') ? content : undefined;\n}\n\nfunction bashRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'bashExecution') return null;\n\n const command = optionalString(r.command) ?? optionalString(r.content)?.trim();\n if (!command) return null;\n const output = Array.isArray(r.output) || typeof r.output === 'string'\n ? flattenMessageContent(r.output)\n : optionalString(r.output);\n const exitCode = typeof r.exitCode === 'number' ? r.exitCode : r.exitCode === null ? null : undefined;\n const signal = typeof r.signal === 'string' ? r.signal : r.signal === null ? null : undefined;\n const excludeFromContext =\n typeof r.excludeFromContext === 'boolean'\n ? r.excludeFromContext\n : typeof r.excludedFromContext === 'boolean'\n ? r.excludedFromContext\n : undefined;\n\n return {\n role: 'system',\n kind: 'bash',\n content: output || command,\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n bash: {\n command,\n output,\n exitCode,\n signal,\n excludeFromContext,\n truncated: typeof r.truncated === 'boolean' ? r.truncated : undefined,\n fullOutputPath: optionalString(r.fullOutputPath),\n },\n };\n}\n\nfunction customRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'custom' && r.type !== 'custom_message') return null;\n\n const customType = optionalString(r.customType)?.trim();\n if (!customType) return null;\n const content = Array.isArray(r.content) || typeof r.content === 'string'\n ? flattenMessageContent(r.content)\n : '';\n const timestamp = parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n );\n\n return {\n role: 'system',\n kind: 'custom',\n content,\n rawContent: Array.isArray(r.content) || typeof r.content === 'string' ? r.content : undefined,\n timestamp,\n custom: {\n customType,\n details: r.details,\n display: r.display === false ? false : true,\n },\n };\n}\n\nfunction customStateRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.type !== 'custom') return null;\n\n const customType = optionalString(r.customType)?.trim();\n if (!customType) return null;\n return {\n role: 'system',\n kind: 'custom',\n content: '',\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n custom: {\n customType,\n details: r.data,\n state: true,\n },\n };\n}\n\nfunction branchSummaryRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'branchSummary') return null;\n const summary = optionalString(r.summary)?.trim();\n if (!summary) return null;\n const fromId = optionalString(r.fromId);\n\n return {\n role: 'system',\n kind: 'branch',\n content: summary,\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n branch: {\n summary,\n fromId,\n },\n };\n}\n\n/**\n * Maps persisted transcript rows into linear chat history, preserving non-LLM\n * audit rows that the TUI can render as dedicated components.\n */\nexport function transcriptRowsToClientHistory(\n rows: TranscriptStoredRow[],\n opts?: { limit?: number; startRowNumber?: number; endRowNumber?: number },\n): ClientHistoryMessage[] {\n const displayIndexByRowNumber = new Map(\n buildTranscriptOutline(rows)\n .filter((entry) => entry.displayIndex !== undefined)\n .map((entry) => [entry.rowNumber, entry.displayIndex!] as const),\n );\n const hasRowWindow = opts?.startRowNumber !== undefined || opts?.endRowNumber !== undefined;\n const startIndex = hasRowWindow\n ? Math.max(0, Math.trunc(opts?.startRowNumber ?? 1) - 1)\n : opts?.limit !== undefined && rows.length > opts.limit\n ? rows.length - opts.limit\n : 0;\n const endIndex = hasRowWindow\n ? Math.max(\n startIndex,\n Math.min(rows.length, Math.trunc(opts?.endRowNumber ?? rows.length)),\n )\n : rows.length;\n const slice = hasRowWindow\n ? rows.slice(startIndex, endIndex)\n : opts?.limit !== undefined && rows.length > opts.limit\n ? rows.slice(-opts.limit)\n : rows;\n const messages = slice\n .map(asHistoryMessageRow)\n .filter((row): row is HistoryMessageRow => row !== null);\n const results = collectHistoryToolResults(messages);\n const out: ClientHistoryMessage[] = [];\n const reviewTraceToolById = new Map<string, NonNullable<ClientHistoryMessage['toolCalls']>[number]>();\n\n for (const [offset, row] of slice.entries()) {\n const rowNumber = startIndex + offset + 1;\n const id = `row-${rowNumber}`;\n const displayIndex = displayIndexByRowNumber.get(rowNumber);\n if (isCompactionRow(row)) {\n out.push({\n id,\n role: 'system',\n kind: 'compaction',\n content: typeof row.summary === 'string' ? row.summary : '',\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n timestamp: parseTimestamp(row.at),\n tokensBefore: row.tokensBefore,\n tokensAfter: row.tokensAfter,\n });\n continue;\n }\n\n const compactionSummaryRow = compactionSummaryRowToClientHistory(row);\n if (compactionSummaryRow) {\n out.push({\n id,\n ...compactionSummaryRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const reviewTraceRow = reviewTraceRowToClientHistory(row);\n if (reviewTraceRow) {\n const existing = reviewTraceToolById.get(reviewTraceRow.toolCallId);\n if (reviewTraceRow.event === 'tool_end' && existing) {\n existing.result = reviewTraceRow.resultPreview ?? '';\n existing.isError = reviewTraceRow.isError;\n continue;\n }\n const toolCall: NonNullable<ClientHistoryMessage['toolCalls']>[number] = {\n id: reviewTraceRow.toolCallId,\n name: reviewTraceRow.toolName,\n args: reviewTraceRow.input,\n ...(reviewTraceRow.event === 'tool_end' ? { result: reviewTraceRow.resultPreview ?? '' } : {}),\n ...(reviewTraceRow.isError ? { isError: true } : {}),\n };\n reviewTraceToolById.set(reviewTraceRow.toolCallId, toolCall);\n out.push({\n id,\n role: 'assistant',\n content: '',\n timestamp: reviewTraceRow.timestamp,\n toolCalls: [toolCall],\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const contextRow = contextRowToClientHistory(row);\n if (contextRow) {\n out.push({\n id,\n ...contextRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const bashRow = bashRowToClientHistory(row);\n if (bashRow) {\n out.push({\n id,\n ...bashRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const customRow = customRowToClientHistory(row);\n if (customRow) {\n out.push({\n id,\n ...customRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const customStateRow = customStateRowToClientHistory(row);\n if (customStateRow) {\n out.push({\n id,\n ...customStateRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const branchSummaryRow = branchSummaryRowToClientHistory(row);\n if (branchSummaryRow) {\n out.push({\n id,\n ...branchSummaryRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const messageRow = asHistoryMessageRow(row);\n if (!messageRow) continue;\n if (messageRow.role === 'tool' || messageRow.role === 'toolResult') {\n continue;\n }\n\n if (messageRow.role === 'user' || messageRow.role === 'system') {\n out.push({\n id,\n role: messageRow.role,\n kind: 'message',\n content: flattenMessageContent(messageRow.content ?? ''),\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n timestamp: parseTimestampValue(messageRow.timestamp),\n });\n continue;\n }\n\n const rawContent = rawReviewContent(messageRow.content);\n out.push({\n id,\n role: 'assistant',\n kind: 'message',\n content: flattenMessageContent(messageRow.content ?? ''),\n ...(rawContent ? { rawContent } : {}),\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n timestamp: parseTimestampValue(messageRow.timestamp),\n toolCalls: toolCallsWithResults(messageRow.tool_calls ?? messageRow.toolCalls, results),\n });\n }\n\n return out;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client-history.js","names":[],"sources":["../../../src/session/client-history.ts"],"sourcesContent":["import type { Message } from './types.js';\nimport type { TranscriptStoredRow } from './session-context-for-llm.js';\nimport { buildTranscriptOutline } from './transcript-outline.js';\n\n/** Transcript row for TUI and HTTP clients (flattened from persisted session messages). */\nexport interface ClientHistoryMessage {\n id?: string;\n role: 'user' | 'assistant' | 'system';\n content: string;\n displayIndex?: number;\n rawContent?: string | unknown[];\n timestamp?: number;\n kind?: 'message' | 'compaction' | 'context' | 'bash' | 'custom' | 'branch';\n tokensBefore?: number;\n tokensAfter?: number;\n bash?: {\n command: string;\n output?: string;\n exitCode?: number | null;\n signal?: string | null;\n excludeFromContext?: boolean;\n truncated?: boolean;\n fullOutputPath?: string;\n };\n custom?: {\n customType: string;\n details?: unknown;\n state?: boolean;\n display?: boolean;\n };\n branch?: {\n summary: string;\n fromId?: string;\n };\n toolCalls?: Array<{ id?: string; name: string; args?: unknown; result?: string; isError?: boolean }>;\n}\n\nexport function flattenMessageContent(content: string | unknown[]): string {\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block !== 'object' || block === null) continue;\n const b = block as Record<string, unknown>;\n if (b.type === 'text' && typeof b.text === 'string') {\n parts.push(b.text);\n }\n }\n return parts.join('');\n}\n\nfunction parseTimestamp(ts: string | undefined): number | undefined {\n if (!ts) return undefined;\n const ms = Date.parse(ts);\n return Number.isFinite(ms) ? ms : undefined;\n}\n\nfunction safeJsonParseArguments(raw: string): unknown {\n const t = raw.trim();\n if (!t) return undefined;\n try {\n return JSON.parse(t) as unknown;\n } catch {\n return raw;\n }\n}\n\nfunction collectToolResults(messages: Message[]): Map<string, { text: string; isError?: boolean }> {\n const map = new Map<string, { text: string; isError?: boolean }>();\n for (const m of messages) {\n if (m.role !== 'tool' && m.role !== 'toolResult') continue;\n const id = m.tool_call_id;\n if (!id || typeof id !== 'string') continue;\n map.set(id, {\n text: flattenMessageContent(m.content),\n isError: m.isError,\n });\n }\n return map;\n}\n\nfunction toolCallsWithResults(\n tool_calls: Message['tool_calls'],\n results: Map<string, { text: string; isError?: boolean }>,\n): ClientHistoryMessage['toolCalls'] | undefined {\n if (!tool_calls?.length) return undefined;\n const out: NonNullable<ClientHistoryMessage['toolCalls']> = [];\n for (const tc of tool_calls) {\n const res = results.get(tc.id);\n out.push({\n id: tc.id,\n name: tc.function.name,\n args: safeJsonParseArguments(tc.function.arguments),\n result: res?.text,\n isError: res?.isError,\n });\n }\n return out.length ? out : undefined;\n}\n\n/**\n * Maps gateway/session API messages into a linear chat history for clients.\n * Tool / toolResult rows are merged into assistant `toolCalls` when ids match; otherwise skipped.\n */\nexport function messagesToClientHistory(\n messages: Message[],\n opts?: { limit?: number },\n): ClientHistoryMessage[] {\n const slice =\n opts?.limit !== undefined && messages.length > opts.limit\n ? messages.slice(-opts.limit)\n : messages;\n\n const results = collectToolResults(slice);\n const out: ClientHistoryMessage[] = [];\n\n for (const m of slice) {\n if (m.role === 'tool' || m.role === 'toolResult') {\n continue;\n }\n\n if (m.role === 'user' || m.role === 'system') {\n const text = flattenMessageContent(m.content);\n out.push({\n role: m.role,\n content: text,\n timestamp: parseTimestamp(m.timestamp),\n });\n continue;\n }\n\n if (m.role === 'assistant') {\n const text = flattenMessageContent(m.content);\n const toolCalls = toolCallsWithResults(m.tool_calls, results);\n out.push({\n role: 'assistant',\n content: text,\n timestamp: parseTimestamp(m.timestamp),\n toolCalls,\n });\n }\n }\n\n return out;\n}\n\ntype HistoryMessageRow = {\n role: 'system' | 'user' | 'assistant' | 'tool' | 'toolResult';\n content?: string | unknown[];\n timestamp?: string | number;\n tool_call_id?: string;\n toolCallId?: string;\n tool_calls?: Message['tool_calls'];\n toolCalls?: Message['tool_calls'];\n isError?: boolean;\n};\n\nfunction asHistoryMessageRow(row: TranscriptStoredRow): HistoryMessageRow | null {\n const role = (row as { role?: unknown }).role;\n if (\n typeof role !== 'string' ||\n !['system', 'user', 'assistant', 'tool', 'toolResult'].includes(role)\n ) {\n return null;\n }\n return row as unknown as HistoryMessageRow;\n}\n\nfunction parseTimestampValue(ts: string | number | undefined): number | undefined {\n if (typeof ts === 'number') return Number.isFinite(ts) ? ts : undefined;\n return parseTimestamp(ts);\n}\n\nfunction collectHistoryToolResults(messages: HistoryMessageRow[]): Map<string, { text: string; isError?: boolean }> {\n const map = new Map<string, { text: string; isError?: boolean }>();\n for (const m of messages) {\n if (m.role !== 'tool' && m.role !== 'toolResult') continue;\n const id = m.tool_call_id ?? m.toolCallId;\n if (!id || typeof id !== 'string') continue;\n map.set(id, {\n text: flattenMessageContent(m.content ?? ''),\n isError: m.isError,\n });\n }\n return map;\n}\n\nfunction isCompactionRow(row: TranscriptStoredRow): row is TranscriptStoredRow & {\n type: 'compaction';\n summary?: string;\n at?: string;\n tokensBefore?: number;\n tokensAfter?: number;\n} {\n return (row as { type?: unknown }).type === 'compaction';\n}\n\nfunction compactionSummaryRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'compactionSummary') return null;\n const summary = optionalString(r.summary) ?? '';\n return {\n role: 'system',\n kind: 'compaction',\n content: summary,\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n tokensBefore: typeof r.tokensBefore === 'number' ? r.tokensBefore : undefined,\n };\n}\n\nfunction contextRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n if ((row as { kind?: unknown }).kind !== 'context') return null;\n const text = (row as { text?: unknown }).text;\n if (typeof text !== 'string' || !text.trim()) return null;\n const createdAt = (row as { createdAt?: unknown }).createdAt;\n return {\n role: 'system',\n kind: 'context',\n content: text,\n timestamp: typeof createdAt === 'string' ? parseTimestamp(createdAt) : undefined,\n };\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value && typeof value === 'object' && !Array.isArray(value)\n ? value as Record<string, unknown>\n : null;\n}\n\nfunction reviewTraceRowToClientHistory(row: TranscriptStoredRow): {\n event: 'tool_start' | 'tool_end';\n toolCallId: string;\n toolName: string;\n input?: unknown;\n resultPreview?: string;\n isError?: boolean;\n timestamp?: number;\n} | null {\n if ((row as { kind?: unknown }).kind !== 'context') return null;\n const data = asRecord((row as { data?: unknown }).data);\n if (data?.type !== 'review_trace' || data.scope !== 'review') return null;\n const event = data.event === 'tool_end'\n ? 'tool_end'\n : data.event === 'tool_start'\n ? 'tool_start'\n : null;\n if (!event) return null;\n const toolCallId = optionalString(data.toolCallId);\n const toolName = optionalString(data.toolName);\n if (!toolCallId || !toolName) return null;\n const createdAt = (row as { createdAt?: unknown }).createdAt;\n return {\n event,\n toolCallId,\n toolName,\n input: data.input,\n resultPreview: optionalString(data.resultPreview),\n isError: data.isError === true || data.status === 'error',\n timestamp: typeof createdAt === 'string' ? parseTimestamp(createdAt) : undefined,\n };\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction rawAssistantContent(content: unknown): unknown[] | undefined {\n return Array.isArray(content) ? content : undefined;\n}\n\nfunction bashRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'bashExecution') return null;\n\n const command = optionalString(r.command) ?? optionalString(r.content)?.trim();\n if (!command) return null;\n const output = Array.isArray(r.output) || typeof r.output === 'string'\n ? flattenMessageContent(r.output)\n : optionalString(r.output);\n const exitCode = typeof r.exitCode === 'number' ? r.exitCode : r.exitCode === null ? null : undefined;\n const signal = typeof r.signal === 'string' ? r.signal : r.signal === null ? null : undefined;\n const excludeFromContext =\n typeof r.excludeFromContext === 'boolean'\n ? r.excludeFromContext\n : typeof r.excludedFromContext === 'boolean'\n ? r.excludedFromContext\n : undefined;\n\n return {\n role: 'system',\n kind: 'bash',\n content: output || command,\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n bash: {\n command,\n output,\n exitCode,\n signal,\n excludeFromContext,\n truncated: typeof r.truncated === 'boolean' ? r.truncated : undefined,\n fullOutputPath: optionalString(r.fullOutputPath),\n },\n };\n}\n\nfunction customRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'custom' && r.type !== 'custom_message') return null;\n\n const customType = optionalString(r.customType)?.trim();\n if (!customType) return null;\n const content = Array.isArray(r.content) || typeof r.content === 'string'\n ? flattenMessageContent(r.content)\n : '';\n const timestamp = parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n );\n\n return {\n role: 'system',\n kind: 'custom',\n content,\n rawContent: Array.isArray(r.content) || typeof r.content === 'string' ? r.content : undefined,\n timestamp,\n custom: {\n customType,\n details: r.details,\n display: r.display === false ? false : true,\n },\n };\n}\n\nfunction customStateRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.type !== 'custom') return null;\n\n const customType = optionalString(r.customType)?.trim();\n if (!customType) return null;\n return {\n role: 'system',\n kind: 'custom',\n content: '',\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n custom: {\n customType,\n details: r.data,\n state: true,\n },\n };\n}\n\nfunction branchSummaryRowToClientHistory(row: TranscriptStoredRow): ClientHistoryMessage | null {\n const r = row as unknown as Record<string, unknown>;\n if (r.role !== 'branchSummary') return null;\n const summary = optionalString(r.summary)?.trim();\n if (!summary) return null;\n const fromId = optionalString(r.fromId);\n\n return {\n role: 'system',\n kind: 'branch',\n content: summary,\n timestamp: parseTimestampValue(\n typeof r.timestamp === 'string' || typeof r.timestamp === 'number' ? r.timestamp : undefined,\n ),\n branch: {\n summary,\n fromId,\n },\n };\n}\n\n/**\n * Maps persisted transcript rows into linear chat history, preserving non-LLM\n * audit rows that the TUI can render as dedicated components.\n */\nexport function transcriptRowsToClientHistory(\n rows: TranscriptStoredRow[],\n opts?: { limit?: number; startRowNumber?: number; endRowNumber?: number },\n): ClientHistoryMessage[] {\n const displayIndexByRowNumber = new Map(\n buildTranscriptOutline(rows)\n .filter((entry) => entry.displayIndex !== undefined)\n .map((entry) => [entry.rowNumber, entry.displayIndex!] as const),\n );\n const hasRowWindow = opts?.startRowNumber !== undefined || opts?.endRowNumber !== undefined;\n const startIndex = hasRowWindow\n ? Math.max(0, Math.trunc(opts?.startRowNumber ?? 1) - 1)\n : opts?.limit !== undefined && rows.length > opts.limit\n ? rows.length - opts.limit\n : 0;\n const endIndex = hasRowWindow\n ? Math.max(\n startIndex,\n Math.min(rows.length, Math.trunc(opts?.endRowNumber ?? rows.length)),\n )\n : rows.length;\n const slice = hasRowWindow\n ? rows.slice(startIndex, endIndex)\n : opts?.limit !== undefined && rows.length > opts.limit\n ? rows.slice(-opts.limit)\n : rows;\n const messages = slice\n .map(asHistoryMessageRow)\n .filter((row): row is HistoryMessageRow => row !== null);\n const results = collectHistoryToolResults(messages);\n const out: ClientHistoryMessage[] = [];\n const reviewTraceToolById = new Map<string, NonNullable<ClientHistoryMessage['toolCalls']>[number]>();\n\n for (const [offset, row] of slice.entries()) {\n const rowNumber = startIndex + offset + 1;\n const id = `row-${rowNumber}`;\n const displayIndex = displayIndexByRowNumber.get(rowNumber);\n if (isCompactionRow(row)) {\n out.push({\n id,\n role: 'system',\n kind: 'compaction',\n content: typeof row.summary === 'string' ? row.summary : '',\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n timestamp: parseTimestamp(row.at),\n tokensBefore: row.tokensBefore,\n tokensAfter: row.tokensAfter,\n });\n continue;\n }\n\n const compactionSummaryRow = compactionSummaryRowToClientHistory(row);\n if (compactionSummaryRow) {\n out.push({\n id,\n ...compactionSummaryRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const reviewTraceRow = reviewTraceRowToClientHistory(row);\n if (reviewTraceRow) {\n const existing = reviewTraceToolById.get(reviewTraceRow.toolCallId);\n if (reviewTraceRow.event === 'tool_end' && existing) {\n existing.result = reviewTraceRow.resultPreview ?? '';\n existing.isError = reviewTraceRow.isError;\n continue;\n }\n const toolCall: NonNullable<ClientHistoryMessage['toolCalls']>[number] = {\n id: reviewTraceRow.toolCallId,\n name: reviewTraceRow.toolName,\n args: reviewTraceRow.input,\n ...(reviewTraceRow.event === 'tool_end' ? { result: reviewTraceRow.resultPreview ?? '' } : {}),\n ...(reviewTraceRow.isError ? { isError: true } : {}),\n };\n reviewTraceToolById.set(reviewTraceRow.toolCallId, toolCall);\n out.push({\n id,\n role: 'assistant',\n content: '',\n timestamp: reviewTraceRow.timestamp,\n toolCalls: [toolCall],\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const contextRow = contextRowToClientHistory(row);\n if (contextRow) {\n out.push({\n id,\n ...contextRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const bashRow = bashRowToClientHistory(row);\n if (bashRow) {\n out.push({\n id,\n ...bashRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const customRow = customRowToClientHistory(row);\n if (customRow) {\n out.push({\n id,\n ...customRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const customStateRow = customStateRowToClientHistory(row);\n if (customStateRow) {\n out.push({\n id,\n ...customStateRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const branchSummaryRow = branchSummaryRowToClientHistory(row);\n if (branchSummaryRow) {\n out.push({\n id,\n ...branchSummaryRow,\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n });\n continue;\n }\n\n const messageRow = asHistoryMessageRow(row);\n if (!messageRow) continue;\n if (messageRow.role === 'tool' || messageRow.role === 'toolResult') {\n continue;\n }\n\n if (messageRow.role === 'user' || messageRow.role === 'system') {\n out.push({\n id,\n role: messageRow.role,\n kind: 'message',\n content: flattenMessageContent(messageRow.content ?? ''),\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n timestamp: parseTimestampValue(messageRow.timestamp),\n });\n continue;\n }\n\n const rawContent = rawAssistantContent(messageRow.content);\n out.push({\n id,\n role: 'assistant',\n kind: 'message',\n content: flattenMessageContent(messageRow.content ?? ''),\n ...(rawContent ? { rawContent } : {}),\n ...(displayIndex !== undefined ? { displayIndex } : {}),\n timestamp: parseTimestampValue(messageRow.timestamp),\n toolCalls: toolCallsWithResults(messageRow.tool_calls ?? messageRow.toolCalls, results),\n });\n }\n\n return out;\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED