@axiom-lattice/gateway 4.4.2 → 4.5.0
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/{a2a-standard-RWR5JTMH.mjs → a2a-standard-PIOKEHPS.mjs} +1 -1
- package/dist/a2a-standard-PIOKEHPS.mjs.map +1 -0
- package/dist/embed/{embed-page-AgentDetailSideApp-2BDEWFQ6.js → embed-page-AgentDetailSideApp-I4ZT3MQQ.js} +1 -1
- package/dist/embed/{embed-page-AgentGovernanceWorkbench-WG7E3G5T.js → embed-page-AgentGovernanceWorkbench-HVFB6EPY.js} +1 -1
- package/dist/embed/{embed-page-MessageGraph-5SWPEQ4V.js → embed-page-MessageGraph-CZQROEO7.js} +1 -1
- package/dist/embed/{embed-page-ReactChart-ZYWRXIMC.js → embed-page-ReactChart-WMWBSL54.js} +1 -1
- package/dist/embed/{embed-page-SkillFlow-TKBMB5VV.js → embed-page-SkillFlow-5JLJ5R57.js} +1 -1
- package/dist/embed/embed-page-TasksSideApp-5BYTO4KT.js +254 -0
- package/dist/embed/{embed-page-TeamWorkspace-XNZM7AV7.js → embed-page-TeamWorkspace-5KN7ZZWQ.js} +1 -1
- package/dist/embed/{embed-page-TopologyRuntimeView-DGSHSTIU.js → embed-page-TopologyRuntimeView-S6XAQHDF.js} +1 -1
- package/dist/embed/{embed-page-WorkflowAutomationView-BHIRIWV3.js → embed-page-WorkflowAutomationView-E6G446HW.js} +1 -1
- package/dist/embed/embed-page-chunk-2JOGNXZT.js +245 -0
- package/dist/embed/embed-page-chunk-7GAD6Q52.js +6986 -0
- package/dist/embed/{embed-page-chunk-JMZ7OODN.js → embed-page-chunk-DSQ4DIQY.js} +1 -1
- package/dist/embed/{embed-page-chunk-YCX5YZRP.js → embed-page-chunk-KDWA6VOG.js} +1 -1
- package/dist/embed/embed-page-chunk-MUE3GWJV.js +153 -0
- package/dist/embed/{embed-page-chunk-HMTKPZ5B.js → embed-page-chunk-QU52HUXW.js} +1 -1
- package/dist/embed/{embed-page-chunk-XUXEGF3S.js → embed-page-chunk-YQ3BA27D.js} +1 -1
- package/dist/embed/embed-page.js +1 -1
- package/dist/index.d.mts +210 -2
- package/dist/index.d.ts +210 -2
- package/dist/index.js +5757 -5237
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5765 -5247
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/dist/a2a-standard-RWR5JTMH.mjs.map +0 -1
- package/dist/embed/embed-page-TasksSideApp-X6255GEF.js +0 -241
- package/dist/embed/embed-page-chunk-DEDTYRZE.js +0 -245
- package/dist/embed/embed-page-chunk-HEO7X7LH.js +0 -153
- package/dist/embed/embed-page-chunk-SPC4BYNU.js +0 -6974
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as cn,c as sn,d as _n}from"./embed-page-chunk-KEL6XU6R.js";import{a as ln,b as be,e as Ae,f as vn,h as Cn,i as kn}from"./embed-page-chunk-AC6X2XRH.js";import{Fa as on,L as xn,V as Sn,Y as bn,ja as An,pa as wn,s as Re,sa as Tn,u as mn,x as yn,y as Oe,z as Me}from"./embed-page-chunk-SPC4BYNU.js";import{a as Xe}from"./embed-page-chunk-MB65DZAX.js";import{Ia as se,La as Ke,Z as fn,aa as ve,ba as dn,fa as gn,va as hn}from"./embed-page-chunk-O4QK5LWZ.js";import{a as or}from"./embed-page-chunk-4BKXE5ON.js";import{e as Le}from"./embed-page-chunk-6Y3UYJ6Z.js";var te=Le(or());var _=Le(Xe());if(typeof document<"u"){let p="workflow-node-spin-keyframes";if(!document.getElementById(p)){let o=document.createElement("style");o.id=p,o.textContent="@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }",document.head.appendChild(o)}}var{Text:ue}=Ke,Ve={opacity:0},Fe={running:{color:"#1677ff",icon:(0,_.jsx)(bn,{size:14,style:{animation:"spin 1s linear infinite"}})},completed:{color:"#52c41a",icon:(0,_.jsx)(Re,{size:14})},failed:{color:"#ff4d4f",icon:(0,_.jsx)(Oe,{size:14})},interrupted:{color:"#faad14",icon:(0,_.jsx)(mn,{size:14})},skipped:{color:"#8c8c8c",icon:(0,_.jsx)(Me,{size:14})}},En={running:"This step is currently executing",completed:"This step completed successfully",failed:"This step encountered an error",interrupted:"This step is waiting for human input",skipped:"This step was skipped (condition not met)"},In={color:"#d9d9d9",icon:(0,_.jsx)(Me,{size:14})},Nn={agent:{color:"#6366f1",bg:"#EEF2FF",border:"#6366f1"},map:{color:"#10b981",bg:"#ECFDF5",border:"#10b981"},terminal:{color:"#64748b",bg:"#F8FAFC",border:"#94a3b8"}},Ln={success:{color:"#22c55e",bg:"#F0FDF4",label:"Success"},failed:{color:"#ef4444",bg:"#FEF2F2",label:"Failed"},__default:{color:"#94a3b8",bg:"#F8FAFC",label:"Stop"}};function lr(p){return(p||"?").split(/[\s_-]+/).filter(Boolean).map(o=>o[0]).join("").toUpperCase().slice(0,2)}function un({schema:p}){let o=p;if(!o||typeof o!="object")return(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11},children:"No schema defined"});let d=o.properties,S=o.required||[],b=o.items,O=l=>l==="string"?"green":l==="number"||l==="integer"?"orange":l==="boolean"?"purple":l==="array"?"cyan":l==="object"?"blue":"default",a=l=>{let u=l.type;if(u==="array"&&l.items){let c=l.items.type;return c?`Array<${c}>`:"Array"}return u||"any"};return(0,_.jsxs)("div",{style:{maxWidth:340,maxHeight:360,overflow:"auto",fontSize:12},children:[d&&(0,_.jsxs)("div",{children:[(0,_.jsx)(ue,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5,display:"block",marginBottom:6},children:"Properties"}),Object.entries(d).map(([l,u])=>{let c=S.includes(l),h=u.description,r=a(u),s=u.properties,w=u.items,I=!!(s||w);return(0,_.jsx)(ve,{title:I?(0,_.jsx)(un,{schema:I?s?u:w:void 0}):h||void 0,placement:"left",overlayStyle:{maxWidth:360},children:(0,_.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 6px",borderRadius:4,marginBottom:2,background:c?"rgba(99,102,241,0.04)":"transparent",cursor:I?"pointer":"default"},children:[(0,_.jsx)(ue,{style:{fontSize:11,fontWeight:c?600:400,fontFamily:"monospace"},children:l}),c&&(0,_.jsx)("span",{style:{color:"#ef4444",fontSize:9},children:"*"}),h&&!I&&(0,_.jsx)(ue,{type:"secondary",style:{fontSize:10,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h}),(0,_.jsx)(se,{color:O(r),style:{margin:0,fontSize:9,padding:"0 4px",lineHeight:"16px",marginLeft:"auto"},children:r})]})},l)})]}),!d&&b&&(0,_.jsxs)("div",{children:[(0,_.jsx)(ue,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5,display:"block",marginBottom:4},children:"Items"}),(0,_.jsx)(un,{schema:b})]})]})}var Rn=72,cr=3,sr=({data:p})=>{if(!p)return null;let{nodeType:o,name:d,description:S,ref:b,refAgentName:O,refAgentType:a,refDeleted:l,outputKey:u,nodeSchema:c,config:h,status:r,source:s,innerRef:w,inputTemplate:I,ask:B,condition:X,runState:P,pending:L}=p,z=Nn[o]||Nn.agent,k=Ln[r||""]||Ln.__default,j=P?Fe[P.status]||Fe.running:null,M=j?.color,Y=j?.icon,q=r==="success"?(0,_.jsx)(Re,{size:14,color:"#22c55e"}):r==="failed"?(0,_.jsx)(Oe,{size:14,color:"#ef4444"}):(0,_.jsx)(Me,{size:14,color:"#94a3b8"}),ne=r==="success"?(0,_.jsx)(Re,{size:32,color:k.color}):r==="failed"?(0,_.jsx)(Oe,{size:32,color:k.color}):(0,_.jsx)(yn,{size:32,color:k.color}),de=h?.title,ie=h?.maxRetries,oe=h?.timeout,J=h?.batchSize,le=h?.maxConcurrency,V=h?.innerConcurrency,G=P?.selected,U=!!P||L;function E($){return $==null?"-":$<1e3?`${$}ms`:`${($/1e3).toFixed(1)}s`}if(o==="terminal"){let $=k.color,Te=k.bg,ee=k.label,ae=ne;U&&(P?($=M||$,ee=P.status,ae=(0,_.jsx)("span",{style:{fontSize:18},children:Y})):L&&($=In.color,Te="#fafafa",ee="pending",ae=(0,_.jsx)(Me,{size:18,style:{color:In.color}})));let pe=G&&M?`0 4px 16px ${M}30`:"0 2px 8px rgba(0,0,0,0.06)";return(0,_.jsxs)("div",{style:{padding:4,display:"flex",flexDirection:"column",alignItems:"center",opacity:L?.5:1},children:[(0,_.jsx)(Ae,{type:"target",position:be.Top,style:Ve}),(0,_.jsx)(ve,{title:U&&P?En[P.status]:d,children:(0,_.jsx)("div",{style:{width:Rn,height:Rn,borderRadius:"50%",background:Te,border:`${cr}px solid ${L?`${$}80`:$}`,borderStyle:L?"dashed":"solid",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:pe,transition:"all 0.2s ease",cursor:"default"},onMouseEnter:L?void 0:fe=>{fe.currentTarget.style.transform="scale(1.08)",fe.currentTarget.style.boxShadow=`0 4px 16px ${$}30`},onMouseLeave:L?void 0:fe=>{fe.currentTarget.style.transform="scale(1)",fe.currentTarget.style.boxShadow=pe},children:ae})}),(0,_.jsx)(ue,{style:{fontSize:11,color:$,marginTop:6,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px"},children:ee}),(0,_.jsx)(Ae,{type:"source",position:be.Bottom,style:Ve})]})}let ge=U&&M?M:z.border,ce=U&&M?M:z.color,_e=o==="agent"?(0,_.jsx)(Tn,{size:14}):o==="map"?(0,_.jsx)(An,{size:14}):lr(d),he=P?E(P.durationMs):null,Ce=G&&M?`0 4px 14px ${M}20`:"0 1px 6px rgba(0,0,0,0.08)",we=U&&M?M:z.color;return(0,_.jsxs)("div",{style:{padding:4},children:[(0,_.jsx)(Ae,{type:"target",position:be.Top,style:Ve}),(0,_.jsxs)("div",{style:{width:260,minHeight:90,boxSizing:"border-box",background:"#fff",borderRadius:12,boxShadow:Ce,border:"1px solid #e5e7eb",borderLeft:`3px solid ${ge}`,borderStyle:b?"dashed":"solid",overflow:"hidden",transition:"all 0.2s ease",...L?{opacity:.5,borderStyle:"dashed"}:{}},onMouseEnter:L?void 0:$=>{$.currentTarget.style.transform="translateY(-2px)",$.currentTarget.style.boxShadow=`0 4px 12px ${we}20`},onMouseLeave:L?void 0:$=>{$.currentTarget.style.transform="translateY(0)",$.currentTarget.style.boxShadow=Ce},children:[(0,_.jsxs)("div",{style:{background:z.bg,padding:"6px 12px",display:"flex",alignItems:"center",gap:6,borderBottom:"1px solid #f1f5f9"},children:[(0,_.jsx)("div",{style:{width:24,height:24,borderRadius:"50%",backgroundColor:ce,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:10,fontWeight:600,flexShrink:0},children:_e}),(0,_.jsx)("div",{style:{flex:1,minWidth:0},children:(0,_.jsx)(ue,{strong:!0,style:{fontSize:12,color:z.color},ellipsis:{tooltip:d},children:d})}),U&&Y&&(0,_.jsx)(ve,{title:P?En[P.status]:void 0,children:(0,_.jsx)("span",{style:{color:M,fontSize:12,display:"flex",flexShrink:0},children:Y})})]}),(0,_.jsxs)("div",{style:{padding:"10px 12px"},children:[S&&(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11,display:"block",marginTop:2,lineHeight:1.4},ellipsis:{tooltip:S},children:S}),o==="map"&&s&&(0,_.jsxs)(ue,{type:"secondary",style:{fontSize:11,display:"block",marginTop:4,lineHeight:1.4,color:z.color,background:z.bg,padding:"2px 6px",borderRadius:4,maxHeight:32,overflow:"hidden"},ellipsis:{tooltip:s},children:["\u2190 ",s]}),o!=="map"&&I&&(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11,display:"block",marginTop:4,lineHeight:1.4,color:z.color,background:z.bg,padding:"2px 6px",borderRadius:4,maxHeight:32,overflow:"hidden"},ellipsis:{tooltip:I},children:I}),(0,_.jsxs)("div",{style:{display:"flex",gap:4,marginTop:6,flexWrap:"wrap"},children:[!U&&o==="agent"&&b&&(0,_.jsx)(ve,{title:l?`Agent "${b}" no longer exists`:`Delegated to agent: ${O??b}`,children:(0,_.jsx)(se,{color:l?"red":"purple",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},icon:(0,_.jsx)(Sn,{size:10}),children:l?`[\u5DF2\u5220\u9664] ${b}`:`\u2192 ${O??b}`})}),!U&&o==="agent"&&!b&&(0,_.jsx)(se,{color:"default",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:"inline"}),B&&(0,_.jsx)(ve,{title:"This step requires human approval before continuing",children:(0,_.jsx)("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:20,height:20,borderRadius:"50%",background:"#fff7e6",border:"1px solid #ffd591",cursor:"default"},children:(0,_.jsx)(wn,{size:12,style:{color:"#fa8c16"}})})}),X&&(0,_.jsx)(ve,{title:`When: ${X}`,children:(0,_.jsx)("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:20,height:20,borderRadius:"50%",background:"#f0f5ff",border:"1px solid #adc6ff",cursor:"default"},children:(0,_.jsx)(xn,{size:12,style:{color:"#2f54eb"}})})}),!U&&o==="map"&&w&&(0,_.jsx)(se,{color:"purple",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:w}),!U&&o==="map"&&I&&(0,_.jsx)(se,{color:"default",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px",maxWidth:120},title:I,children:I.length>20?I.slice(0,18)+"\u2026":I}),!U&&o==="map"&&(J||le||V)&&(0,_.jsxs)(se,{color:"cyan",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:[J??50,"\xD7",le??10,"\xD7",V??5]}),!U&&ie?(0,_.jsxs)(se,{style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:["\u21BB ",ie]}):null,!U&&oe?(0,_.jsxs)(se,{style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:["\u23F1 ",oe,"s"]}):null,he&&(0,_.jsx)(se,{color:P?"blue":"default",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:he}),u&&(0,_.jsx)("span",{style:{marginLeft:"auto"}}),u&&(0,_.jsx)(dn,{trigger:"hover",placement:"right",mouseEnterDelay:.2,title:(0,_.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,_.jsx)(ue,{strong:!0,style:{fontSize:12},children:"Output"}),(0,_.jsx)(ue,{style:{fontSize:11,fontFamily:"monospace",color:"#6366f1"},children:u})]}),content:c?(0,_.jsx)(un,{schema:c}):(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11},children:"No schema defined"}),children:(0,_.jsxs)(se,{style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px",flexShrink:0,cursor:"default"},children:["\u2192 ",u]})})]})]})]}),(0,_.jsx)(Ae,{type:"source",position:be.Bottom,style:Ve})]})},On=sr;var H=Le(Xe()),{Text:me}=Ke;function Mn(p){return new Date(p).toLocaleString()}function ur(p){return p.input?typeof p.input.rendered=="string"?p.input.rendered:typeof p.input.description=="string"?p.input.description:JSON.stringify(p.input,null,2):null}function ar(p){return p.output?typeof p.output.result=="string"?p.output.result:typeof p.output=="object"?JSON.stringify(p.output,null,2):String(p.output):null}function pr({step:p}){let o=ur(p),d=ar(p),S=Fe[p.status]||Fe.running,b=[{key:"io",label:"Input / Output",children:(0,H.jsxs)(H.Fragment,{children:[o&&(0,H.jsxs)("div",{style:{marginBottom:d?12:0},children:[(0,H.jsx)(me,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5},children:"Input"}),(0,H.jsx)("div",{style:{background:"rgba(0,0,0,0.02)",borderRadius:8,padding:"8px 10px",marginTop:4,maxHeight:200,overflow:"auto"},children:p.input?.description?(0,H.jsx)(on,{content:o}):(0,H.jsx)("pre",{style:{margin:0,fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace"},children:o})})]}),d&&(0,H.jsxs)("div",{children:[(0,H.jsx)(me,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5},children:"Output"}),(0,H.jsx)("div",{style:{background:"linear-gradient(135deg, rgba(99,102,241,0.04) 0%, rgba(99,102,241,0.01) 100%)",borderRadius:8,padding:"8px 10px",marginTop:4,maxHeight:200,overflow:"auto"},children:p.output?.result?(0,H.jsx)(on,{content:d}):(0,H.jsx)("pre",{style:{margin:0,fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace"},children:d})})]}),!o&&!d&&(0,H.jsx)(me,{type:"secondary",style:{fontSize:11},children:"No input/output data"})]})}];return(0,H.jsxs)("div",{style:{maxWidth:480},children:[(0,H.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[(0,H.jsx)("span",{style:{color:S.color,fontSize:14},children:S.icon}),(0,H.jsx)(me,{strong:!0,style:{fontSize:14},children:p.stepName}),(0,H.jsx)(se,{color:"purple",style:{fontSize:11},children:p.stepType})]}),p.edgePurpose&&(0,H.jsx)("div",{style:{marginBottom:10},children:(0,H.jsxs)(me,{type:"secondary",style:{fontSize:11},children:["Purpose: ",p.edgePurpose]})}),p.errorMessage&&(0,H.jsx)("div",{style:{background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:8,padding:"8px 12px",marginBottom:12,overflow:"hidden"},children:(0,H.jsx)(me,{type:"danger",style:{fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:p.errorMessage})}),(0,H.jsx)(gn,{activeKey:"io",items:b,size:"small",style:{marginBottom:-8}}),(0,H.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginTop:12,paddingTop:8,borderTop:"1px solid #f0f0f0"},children:[(0,H.jsxs)(me,{type:"secondary",style:{fontSize:10},children:["Started: ",Mn(p.startedAt)]}),p.completedAt&&(0,H.jsxs)(me,{type:"secondary",style:{fontSize:10},children:["Ended: ",Mn(p.completedAt)]})]})]})}function De(p,o){return p.find(d=>d.stepName===o.name)??null}function Qe(p,o,d,S){let b=p.ref&&S?S.get(p.ref):void 0;return{nodeType:p.type,name:p.name,description:p.description,ref:p.ref,refAgentName:b?.name,refAgentType:b?.type,refDeleted:p.ref&&S?!b:void 0,outputKey:p.output?.key,nodeSchema:p.output?.schema,config:p.config,status:p.status,source:p.source,innerRef:p.node?.ref,inputTemplate:p.input?.template,ask:p.ask,condition:p.condition,runState:o,pending:d}}function Fn(p){let o=new Map;for(let d of p)if(d.parentGroup&&d.type!=="terminal"){let S=o.get(d.parentGroup)||[];S.push(d.id),o.set(d.parentGroup,S)}return Array.from(o.entries()).map(([d,S])=>({sourceId:d,childIds:S}))}function fr(){return(0,H.jsxs)("div",{style:{width:"100%",height:"100%",position:"relative",pointerEvents:"none"},children:[(0,H.jsx)(Ae,{type:"target",position:be.Top,style:{opacity:0}}),(0,H.jsx)(Ae,{type:"source",position:be.Bottom,style:{opacity:0}}),(0,H.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,border:"2px dashed #a78bfa",borderRadius:12,background:"rgba(167, 139, 250, 0.04)"}}),(0,H.jsx)("div",{style:{position:"absolute",top:8,left:12,fontSize:12,fontWeight:600,color:"#7c3aed",padding:"2px 8px",background:"rgba(167, 139, 250, 0.08)",borderRadius:6,whiteSpace:"nowrap",zIndex:2},children:"Parallel"})]})}function dr(p,o){let d=p.nodes,S=p.edges,b=Fn(d),O=new Set(b.map(L=>L.sourceId)),a=new Set(b.flatMap(L=>L.childIds)),l=268,u=100,c=40;for(let L of b){let z=d.find(k=>k.id===L.sourceId);if(z){let k=L.childIds.length;z.width=k*l+(k-1)*c+40,z.height=u+100}}let h=d.filter(L=>!a.has(L.id)),r=sn(h,S,{nodeWidth:l,nodeHeight:u,ranksep:120}),s=h.find(L=>!O.has(L.id)&&L.type!=="terminal"),w=s?r.get(s.id):void 0,I=s?s.width??l:l,B=w?w.x+I/2:0;for(let L of h){if(O.has(L.id))continue;let z=r.get(L.id);if(!z)continue;let k=L.width??l;z.x=B-k/2}let X=h.filter(L=>r.has(L.id)&&!O.has(L.id)&&L.type!=="terminal").map(L=>{let z=r.get(L.id);return{id:L.id,type:"workflow",position:z,data:{...Qe(L,void 0,void 0,o)}}});for(let L of b){let z=d.find(J=>J.id===L.sourceId),k=r.get(L.sourceId);if(!z||!k)continue;let j=z.width,M=z.height,Y=L.childIds.length,q=B-j/2,ne=Y*l+(Y-1)*c,de=B-ne/2,ie=k.y+(M-u)/2;for(let J=0;J<Y;J++){let le=L.childIds[J],V=d.find(G=>G.id===le);V&&X.push({id:V.id,type:"workflow",position:{x:de+J*(l+c),y:ie},data:{...Qe(V,void 0,void 0,o),parallelGroup:!0},style:{zIndex:2}})}let oe=`group_${L.sourceId}`;X.push({id:oe,type:"groupLabel",position:{x:q,y:k.y},data:{},selectable:!1,draggable:!1,style:{zIndex:0,width:j,height:M}})}let P=[];for(let L of S){let z=cn(L);for(let k of z){let j=d.find(q=>q.id===k);if(j?.type==="terminal"&&j.name==="__end"||O.has(L.from)&&d.find(ne=>ne.id===k)?.parentGroup===L.from)continue;let M=O.has(L.from)?`group_${L.from}`:L.from,Y=O.has(k)?`group_${k}`:k;P.push({id:`${M}-${Y}`,source:M,target:Y,type:"straight",markerEnd:{type:ln.ArrowClosed}})}}return{nodes:X,edges:P}}function gr(p,o,d,S){let b=p.nodes,O=p.edges,a=Fn(b),l=new Set(a.map(k=>k.sourceId)),u=new Set(a.flatMap(k=>k.childIds)),c=268,h=100,r=40;for(let k of a){let j=b.find(M=>M.id===k.sourceId);if(j){let M=k.childIds.length;j.width=M*c+(M-1)*r+40,j.height=h+100}}let s=b.filter(k=>!u.has(k.id)),w=sn(s,O,{nodeWidth:c,nodeHeight:h,ranksep:120}),I=s.find(k=>!l.has(k.id)&&k.type!=="terminal"),B=I?w.get(I.id):void 0,X=I?I.width??c:c,P=B?B.x+X/2:0;for(let k of s){if(l.has(k.id))continue;let j=w.get(k.id);if(!j)continue;let M=k.width??c;j.x=P-M/2}let L=s.filter(k=>w.has(k.id)&&!l.has(k.id)).map(k=>{let j=w.get(k.id),M=De(o,k),Y=k.type==="terminal",q=M&&(!Y||M.status!=="running")?{status:M.status,stepType:M.stepType,durationMs:M.durationMs,selected:!1}:void 0;return{id:k.id,type:"workflow",position:j,style:Y?{width:c,height:h}:void 0,data:Qe(k,q,!M&&!Y,S)}});for(let k of a){let j=b.find(V=>V.id===k.sourceId),M=w.get(k.sourceId);if(!j||!M)continue;let Y=j.width,q=j.height,ne=k.childIds.length,de=ne*c+(ne-1)*r,ie=P-de/2,oe=M.y+(q-h)/2;for(let V=0;V<ne;V++){let G=k.childIds[V],U=b.find(ce=>ce.id===G);if(!U)continue;let E=De(o,U),ge=E?{status:E.status,stepType:E.stepType,durationMs:E.durationMs,selected:!1}:void 0;L.push({id:U.id,type:"workflow",position:{x:ie+V*(c+r),y:oe},data:{...Qe(U,ge,!E,S),parallelGroup:!0},style:{zIndex:2}})}let J=P-Y/2,le=`group_${k.sourceId}`;L.push({id:le,type:"groupLabel",position:{x:J,y:M.y},data:{},selectable:!1,draggable:!1,style:{zIndex:0,width:Y,height:q}})}let z=[];for(let k of O){let j=cn(k);for(let M of j){if(l.has(k.from)&&b.find(E=>E.id===M)?.parentGroup===k.from)continue;let Y=l.has(k.from)?`group_${k.from}`:k.from,q=l.has(M)?`group_${M}`:M,ne=b.find(U=>U.id===k.from),ie=(ne?De(o,ne):void 0)!==void 0,oe=b.find(U=>U.id===M),le=(oe?De(o,oe):void 0)!==void 0,V=ie&&le,G=V?"#6366f1":"#d9d9d9";z.push({id:`${Y}-${q}`,source:Y,target:q,type:"straight",animated:V,style:V?{stroke:G,strokeWidth:2}:{stroke:G,strokeWidth:2,strokeDasharray:"6 4",opacity:.25},markerEnd:{type:ln.ArrowClosed,color:G,width:20,height:20}})}}return{nodes:L,edges:z}}var hr=({dsl:p,steps:o,assistantId:d,agentNameMap:S,onNodeClick:b,height:O="100%"})=>{let a=!!o,l=(0,te.useMemo)(()=>({workflow:On,groupLabel:fr}),[]),{nodes:u,edges:c}=(0,te.useMemo)(()=>a?gr(p,o,void 0,S):dr(p,S),[p,o,a,S]),[h,r,s]=Cn(u),[w,I,B]=kn(c),[X,P]=(0,te.useState)(null),L=(0,te.useMemo)(()=>{if(!a||!X)return null;let Y=p.nodes.find(q=>q.id===X);return Y?De(o,Y):null},[p.nodes,o,X,a]);(0,te.useEffect)(()=>{r(u),I(c)},[u,c,r,I]);let z=(0,te.useCallback)(()=>{r(Y=>Y.map(q=>({...q,data:{...q.data,runState:q.data.runState?{...q.data.runState,selected:!1}:void 0}})))},[r]);(0,te.useEffect)(()=>{a&&r(Y=>Y.map(q=>({...q,data:{...q.data,runState:q.data.runState?{...q.data.runState,selected:q.id===X}:void 0}})))},[X,r,a]);let k=(0,te.useCallback)((Y,q)=>{a?P(q.id):b?.(q.id)},[a,b]),j=(0,te.useCallback)(()=>{a&&(z(),P(null))},[a,z]),M=(0,te.useCallback)(()=>{z(),P(null)},[z]);return!p.nodes||p.nodes.length===0?a?(0,H.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:300},children:(0,H.jsx)(hn,{size:"large"})}):(0,H.jsx)(fn,{description:"No nodes in workflow"}):(0,H.jsx)(vn,{children:(0,H.jsx)(_n,{nodes:h,edges:w,nodeTypes:l,onNodesChange:s,onEdgesChange:B,onNodeClick:k,onPaneClick:a?j:void 0,height:O,fitView:!0,fitViewOptions:a?{padding:.3}:void 0,minZoom:a?.3:void 0,maxZoom:a?1.5:void 0,nodesDraggable:!1,nodesConnectable:a?!1:void 0,defaultEdgeOptions:a?void 0:{style:{strokeWidth:2}},backgroundGap:a?20:void 0,miniMap:a?{nodeStrokeWidth:3,pannable:!0,zoomable:!0,style:{backgroundColor:"#f5f5f5"}}:void 0,children:a&&L&&X&&(0,H.jsxs)("div",{style:{position:"absolute",right:24,top:24,width:460,maxHeight:"calc(100% - 48px)",background:"#fff",borderRadius:16,boxShadow:"0 8px 30px rgba(0,0,0,0.12)",border:"1px solid #e5e7eb",zIndex:10,overflow:"auto",padding:20},children:[(0,H.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:8},children:[(0,H.jsx)(me,{type:"secondary",style:{fontSize:11,textTransform:"uppercase",letterSpacing:.5},children:"Step Detail"}),(0,H.jsx)(me,{type:"secondary",style:{fontSize:11,cursor:"pointer"},onClick:M,children:"Close"})]}),(0,H.jsx)(pr,{step:L})]})})})},Yr=hr;var mr=Object.create,Dn=Object.defineProperty,yr=Object.getOwnPropertyDescriptor,xr=Object.getOwnPropertyNames,Sr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty,K=(p,o)=>()=>(o||(p((o={exports:{}}).exports,o),p=null),o.exports),Ar=(p,o,d,S)=>{if(o&&typeof o=="object"||typeof o=="function")for(var b=xr(o),O=0,a=b.length,l;O<a;O++)l=b[O],!br.call(p,l)&&l!==d&&Dn(p,l,{get:(u=>o[u]).bind(null,l),enumerable:!(S=yr(o,l))||S.enumerable});return p},wr=(p,o,d)=>(d=p!=null?mr(Sr(p)):{},Ar(o||!p||!p.__esModule?Dn(d,"default",{value:p,enumerable:!0}):d,p)),Pe=K(((p,o)=>{function d(u){return typeof u>"u"||u===null}function S(u){return typeof u=="object"&&u!==null}function b(u){return Array.isArray(u)?u:d(u)?[]:[u]}function O(u,c){if(c){let h=Object.keys(c);for(let r=0,s=h.length;r<s;r+=1){let w=h[r];u[w]=c[w]}}return u}function a(u,c){let h="";for(let r=0;r<c;r+=1)h+=u;return h}function l(u){return u===0&&Number.NEGATIVE_INFINITY===1/u}o.exports.isNothing=d,o.exports.isObject=S,o.exports.toArray=b,o.exports.repeat=a,o.exports.isNegativeZero=l,o.exports.extend=O})),He=K(((p,o)=>{function d(b,O){let a="",l=b.reason||"(unknown reason)";return b.mark?(b.mark.name&&(a+='in "'+b.mark.name+'" '),a+="("+(b.mark.line+1)+":"+(b.mark.column+1)+")",!O&&b.mark.snippet&&(a+=`
|
|
1
|
+
import{b as cn,c as sn,d as _n}from"./embed-page-chunk-KEL6XU6R.js";import{a as ln,b as be,e as Ae,f as vn,h as Cn,i as kn}from"./embed-page-chunk-AC6X2XRH.js";import{Fa as on,L as xn,V as Sn,Y as bn,ja as An,pa as wn,s as Re,sa as Tn,u as mn,x as yn,y as Oe,z as Me}from"./embed-page-chunk-7GAD6Q52.js";import{a as Xe}from"./embed-page-chunk-MB65DZAX.js";import{Ia as se,La as Ke,Z as fn,aa as ve,ba as dn,fa as gn,va as hn}from"./embed-page-chunk-O4QK5LWZ.js";import{a as or}from"./embed-page-chunk-4BKXE5ON.js";import{e as Le}from"./embed-page-chunk-6Y3UYJ6Z.js";var te=Le(or());var _=Le(Xe());if(typeof document<"u"){let p="workflow-node-spin-keyframes";if(!document.getElementById(p)){let o=document.createElement("style");o.id=p,o.textContent="@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }",document.head.appendChild(o)}}var{Text:ue}=Ke,Ve={opacity:0},Fe={running:{color:"#1677ff",icon:(0,_.jsx)(bn,{size:14,style:{animation:"spin 1s linear infinite"}})},completed:{color:"#52c41a",icon:(0,_.jsx)(Re,{size:14})},failed:{color:"#ff4d4f",icon:(0,_.jsx)(Oe,{size:14})},interrupted:{color:"#faad14",icon:(0,_.jsx)(mn,{size:14})},skipped:{color:"#8c8c8c",icon:(0,_.jsx)(Me,{size:14})}},En={running:"This step is currently executing",completed:"This step completed successfully",failed:"This step encountered an error",interrupted:"This step is waiting for human input",skipped:"This step was skipped (condition not met)"},In={color:"#d9d9d9",icon:(0,_.jsx)(Me,{size:14})},Nn={agent:{color:"#6366f1",bg:"#EEF2FF",border:"#6366f1"},map:{color:"#10b981",bg:"#ECFDF5",border:"#10b981"},terminal:{color:"#64748b",bg:"#F8FAFC",border:"#94a3b8"}},Ln={success:{color:"#22c55e",bg:"#F0FDF4",label:"Success"},failed:{color:"#ef4444",bg:"#FEF2F2",label:"Failed"},__default:{color:"#94a3b8",bg:"#F8FAFC",label:"Stop"}};function lr(p){return(p||"?").split(/[\s_-]+/).filter(Boolean).map(o=>o[0]).join("").toUpperCase().slice(0,2)}function un({schema:p}){let o=p;if(!o||typeof o!="object")return(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11},children:"No schema defined"});let d=o.properties,S=o.required||[],b=o.items,O=l=>l==="string"?"green":l==="number"||l==="integer"?"orange":l==="boolean"?"purple":l==="array"?"cyan":l==="object"?"blue":"default",a=l=>{let u=l.type;if(u==="array"&&l.items){let c=l.items.type;return c?`Array<${c}>`:"Array"}return u||"any"};return(0,_.jsxs)("div",{style:{maxWidth:340,maxHeight:360,overflow:"auto",fontSize:12},children:[d&&(0,_.jsxs)("div",{children:[(0,_.jsx)(ue,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5,display:"block",marginBottom:6},children:"Properties"}),Object.entries(d).map(([l,u])=>{let c=S.includes(l),h=u.description,r=a(u),s=u.properties,w=u.items,I=!!(s||w);return(0,_.jsx)(ve,{title:I?(0,_.jsx)(un,{schema:I?s?u:w:void 0}):h||void 0,placement:"left",overlayStyle:{maxWidth:360},children:(0,_.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"3px 6px",borderRadius:4,marginBottom:2,background:c?"rgba(99,102,241,0.04)":"transparent",cursor:I?"pointer":"default"},children:[(0,_.jsx)(ue,{style:{fontSize:11,fontWeight:c?600:400,fontFamily:"monospace"},children:l}),c&&(0,_.jsx)("span",{style:{color:"#ef4444",fontSize:9},children:"*"}),h&&!I&&(0,_.jsx)(ue,{type:"secondary",style:{fontSize:10,flex:1,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:h}),(0,_.jsx)(se,{color:O(r),style:{margin:0,fontSize:9,padding:"0 4px",lineHeight:"16px",marginLeft:"auto"},children:r})]})},l)})]}),!d&&b&&(0,_.jsxs)("div",{children:[(0,_.jsx)(ue,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5,display:"block",marginBottom:4},children:"Items"}),(0,_.jsx)(un,{schema:b})]})]})}var Rn=72,cr=3,sr=({data:p})=>{if(!p)return null;let{nodeType:o,name:d,description:S,ref:b,refAgentName:O,refAgentType:a,refDeleted:l,outputKey:u,nodeSchema:c,config:h,status:r,source:s,innerRef:w,inputTemplate:I,ask:B,condition:X,runState:P,pending:L}=p,z=Nn[o]||Nn.agent,k=Ln[r||""]||Ln.__default,j=P?Fe[P.status]||Fe.running:null,M=j?.color,Y=j?.icon,q=r==="success"?(0,_.jsx)(Re,{size:14,color:"#22c55e"}):r==="failed"?(0,_.jsx)(Oe,{size:14,color:"#ef4444"}):(0,_.jsx)(Me,{size:14,color:"#94a3b8"}),ne=r==="success"?(0,_.jsx)(Re,{size:32,color:k.color}):r==="failed"?(0,_.jsx)(Oe,{size:32,color:k.color}):(0,_.jsx)(yn,{size:32,color:k.color}),de=h?.title,ie=h?.maxRetries,oe=h?.timeout,J=h?.batchSize,le=h?.maxConcurrency,V=h?.innerConcurrency,G=P?.selected,U=!!P||L;function E($){return $==null?"-":$<1e3?`${$}ms`:`${($/1e3).toFixed(1)}s`}if(o==="terminal"){let $=k.color,Te=k.bg,ee=k.label,ae=ne;U&&(P?($=M||$,ee=P.status,ae=(0,_.jsx)("span",{style:{fontSize:18},children:Y})):L&&($=In.color,Te="#fafafa",ee="pending",ae=(0,_.jsx)(Me,{size:18,style:{color:In.color}})));let pe=G&&M?`0 4px 16px ${M}30`:"0 2px 8px rgba(0,0,0,0.06)";return(0,_.jsxs)("div",{style:{padding:4,display:"flex",flexDirection:"column",alignItems:"center",opacity:L?.5:1},children:[(0,_.jsx)(Ae,{type:"target",position:be.Top,style:Ve}),(0,_.jsx)(ve,{title:U&&P?En[P.status]:d,children:(0,_.jsx)("div",{style:{width:Rn,height:Rn,borderRadius:"50%",background:Te,border:`${cr}px solid ${L?`${$}80`:$}`,borderStyle:L?"dashed":"solid",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:pe,transition:"all 0.2s ease",cursor:"default"},onMouseEnter:L?void 0:fe=>{fe.currentTarget.style.transform="scale(1.08)",fe.currentTarget.style.boxShadow=`0 4px 16px ${$}30`},onMouseLeave:L?void 0:fe=>{fe.currentTarget.style.transform="scale(1)",fe.currentTarget.style.boxShadow=pe},children:ae})}),(0,_.jsx)(ue,{style:{fontSize:11,color:$,marginTop:6,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px"},children:ee}),(0,_.jsx)(Ae,{type:"source",position:be.Bottom,style:Ve})]})}let ge=U&&M?M:z.border,ce=U&&M?M:z.color,_e=o==="agent"?(0,_.jsx)(Tn,{size:14}):o==="map"?(0,_.jsx)(An,{size:14}):lr(d),he=P?E(P.durationMs):null,Ce=G&&M?`0 4px 14px ${M}20`:"0 1px 6px rgba(0,0,0,0.08)",we=U&&M?M:z.color;return(0,_.jsxs)("div",{style:{padding:4},children:[(0,_.jsx)(Ae,{type:"target",position:be.Top,style:Ve}),(0,_.jsxs)("div",{style:{width:260,minHeight:90,boxSizing:"border-box",background:"#fff",borderRadius:12,boxShadow:Ce,border:"1px solid #e5e7eb",borderLeft:`3px solid ${ge}`,borderStyle:b?"dashed":"solid",overflow:"hidden",transition:"all 0.2s ease",...L?{opacity:.5,borderStyle:"dashed"}:{}},onMouseEnter:L?void 0:$=>{$.currentTarget.style.transform="translateY(-2px)",$.currentTarget.style.boxShadow=`0 4px 12px ${we}20`},onMouseLeave:L?void 0:$=>{$.currentTarget.style.transform="translateY(0)",$.currentTarget.style.boxShadow=Ce},children:[(0,_.jsxs)("div",{style:{background:z.bg,padding:"6px 12px",display:"flex",alignItems:"center",gap:6,borderBottom:"1px solid #f1f5f9"},children:[(0,_.jsx)("div",{style:{width:24,height:24,borderRadius:"50%",backgroundColor:ce,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:10,fontWeight:600,flexShrink:0},children:_e}),(0,_.jsx)("div",{style:{flex:1,minWidth:0},children:(0,_.jsx)(ue,{strong:!0,style:{fontSize:12,color:z.color},ellipsis:{tooltip:d},children:d})}),U&&Y&&(0,_.jsx)(ve,{title:P?En[P.status]:void 0,children:(0,_.jsx)("span",{style:{color:M,fontSize:12,display:"flex",flexShrink:0},children:Y})})]}),(0,_.jsxs)("div",{style:{padding:"10px 12px"},children:[S&&(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11,display:"block",marginTop:2,lineHeight:1.4},ellipsis:{tooltip:S},children:S}),o==="map"&&s&&(0,_.jsxs)(ue,{type:"secondary",style:{fontSize:11,display:"block",marginTop:4,lineHeight:1.4,color:z.color,background:z.bg,padding:"2px 6px",borderRadius:4,maxHeight:32,overflow:"hidden"},ellipsis:{tooltip:s},children:["\u2190 ",s]}),o!=="map"&&I&&(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11,display:"block",marginTop:4,lineHeight:1.4,color:z.color,background:z.bg,padding:"2px 6px",borderRadius:4,maxHeight:32,overflow:"hidden"},ellipsis:{tooltip:I},children:I}),(0,_.jsxs)("div",{style:{display:"flex",gap:4,marginTop:6,flexWrap:"wrap"},children:[!U&&o==="agent"&&b&&(0,_.jsx)(ve,{title:l?`Agent "${b}" no longer exists`:`Delegated to agent: ${O??b}`,children:(0,_.jsx)(se,{color:l?"red":"purple",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},icon:(0,_.jsx)(Sn,{size:10}),children:l?`[\u5DF2\u5220\u9664] ${b}`:`\u2192 ${O??b}`})}),!U&&o==="agent"&&!b&&(0,_.jsx)(se,{color:"default",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:"inline"}),B&&(0,_.jsx)(ve,{title:"This step requires human approval before continuing",children:(0,_.jsx)("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:20,height:20,borderRadius:"50%",background:"#fff7e6",border:"1px solid #ffd591",cursor:"default"},children:(0,_.jsx)(wn,{size:12,style:{color:"#fa8c16"}})})}),X&&(0,_.jsx)(ve,{title:`When: ${X}`,children:(0,_.jsx)("div",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:20,height:20,borderRadius:"50%",background:"#f0f5ff",border:"1px solid #adc6ff",cursor:"default"},children:(0,_.jsx)(xn,{size:12,style:{color:"#2f54eb"}})})}),!U&&o==="map"&&w&&(0,_.jsx)(se,{color:"purple",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:w}),!U&&o==="map"&&I&&(0,_.jsx)(se,{color:"default",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px",maxWidth:120},title:I,children:I.length>20?I.slice(0,18)+"\u2026":I}),!U&&o==="map"&&(J||le||V)&&(0,_.jsxs)(se,{color:"cyan",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:[J??50,"\xD7",le??10,"\xD7",V??5]}),!U&&ie?(0,_.jsxs)(se,{style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:["\u21BB ",ie]}):null,!U&&oe?(0,_.jsxs)(se,{style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:["\u23F1 ",oe,"s"]}):null,he&&(0,_.jsx)(se,{color:P?"blue":"default",style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px"},children:he}),u&&(0,_.jsx)("span",{style:{marginLeft:"auto"}}),u&&(0,_.jsx)(dn,{trigger:"hover",placement:"right",mouseEnterDelay:.2,title:(0,_.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6},children:[(0,_.jsx)(ue,{strong:!0,style:{fontSize:12},children:"Output"}),(0,_.jsx)(ue,{style:{fontSize:11,fontFamily:"monospace",color:"#6366f1"},children:u})]}),content:c?(0,_.jsx)(un,{schema:c}):(0,_.jsx)(ue,{type:"secondary",style:{fontSize:11},children:"No schema defined"}),children:(0,_.jsxs)(se,{style:{margin:0,fontSize:10,padding:"0 5px",lineHeight:"16px",flexShrink:0,cursor:"default"},children:["\u2192 ",u]})})]})]})]}),(0,_.jsx)(Ae,{type:"source",position:be.Bottom,style:Ve})]})},On=sr;var H=Le(Xe()),{Text:me}=Ke;function Mn(p){return new Date(p).toLocaleString()}function ur(p){return p.input?typeof p.input.rendered=="string"?p.input.rendered:typeof p.input.description=="string"?p.input.description:JSON.stringify(p.input,null,2):null}function ar(p){return p.output?typeof p.output.result=="string"?p.output.result:typeof p.output=="object"?JSON.stringify(p.output,null,2):String(p.output):null}function pr({step:p}){let o=ur(p),d=ar(p),S=Fe[p.status]||Fe.running,b=[{key:"io",label:"Input / Output",children:(0,H.jsxs)(H.Fragment,{children:[o&&(0,H.jsxs)("div",{style:{marginBottom:d?12:0},children:[(0,H.jsx)(me,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5},children:"Input"}),(0,H.jsx)("div",{style:{background:"rgba(0,0,0,0.02)",borderRadius:8,padding:"8px 10px",marginTop:4,maxHeight:200,overflow:"auto"},children:p.input?.description?(0,H.jsx)(on,{content:o}):(0,H.jsx)("pre",{style:{margin:0,fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace"},children:o})})]}),d&&(0,H.jsxs)("div",{children:[(0,H.jsx)(me,{type:"secondary",style:{fontSize:10,textTransform:"uppercase",letterSpacing:.5},children:"Output"}),(0,H.jsx)("div",{style:{background:"linear-gradient(135deg, rgba(99,102,241,0.04) 0%, rgba(99,102,241,0.01) 100%)",borderRadius:8,padding:"8px 10px",marginTop:4,maxHeight:200,overflow:"auto"},children:p.output?.result?(0,H.jsx)(on,{content:d}):(0,H.jsx)("pre",{style:{margin:0,fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-word",fontFamily:"monospace"},children:d})})]}),!o&&!d&&(0,H.jsx)(me,{type:"secondary",style:{fontSize:11},children:"No input/output data"})]})}];return(0,H.jsxs)("div",{style:{maxWidth:480},children:[(0,H.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:12},children:[(0,H.jsx)("span",{style:{color:S.color,fontSize:14},children:S.icon}),(0,H.jsx)(me,{strong:!0,style:{fontSize:14},children:p.stepName}),(0,H.jsx)(se,{color:"purple",style:{fontSize:11},children:p.stepType})]}),p.edgePurpose&&(0,H.jsx)("div",{style:{marginBottom:10},children:(0,H.jsxs)(me,{type:"secondary",style:{fontSize:11},children:["Purpose: ",p.edgePurpose]})}),p.errorMessage&&(0,H.jsx)("div",{style:{background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:8,padding:"8px 12px",marginBottom:12,overflow:"hidden"},children:(0,H.jsx)(me,{type:"danger",style:{fontSize:11,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:p.errorMessage})}),(0,H.jsx)(gn,{activeKey:"io",items:b,size:"small",style:{marginBottom:-8}}),(0,H.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginTop:12,paddingTop:8,borderTop:"1px solid #f0f0f0"},children:[(0,H.jsxs)(me,{type:"secondary",style:{fontSize:10},children:["Started: ",Mn(p.startedAt)]}),p.completedAt&&(0,H.jsxs)(me,{type:"secondary",style:{fontSize:10},children:["Ended: ",Mn(p.completedAt)]})]})]})}function De(p,o){return p.find(d=>d.stepName===o.name)??null}function Qe(p,o,d,S){let b=p.ref&&S?S.get(p.ref):void 0;return{nodeType:p.type,name:p.name,description:p.description,ref:p.ref,refAgentName:b?.name,refAgentType:b?.type,refDeleted:p.ref&&S?!b:void 0,outputKey:p.output?.key,nodeSchema:p.output?.schema,config:p.config,status:p.status,source:p.source,innerRef:p.node?.ref,inputTemplate:p.input?.template,ask:p.ask,condition:p.condition,runState:o,pending:d}}function Fn(p){let o=new Map;for(let d of p)if(d.parentGroup&&d.type!=="terminal"){let S=o.get(d.parentGroup)||[];S.push(d.id),o.set(d.parentGroup,S)}return Array.from(o.entries()).map(([d,S])=>({sourceId:d,childIds:S}))}function fr(){return(0,H.jsxs)("div",{style:{width:"100%",height:"100%",position:"relative",pointerEvents:"none"},children:[(0,H.jsx)(Ae,{type:"target",position:be.Top,style:{opacity:0}}),(0,H.jsx)(Ae,{type:"source",position:be.Bottom,style:{opacity:0}}),(0,H.jsx)("div",{style:{position:"absolute",top:0,left:0,right:0,bottom:0,border:"2px dashed #a78bfa",borderRadius:12,background:"rgba(167, 139, 250, 0.04)"}}),(0,H.jsx)("div",{style:{position:"absolute",top:8,left:12,fontSize:12,fontWeight:600,color:"#7c3aed",padding:"2px 8px",background:"rgba(167, 139, 250, 0.08)",borderRadius:6,whiteSpace:"nowrap",zIndex:2},children:"Parallel"})]})}function dr(p,o){let d=p.nodes,S=p.edges,b=Fn(d),O=new Set(b.map(L=>L.sourceId)),a=new Set(b.flatMap(L=>L.childIds)),l=268,u=100,c=40;for(let L of b){let z=d.find(k=>k.id===L.sourceId);if(z){let k=L.childIds.length;z.width=k*l+(k-1)*c+40,z.height=u+100}}let h=d.filter(L=>!a.has(L.id)),r=sn(h,S,{nodeWidth:l,nodeHeight:u,ranksep:120}),s=h.find(L=>!O.has(L.id)&&L.type!=="terminal"),w=s?r.get(s.id):void 0,I=s?s.width??l:l,B=w?w.x+I/2:0;for(let L of h){if(O.has(L.id))continue;let z=r.get(L.id);if(!z)continue;let k=L.width??l;z.x=B-k/2}let X=h.filter(L=>r.has(L.id)&&!O.has(L.id)&&L.type!=="terminal").map(L=>{let z=r.get(L.id);return{id:L.id,type:"workflow",position:z,data:{...Qe(L,void 0,void 0,o)}}});for(let L of b){let z=d.find(J=>J.id===L.sourceId),k=r.get(L.sourceId);if(!z||!k)continue;let j=z.width,M=z.height,Y=L.childIds.length,q=B-j/2,ne=Y*l+(Y-1)*c,de=B-ne/2,ie=k.y+(M-u)/2;for(let J=0;J<Y;J++){let le=L.childIds[J],V=d.find(G=>G.id===le);V&&X.push({id:V.id,type:"workflow",position:{x:de+J*(l+c),y:ie},data:{...Qe(V,void 0,void 0,o),parallelGroup:!0},style:{zIndex:2}})}let oe=`group_${L.sourceId}`;X.push({id:oe,type:"groupLabel",position:{x:q,y:k.y},data:{},selectable:!1,draggable:!1,style:{zIndex:0,width:j,height:M}})}let P=[];for(let L of S){let z=cn(L);for(let k of z){let j=d.find(q=>q.id===k);if(j?.type==="terminal"&&j.name==="__end"||O.has(L.from)&&d.find(ne=>ne.id===k)?.parentGroup===L.from)continue;let M=O.has(L.from)?`group_${L.from}`:L.from,Y=O.has(k)?`group_${k}`:k;P.push({id:`${M}-${Y}`,source:M,target:Y,type:"straight",markerEnd:{type:ln.ArrowClosed}})}}return{nodes:X,edges:P}}function gr(p,o,d,S){let b=p.nodes,O=p.edges,a=Fn(b),l=new Set(a.map(k=>k.sourceId)),u=new Set(a.flatMap(k=>k.childIds)),c=268,h=100,r=40;for(let k of a){let j=b.find(M=>M.id===k.sourceId);if(j){let M=k.childIds.length;j.width=M*c+(M-1)*r+40,j.height=h+100}}let s=b.filter(k=>!u.has(k.id)),w=sn(s,O,{nodeWidth:c,nodeHeight:h,ranksep:120}),I=s.find(k=>!l.has(k.id)&&k.type!=="terminal"),B=I?w.get(I.id):void 0,X=I?I.width??c:c,P=B?B.x+X/2:0;for(let k of s){if(l.has(k.id))continue;let j=w.get(k.id);if(!j)continue;let M=k.width??c;j.x=P-M/2}let L=s.filter(k=>w.has(k.id)&&!l.has(k.id)).map(k=>{let j=w.get(k.id),M=De(o,k),Y=k.type==="terminal",q=M&&(!Y||M.status!=="running")?{status:M.status,stepType:M.stepType,durationMs:M.durationMs,selected:!1}:void 0;return{id:k.id,type:"workflow",position:j,style:Y?{width:c,height:h}:void 0,data:Qe(k,q,!M&&!Y,S)}});for(let k of a){let j=b.find(V=>V.id===k.sourceId),M=w.get(k.sourceId);if(!j||!M)continue;let Y=j.width,q=j.height,ne=k.childIds.length,de=ne*c+(ne-1)*r,ie=P-de/2,oe=M.y+(q-h)/2;for(let V=0;V<ne;V++){let G=k.childIds[V],U=b.find(ce=>ce.id===G);if(!U)continue;let E=De(o,U),ge=E?{status:E.status,stepType:E.stepType,durationMs:E.durationMs,selected:!1}:void 0;L.push({id:U.id,type:"workflow",position:{x:ie+V*(c+r),y:oe},data:{...Qe(U,ge,!E,S),parallelGroup:!0},style:{zIndex:2}})}let J=P-Y/2,le=`group_${k.sourceId}`;L.push({id:le,type:"groupLabel",position:{x:J,y:M.y},data:{},selectable:!1,draggable:!1,style:{zIndex:0,width:Y,height:q}})}let z=[];for(let k of O){let j=cn(k);for(let M of j){if(l.has(k.from)&&b.find(E=>E.id===M)?.parentGroup===k.from)continue;let Y=l.has(k.from)?`group_${k.from}`:k.from,q=l.has(M)?`group_${M}`:M,ne=b.find(U=>U.id===k.from),ie=(ne?De(o,ne):void 0)!==void 0,oe=b.find(U=>U.id===M),le=(oe?De(o,oe):void 0)!==void 0,V=ie&&le,G=V?"#6366f1":"#d9d9d9";z.push({id:`${Y}-${q}`,source:Y,target:q,type:"straight",animated:V,style:V?{stroke:G,strokeWidth:2}:{stroke:G,strokeWidth:2,strokeDasharray:"6 4",opacity:.25},markerEnd:{type:ln.ArrowClosed,color:G,width:20,height:20}})}}return{nodes:L,edges:z}}var hr=({dsl:p,steps:o,assistantId:d,agentNameMap:S,onNodeClick:b,height:O="100%"})=>{let a=!!o,l=(0,te.useMemo)(()=>({workflow:On,groupLabel:fr}),[]),{nodes:u,edges:c}=(0,te.useMemo)(()=>a?gr(p,o,void 0,S):dr(p,S),[p,o,a,S]),[h,r,s]=Cn(u),[w,I,B]=kn(c),[X,P]=(0,te.useState)(null),L=(0,te.useMemo)(()=>{if(!a||!X)return null;let Y=p.nodes.find(q=>q.id===X);return Y?De(o,Y):null},[p.nodes,o,X,a]);(0,te.useEffect)(()=>{r(u),I(c)},[u,c,r,I]);let z=(0,te.useCallback)(()=>{r(Y=>Y.map(q=>({...q,data:{...q.data,runState:q.data.runState?{...q.data.runState,selected:!1}:void 0}})))},[r]);(0,te.useEffect)(()=>{a&&r(Y=>Y.map(q=>({...q,data:{...q.data,runState:q.data.runState?{...q.data.runState,selected:q.id===X}:void 0}})))},[X,r,a]);let k=(0,te.useCallback)((Y,q)=>{a?P(q.id):b?.(q.id)},[a,b]),j=(0,te.useCallback)(()=>{a&&(z(),P(null))},[a,z]),M=(0,te.useCallback)(()=>{z(),P(null)},[z]);return!p.nodes||p.nodes.length===0?a?(0,H.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:300},children:(0,H.jsx)(hn,{size:"large"})}):(0,H.jsx)(fn,{description:"No nodes in workflow"}):(0,H.jsx)(vn,{children:(0,H.jsx)(_n,{nodes:h,edges:w,nodeTypes:l,onNodesChange:s,onEdgesChange:B,onNodeClick:k,onPaneClick:a?j:void 0,height:O,fitView:!0,fitViewOptions:a?{padding:.3}:void 0,minZoom:a?.3:void 0,maxZoom:a?1.5:void 0,nodesDraggable:!1,nodesConnectable:a?!1:void 0,defaultEdgeOptions:a?void 0:{style:{strokeWidth:2}},backgroundGap:a?20:void 0,miniMap:a?{nodeStrokeWidth:3,pannable:!0,zoomable:!0,style:{backgroundColor:"#f5f5f5"}}:void 0,children:a&&L&&X&&(0,H.jsxs)("div",{style:{position:"absolute",right:24,top:24,width:460,maxHeight:"calc(100% - 48px)",background:"#fff",borderRadius:16,boxShadow:"0 8px 30px rgba(0,0,0,0.12)",border:"1px solid #e5e7eb",zIndex:10,overflow:"auto",padding:20},children:[(0,H.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:8},children:[(0,H.jsx)(me,{type:"secondary",style:{fontSize:11,textTransform:"uppercase",letterSpacing:.5},children:"Step Detail"}),(0,H.jsx)(me,{type:"secondary",style:{fontSize:11,cursor:"pointer"},onClick:M,children:"Close"})]}),(0,H.jsx)(pr,{step:L})]})})})},Yr=hr;var mr=Object.create,Dn=Object.defineProperty,yr=Object.getOwnPropertyDescriptor,xr=Object.getOwnPropertyNames,Sr=Object.getPrototypeOf,br=Object.prototype.hasOwnProperty,K=(p,o)=>()=>(o||(p((o={exports:{}}).exports,o),p=null),o.exports),Ar=(p,o,d,S)=>{if(o&&typeof o=="object"||typeof o=="function")for(var b=xr(o),O=0,a=b.length,l;O<a;O++)l=b[O],!br.call(p,l)&&l!==d&&Dn(p,l,{get:(u=>o[u]).bind(null,l),enumerable:!(S=yr(o,l))||S.enumerable});return p},wr=(p,o,d)=>(d=p!=null?mr(Sr(p)):{},Ar(o||!p||!p.__esModule?Dn(d,"default",{value:p,enumerable:!0}):d,p)),Pe=K(((p,o)=>{function d(u){return typeof u>"u"||u===null}function S(u){return typeof u=="object"&&u!==null}function b(u){return Array.isArray(u)?u:d(u)?[]:[u]}function O(u,c){if(c){let h=Object.keys(c);for(let r=0,s=h.length;r<s;r+=1){let w=h[r];u[w]=c[w]}}return u}function a(u,c){let h="";for(let r=0;r<c;r+=1)h+=u;return h}function l(u){return u===0&&Number.NEGATIVE_INFINITY===1/u}o.exports.isNothing=d,o.exports.isObject=S,o.exports.toArray=b,o.exports.repeat=a,o.exports.isNegativeZero=l,o.exports.extend=O})),He=K(((p,o)=>{function d(b,O){let a="",l=b.reason||"(unknown reason)";return b.mark?(b.mark.name&&(a+='in "'+b.mark.name+'" '),a+="("+(b.mark.line+1)+":"+(b.mark.column+1)+")",!O&&b.mark.snippet&&(a+=`
|
|
2
2
|
|
|
3
3
|
`+b.mark.snippet),l+" "+a):l}function S(b,O){Error.call(this),this.name="YAMLException",this.reason=b,this.mark=O,this.message=d(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}S.prototype=Object.create(Error.prototype),S.prototype.constructor=S,S.prototype.toString=function(O){return this.name+": "+d(this,O)},o.exports=S})),Tr=K(((p,o)=>{var d=Pe();function S(a,l,u,c,h){let r="",s="",w=Math.floor(h/2)-1;return c-l>w&&(r=" ... ",l=c-w+r.length),u-c>w&&(s=" ...",u=c+w-s.length),{str:r+a.slice(l,u).replace(/\t/g,"\u2192")+s,pos:c-l+r.length}}function b(a,l){return d.repeat(" ",l-a.length)+a}function O(a,l){if(l=Object.create(l||null),!a.buffer)return null;l.maxLength||(l.maxLength=79),typeof l.indent!="number"&&(l.indent=1),typeof l.linesBefore!="number"&&(l.linesBefore=3),typeof l.linesAfter!="number"&&(l.linesAfter=2);let u=/\r?\n|\r|\0/g,c=[0],h=[],r,s=-1;for(;r=u.exec(a.buffer);)h.push(r.index),c.push(r.index+r[0].length),a.position<=r.index&&s<0&&(s=c.length-2);s<0&&(s=c.length-1);let w="",I=Math.min(a.line+l.linesAfter,h.length).toString().length,B=l.maxLength-(l.indent+I+3);for(let P=1;P<=l.linesBefore&&!(s-P<0);P++){let L=S(a.buffer,c[s-P],h[s-P],a.position-(c[s]-c[s-P]),B);w=d.repeat(" ",l.indent)+b((a.line-P+1).toString(),I)+" | "+L.str+`
|
|
4
4
|
`+w}let X=S(a.buffer,c[s],h[s],a.position,B);w+=d.repeat(" ",l.indent)+b((a.line+1).toString(),I)+" | "+X.str+`
|
package/dist/embed/embed-page.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as f}from"./embed-page-chunk-
|
|
1
|
+
import{a as f}from"./embed-page-chunk-DSQ4DIQY.js";import"./embed-page-chunk-7GAD6Q52.js";import"./embed-page-chunk-QU52HUXW.js";import{a as b}from"./embed-page-chunk-MB65DZAX.js";import"./embed-page-chunk-VW3NF5NT.js";import"./embed-page-chunk-5JDQ456X.js";import"./embed-page-chunk-Z7USDLHI.js";import{a as g}from"./embed-page-chunk-O4QK5LWZ.js";import"./embed-page-chunk-4BKXE5ON.js";import"./embed-page-chunk-IX4WLWCY.js";import"./embed-page-chunk-EUOOO2LS.js";import{b as U,e as s}from"./embed-page-chunk-6Y3UYJ6Z.js";var h=U(d=>{"use strict";var E=g();d.createRoot=E.createRoot,d.hydrateRoot=E.hydrateRoot;var ee});var T=s(h()),k=s(g());var y="axiom-web-app-embed";var x=["axiom:hello","axiom:identity","axiom:send","axiom:config"];function w(e,t){return{source:y,version:1,type:e,payload:t}}var N=6,z=40,B=500;function H(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=e,n=Object.keys(t);return n.length!==2||!n.includes("label")||!n.includes("text")?!1:typeof t.label=="string"&&t.label.length>=1&&t.label.length<=z&&typeof t.text=="string"&&t.text.length>=1&&t.text.length<=B}function Q(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(t.length>=N)break;H(n)&&t.push({label:n.label,text:n.text})}return t}function _(e){if(typeof e!="object"||e===null)return null;let t=e,n={};if(typeof t.welcome=="string"&&t.welcome.length>0&&(n.welcome=t.welcome),Array.isArray(t.quicks)){let r=Q(t.quicks);(r.length>0||t.quicks.length===0)&&(n.quicks=r)}return n.welcome===void 0&&n.quicks===void 0?null:n}function R(e,t){if(typeof e!="object"||e===null)return null;let n=e;return n.source!==y||n.version!==1||typeof n.type!="string"||!t.includes(n.type)?null:{type:n.type,payload:n.payload}}var p=s(b()),P=/^[A-Za-z0-9._:@-]{1,128}$/,q="Open this chat from the host page embed to start chatting.",v="axiom-embed-root",C="axiom-embed-style",A=32768,G=`
|
|
2
2
|
html, body, #${v} { height: 100%; margin: 0; }
|
|
3
3
|
.axiom-embed-fill { height: 100% !important; min-height: 0 !important; }
|
|
4
4
|
.axiom-embed-card { display: flex; align-items: center; justify-content: center; height: 100%; margin: 0; font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 14px; color: #64748b; padding: 24px; box-sizing: border-box; text-align: center; }
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
|
-
import { ProjectRoomMessage, ProjectBotMembership, ProjectMembership, TaskItem, ChannelAdapter, InboundMessage, Binding, BindingRegistry, ChannelInstallationStore, DispatchResult, ProjectRoomEventScope, ProjectRoomBusinessEventDraft, ProjectRoomScopedBusinessEvent, ProjectRoomBusinessEvent, ProjectRoomEventSubscription, TaskStore, ProjectRoomStore, ProjectBotMembershipStore, ThreadStore, ProjectRoom, Thread, LoggerType, PinoFileOptions } from '@axiom-lattice/protocols';
|
|
3
|
-
import { TrustedAgentMessageDispatcher, TrustedMessageOptions, TaskLifecycleListener, TaskLifecycleService } from '@axiom-lattice/core';
|
|
2
|
+
import { ProjectRoomMessage, ProjectBotMembership, ProjectMembership, TaskItem, ChannelAdapter, InboundMessage, Binding, BindingRegistry, ChannelInstallationStore, DispatchResult, ProjectRoomEventScope, ProjectRoomBusinessEventDraft, ProjectRoomScopedBusinessEvent, ProjectRoomBusinessEvent, ProjectRoomEventSubscription, TaskStore, ProjectRoomStore, ProjectBotMembershipStore, ThreadStore, ProjectRoom, Thread, ProjectStore, LoggerType, PinoFileOptions } from '@axiom-lattice/protocols';
|
|
3
|
+
import { TrustedAgentMessageDispatcher, TrustedMessageOptions, TaskLifecycleListener, TaskLifecycleService, IMessageQueueStore, Agent } from '@axiom-lattice/core';
|
|
4
4
|
import * as fastify from 'fastify';
|
|
5
5
|
|
|
6
6
|
/** Public publisher surface for committed Project Room business facts. */
|
|
@@ -368,6 +368,212 @@ declare class ProjectTaskThreadService {
|
|
|
368
368
|
private assertThread;
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
+
/** Result of one Project Task Agent execution settlement. */
|
|
372
|
+
type ProjectTaskRunOutcome = {
|
|
373
|
+
kind: "completed";
|
|
374
|
+
task: TaskItem;
|
|
375
|
+
thread: Thread;
|
|
376
|
+
messageId: string;
|
|
377
|
+
} | {
|
|
378
|
+
kind: "cancelled";
|
|
379
|
+
task: TaskItem;
|
|
380
|
+
thread: Thread;
|
|
381
|
+
messageId: string;
|
|
382
|
+
} | {
|
|
383
|
+
kind: "failed";
|
|
384
|
+
task: TaskItem;
|
|
385
|
+
thread: Thread;
|
|
386
|
+
messageId: string;
|
|
387
|
+
error: string;
|
|
388
|
+
cause: "agent_failed" | "queue_rejected" | "settlement_timeout" | "recovery_ended" | "interruption_not_durable" | "startup_cancelled";
|
|
389
|
+
lifecycleHandled: boolean;
|
|
390
|
+
} | {
|
|
391
|
+
kind: "interrupted";
|
|
392
|
+
task: TaskItem;
|
|
393
|
+
thread: Thread;
|
|
394
|
+
messageId: string;
|
|
395
|
+
} | {
|
|
396
|
+
kind: "aborted";
|
|
397
|
+
task: TaskItem;
|
|
398
|
+
thread: Thread;
|
|
399
|
+
messageId: string;
|
|
400
|
+
};
|
|
401
|
+
/** Stable classification of the queue fact used to recover an in-progress Project Task. */
|
|
402
|
+
type ProjectTaskRecoveryClassification = {
|
|
403
|
+
kind: "pending" | "processing";
|
|
404
|
+
inputMessageId: string;
|
|
405
|
+
} | {
|
|
406
|
+
kind: "missing";
|
|
407
|
+
} | {
|
|
408
|
+
kind: "invalid";
|
|
409
|
+
reason: string;
|
|
410
|
+
};
|
|
411
|
+
/** Runtime bounds for Project Task settlement. */
|
|
412
|
+
interface ProjectTaskExecutionOptions {
|
|
413
|
+
/** Maximum time to retain Agent listeners while awaiting execution settlement. */
|
|
414
|
+
settlementTimeoutMs: number;
|
|
415
|
+
/** Maximum time to await lifecycle persistence after a failed or inconsistent execution. */
|
|
416
|
+
lifecycleSettlementTimeoutMs: number;
|
|
417
|
+
/** Queue message id factory; defaults to `randomUUID`. */
|
|
418
|
+
idFactory?: () => string;
|
|
419
|
+
}
|
|
420
|
+
/** Collaborators required to validate, dispatch, recover, and settle Project Task executions. */
|
|
421
|
+
interface ProjectTaskExecutionDependencies {
|
|
422
|
+
tasks: TaskStore;
|
|
423
|
+
projects: Pick<ProjectStore, "getProjectById">;
|
|
424
|
+
rooms: Pick<ProjectRoomStore, "getMainRoom">;
|
|
425
|
+
bots: Pick<ProjectBotMembershipStore, "findByAssistant">;
|
|
426
|
+
threads: ProjectTaskThreadService;
|
|
427
|
+
lifecycle: TaskLifecycleService;
|
|
428
|
+
dispatcher: TrustedAgentMessageDispatcher;
|
|
429
|
+
queue: IMessageQueueStore;
|
|
430
|
+
agentFor: (task: TaskItem, thread: Thread) => Agent;
|
|
431
|
+
}
|
|
432
|
+
/** Input for recovering exactly one persisted Project Task queue execution. */
|
|
433
|
+
interface RecoverProjectTaskExecutionInput {
|
|
434
|
+
task: TaskItem;
|
|
435
|
+
thread: Thread;
|
|
436
|
+
inputMessageId: string;
|
|
437
|
+
mode: "pending" | "processing";
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Executes and recovers Project Tasks on canonical Task Threads.
|
|
441
|
+
*
|
|
442
|
+
* The service arms exact Agent listeners before enqueue/recovery and treats Task lifecycle
|
|
443
|
+
* persistence as authoritative. Its caller owns machine serialization through the returned
|
|
444
|
+
* settlement promise; a generic Agent completion never completes a Task by itself.
|
|
445
|
+
*/
|
|
446
|
+
declare class ProjectTaskExecutionService {
|
|
447
|
+
private readonly deps;
|
|
448
|
+
private readonly options;
|
|
449
|
+
private readonly runBridge;
|
|
450
|
+
/**
|
|
451
|
+
* @param deps Persistence, lifecycle, dispatch, and Agent collaborators.
|
|
452
|
+
* @param options Settlement watchdog bounds.
|
|
453
|
+
*/
|
|
454
|
+
constructor(deps: ProjectTaskExecutionDependencies, options: ProjectTaskExecutionOptions);
|
|
455
|
+
/** Validates, atomically starts, dispatches, and settles a pending Project Task. */
|
|
456
|
+
start(input: {
|
|
457
|
+
tenantId: string;
|
|
458
|
+
taskId: string;
|
|
459
|
+
actor?: string;
|
|
460
|
+
}, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
461
|
+
/** Performs the pending→in_progress transition and loads the exact current task. */
|
|
462
|
+
private prepareStart;
|
|
463
|
+
/** Resumes an interrupted Project Task on its canonical existing Thread. */
|
|
464
|
+
resume(input: {
|
|
465
|
+
tenantId: string;
|
|
466
|
+
taskId: string;
|
|
467
|
+
actor?: string;
|
|
468
|
+
}, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
469
|
+
/** Clears the durable interruption and loads the exact resumed task. */
|
|
470
|
+
private prepareResume;
|
|
471
|
+
/**
|
|
472
|
+
* Dispatches a Project Task by selecting the correct pre-run transition for
|
|
473
|
+
* its current status, then running it.
|
|
474
|
+
*
|
|
475
|
+
* @param input Tenant, task identity, and optional command actor.
|
|
476
|
+
* @param signal Optional cancellation signal for the armed settlement.
|
|
477
|
+
* @returns The settled run outcome.
|
|
478
|
+
* @remarks `start` semantics: make this task run. `pending` starts,
|
|
479
|
+
* `interrupted` resumes, `failed` retries, and `completed`/`cancelled`
|
|
480
|
+
* reopen, each followed by a trusted run dispatch. `in_progress` is a
|
|
481
|
+
* conflict. This is a record transition plus an application-layer side
|
|
482
|
+
* effect; the kernel only records the status change. `actor` attributes the
|
|
483
|
+
* start/resume/retry/reopen transition and defaults to the system actor.
|
|
484
|
+
*/
|
|
485
|
+
dispatch(input: {
|
|
486
|
+
tenantId: string;
|
|
487
|
+
taskId: string;
|
|
488
|
+
actor?: string;
|
|
489
|
+
}, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
490
|
+
/**
|
|
491
|
+
* Dispatches a Project Task without awaiting its settlement.
|
|
492
|
+
*
|
|
493
|
+
* @param input Tenant, task identity, and optional command actor.
|
|
494
|
+
* @param signal Optional cancellation signal for the pre-run transition.
|
|
495
|
+
* @returns The `in_progress` task snapshot and whether the run was queued.
|
|
496
|
+
* @remarks Intended for command HTTP handlers that must release the Project
|
|
497
|
+
* mutation mutex immediately: the armed settlement keeps running in the
|
|
498
|
+
* background (completion, watchdog, and convergence) but the caller never
|
|
499
|
+
* awaits it. Enqueue failure converges the task exactly like the awaited
|
|
500
|
+
* path before throwing, so no phantom run is left behind.
|
|
501
|
+
*/
|
|
502
|
+
dispatchDetached(input: {
|
|
503
|
+
tenantId: string;
|
|
504
|
+
taskId: string;
|
|
505
|
+
actor?: string;
|
|
506
|
+
}, signal?: AbortSignal): Promise<{
|
|
507
|
+
task: TaskItem;
|
|
508
|
+
queued: boolean;
|
|
509
|
+
}>;
|
|
510
|
+
/** Recovers one exact pending or processing queue row without dispatching a duplicate input. */
|
|
511
|
+
recover(input: RecoverProjectTaskExecutionInput, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
512
|
+
/** Classifies one exact Task Thread queue fact with transition-safe repeated reads. */
|
|
513
|
+
classifyRecovery(task: TaskItem, thread: Thread): Promise<ProjectTaskRecoveryClassification>;
|
|
514
|
+
private requireTask;
|
|
515
|
+
private validateReadyTask;
|
|
516
|
+
private validateResumableTask;
|
|
517
|
+
/**
|
|
518
|
+
* Retries a failed task or reopens a terminal task, then runs it on its
|
|
519
|
+
* canonical existing Thread.
|
|
520
|
+
*
|
|
521
|
+
* @param task Task snapshot already routed to the restartable branch.
|
|
522
|
+
* @param actor Actor attributed to the retry/reopen transition.
|
|
523
|
+
* @param signal Optional cancellation signal for the armed settlement.
|
|
524
|
+
* @returns The settled run outcome.
|
|
525
|
+
*/
|
|
526
|
+
private dispatchRestartable;
|
|
527
|
+
/** Retries a failed task or reopens a terminal task, then loads the exact current task. */
|
|
528
|
+
private prepareRestartable;
|
|
529
|
+
private validateRestartableTask;
|
|
530
|
+
private validateReadyTaskSnapshot;
|
|
531
|
+
private requireRoom;
|
|
532
|
+
private requireMembership;
|
|
533
|
+
private requireCurrentThread;
|
|
534
|
+
private dispatchRun;
|
|
535
|
+
/**
|
|
536
|
+
* Arms the exact settlement and enqueues the trusted run without awaiting settlement.
|
|
537
|
+
*
|
|
538
|
+
* @returns The armed settlement plus the enqueue result. A declined or thrown
|
|
539
|
+
* enqueue yields `queued: false` with a stable reason; the caller decides
|
|
540
|
+
* whether to converge only (awaited path) or converge and throw (detached).
|
|
541
|
+
*/
|
|
542
|
+
private armAndEnqueue;
|
|
543
|
+
/**
|
|
544
|
+
* Arms and enqueues a run, then returns an `in_progress` snapshot immediately.
|
|
545
|
+
*
|
|
546
|
+
* @remarks The settlement continues in the background. On enqueue failure the
|
|
547
|
+
* task is converged exactly like the awaited path before throwing, so no
|
|
548
|
+
* phantom in-progress run is left behind.
|
|
549
|
+
*/
|
|
550
|
+
private enqueueDetached;
|
|
551
|
+
private claimDispatchFailure;
|
|
552
|
+
private armSettlement;
|
|
553
|
+
private throwIfCancelled;
|
|
554
|
+
private awaitSettlementCancellation;
|
|
555
|
+
private cancelSettlement;
|
|
556
|
+
private compensateCancellation;
|
|
557
|
+
private reloadTask;
|
|
558
|
+
private settleInterruptedEvent;
|
|
559
|
+
/** Reads the paused thread snapshot when no interrupt event payload is available (recovery). */
|
|
560
|
+
private readInterruptedThreadState;
|
|
561
|
+
/**
|
|
562
|
+
* Persists a durable `missing_input` interruption for a paused clarify question.
|
|
563
|
+
*
|
|
564
|
+
* @remarks The task must survive the pause so the room can answer it; the
|
|
565
|
+
* agent resumes the same run once the answer arrives.
|
|
566
|
+
*/
|
|
567
|
+
private interruptForClarify;
|
|
568
|
+
private settleEndedRecovery;
|
|
569
|
+
private terminalOutcome;
|
|
570
|
+
private matchesExecution;
|
|
571
|
+
private failSettledTaskAwaited;
|
|
572
|
+
private withLifecycleTimeout;
|
|
573
|
+
private failSettledTask;
|
|
574
|
+
private validateExistingExecution;
|
|
575
|
+
}
|
|
576
|
+
|
|
371
577
|
/** Aggregate result of one bounded deterministic startup reconciliation. */
|
|
372
578
|
interface ProjectTaskReconciliationResult {
|
|
373
579
|
inspected: number;
|
|
@@ -397,6 +603,8 @@ interface ProjectTaskRuntime {
|
|
|
397
603
|
readonly threads: ProjectTaskThreadService;
|
|
398
604
|
/** Shared canonical Task lifecycle service. */
|
|
399
605
|
readonly lifecycle: TaskLifecycleService;
|
|
606
|
+
/** Shared canonical Project Task execution/dispatch service. */
|
|
607
|
+
readonly execution: ProjectTaskExecutionService;
|
|
400
608
|
/** Starts or joins one bounded startup reconciliation. */
|
|
401
609
|
prepareReconciliation(options?: ProjectTaskRuntimeLifecycleOptions): Promise<ProjectTaskReconciliationResult>;
|
|
402
610
|
/** Aborts runtime work and returns bounded status plus the actual drain promise. */
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
|
-
import { ProjectRoomMessage, ProjectBotMembership, ProjectMembership, TaskItem, ChannelAdapter, InboundMessage, Binding, BindingRegistry, ChannelInstallationStore, DispatchResult, ProjectRoomEventScope, ProjectRoomBusinessEventDraft, ProjectRoomScopedBusinessEvent, ProjectRoomBusinessEvent, ProjectRoomEventSubscription, TaskStore, ProjectRoomStore, ProjectBotMembershipStore, ThreadStore, ProjectRoom, Thread, LoggerType, PinoFileOptions } from '@axiom-lattice/protocols';
|
|
3
|
-
import { TrustedAgentMessageDispatcher, TrustedMessageOptions, TaskLifecycleListener, TaskLifecycleService } from '@axiom-lattice/core';
|
|
2
|
+
import { ProjectRoomMessage, ProjectBotMembership, ProjectMembership, TaskItem, ChannelAdapter, InboundMessage, Binding, BindingRegistry, ChannelInstallationStore, DispatchResult, ProjectRoomEventScope, ProjectRoomBusinessEventDraft, ProjectRoomScopedBusinessEvent, ProjectRoomBusinessEvent, ProjectRoomEventSubscription, TaskStore, ProjectRoomStore, ProjectBotMembershipStore, ThreadStore, ProjectRoom, Thread, ProjectStore, LoggerType, PinoFileOptions } from '@axiom-lattice/protocols';
|
|
3
|
+
import { TrustedAgentMessageDispatcher, TrustedMessageOptions, TaskLifecycleListener, TaskLifecycleService, IMessageQueueStore, Agent } from '@axiom-lattice/core';
|
|
4
4
|
import * as fastify from 'fastify';
|
|
5
5
|
|
|
6
6
|
/** Public publisher surface for committed Project Room business facts. */
|
|
@@ -368,6 +368,212 @@ declare class ProjectTaskThreadService {
|
|
|
368
368
|
private assertThread;
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
+
/** Result of one Project Task Agent execution settlement. */
|
|
372
|
+
type ProjectTaskRunOutcome = {
|
|
373
|
+
kind: "completed";
|
|
374
|
+
task: TaskItem;
|
|
375
|
+
thread: Thread;
|
|
376
|
+
messageId: string;
|
|
377
|
+
} | {
|
|
378
|
+
kind: "cancelled";
|
|
379
|
+
task: TaskItem;
|
|
380
|
+
thread: Thread;
|
|
381
|
+
messageId: string;
|
|
382
|
+
} | {
|
|
383
|
+
kind: "failed";
|
|
384
|
+
task: TaskItem;
|
|
385
|
+
thread: Thread;
|
|
386
|
+
messageId: string;
|
|
387
|
+
error: string;
|
|
388
|
+
cause: "agent_failed" | "queue_rejected" | "settlement_timeout" | "recovery_ended" | "interruption_not_durable" | "startup_cancelled";
|
|
389
|
+
lifecycleHandled: boolean;
|
|
390
|
+
} | {
|
|
391
|
+
kind: "interrupted";
|
|
392
|
+
task: TaskItem;
|
|
393
|
+
thread: Thread;
|
|
394
|
+
messageId: string;
|
|
395
|
+
} | {
|
|
396
|
+
kind: "aborted";
|
|
397
|
+
task: TaskItem;
|
|
398
|
+
thread: Thread;
|
|
399
|
+
messageId: string;
|
|
400
|
+
};
|
|
401
|
+
/** Stable classification of the queue fact used to recover an in-progress Project Task. */
|
|
402
|
+
type ProjectTaskRecoveryClassification = {
|
|
403
|
+
kind: "pending" | "processing";
|
|
404
|
+
inputMessageId: string;
|
|
405
|
+
} | {
|
|
406
|
+
kind: "missing";
|
|
407
|
+
} | {
|
|
408
|
+
kind: "invalid";
|
|
409
|
+
reason: string;
|
|
410
|
+
};
|
|
411
|
+
/** Runtime bounds for Project Task settlement. */
|
|
412
|
+
interface ProjectTaskExecutionOptions {
|
|
413
|
+
/** Maximum time to retain Agent listeners while awaiting execution settlement. */
|
|
414
|
+
settlementTimeoutMs: number;
|
|
415
|
+
/** Maximum time to await lifecycle persistence after a failed or inconsistent execution. */
|
|
416
|
+
lifecycleSettlementTimeoutMs: number;
|
|
417
|
+
/** Queue message id factory; defaults to `randomUUID`. */
|
|
418
|
+
idFactory?: () => string;
|
|
419
|
+
}
|
|
420
|
+
/** Collaborators required to validate, dispatch, recover, and settle Project Task executions. */
|
|
421
|
+
interface ProjectTaskExecutionDependencies {
|
|
422
|
+
tasks: TaskStore;
|
|
423
|
+
projects: Pick<ProjectStore, "getProjectById">;
|
|
424
|
+
rooms: Pick<ProjectRoomStore, "getMainRoom">;
|
|
425
|
+
bots: Pick<ProjectBotMembershipStore, "findByAssistant">;
|
|
426
|
+
threads: ProjectTaskThreadService;
|
|
427
|
+
lifecycle: TaskLifecycleService;
|
|
428
|
+
dispatcher: TrustedAgentMessageDispatcher;
|
|
429
|
+
queue: IMessageQueueStore;
|
|
430
|
+
agentFor: (task: TaskItem, thread: Thread) => Agent;
|
|
431
|
+
}
|
|
432
|
+
/** Input for recovering exactly one persisted Project Task queue execution. */
|
|
433
|
+
interface RecoverProjectTaskExecutionInput {
|
|
434
|
+
task: TaskItem;
|
|
435
|
+
thread: Thread;
|
|
436
|
+
inputMessageId: string;
|
|
437
|
+
mode: "pending" | "processing";
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Executes and recovers Project Tasks on canonical Task Threads.
|
|
441
|
+
*
|
|
442
|
+
* The service arms exact Agent listeners before enqueue/recovery and treats Task lifecycle
|
|
443
|
+
* persistence as authoritative. Its caller owns machine serialization through the returned
|
|
444
|
+
* settlement promise; a generic Agent completion never completes a Task by itself.
|
|
445
|
+
*/
|
|
446
|
+
declare class ProjectTaskExecutionService {
|
|
447
|
+
private readonly deps;
|
|
448
|
+
private readonly options;
|
|
449
|
+
private readonly runBridge;
|
|
450
|
+
/**
|
|
451
|
+
* @param deps Persistence, lifecycle, dispatch, and Agent collaborators.
|
|
452
|
+
* @param options Settlement watchdog bounds.
|
|
453
|
+
*/
|
|
454
|
+
constructor(deps: ProjectTaskExecutionDependencies, options: ProjectTaskExecutionOptions);
|
|
455
|
+
/** Validates, atomically starts, dispatches, and settles a pending Project Task. */
|
|
456
|
+
start(input: {
|
|
457
|
+
tenantId: string;
|
|
458
|
+
taskId: string;
|
|
459
|
+
actor?: string;
|
|
460
|
+
}, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
461
|
+
/** Performs the pending→in_progress transition and loads the exact current task. */
|
|
462
|
+
private prepareStart;
|
|
463
|
+
/** Resumes an interrupted Project Task on its canonical existing Thread. */
|
|
464
|
+
resume(input: {
|
|
465
|
+
tenantId: string;
|
|
466
|
+
taskId: string;
|
|
467
|
+
actor?: string;
|
|
468
|
+
}, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
469
|
+
/** Clears the durable interruption and loads the exact resumed task. */
|
|
470
|
+
private prepareResume;
|
|
471
|
+
/**
|
|
472
|
+
* Dispatches a Project Task by selecting the correct pre-run transition for
|
|
473
|
+
* its current status, then running it.
|
|
474
|
+
*
|
|
475
|
+
* @param input Tenant, task identity, and optional command actor.
|
|
476
|
+
* @param signal Optional cancellation signal for the armed settlement.
|
|
477
|
+
* @returns The settled run outcome.
|
|
478
|
+
* @remarks `start` semantics: make this task run. `pending` starts,
|
|
479
|
+
* `interrupted` resumes, `failed` retries, and `completed`/`cancelled`
|
|
480
|
+
* reopen, each followed by a trusted run dispatch. `in_progress` is a
|
|
481
|
+
* conflict. This is a record transition plus an application-layer side
|
|
482
|
+
* effect; the kernel only records the status change. `actor` attributes the
|
|
483
|
+
* start/resume/retry/reopen transition and defaults to the system actor.
|
|
484
|
+
*/
|
|
485
|
+
dispatch(input: {
|
|
486
|
+
tenantId: string;
|
|
487
|
+
taskId: string;
|
|
488
|
+
actor?: string;
|
|
489
|
+
}, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
490
|
+
/**
|
|
491
|
+
* Dispatches a Project Task without awaiting its settlement.
|
|
492
|
+
*
|
|
493
|
+
* @param input Tenant, task identity, and optional command actor.
|
|
494
|
+
* @param signal Optional cancellation signal for the pre-run transition.
|
|
495
|
+
* @returns The `in_progress` task snapshot and whether the run was queued.
|
|
496
|
+
* @remarks Intended for command HTTP handlers that must release the Project
|
|
497
|
+
* mutation mutex immediately: the armed settlement keeps running in the
|
|
498
|
+
* background (completion, watchdog, and convergence) but the caller never
|
|
499
|
+
* awaits it. Enqueue failure converges the task exactly like the awaited
|
|
500
|
+
* path before throwing, so no phantom run is left behind.
|
|
501
|
+
*/
|
|
502
|
+
dispatchDetached(input: {
|
|
503
|
+
tenantId: string;
|
|
504
|
+
taskId: string;
|
|
505
|
+
actor?: string;
|
|
506
|
+
}, signal?: AbortSignal): Promise<{
|
|
507
|
+
task: TaskItem;
|
|
508
|
+
queued: boolean;
|
|
509
|
+
}>;
|
|
510
|
+
/** Recovers one exact pending or processing queue row without dispatching a duplicate input. */
|
|
511
|
+
recover(input: RecoverProjectTaskExecutionInput, signal?: AbortSignal): Promise<ProjectTaskRunOutcome>;
|
|
512
|
+
/** Classifies one exact Task Thread queue fact with transition-safe repeated reads. */
|
|
513
|
+
classifyRecovery(task: TaskItem, thread: Thread): Promise<ProjectTaskRecoveryClassification>;
|
|
514
|
+
private requireTask;
|
|
515
|
+
private validateReadyTask;
|
|
516
|
+
private validateResumableTask;
|
|
517
|
+
/**
|
|
518
|
+
* Retries a failed task or reopens a terminal task, then runs it on its
|
|
519
|
+
* canonical existing Thread.
|
|
520
|
+
*
|
|
521
|
+
* @param task Task snapshot already routed to the restartable branch.
|
|
522
|
+
* @param actor Actor attributed to the retry/reopen transition.
|
|
523
|
+
* @param signal Optional cancellation signal for the armed settlement.
|
|
524
|
+
* @returns The settled run outcome.
|
|
525
|
+
*/
|
|
526
|
+
private dispatchRestartable;
|
|
527
|
+
/** Retries a failed task or reopens a terminal task, then loads the exact current task. */
|
|
528
|
+
private prepareRestartable;
|
|
529
|
+
private validateRestartableTask;
|
|
530
|
+
private validateReadyTaskSnapshot;
|
|
531
|
+
private requireRoom;
|
|
532
|
+
private requireMembership;
|
|
533
|
+
private requireCurrentThread;
|
|
534
|
+
private dispatchRun;
|
|
535
|
+
/**
|
|
536
|
+
* Arms the exact settlement and enqueues the trusted run without awaiting settlement.
|
|
537
|
+
*
|
|
538
|
+
* @returns The armed settlement plus the enqueue result. A declined or thrown
|
|
539
|
+
* enqueue yields `queued: false` with a stable reason; the caller decides
|
|
540
|
+
* whether to converge only (awaited path) or converge and throw (detached).
|
|
541
|
+
*/
|
|
542
|
+
private armAndEnqueue;
|
|
543
|
+
/**
|
|
544
|
+
* Arms and enqueues a run, then returns an `in_progress` snapshot immediately.
|
|
545
|
+
*
|
|
546
|
+
* @remarks The settlement continues in the background. On enqueue failure the
|
|
547
|
+
* task is converged exactly like the awaited path before throwing, so no
|
|
548
|
+
* phantom in-progress run is left behind.
|
|
549
|
+
*/
|
|
550
|
+
private enqueueDetached;
|
|
551
|
+
private claimDispatchFailure;
|
|
552
|
+
private armSettlement;
|
|
553
|
+
private throwIfCancelled;
|
|
554
|
+
private awaitSettlementCancellation;
|
|
555
|
+
private cancelSettlement;
|
|
556
|
+
private compensateCancellation;
|
|
557
|
+
private reloadTask;
|
|
558
|
+
private settleInterruptedEvent;
|
|
559
|
+
/** Reads the paused thread snapshot when no interrupt event payload is available (recovery). */
|
|
560
|
+
private readInterruptedThreadState;
|
|
561
|
+
/**
|
|
562
|
+
* Persists a durable `missing_input` interruption for a paused clarify question.
|
|
563
|
+
*
|
|
564
|
+
* @remarks The task must survive the pause so the room can answer it; the
|
|
565
|
+
* agent resumes the same run once the answer arrives.
|
|
566
|
+
*/
|
|
567
|
+
private interruptForClarify;
|
|
568
|
+
private settleEndedRecovery;
|
|
569
|
+
private terminalOutcome;
|
|
570
|
+
private matchesExecution;
|
|
571
|
+
private failSettledTaskAwaited;
|
|
572
|
+
private withLifecycleTimeout;
|
|
573
|
+
private failSettledTask;
|
|
574
|
+
private validateExistingExecution;
|
|
575
|
+
}
|
|
576
|
+
|
|
371
577
|
/** Aggregate result of one bounded deterministic startup reconciliation. */
|
|
372
578
|
interface ProjectTaskReconciliationResult {
|
|
373
579
|
inspected: number;
|
|
@@ -397,6 +603,8 @@ interface ProjectTaskRuntime {
|
|
|
397
603
|
readonly threads: ProjectTaskThreadService;
|
|
398
604
|
/** Shared canonical Task lifecycle service. */
|
|
399
605
|
readonly lifecycle: TaskLifecycleService;
|
|
606
|
+
/** Shared canonical Project Task execution/dispatch service. */
|
|
607
|
+
readonly execution: ProjectTaskExecutionService;
|
|
400
608
|
/** Starts or joins one bounded startup reconciliation. */
|
|
401
609
|
prepareReconciliation(options?: ProjectTaskRuntimeLifecycleOptions): Promise<ProjectTaskReconciliationResult>;
|
|
402
610
|
/** Aborts runtime work and returns bounded status plus the actual drain promise. */
|