@axiom-lattice/gateway 4.3.2 → 4.4.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-ALXWP7V6.mjs → a2a-standard-P7JDL6ZA.mjs} +63 -35
- package/dist/a2a-standard-P7JDL6ZA.mjs.map +1 -0
- package/dist/{registerExposedPlugins-63EUF4VS.mjs → chunk-3XIIQ6EK.mjs} +62 -18
- package/dist/chunk-3XIIQ6EK.mjs.map +1 -0
- package/dist/chunk-526UYVNQ.mjs +157 -0
- package/dist/chunk-526UYVNQ.mjs.map +1 -0
- package/dist/chunk-73QZQQOT.mjs +43 -0
- package/dist/chunk-73QZQQOT.mjs.map +1 -0
- package/dist/{chunk-GF4GGTWJ.mjs → chunk-HVIKCUOF.mjs} +10 -7
- package/dist/chunk-HVIKCUOF.mjs.map +1 -0
- package/dist/embed/embed-page-AgentDetailSideApp-PSRQVFNR.js +1 -0
- package/dist/embed/{embed-page-AgentGovernanceWorkbench-ZNW72EEJ.js → embed-page-AgentGovernanceWorkbench-UPQHJZD7.js} +1 -1
- package/dist/embed/embed-page-MessageGraph-PDNQ67T4.js +6 -0
- package/dist/embed/{embed-page-TasksSideApp-F4XUHPTG.css → embed-page-MessageGraph-UT2TCPSO.css} +1 -1
- package/dist/embed/{embed-page-ReactChart-XS7D26VP.js → embed-page-ReactChart-25KAFLQ3.js} +1 -1
- package/dist/embed/embed-page-ReactChart-MXGF35OQ.css +1 -0
- package/dist/embed/embed-page-SkillFlow-TKBMB5VV.js +1 -0
- package/dist/embed/{embed-page-TasksSideApp-MQTUCJO4.js → embed-page-TasksSideApp-DLH5LRMS.js} +1 -1
- package/dist/embed/{embed-page-TopologyRuntimeView-2NQ3OOYI.css → embed-page-TasksSideApp-HV6DKQ26.css} +1 -1
- package/dist/embed/{embed-page-TeamWorkspace-7T2HRXLG.js → embed-page-TeamWorkspace-2WJJWF25.js} +1 -1
- package/dist/embed/{embed-page-TeamWorkspace-DXKGNQ3C.css → embed-page-TeamWorkspace-YQFWXDLI.css} +1 -1
- package/dist/embed/{embed-page-MessageGraph-TYOOATYV.css → embed-page-TopologyRuntimeView-CWOXLVFW.css} +1 -1
- package/dist/embed/{embed-page-TopologyRuntimeView-PU2D7VZ7.js → embed-page-TopologyRuntimeView-WDQRHDMO.js} +1 -1
- package/dist/embed/{embed-page-WorkflowAutomationView-ST76M33F.js → embed-page-WorkflowAutomationView-BAMJ2WVB.js} +1 -1
- package/dist/embed/embed-page-WorkflowAutomationView-YQFB3CTV.css +1 -0
- package/dist/embed/{embed-page-chunk-T25T2YE6.js → embed-page-chunk-HMTKPZ5B.js} +7 -5
- package/dist/embed/{embed-page-chunk-ZKJ7Z7P3.js → embed-page-chunk-LOXLXZNP.js} +1 -1
- package/dist/embed/{embed-page-chunk-Z4S4OYA4.js → embed-page-chunk-MQDYZS3S.js} +1 -1
- package/dist/embed/embed-page-chunk-OBM5EUWZ.js +6974 -0
- package/dist/embed/{embed-page-chunk-RLP3BC7G.js → embed-page-chunk-SSC7ANWV.js} +2 -2
- package/dist/embed/embed-page-chunk-TL2AYM76.js +2 -0
- package/dist/embed/{embed-page-chunk-LE6OFJ7R.js → embed-page-chunk-XVUA7UHE.js} +1 -1
- package/dist/embed/embed-page.js +1 -1
- package/dist/index.js +5103 -3988
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1566 -411
- package/dist/index.mjs.map +1 -1
- package/dist/{open-HH7RKGML.mjs → open-AMEMJOFJ.mjs} +99 -14
- package/dist/open-AMEMJOFJ.mjs.map +1 -0
- package/dist/{open-catalog-WYS2AENM.mjs → open-catalog-SZQ435AY.mjs} +34 -3
- package/dist/open-catalog-SZQ435AY.mjs.map +1 -0
- package/dist/{open-exposure-FK4G6O6L.mjs → open-exposure-I44Q4M3T.mjs} +37 -7
- package/dist/open-exposure-I44Q4M3T.mjs.map +1 -0
- package/dist/{open-files-GVRMK5PL.mjs → open-files-EJ6O2SGX.mjs} +4 -4
- package/dist/{open-session-3VN65PRR.mjs → open-session-LBTCU3AE.mjs} +4 -4
- package/dist/{openLattice-GAAGQJST.mjs → openLattice-Q6M5S6CY.mjs} +4 -2
- package/dist/registerExposedPlugins-6GCOE64C.mjs +11 -0
- package/dist/{resources-JFKAPS45.mjs → resources-DXPXAXEZ.mjs} +16 -9
- package/dist/{resources-JFKAPS45.mjs.map → resources-DXPXAXEZ.mjs.map} +1 -1
- package/package.json +11 -8
- package/dist/a2a-standard-ALXWP7V6.mjs.map +0 -1
- package/dist/chunk-GF4GGTWJ.mjs.map +0 -1
- package/dist/chunk-QKPZWWHH.mjs +0 -433
- package/dist/chunk-QKPZWWHH.mjs.map +0 -1
- package/dist/embed/embed-page-AgentDetailSideApp-7PQ2JKG6.js +0 -1
- package/dist/embed/embed-page-MessageGraph-P7DBTZCL.js +0 -6
- package/dist/embed/embed-page-ReactChart-VBM467ER.css +0 -1
- package/dist/embed/embed-page-SkillFlow-HPH37PZH.js +0 -1
- package/dist/embed/embed-page-WorkflowAutomationView-MAYS27YJ.css +0 -1
- package/dist/embed/embed-page-chunk-4ZSGPIBZ.js +0 -1
- package/dist/embed/embed-page-chunk-BRETUPSG.js +0 -4094
- package/dist/embed/embed-page-chunk-I42T7B7V.js +0 -2415
- package/dist/embed/embed-page-chunk-VRV57DFE.js +0 -466
- package/dist/embed/embed-page-chunk-ZXFZANZM.js +0 -1
- package/dist/mcp-configs-WCY5EXCW.mjs +0 -30
- package/dist/open-HH7RKGML.mjs.map +0 -1
- package/dist/open-catalog-WYS2AENM.mjs.map +0 -1
- package/dist/open-exposure-FK4G6O6L.mjs.map +0 -1
- package/dist/registerExposedPlugins-63EUF4VS.mjs.map +0 -1
- /package/dist/{open-files-GVRMK5PL.mjs.map → open-files-EJ6O2SGX.mjs.map} +0 -0
- /package/dist/{open-session-3VN65PRR.mjs.map → open-session-LBTCU3AE.mjs.map} +0 -0
- /package/dist/{mcp-configs-WCY5EXCW.mjs.map → openLattice-Q6M5S6CY.mjs.map} +0 -0
- /package/dist/{openLattice-GAAGQJST.mjs.map → registerExposedPlugins-6GCOE64C.mjs.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{e as _i}from"./embed-page-chunk-
|
|
1
|
+
import{e as _i}from"./embed-page-chunk-XVUA7UHE.js";import{a as cr,b as Pn}from"./embed-page-chunk-MQDYZS3S.js";import{b as Bi,c as ji}from"./embed-page-chunk-LOXLXZNP.js";import{c as bo,d as vo}from"./embed-page-chunk-KEL6XU6R.js";import{b as it,c as Pi,d as yo,e as xt,f as ho,g as Di,h as Cn,i as An,j as Li,l as Ni,m as Mi}from"./embed-page-chunk-AC6X2XRH.js";import{a as Gi}from"./embed-page-chunk-TL2AYM76.js";import{B as li,Ba as Ri,D as di,E as ci,Fa as In,G as ui,H as pi,J as uo,La as Sn,Ma as go,Na as fo,Oa as Ii,P as gi,Pa as Si,Sa as Ci,Ta as Ai,Ua as Ei,Va as mo,aa as fi,ab as Oi,ba as mi,bb as ko,ca as yi,cb as wo,db as xo,ea as hi,eb as To,fa as bi,fb as Fi,gb as Wi,h as ii,hb as Ro,ib as En,j as ai,k as $n,ka as vi,kb as dr,lb as zi,oa as ki,sa as po,t as si,ta as wi,ua as xi,va as Ti,wa as Pt}from"./embed-page-chunk-OBM5EUWZ.js";import{b as Zr,i as Vr,j as Qr,m as yt,q as ao,r as Qe}from"./embed-page-chunk-HMTKPZ5B.js";import{a as W}from"./embed-page-chunk-MB65DZAX.js";import{Cb as lo,Db as ti,Dc as ni,Fc as oi,Gc as sr,Ha as io,Hc as lr,Ia as Ke,Ja as Hr,La as We,Ma as Ur,Sc as ri,Tb as ar,U as Zt,W as ee,Wa as Yr,Y as Rn,Z as Wt,_ as mt,aa as Vt,ca as rr,da as ir,eb as Xr,fa as $r,fc as co,ia as un,la as qr,mb as Jr,na as Kr,oa as Et,ob as ei,ra as pe,ta as De,tb as so,va as wt,xa as rt,ya as Fe,yc as Qt}from"./embed-page-chunk-O4QK5LWZ.js";import{a as Re}from"./embed-page-chunk-4BKXE5ON.js";import{e as T}from"./embed-page-chunk-6Y3UYJ6Z.js";var zs={react:{label:"capability",color:"blue"},capability:{label:"capability",color:"blue"},deep_agent:{label:"orchestrator",color:"orange"},orchestrator:{label:"orchestrator",color:"orange"},team:{label:"team",color:"green"},processing:{label:"workflow",color:"purple"},workflow:{label:"workflow",color:"purple"},a2a_remote:{label:"remote",color:"cyan"},remote:{label:"remote",color:"cyan"}};function Dn(e){return zs[e]??{label:"capability",color:"blue"}}var Bs={enabled:"green",draft:"orange",disabled:"default"};function qi(e){return Bs[e]??"default"}var $i={blue:"#3b82f6",orange:"#f59e0b",green:"#22c55e",purple:"#a855f7",cyan:"#06b6d4"};function qn(e){return $i[e]??$i.cyan}function $d(e){let t={enabled:"#22c55e",draft:"#f59e0b",disabled:"#d9d9d9"};return t[e]??t.disabled}function Ln(e){return typeof e.graphDefinition=="object"&&e.graphDefinition!==null?e.graphDefinition:{}}function pr(e){return((Ln(e).metadata??{}).tags??"").split(",").map(r=>r.trim()).filter(Boolean)}function gr(e){let o=(Ln(e).metadata??{}).version;return o?o.startsWith("v")?o:`v${o}`:"v1"}function fr(e){let o=(Ln(e).metadata??{}).status??"enabled";return o==="draft"||o==="disabled"?o:"enabled"}function ur(e){let n=Ln(e).subAgents??[],o=Array.isArray(n)?n.filter(Boolean):[];return Array.from(new Set(o))}function qd(e){return e.map(t=>{let n=Ln(t),o=String(n.type??"react");return{id:t.id,name:t.name,description:t.description,type:Dn(o).label,tags:pr(t),version:gr(t),status:fr(t),subAgents:ur(t)}})}function Kd(e){let t=new Set(e.map(r=>r.id)),n=e.map(r=>({id:r.id,label:r.name,type:Dn(String(Ln(r).type??"react")).label,subAgentCount:ur(r).length})),o=[];for(let r of e)for(let i of ur(r))t.has(i)&&o.push({source:r.id,target:i});return{nodes:n,edges:o}}var Ie=T(Re());var ne=T(Re());var h=T(W()),{TextArea:js}=De,{Text:Tt}=We,Ki=["data","execution","workflow","assistant"],Gs={data:"Data & Knowledge",execution:"Execution & Interaction",workflow:"Workflow & Orchestration",assistant:"Assistant & Evaluation",other:"Other"},Kn=(e,t)=>{if(Array.isArray(e)){let n=e.map(o=>Kn(o));return(t==="tools"||t==="subAgents")&&n.every(o=>typeof o=="string")?[...n].sort():n}return e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).sort(([n],[o])=>n.localeCompare(o)).map(([n,o])=>[n,Kn(o,n)])):e},Hi=e=>{if(typeof e!="string")return Kn(e??null);try{return Kn(JSON.parse(e))}catch{return e}},Ui=e=>JSON.stringify(Kn({...e,tools:[...e.tools].sort(),subAgents:[...e.subAgents].sort()})),$s=Ti(({token:e,css:t})=>({modalBody:t`
|
|
2
2
|
padding: 0;
|
|
3
3
|
height: 92vh;
|
|
4
4
|
width: 100%;
|
|
@@ -228,7 +228,7 @@ export function HooksExample({ currentUser }: ExampleProps) {
|
|
|
228
228
|
);
|
|
229
229
|
}`}},Ao={whiteSpace:"pre-wrap",overflow:"auto",background:"#111827",color:"#e5e7eb",padding:16,borderRadius:10},Us=[{name:"webAppId",type:"string \xB7 required",description:"Publication id (not the Agent id). Missing \u2192 the loader warns and does not start."},{name:"userId",type:"string \xB7 required",description:"Stable per-user subject. ^[A-Za-z0-9._:@-]+$, \u2264128 chars. Missing/invalid \u2192 the chat does not start and onError fires with USER_ID_REQUIRED."},{name:"gatewayUrl",type:"string",description:"Gateway URL (defaults to the loader script's own origin). Trailing slashes are trimmed."},{name:"mode",type:'"bubble" | "inline"',description:"Bubble popup (default) or embed into the containerSelector element."},{name:"containerSelector",type:"string",description:"Required for inline mode. Falls back to body with a console warning when not found."},{name:"bubble",type:"boolean \xB7 default true",description:"false = no launcher button; drive the panel with open()/hide()."},{name:"width / height",type:"number \xB7 380 / 640",description:"Bubble panel size, clamped to the viewport (min 240)."},{name:"position",type:'"bottom-right" | "bottom-left"',description:"Horizontal anchor for the launcher and panel."},{name:"offsetX / offsetY",type:"number \xB7 20",description:"Viewport margin. Nested form also supported: offset: { x, y }."},{name:"zIndex",type:"number \xB7 9999",description:"Panel stacking (the launcher sits at zIndex + 1)."},{name:"welcome",type:"string",description:"Chat empty-state welcome; overrides the publication appearance.welcomeMessage."},{name:"quicks",type:"{ label, text }[]",description:"Chat empty-state quick prompts (\u22646; label 1-40, text 1-500; invalid entries dropped). Overrides appearance.quickPrompts entirely when provided; clicking one sends its text."}],Zs=[{api:"AxiomChat.open() / hide() / toggle()",behavior:"Show, hide, or toggle the panel. No-ops in inline mode (the chat is always visible in its container)."},{api:"AxiomChat.sendMessage(text)",behavior:"Send a message programmatically \u2014 rendered in the UI like a typed message and streamed from the server. Trimmed non-empty, \u226432768 chars; automatically queued while the chat is busy; before onReady it is buffered and flushed on ready. Send failures show the chat's own inline error banner."},{api:"AxiomChat.mount(settings) / AxiomChat.get(id)",behavior:"Mount additional independent chats (different webAppIds) on one page; returns an instance handle with the full API (open/hide/toggle/sendMessage/onReady/onMessage/onError). get(id) retrieves a mounted handle; without global settings the default-instance delegates warn and no-op."}],Vs=[{event:'["onReady", cb]',payload:"\u2014",when:"The chat can send/receive (handshake complete, thread ready). Buffered sends flush immediately after."},{event:'["onMessage", cb]',payload:'{ role: "human" | "ai", content: string }',when:"Per accepted message: your sent message (server echo) and each completed AI reply (final text \u2014 not per-token). Boot-time history is not replayed; the baseline resets per thread. Structured content is not included."},{event:'["onError", cb]',payload:"{ code: string, message: string }",when:"WEB_APP_NOT_FOUND \xB7 WEB_APP_DISABLED \xB7 USER_ID_REQUIRED \xB7 PROJECT_NOT_ALLOWED \xB7 MODEL_NOT_ALLOWED \xB7 FEATURE_DISABLED \xB7 INVALID_REQUEST \xB7 STREAM_FAILED"}],Xi=({assistant:e})=>{let t=yt("__GLOBAL__"),{user:n,currentTenant:o,baseURL:r}=Qr(),{projects:i}=Pt(),[a,d]=(0,Oe.useState)([]),[l,c]=(0,Oe.useState)([]),[g,u]=(0,Oe.useState)(!1),[s,p]=(0,Oe.useState)(null),[y,f]=(0,Oe.useState)(null),[v,m]=(0,Oe.useState)(null),[w,C]=(0,Oe.useState)(!1),[A,I]=(0,Oe.useState)(null),[_,z]=(0,Oe.useState)(!1),[S,x]=(0,Oe.useState)(!1),[B,ce]=(0,Oe.useState)(null),[V,J]=(0,Oe.useState)(null),D=(0,Oe.useRef)(0),j=(0,Oe.useRef)(0),G=(0,Oe.useRef)(0),M=(0,Oe.useRef)(!1),ie=Array.from(new Map(i.map(F=>[F.id,F])).values()),E=(0,Oe.useCallback)(async()=>{let F=++D.current;u(!0),p(null);try{let P=await t.webApps.list({assistantId:e.id});F===D.current&&d(P.records)}catch(P){F===D.current&&p(Un(P))}finally{F===D.current&&u(!1)}},[e.id,t,o?.id]);(0,Oe.useEffect)(()=>(d([]),f(null),I(null),ce(null),J(null),C(!1),z(!1),x(!1),M.current=!1,G.current+=1,E(),()=>{D.current+=1,G.current+=1}),[E]),(0,Oe.useEffect)(()=>{let F=++j.current;return t.request("/api/models").then(P=>{F===j.current&&c(P.data??[])}).catch(()=>{F===j.current&&c([])}),()=>{j.current+=1}},[t]);let Y=async F=>{if(M.current)return;M.current=!0,x(!0);let P=++G.current;p(null);try{await F(),P===G.current&&await E()}catch(oe){P===G.current&&p(Un(oe))}finally{P===G.current&&(M.current=!1,x(!1))}},ue=async F=>{if(M.current)return;M.current=!0,x(!0);let P=++G.current;C(!0),m(null);try{y==="create"?await t.webApps.create(F):y&&await t.webApps.update(y.id,F),P===G.current&&(f(null),await E())}catch(oe){P===G.current&&m(Un(oe))}finally{P===G.current&&(M.current=!1,x(!1),C(!1))}},ye=async F=>{p(null);try{if(!navigator.clipboard)throw new Error("Clipboard unavailable");await navigator.clipboard.writeText(F)}catch(P){p(Un(P))}},Se=F=>[{key:"edit",icon:yi,label:"Edit",disabled:S,onClick:f},{key:"toggle",icon:F.status==="active"?ii:si,label:F.status==="active"?"Disable":"Enable",disabled:S,onClick:P=>void Y(()=>P.status==="active"?t.webApps.disable(P.id):t.webApps.enable(P.id))},{key:"preview",icon:pi,label:"Preview",disabled:S,onClick:ce},{key:"guide",icon:di,label:"Integration guide",disabled:S,onClick:J},{key:"copy",icon:li,label:"Copy Web App ID",disabled:S,onClick:P=>void ye(P.id)},{key:"delete",icon:ki,label:"Delete",danger:!0,disabled:S,onClick:I}],me=async()=>{if(!A||M.current)return;M.current=!0,x(!0);let F=++G.current;z(!0);try{await t.webApps.delete(A.id),F===G.current&&(I(null),await E())}catch(P){F===G.current&&p(Un(P))}finally{F===G.current&&(M.current=!1,x(!1),z(!1))}};return(0,ae.jsxs)("div",{style:{height:"100%",overflow:"auto",padding:16},children:[(0,ae.jsx)(Zt,{type:"warning",showIcon:!0,message:"Unverified identity",description:"Web Apps trust the external user ID supplied by the embedding application. Do not use it as proof of authentication.",style:{marginBottom:16}}),s&&(0,ae.jsx)(Zt,{role:"alert",type:"error",message:s,action:(0,ae.jsx)(ee,{size:"small",onClick:()=>void E(),children:"Retry"}),style:{marginBottom:16}}),(0,ae.jsx)(Si,{title:"Web Apps",itemName:"app",items:a,loading:g,keyExtractor:F=>F.id,createLabel:S?void 0:"Create Web App",onCreateClick:S?void 0:()=>{m(null),f("create")},renderIcon:()=>(0,ae.jsx)(ui,{size:22,color:"#6366f1"}),renderPrimary:F=>F.name,renderSecondary:F=>F.description??F.id,renderHeaderActions:F=>(0,ae.jsx)(Ke,{color:F.status==="active"?"green":F.status==="disabled"?"default":"gold",children:F.status}),renderDetails:F=>(0,ae.jsxs)(Co,{type:"secondary",children:[F.scope.allowedProjectIds.length," project",F.scope.allowedProjectIds.length===1?"":"s"," \xB7 react_sdk"]}),itemActions:Se,actionsPosition:"always",showViewToggle:!1,emptyTitle:"No Web Apps",emptyDescription:"Create a React SDK publication for this agent."}),(0,ae.jsx)(Yi,{open:y!==null,assistantId:e.id,value:y==="create"?null:y,projects:ie,models:l,submitting:w,error:v,onCancel:()=>f(null),onSubmit:ue}),(0,ae.jsx)(Fe,{title:"Delete Web App",open:A!==null,onCancel:()=>I(null),onOk:()=>void me(),okText:"Delete",okButtonProps:{danger:!0,loading:_},children:(0,ae.jsxs)("p",{children:["Delete \u201C",A?.name,"\u201D? This action cannot be undone."]})}),(0,ae.jsx)(Fe,{title:"Preview",open:B!==null,onCancel:()=>ce(null),footer:(0,ae.jsx)(ee,{onClick:()=>ce(null),children:"Close"}),width:900,children:r?B&&B.status==="active"?(0,ae.jsx)("iframe",{src:`${r}/api/web-apps/${B.id}/chat?mode=embed`,title:"Web App preview",style:{width:"100%",height:640,border:"1px solid #d9d9d9",borderRadius:8}}):B?(0,ae.jsxs)("div",{children:[(0,ae.jsx)(Zt,{type:"info",showIcon:!0,message:"Draft preview",description:"This renders the in-page console chat so you can inspect draft content. Enable the publication to preview the exact embed experience external users get.",style:{marginBottom:16}}),(0,ae.jsx)(Gi,{gatewayUrl:r,webAppId:B.id,identity:{mode:"unverified",userId:`console-preview:${n?.id??"unknown"}:${B.id}`,displayName:n?.name},fetch:Hs})]}):null:(0,ae.jsx)(Zt,{type:"warning",message:"Gateway URL unavailable"})}),(0,ae.jsx)(Fe,{title:"Integration guide",open:V!==null,onCancel:()=>J(null),footer:(0,ae.jsxs)(Et,{children:[(0,ae.jsx)(ee,{onClick:()=>V&&void ye(Object.values(Zn(V,r)).join(`
|
|
230
230
|
|
|
231
|
-
`)),children:"Copy examples"}),(0,ae.jsx)(ee,{type:"primary",onClick:()=>J(null),children:"Close"})]}),width:900,children:V&&(0,ae.jsx)($r,{defaultActiveKey:"zero-code",items:[{key:"zero-code",label:"Zero-code script loader",children:(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(We.Paragraph,{type:"secondary",style:{marginTop:0},children:"One script tag \u2014 the full Console-style chat runs in an isolated iframe on the gateway origin. No build step, no npm install."}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).embed}),(0,ae.jsx)(We.Title,{level:5,style:{marginTop:24},children:"Configuration \u2014 window.AxiomChatSettings"}),(0,ae.jsx)(io,{size:"small",style:{marginBottom:8},pagination:!1,rowKey:"name",columns:[{title:"Key",dataIndex:"name",key:"name",width:160},{title:"Type",dataIndex:"type",key:"type",width:180},{title:"Description",dataIndex:"description",key:"description"}],dataSource:Us}),(0,ae.jsx)(We.Title,{level:5,children:"JS API \u2014 window.AxiomChat"}),(0,ae.jsxs)(We.Paragraph,{type:"secondary",children:["Property and command forms are equivalent; register callbacks or actions before the loader loads with the array form (",'window.AxiomChat = [["onMessage", fn], ["open"]]'," \u2014 replayed in order on load)."]}),(0,ae.jsx)(io,{size:"small",style:{marginBottom:8},pagination:!1,rowKey:"api",columns:[{title:"API",dataIndex:"api",key:"api",width:280},{title:"Behavior",dataIndex:"behavior",key:"behavior"}],dataSource:Zs}),(0,ae.jsx)(We.Title,{level:5,children:"Events"}),(0,ae.jsx)(io,{size:"small",style:{marginBottom:8},pagination:!1,rowKey:"event",columns:[{title:"Register",dataIndex:"event",key:"event",width:220},{title:"Payload",dataIndex:"payload",key:"payload",width:280},{title:"When",dataIndex:"when",key:"when"}],dataSource:Vs}),(0,ae.jsx)(Zt,{style:{marginTop:8},type:"warning",showIcon:!0,message:"Host trust and limits",description:"The host page can send messages and read new conversation content \u2014 only embed on trusted pages. One streaming reply at a time; loading the loader twice is unsupported. Not available yet: unread callbacks, runtime theme updates, verified setIdentity, token-level streaming events."})]})},{key:"npm-sdk",label:"npm SDK",children:(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(We.Paragraph,{type:"secondary",style:{marginTop:0},children:"React applications \u2014 the same chat stack as a first-class component in your page, fully composable."}),(0,ae.jsx)(Co,{strong:!0,children:"Full chat \u2014 AgentChatApp"}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).agentChat}),(0,ae.jsx)(Co,{strong:!0,children:"Composable widgets"}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).composable}),(0,ae.jsx)(Co,{strong:!0,children:"Hooks"}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).hooks})]})}]})})]})};var q=T(Re());var Qs={agent:{color:"agent"},tool:{color:"#06b6d4",section:"tools"},capability:{color:"#6366f1",section:"middleware"},subagent:{color:"#22c55e",section:"subagents"},skill:{color:"#a855f7",section:"skills"},model:{color:"#8c8c8c"},eval:{color:"#f59e0b"}};function Po(e){let t=Qs[e];return e==="agent"?"agent":t.color}function Ys(e){return typeof e=="object"&&e!==null?e:{}}var Eo=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):[],mr="skill:__all__";function Xs(e){let t=[],n=new Set,o=a=>{n.has(a)||(n.add(a),t.push(a))};for(let a of Eo(e.skills))o(a);let r=!1,i=Array.isArray(e.middleware)?e.middleware:[];for(let a of i){if(a.enabled===!1||a.type!=="skill")continue;let d=typeof a.config=="object"&&a.config!==null?a.config:{};d.readAll===!0&&(r=!0);for(let l of Eo(d.skills))o(l)}return{ids:t,readAll:r}}function Ji(e,t){let n=Ys(e),o=typeof n.key=="string"?n.key:"agent",r=n.type??"capability",i={id:o,type:"agent",label:n.name||o,description:n.description||void 0,config:{name:n.name||o,type:r,description:n.description||"",modelKey:n.modelKey||"",prompt:n.prompt||"",version:n.metadata?.version||""}},a=(f,v,m,w,C)=>({id:v,type:f,label:m,description:w,config:C}),d=Eo(n.tools).map(f=>a("tool",`tool:${f}`,f)),l=(Array.isArray(n.middleware)?n.middleware:[]).filter(f=>f.enabled!==!1).map(f=>{let v=typeof f.type=="string"?f.type:"unknown";return a("capability",`cap:${v}`,f.name||v,f.description||void 0,f)}),c=Eo(n.subAgents).map(f=>a("subagent",`sub:${f}`,f)),{ids:g,readAll:u}=Xs(n),s=[...u?[a("skill",mr,"All skills","Agent can load any available skill")]:[],...g.map(f=>a("skill",`skill:${f}`,f))],p=[{id:"group:tools",type:"tool",label:"Tools",items:d},{id:"group:capabilities",type:"capability",label:"Capabilities",items:l},{id:"group:subagents",type:"subagent",label:"Sub-Agents",items:c},{id:"group:skills",type:"skill",label:"Skills",items:s}],y=t?.includeEmptyGroups?p:p.filter(f=>f.items.length>0);return{agent:i,groups:y}}var ea=T(W()),Vn=({id:e,position:t,type:n="source"})=>(0,ea.jsx)(xt,{id:e,type:n,position:t,style:{opacity:0,width:0,height:0,border:"none"},isConnectable:!1});var Yt=T(W()),Do={agent:(0,Yt.jsx)($n,{size:14}),tool:(0,Yt.jsx)(wi,{size:12}),capability:(0,Yt.jsx)(ai,{size:12}),subagent:(0,Yt.jsx)($n,{size:12}),skill:(0,Yt.jsx)(gi,{size:12}),model:(0,Yt.jsx)(ci,{size:12}),eval:(0,Yt.jsx)(uo,{size:12})},ta={agent:"Agent",tool:"Tool",capability:"Capability",subagent:"Sub-Agent",skill:"Skill",model:"Model",eval:"Eval Suite"};var xe=T(W()),na=({type:e="source"})=>(0,xe.jsxs)(xe.Fragment,{children:[(0,xe.jsx)(Vn,{id:"top",position:it.Top,type:e}),(0,xe.jsx)(Vn,{id:"bottom",position:it.Bottom,type:e}),(0,xe.jsx)(Vn,{id:"left",position:it.Left,type:e}),(0,xe.jsx)(Vn,{id:"right",position:it.Right,type:e})]}),oa=({data:e})=>{let{node:t,onClick:n}=e,o=qn(Dn(String(t.config?.type??"react")).color),r=t.config??{};return(0,xe.jsxs)("div",{onClick:n,style:{width:220,background:"#fff",border:`2px solid ${o}`,borderRadius:14,padding:"10px 12px",cursor:"pointer",fontFamily:"inherit"},children:[(0,xe.jsx)(na,{type:"source"}),(0,xe.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[Do.agent,(0,xe.jsx)("span",{style:{fontSize:13,fontWeight:700,color:"#333",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t.label})]}),r.description&&(0,xe.jsx)("div",{style:{fontSize:11,color:"rgba(0,0,0,0.55)",marginBottom:6,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:r.description}),(0,xe.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:6},children:[(0,xe.jsx)(Ke,{bordered:!1,style:{margin:0,fontSize:10,background:`${o}1A`,color:o},children:r.type??"capability"}),r.modelKey&&(0,xe.jsx)(Ke,{bordered:!1,style:{margin:0,fontSize:10},children:r.modelKey}),r.version&&(0,xe.jsxs)(Ke,{bordered:!1,style:{margin:0,fontSize:10},children:["v",r.version]})]}),r.prompt&&(0,xe.jsx)("div",{style:{fontSize:10,color:"#999",background:"#fafafa",borderRadius:6,padding:"4px 8px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.prompt})]})},ra=({data:e})=>{let{group:t,onClick:n,onRemove:o}=e,r=Po(t.type);return(0,xe.jsxs)("div",{style:{border:`1.5px dashed ${r}66`,borderRadius:12,padding:"10px 12px",background:"rgba(255,255,255,0.8)",minWidth:170},children:[(0,xe.jsx)(na,{type:"target"}),(0,xe.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,marginBottom:8},children:[Do[t.type],(0,xe.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"#666"},children:t.label}),(0,xe.jsxs)("span",{style:{fontSize:10,color:"#bbb"},children:["(",t.items.length,")"]})]}),t.items.length===0?(0,xe.jsx)("div",{style:{fontSize:10,color:"#bbb",padding:"2px 0"},children:"empty"}):(0,xe.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:t.items.map(i=>(0,xe.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,xe.jsxs)("div",{onClick:a=>{a.stopPropagation(),n?.(i)},style:{display:"flex",alignItems:"center",gap:5,padding:"4px 8px",borderRadius:8,background:"#fff",border:`1px solid ${r}55`,fontSize:11,color:"#333",cursor:"pointer",position:"relative",whiteSpace:"nowrap"},children:[Do[i.type],(0,xe.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:i.label})]}),o&&(0,xe.jsx)("button",{onClick:a=>{a.stopPropagation(),o(i)},title:`Remove ${i.label}`,style:{width:14,height:14,borderRadius:"50%",border:"none",background:"transparent",color:"#ccc",fontSize:9,lineHeight:1,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",padding:0,flexShrink:0},children:"\u2715"})]},i.id))})]})};var jt=T(Re());function zt(e,t){let n=new Date(e.createdAt).getTime(),o=new Date(t.createdAt).getTime(),r=Number.isFinite(n),i=Number.isFinite(o);return r&&!i?-1:!r&&i?1:r&&i&&n!==o?n-o:e.id<t.id?-1:e.id>t.id?1:0}function ia(e){return{runId:e.id,score:e.avgScore,passRate:e.totalCases>0?Math.round(e.passedCases/e.totalCases*100):null,createdAt:e.createdAt,...e.taskId?{taskId:e.taskId}:{}}}function aa(e,t=1){let n=Number.isFinite(t)?Math.abs(t):1,o=e.filter(y=>Number.isFinite(y.avgScore)&&Number.isFinite(new Date(y.createdAt).getTime())).sort(zt),r=o.filter(y=>y.status==="completed"&&!y.holdout),i=r[r.length-1],a=i?.envProjectId!==void 0,l=(a?r.filter(y=>y.envProjectId===i.envProjectId):r).map(ia),c=o.filter(y=>y.status==="completed"&&y.holdout).map(ia),g=l[l.length-1],u=l[l.length-2],s=g&&u?g.score-u.score:null,p="needs-evidence";return s!==null&&(p=s>n?"improving":s<-n?"regressed":"stable"),{verdict:p,latest:g,previous:u,delta:s,passRate:g?.passRate??null,comparisonLabel:a?"Latest comparable result":"Latest recorded result",trend:l,validationTrend:c,runningRuns:o.filter(y=>y.status==="running"),failedRuns:o.filter(y=>y.status==="failed"||y.status==="aborted")}}var Bt=T(Re()),sa=T(W()),gn=({option:e,height:t=200,onEvents:n})=>{let o=(0,Bt.useRef)(null),r=(0,Bt.useRef)(null),i=(0,Bt.useRef)(e),a=(0,Bt.useRef)(n);return(0,Bt.useEffect)(()=>{i.current=e,r.current?.setOption(e,!0)},[e]),(0,Bt.useEffect)(()=>{a.current=n;let d=r.current;if(!d||!n)return;let l=Object.entries(n);for(let[c,g]of l)d.on(c,g);return()=>{for(let[c,g]of l)d.off(c,g)}},[n]),(0,Bt.useEffect)(()=>{let d=!1,l=null;return(async()=>{let c=await import("./embed-page-echarts-7KZDMH4F.js");if(d||!o.current)return;let g=c.init(o.current);r.current=g,g.setOption(i.current,!0);let u=a.current;if(u)for(let[s,p]of Object.entries(u))g.on(s,p);l=new ResizeObserver(()=>r.current?.resize()),l.observe(o.current)})().catch(c=>{console.error("[EChart] async init failed:",c)}),()=>{d=!0,l?.disconnect(),r.current?.dispose(),r.current=null}},[]),(0,sa.jsx)("div",{ref:o,style:{width:"100%",height:t}})};var ga=T(W()),la={total:0,last7d:0,last30d:0,lastActive:null,daily7d:[],daily30d:[],loading:!0,error:null},yr=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),da=(e,t)=>{if(!(typeof e=="string"||typeof e=="number"||e instanceof Date))return null;let n=new Date(e).getTime();return Number.isFinite(n)&&n<=t?n:null},Js=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),ca=e=>{let t=Js(e);return Math.floor(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())/864e5)},el=(e,t)=>ca(e)-ca(t);function ua(e){let{get:t}=Qe(),[n,o]=jt.default.useState(la),r=jt.default.useRef(0),i=jt.default.useRef(e);return i.current=e,jt.default.useEffect(()=>{let a=++r.current,d=!0,l=()=>d&&r.current===a&&i.current===e;return o(c=>({...c,loading:!0,error:null})),(async()=>{try{let c=await t(`/api/assistants/${e}/threads`);if(!yr(c)||c.success!==!0||!yr(c.data))throw new Error("Invalid thread list response");let{records:g,total:u}=c.data;if(!Array.isArray(g)||typeof u!="number"||!Number.isSafeInteger(u)||u<0)throw new Error("Invalid thread list response");let s=Date.now(),p=new Date(s),y=null,f=0,v=0,m=new Array(7).fill(0),w=new Array(30).fill(0);for(let C of g){if(!yr(C))continue;let A=da(C.createdAt,s);if(A!==null){let _=el(p,new Date(A));_>=0&&_<7&&(f++,m[6-_]++),_>=0&&_<30&&(v++,w[29-_]++)}let I=da(C.updatedAt,s);I!==null&&(y===null||I>y)&&(y=I)}if(!l())return;o({total:u,last7d:f,last30d:v,lastActive:y===null?null:new Date(y),daily7d:m,daily30d:w,loading:!1,error:null})}catch(c){if(!l())return;o({...la,loading:!1,error:c instanceof Error?c:new Error("Failed to load thread activity")})}})(),()=>{d=!1,r.current===a&&r.current++}},[t,e]),n}function Lo(e){if(!e)return"\u2014";let t=Date.now()-e.getTime(),n=Math.floor(t/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let o=Math.floor(n/60);if(o<24)return`${o}h ago`;let r=Math.floor(o/24);return r<30?`${r}d ago`:r<365?`${Math.floor(r/30)}mo ago`:`${Math.floor(r/365)}y ago`}function No(e){let{projects:t,loading:n,error:o,refresh:r}=mo(),i=Io(t,e),a=i?.id??"",{suites:d,loading:l,error:c,refresh:g}=Sn(a),{runs:u,inventoryProjectId:s,loading:p,error:y,refresh:f}=go(a),v=(0,jt.useCallback)(async()=>{await Promise.all([r(),g(),f()])},[r,g,f]);return{...(0,jt.useMemo)(()=>{let w=d.reduce((z,S)=>z+(S.caseCount??0),0),C=s===a?u.filter(z=>z.projectId===a):[],A=[...C].sort(zt),I=aa(C),_=I.latest?C.find(z=>z.id===I.latest?.runId):void 0;return{evalProjectId:i?.id,inventoryProjectId:s,suiteCount:d.length,caseCount:w,scores:I.trend.map(z=>z.score),latest:_,runs:A,runCount:C.length,passRate:I.passRate,score:I.latest?.score??null,hasEvalProject:!!i,suiteNames:d.map(z=>z.name??"Unnamed").filter(Boolean),error:o??c??y,loading:!!(n||a&&(s!==a||l||p))}},[d,u,s,i,a,n,l,p,o,c,y]),refresh:v,refreshRuns:f}}var tl=(e,t=new Date)=>{let n=[];for(let o=e-1;o>=0;o--){let r=new Date(t.getFullYear(),t.getMonth(),t.getDate()-o);n.push([String(r.getFullYear()).padStart(4,"0"),String(r.getMonth()+1).padStart(2,"0"),String(r.getDate()).padStart(2,"0")].join("-"))}return n},nl=e=>tl(e).map(t=>t.slice(5)),ol="#6366f1";var rl={left:8,right:8,top:24,bottom:24,containLabel:!0};function pa(e){return{grid:rl,tooltip:{trigger:"axis"},xAxis:{type:"category",data:nl(e.length),axisLabel:{fontSize:9,interval:4,color:"#999"},axisLine:{lineStyle:{color:"#eee"}}},yAxis:{type:"value",minInterval:1,axisLabel:{fontSize:9,color:"#999"},splitLine:{lineStyle:{color:"#f5f5f5"}}},series:[{type:"bar",data:e,itemStyle:{color:ol,borderRadius:[2,2,0,0]},barMaxWidth:10}]}}var Yn=T(Re());var fn=T(W()),fa=({values:e,width:t=120,height:n=32,color:o="#6366f1",placeholderColor:r="#e5e5e5"})=>{if(e.length===0)return null;let i=Math.max(...e,1),a=t/e.length,d=a>4?1:0,l=2;return(0,fn.jsx)("svg",{width:t,height:n,style:{display:"block"},children:e.map((c,g)=>{let u=Math.max(c/i*n,l);return(0,fn.jsx)("rect",{x:g*a,y:n-u,width:Math.max(a-d,1),height:u,fill:c===0?r:o,rx:1},g)})})},ma=({values:e,width:t=200,height:n=40,color:o="#6366f1"})=>{if(e.length===0)return null;let r=Math.min(...e),a=Math.max(...e)-r||1,d=2,l=t-d*2,c=s=>e.length===1?t/2:d+s/(e.length-1)*l,g=s=>n-2-(s-r)/a*(n-4),u=e.map((s,p)=>`${c(p)},${g(s)}`).join(" ");return(0,fn.jsxs)("svg",{width:t,height:n,style:{display:"block"},children:[(0,fn.jsx)("polyline",{points:u,fill:"none",stroke:o,strokeWidth:"1.5",strokeLinecap:"round"}),e.map((s,p)=>(0,fn.jsx)("circle",{cx:c(p),cy:g(s),r:"2.5",fill:o},p))]})};var ze=T(Re());var Jt=T(Re());var Mo=T(Re());var Xt=T(W()),ya=({projectId:e,value:t,onChange:n})=>{let{uploadFileToProject:o}=Pt(),[r,i]=(0,Mo.useState)([]),a=(0,Mo.useRef)(e);a.current=e;let d=t.map(u=>({uid:u.uri,name:u.name||u.uri,status:"done",response:{uri:u.uri,name:u.name}})),l=async u=>{let s=u.file;try{let p=await o(e,"/project/uploads",s);u.onSuccess?.({uri:p.path,name:s.name,projectId:e})}catch(p){u.onError?.(p instanceof Error?p:new Error("Upload failed"))}},c=u=>{let{file:s}=u;if(s.status==="done"&&s.response?.uri){if(s.response.projectId&&s.response.projectId!==a.current){i(u.fileList.filter(y=>y.status==="uploading"||y.status==="error"));return}let p={uri:s.response.uri,name:s.response.name||s.name,addedBy:"user"};t.some(y=>y.uri===p.uri)||n([...t,p])}s.status==="error"&&rt.error(`Failed to upload "${s.name}"`),i(u.fileList.filter(p=>p.status==="uploading"||p.status==="error"))},g=u=>{if(u.status==="done"){let s=u.response?.uri;n(t.filter(p=>p.uri!==s&&p.name!==u.name))}else i(s=>s.filter(p=>p.uid!==u.uid))};return(0,Xt.jsx)("div",{"data-testid":"reference-files-field",children:(0,Xt.jsxs)(Ur.Dragger,{multiple:!0,fileList:[...d,...r],customRequest:l,onChange:c,onRemove:g,style:{padding:"8px 0"},children:[(0,Xt.jsx)("p",{className:"ant-upload-drag-icon",style:{marginBottom:4},children:(0,Xt.jsx)(fi,{size:24,style:{color:"#6366f1"}})}),(0,Xt.jsx)("p",{className:"ant-upload-text",style:{fontSize:13},children:"Click or drag files to this area to upload"}),(0,Xt.jsx)("p",{className:"ant-upload-hint",style:{fontSize:12},children:"Files are stored in the selected project under /project/uploads"})]},e)})};function Nn(e){return(e.metadata??{}).trainingRound===!0}function Su(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t.toString(36).slice(0,6)}function Oo(e){return["pending","in_progress","review"].includes(e.status)}function Mn(e,t){return`/api/tasks?${`ownerId=agent-architect&metadata=${encodeURIComponent(JSON.stringify({trainingRound:"true",targetAgentId:e}))}`}${t?`&projectId=${t}`:""}`}function il(e,t){return`/api/tasks?${`ownerId=agent-architect&parentId=${e}`}${t?`&projectId=${t}`:""}`}function ha(e,t){return`${e}:${t}`}async function ba(e){let t=e.projectId?{headers:{"x-project-id":e.projectId}}:void 0,o=(await e.post("/api/tasks",{title:e.goal.slice(0,60),description:e.goal,ownerType:"agent",ownerId:"agent-architect",workspaceId:e.workspaceId??void 0,projectId:e.projectId??void 0,metadata:{trainingRound:!0,targetAgentId:e.targetAgentId},files:e.files&&e.files.length>0?e.files:void 0},t)).data;if(!o)throw new Error("Failed to create learning round task");let r=e.existingThreadId??null;if(!r&&(r=(await e.post("/api/assistants/agent-architect/threads",{metadata:{training:!0,targetAgentId:e.targetAgentId}})).data?.id??null,!r))throw new Error("Failed to create training thread");return await e.put(`/api/tasks/${o.id}`,{metadata:{trainingRound:!0,targetAgentId:e.targetAgentId,trainingSessionId:r}},t),{roundTaskId:o.id,threadId:r}}function va(e){let t=e.graphDefinition,n=t;if(typeof t=="string")try{n=JSON.parse(t)}catch{n={}}let o=n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{},r=o.metadata!==null&&typeof o.metadata=="object"&&!Array.isArray(o.metadata)?o.metadata:{};return r.learningPlaceholder==="true"&&r.architectureStatus==="undecided"?"placeholder":o.type==="workflow"?"existing-workflow":"existing-agent"}function ka(e){let t=e.targetMode==="placeholder"?"This is a marked learning placeholder and its architecture is undecided. Select and explicitly approve its initial architecture, then materialize this exact ID through agent-build or design-workflow.":e.targetMode==="existing-workflow"?"This is an existing Workflow. Keep its architecture and use the design-workflow procedure skill for exact-ID update_workflow followed by validate_workflow.":"This is an existing Capability or Orchestra. Keep its architecture and use the agent-build procedure skill for a same-form exact-ID update_agent.";return[`Learning goal: ${e.goal}`,`Exact target ID: "${e.targetAgentId}".`,`Exact round Task ID: "${e.roundTaskId}".`,t,"Load [[agent-architecture]] and the routed procedure skill.",`Reconcile the round task itself first: one manage_task update on task "${e.roundTaskId}" that writes the confirmed Objective / Acceptance Criteria / Belief State into its description before creating any child. Keep reconciling this same task as evidence arrives. Never create a parallel replacement main task. For status transitions always use manage_task set_status, never update with a status field.`,"The round task's Acceptance Criteria MUST include the eval quality bar as decidable criteria \u2014 all development eval cases pass, and hold-out pass rate \u2265 80% baseline per [[eval-verify]] / [[completion-gate]]. The round task is completed only when these criteria are met by evidence; a low eval score means keep iterating the FEP loop, never mark complete.",`Create your work as children of the round task with parentId: "${e.roundTaskId}" and ownerType: "agent".`,`Pass taskId: "${e.roundTaskId}" to every Eval run for this round.`,...e.files?.length?[`Reference files: ${e.files.map(n=>`${n.name||n.uri} (${n.uri})`).join(", ")}. Read them before designing; in your first reply state which files you actually read and what you took from each.`]:[]].join(`
|
|
231
|
+
`)),children:"Copy examples"}),(0,ae.jsx)(ee,{type:"primary",onClick:()=>J(null),children:"Close"})]}),width:900,children:V&&(0,ae.jsx)($r,{defaultActiveKey:"zero-code",items:[{key:"zero-code",label:"Zero-code script loader",children:(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(We.Paragraph,{type:"secondary",style:{marginTop:0},children:"One script tag \u2014 the full Console-style chat runs in an isolated iframe on the gateway origin. No build step, no npm install."}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).embed}),(0,ae.jsx)(We.Title,{level:5,style:{marginTop:24},children:"Configuration \u2014 window.AxiomChatSettings"}),(0,ae.jsx)(io,{size:"small",style:{marginBottom:8},pagination:!1,rowKey:"name",columns:[{title:"Key",dataIndex:"name",key:"name",width:160},{title:"Type",dataIndex:"type",key:"type",width:180},{title:"Description",dataIndex:"description",key:"description"}],dataSource:Us}),(0,ae.jsx)(We.Title,{level:5,children:"JS API \u2014 window.AxiomChat"}),(0,ae.jsxs)(We.Paragraph,{type:"secondary",children:["Property and command forms are equivalent; register callbacks or actions before the loader loads with the array form (",'window.AxiomChat = [["onMessage", fn], ["open"]]'," \u2014 replayed in order on load)."]}),(0,ae.jsx)(io,{size:"small",style:{marginBottom:8},pagination:!1,rowKey:"api",columns:[{title:"API",dataIndex:"api",key:"api",width:280},{title:"Behavior",dataIndex:"behavior",key:"behavior"}],dataSource:Zs}),(0,ae.jsx)(We.Title,{level:5,children:"Events"}),(0,ae.jsx)(io,{size:"small",style:{marginBottom:8},pagination:!1,rowKey:"event",columns:[{title:"Register",dataIndex:"event",key:"event",width:220},{title:"Payload",dataIndex:"payload",key:"payload",width:280},{title:"When",dataIndex:"when",key:"when"}],dataSource:Vs}),(0,ae.jsx)(Zt,{style:{marginTop:8},type:"warning",showIcon:!0,message:"Host trust and limits",description:"The host page can send messages and read new conversation content \u2014 only embed on trusted pages. One streaming reply at a time; loading the loader twice is unsupported. Not available yet: unread callbacks, runtime theme updates, verified setIdentity, token-level streaming events."})]})},{key:"npm-sdk",label:"npm SDK",children:(0,ae.jsxs)(ae.Fragment,{children:[(0,ae.jsx)(We.Paragraph,{type:"secondary",style:{marginTop:0},children:"React applications \u2014 the same chat stack as a first-class component in your page, fully composable."}),(0,ae.jsx)(Co,{strong:!0,children:"Full chat \u2014 AgentChatApp"}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).agentChat}),(0,ae.jsx)(Co,{strong:!0,children:"Composable widgets"}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).composable}),(0,ae.jsx)(Co,{strong:!0,children:"Hooks"}),(0,ae.jsx)("pre",{style:Ao,children:Zn(V,r).hooks})]})}]})})]})};var q=T(Re());var Qs={agent:{color:"agent"},tool:{color:"#06b6d4",section:"tools"},capability:{color:"#6366f1",section:"middleware"},subagent:{color:"#22c55e",section:"subagents"},skill:{color:"#a855f7",section:"skills"},model:{color:"#8c8c8c"},eval:{color:"#f59e0b"}};function Po(e){let t=Qs[e];return e==="agent"?"agent":t.color}function Ys(e){return typeof e=="object"&&e!==null?e:{}}var Eo=e=>Array.isArray(e)?e.filter(t=>typeof t=="string"):[],mr="skill:__all__";function Xs(e){let t=[],n=new Set,o=a=>{n.has(a)||(n.add(a),t.push(a))};for(let a of Eo(e.skills))o(a);let r=!1,i=Array.isArray(e.middleware)?e.middleware:[];for(let a of i){if(a.enabled===!1||a.type!=="skill")continue;let d=typeof a.config=="object"&&a.config!==null?a.config:{};d.readAll===!0&&(r=!0);for(let l of Eo(d.skills))o(l)}return{ids:t,readAll:r}}function Ji(e,t){let n=Ys(e),o=typeof n.key=="string"?n.key:"agent",r=n.type??"capability",i={id:o,type:"agent",label:n.name||o,description:n.description||void 0,config:{name:n.name||o,type:r,description:n.description||"",modelKey:n.modelKey||"",prompt:n.prompt||"",version:n.metadata?.version||""}},a=(f,v,m,w,C)=>({id:v,type:f,label:m,description:w,config:C}),d=Eo(n.tools).map(f=>a("tool",`tool:${f}`,f)),l=(Array.isArray(n.middleware)?n.middleware:[]).filter(f=>f.enabled!==!1).map(f=>{let v=typeof f.type=="string"?f.type:"unknown";return a("capability",`cap:${v}`,f.name||v,f.description||void 0,f)}),c=Eo(n.subAgents).map(f=>a("subagent",`sub:${f}`,f)),{ids:g,readAll:u}=Xs(n),s=[...u?[a("skill",mr,"All skills","Agent can load any available skill")]:[],...g.map(f=>a("skill",`skill:${f}`,f))],p=[{id:"group:tools",type:"tool",label:"Tools",items:d},{id:"group:capabilities",type:"capability",label:"Capabilities",items:l},{id:"group:subagents",type:"subagent",label:"Sub-Agents",items:c},{id:"group:skills",type:"skill",label:"Skills",items:s}],y=t?.includeEmptyGroups?p:p.filter(f=>f.items.length>0);return{agent:i,groups:y}}var ea=T(W()),Vn=({id:e,position:t,type:n="source"})=>(0,ea.jsx)(xt,{id:e,type:n,position:t,style:{opacity:0,width:0,height:0,border:"none"},isConnectable:!1});var Yt=T(W()),Do={agent:(0,Yt.jsx)($n,{size:14}),tool:(0,Yt.jsx)(wi,{size:12}),capability:(0,Yt.jsx)(ai,{size:12}),subagent:(0,Yt.jsx)($n,{size:12}),skill:(0,Yt.jsx)(gi,{size:12}),model:(0,Yt.jsx)(ci,{size:12}),eval:(0,Yt.jsx)(uo,{size:12})},ta={agent:"Agent",tool:"Tool",capability:"Capability",subagent:"Sub-Agent",skill:"Skill",model:"Model",eval:"Eval Suite"};var xe=T(W()),na=({type:e="source"})=>(0,xe.jsxs)(xe.Fragment,{children:[(0,xe.jsx)(Vn,{id:"top",position:it.Top,type:e}),(0,xe.jsx)(Vn,{id:"bottom",position:it.Bottom,type:e}),(0,xe.jsx)(Vn,{id:"left",position:it.Left,type:e}),(0,xe.jsx)(Vn,{id:"right",position:it.Right,type:e})]}),oa=({data:e})=>{let{node:t,onClick:n}=e,o=qn(Dn(String(t.config?.type??"react")).color),r=t.config??{};return(0,xe.jsxs)("div",{onClick:n,style:{width:220,background:"#fff",border:`2px solid ${o}`,borderRadius:14,padding:"10px 12px",cursor:"pointer",fontFamily:"inherit"},children:[(0,xe.jsx)(na,{type:"source"}),(0,xe.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[Do.agent,(0,xe.jsx)("span",{style:{fontSize:13,fontWeight:700,color:"#333",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t.label})]}),r.description&&(0,xe.jsx)("div",{style:{fontSize:11,color:"rgba(0,0,0,0.55)",marginBottom:6,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:r.description}),(0,xe.jsxs)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:6},children:[(0,xe.jsx)(Ke,{bordered:!1,style:{margin:0,fontSize:10,background:`${o}1A`,color:o},children:r.type??"capability"}),r.modelKey&&(0,xe.jsx)(Ke,{bordered:!1,style:{margin:0,fontSize:10},children:r.modelKey}),r.version&&(0,xe.jsxs)(Ke,{bordered:!1,style:{margin:0,fontSize:10},children:["v",r.version]})]}),r.prompt&&(0,xe.jsx)("div",{style:{fontSize:10,color:"#999",background:"#fafafa",borderRadius:6,padding:"4px 8px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:r.prompt})]})},ra=({data:e})=>{let{group:t,onClick:n,onRemove:o}=e,r=Po(t.type);return(0,xe.jsxs)("div",{style:{border:`1.5px dashed ${r}66`,borderRadius:12,padding:"10px 12px",background:"rgba(255,255,255,0.8)",minWidth:170},children:[(0,xe.jsx)(na,{type:"target"}),(0,xe.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:5,marginBottom:8},children:[Do[t.type],(0,xe.jsx)("span",{style:{fontSize:11,fontWeight:600,color:"#666"},children:t.label}),(0,xe.jsxs)("span",{style:{fontSize:10,color:"#bbb"},children:["(",t.items.length,")"]})]}),t.items.length===0?(0,xe.jsx)("div",{style:{fontSize:10,color:"#bbb",padding:"2px 0"},children:"empty"}):(0,xe.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:4},children:t.items.map(i=>(0,xe.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4},children:[(0,xe.jsxs)("div",{onClick:a=>{a.stopPropagation(),n?.(i)},style:{display:"flex",alignItems:"center",gap:5,padding:"4px 8px",borderRadius:8,background:"#fff",border:`1px solid ${r}55`,fontSize:11,color:"#333",cursor:"pointer",position:"relative",whiteSpace:"nowrap"},children:[Do[i.type],(0,xe.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:i.label})]}),o&&(0,xe.jsx)("button",{onClick:a=>{a.stopPropagation(),o(i)},title:`Remove ${i.label}`,style:{width:14,height:14,borderRadius:"50%",border:"none",background:"transparent",color:"#ccc",fontSize:9,lineHeight:1,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",padding:0,flexShrink:0},children:"\u2715"})]},i.id))})]})};var jt=T(Re());function zt(e,t){let n=new Date(e.createdAt).getTime(),o=new Date(t.createdAt).getTime(),r=Number.isFinite(n),i=Number.isFinite(o);return r&&!i?-1:!r&&i?1:r&&i&&n!==o?n-o:e.id<t.id?-1:e.id>t.id?1:0}function ia(e){return{runId:e.id,score:e.avgScore,passRate:e.totalCases>0?Math.round(e.passedCases/e.totalCases*100):null,createdAt:e.createdAt,...e.taskId?{taskId:e.taskId}:{}}}function aa(e,t=1){let n=Number.isFinite(t)?Math.abs(t):1,o=e.filter(y=>Number.isFinite(y.avgScore)&&Number.isFinite(new Date(y.createdAt).getTime())).sort(zt),r=o.filter(y=>y.status==="completed"&&!y.holdout),i=r[r.length-1],a=i?.envProjectId!==void 0,l=(a?r.filter(y=>y.envProjectId===i.envProjectId):r).map(ia),c=o.filter(y=>y.status==="completed"&&y.holdout).map(ia),g=l[l.length-1],u=l[l.length-2],s=g&&u?g.score-u.score:null,p="needs-evidence";return s!==null&&(p=s>n?"improving":s<-n?"regressed":"stable"),{verdict:p,latest:g,previous:u,delta:s,passRate:g?.passRate??null,comparisonLabel:a?"Latest comparable result":"Latest recorded result",trend:l,validationTrend:c,runningRuns:o.filter(y=>y.status==="running"),failedRuns:o.filter(y=>y.status==="failed"||y.status==="aborted")}}var Bt=T(Re()),sa=T(W()),gn=({option:e,height:t=200,onEvents:n})=>{let o=(0,Bt.useRef)(null),r=(0,Bt.useRef)(null),i=(0,Bt.useRef)(e),a=(0,Bt.useRef)(n);return(0,Bt.useEffect)(()=>{i.current=e,r.current?.setOption(e,!0)},[e]),(0,Bt.useEffect)(()=>{a.current=n;let d=r.current;if(!d||!n)return;let l=Object.entries(n);for(let[c,g]of l)d.on(c,g);return()=>{for(let[c,g]of l)d.off(c,g)}},[n]),(0,Bt.useEffect)(()=>{let d=!1,l=null;return(async()=>{let c=await import("./embed-page-echarts-7KZDMH4F.js");if(d||!o.current)return;let g=c.init(o.current);r.current=g,g.setOption(i.current,!0);let u=a.current;if(u)for(let[s,p]of Object.entries(u))g.on(s,p);l=new ResizeObserver(()=>r.current?.resize()),l.observe(o.current)})().catch(c=>{console.error("[EChart] async init failed:",c)}),()=>{d=!0,l?.disconnect(),r.current?.dispose(),r.current=null}},[]),(0,sa.jsx)("div",{ref:o,style:{width:"100%",height:t}})};var ga=T(W()),la={total:0,last7d:0,last30d:0,lastActive:null,daily7d:[],daily30d:[],loading:!0,error:null},yr=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),da=(e,t)=>{if(!(typeof e=="string"||typeof e=="number"||e instanceof Date))return null;let n=new Date(e).getTime();return Number.isFinite(n)&&n<=t?n:null},Js=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),ca=e=>{let t=Js(e);return Math.floor(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate())/864e5)},el=(e,t)=>ca(e)-ca(t);function ua(e){let{get:t}=Qe(),[n,o]=jt.default.useState(la),r=jt.default.useRef(0),i=jt.default.useRef(e);return i.current=e,jt.default.useEffect(()=>{let a=++r.current,d=!0,l=()=>d&&r.current===a&&i.current===e;return o(c=>({...c,loading:!0,error:null})),(async()=>{try{let c=await t(`/api/assistants/${e}/threads`);if(!yr(c)||c.success!==!0||!yr(c.data))throw new Error("Invalid thread list response");let{records:g,total:u}=c.data;if(!Array.isArray(g)||typeof u!="number"||!Number.isSafeInteger(u)||u<0)throw new Error("Invalid thread list response");let s=Date.now(),p=new Date(s),y=null,f=0,v=0,m=new Array(7).fill(0),w=new Array(30).fill(0);for(let C of g){if(!yr(C))continue;let A=da(C.createdAt,s);if(A!==null){let _=el(p,new Date(A));_>=0&&_<7&&(f++,m[6-_]++),_>=0&&_<30&&(v++,w[29-_]++)}let I=da(C.updatedAt,s);I!==null&&(y===null||I>y)&&(y=I)}if(!l())return;o({total:u,last7d:f,last30d:v,lastActive:y===null?null:new Date(y),daily7d:m,daily30d:w,loading:!1,error:null})}catch(c){if(!l())return;o({...la,loading:!1,error:c instanceof Error?c:new Error("Failed to load thread activity")})}})(),()=>{d=!1,r.current===a&&r.current++}},[t,e]),n}function Lo(e){if(!e)return"\u2014";let t=Date.now()-e.getTime(),n=Math.floor(t/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let o=Math.floor(n/60);if(o<24)return`${o}h ago`;let r=Math.floor(o/24);return r<30?`${r}d ago`:r<365?`${Math.floor(r/30)}mo ago`:`${Math.floor(r/365)}y ago`}function No(e){let{projects:t,loading:n,error:o,refresh:r}=mo(),i=Io(t,e),a=i?.id??"",{suites:d,loading:l,error:c,refresh:g}=Sn(a),{runs:u,inventoryProjectId:s,loading:p,error:y,refresh:f}=go(a),v=(0,jt.useCallback)(async()=>{await Promise.all([r(),g(),f()])},[r,g,f]);return{...(0,jt.useMemo)(()=>{let w=d.reduce((z,S)=>z+(S.caseCount??0),0),C=s===a?u.filter(z=>z.projectId===a):[],A=[...C].sort(zt),I=aa(C),_=I.latest?C.find(z=>z.id===I.latest?.runId):void 0;return{evalProjectId:i?.id,inventoryProjectId:s,suiteCount:d.length,caseCount:w,scores:I.trend.map(z=>z.score),latest:_,runs:A,runCount:C.length,passRate:I.passRate,score:I.latest?.score??null,hasEvalProject:!!i,suiteNames:d.map(z=>z.name??"Unnamed").filter(Boolean),error:o??c??y,loading:!!(n||a&&(s!==a||l||p))}},[d,u,s,i,a,n,l,p,o,c,y]),refresh:v,refreshRuns:f}}var tl=(e,t=new Date)=>{let n=[];for(let o=e-1;o>=0;o--){let r=new Date(t.getFullYear(),t.getMonth(),t.getDate()-o);n.push([String(r.getFullYear()).padStart(4,"0"),String(r.getMonth()+1).padStart(2,"0"),String(r.getDate()).padStart(2,"0")].join("-"))}return n},nl=e=>tl(e).map(t=>t.slice(5)),ol="#6366f1";var rl={left:8,right:8,top:24,bottom:24,containLabel:!0};function pa(e){return{grid:rl,tooltip:{trigger:"axis"},xAxis:{type:"category",data:nl(e.length),axisLabel:{fontSize:9,interval:4,color:"#999"},axisLine:{lineStyle:{color:"#eee"}}},yAxis:{type:"value",minInterval:1,axisLabel:{fontSize:9,color:"#999"},splitLine:{lineStyle:{color:"#f5f5f5"}}},series:[{type:"bar",data:e,itemStyle:{color:ol,borderRadius:[2,2,0,0]},barMaxWidth:10}]}}var Yn=T(Re());var fn=T(W()),fa=({values:e,width:t=120,height:n=32,color:o="#6366f1",placeholderColor:r="#e5e5e5"})=>{if(e.length===0)return null;let i=Math.max(...e,1),a=t/e.length,d=a>4?1:0,l=2;return(0,fn.jsx)("svg",{width:t,height:n,style:{display:"block"},children:e.map((c,g)=>{let u=Math.max(c/i*n,l);return(0,fn.jsx)("rect",{x:g*a,y:n-u,width:Math.max(a-d,1),height:u,fill:c===0?r:o,rx:1},g)})})},ma=({values:e,width:t=200,height:n=40,color:o="#6366f1"})=>{if(e.length===0)return null;let r=Math.min(...e),a=Math.max(...e)-r||1,d=2,l=t-d*2,c=s=>e.length===1?t/2:d+s/(e.length-1)*l,g=s=>n-2-(s-r)/a*(n-4),u=e.map((s,p)=>`${c(p)},${g(s)}`).join(" ");return(0,fn.jsxs)("svg",{width:t,height:n,style:{display:"block"},children:[(0,fn.jsx)("polyline",{points:u,fill:"none",stroke:o,strokeWidth:"1.5",strokeLinecap:"round"}),e.map((s,p)=>(0,fn.jsx)("circle",{cx:c(p),cy:g(s),r:"2.5",fill:o},p))]})};var ze=T(Re());var Jt=T(Re());var Mo=T(Re());var Xt=T(W()),ya=({projectId:e,value:t,onChange:n})=>{let{uploadFileToProject:o}=Pt(),[r,i]=(0,Mo.useState)([]),a=(0,Mo.useRef)(e);a.current=e;let d=t.map(u=>({uid:u.uri,name:u.name||u.uri,status:"done",response:{uri:u.uri,name:u.name}})),l=async u=>{let s=u.file;try{let p=await o(e,"/project/uploads",s);u.onSuccess?.({uri:p.path,name:s.name,projectId:e})}catch(p){u.onError?.(p instanceof Error?p:new Error("Upload failed"))}},c=u=>{let{file:s}=u;if(s.status==="done"&&s.response?.uri){if(s.response.projectId&&s.response.projectId!==a.current){i(u.fileList.filter(y=>y.status==="uploading"||y.status==="error"));return}let p={uri:s.response.uri,name:s.response.name||s.name,addedBy:"user"};t.some(y=>y.uri===p.uri)||n([...t,p])}s.status==="error"&&rt.error(`Failed to upload "${s.name}"`),i(u.fileList.filter(p=>p.status==="uploading"||p.status==="error"))},g=u=>{if(u.status==="done"){let s=u.response?.uri;n(t.filter(p=>p.uri!==s&&p.name!==u.name))}else i(s=>s.filter(p=>p.uid!==u.uid))};return(0,Xt.jsx)("div",{"data-testid":"reference-files-field",children:(0,Xt.jsxs)(Ur.Dragger,{multiple:!0,fileList:[...d,...r],customRequest:l,onChange:c,onRemove:g,style:{padding:"8px 0"},children:[(0,Xt.jsx)("p",{className:"ant-upload-drag-icon",style:{marginBottom:4},children:(0,Xt.jsx)(fi,{size:24,style:{color:"#6366f1"}})}),(0,Xt.jsx)("p",{className:"ant-upload-text",style:{fontSize:13},children:"Click or drag files to this area to upload"}),(0,Xt.jsx)("p",{className:"ant-upload-hint",style:{fontSize:12},children:"Files are stored in the selected project under /project/uploads"})]},e)})};function Nn(e){return(e.metadata??{}).trainingRound===!0}function Su(e){let t=5381;for(let n=0;n<e.length;n++)t=(t<<5)+t+e.charCodeAt(n)>>>0;return t.toString(36).slice(0,6)}function Oo(e){return["pending","in_progress","review"].includes(e.status)}function Mn(e,t){return`/api/tasks?${`ownerId=agent-architect&metadata=${encodeURIComponent(JSON.stringify({trainingRound:"true",targetAgentId:e}))}`}${t?`&projectId=${t}`:""}`}function il(e,t){return`/api/tasks?${`ownerId=agent-architect&parentId=${e}`}${t?`&projectId=${t}`:""}`}function ha(e,t){return`${e}:${t}`}async function ba(e){let t=e.projectId?{headers:{"x-project-id":e.projectId}}:void 0,o=(await e.post("/api/tasks",{title:e.goal.slice(0,60),description:e.goal,ownerType:"agent",ownerId:"agent-architect",workspaceId:e.workspaceId??void 0,projectId:e.projectId??void 0,metadata:{trainingRound:!0,targetAgentId:e.targetAgentId},files:e.files&&e.files.length>0?e.files:void 0},t)).data;if(!o)throw new Error("Failed to create learning round task");let r=e.existingThreadId??null;if(!r&&(r=(await e.post("/api/assistants/agent-architect/threads",{metadata:{training:!0,targetAgentId:e.targetAgentId}})).data?.id??null,!r))throw new Error("Failed to create training thread");return await e.put(`/api/tasks/${o.id}`,{metadata:{trainingRound:!0,targetAgentId:e.targetAgentId,trainingSessionId:r}},t),{roundTaskId:o.id,threadId:r}}function va(e){let t=e.graphDefinition,n=t;if(typeof t=="string")try{n=JSON.parse(t)}catch{n={}}let o=n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{},r=o.metadata!==null&&typeof o.metadata=="object"&&!Array.isArray(o.metadata)?o.metadata:{};return r.learningPlaceholder==="true"&&r.architectureStatus==="undecided"?"placeholder":o.type==="workflow"?"existing-workflow":"existing-agent"}function ka(e){let t=e.targetMode==="placeholder"?"This is a marked learning placeholder and its architecture is undecided. Select and explicitly approve its initial architecture, then materialize this exact ID through agent-build or design-workflow.":e.targetMode==="existing-workflow"?"This is an existing Workflow. Keep its architecture and use the design-workflow procedure skill for exact-ID update_workflow followed by validate_workflow.":"This is an existing Capability or Orchestra. Keep its architecture and use the agent-build procedure skill for a same-form exact-ID update_agent.";return[`Learning goal (draft \u2014 confirm with the user before any observation or design): ${e.goal}`,`Exact target ID: "${e.targetAgentId}".`,`Exact round Task ID: "${e.roundTaskId}".`,t,"Load [[agent-architecture]] and the routed procedure skill; follow its goal gate and procedures before any exploration or design.",...e.files?.length?[`Reference files: ${e.files.map(n=>`${n.name||n.uri} (${n.uri})`).join(", ")}. Read them before designing; in your first reply state which files you actually read and what you took from each.`]:[]].join(`
|
|
232
232
|
`)}var al=5;async function wa(e,t,n){let o=n?.projectId,r=o?{headers:{"x-project-id":o}}:void 0,i=u=>il(u,o??void 0),a=[],d=!1,l=new Set,c=new Set([t]),g=[t];for(let u=0;u<al&&g.length>0;u++){let p=(await Promise.all(g.map(y=>e(i(y),r).then(f=>Array.isArray(f.data)?f.data.map(v=>v.parentId?v:{...v,parentId:y}):[]).catch(()=>(d=!0,l.add(y),[]))))).flat().filter(y=>c.has(y.id)?!1:(c.add(y.id),!0));a.push(...p),g=p.map(y=>y.id)}if(g.length>0){d=!0;for(let u of g)l.add(u)}return{tasks:a,partial:d,...l.size>0?{incompleteParentIds:[...l]}:{}}}var Ue=T(W()),_o=({open:e,agentId:t,defaultProjectId:n,onClose:o,onCreated:r})=>{let{get:i,post:a,put:d}=Qe(),{message:l}=Rn.useApp(),c=yt("agent-architect"),{trainingProjects:g,loading:u}=Pt(),s=g.find(z=>z.id===n)??null,[p]=pe.useForm(),[y,f]=(0,Jt.useState)(!1),[v,m]=(0,Jt.useState)(null),[w,C]=(0,Jt.useState)(null),[A,I]=(0,Jt.useState)([]);return(0,Jt.useEffect)(()=>{e&&(C(ha(c.tenantId,t)),I([]))},[e,c,t]),(0,Jt.useEffect)(()=>{if(!e)return;let z=!1;return(async()=>{try{let S=await i(Mn(t,s?.id??void 0),s?{headers:{"x-project-id":s.id}}:void 0);if(z)return;let x=(S.data??[]).filter(Nn);m(x.find(Oo)??null)}catch{}})(),()=>{z=!0}},[e,i,t,s]),(0,Ue.jsxs)(Fe,{title:"New Learning Task",open:e,onCancel:o,footer:null,width:520,destroyOnClose:!0,children:[v&&(0,Ue.jsx)(Zt,{type:"warning",showIcon:!0,style:{marginBottom:16},message:"A learning task is already in progress. Complete it before starting a new one."}),(0,Ue.jsxs)(pe,{form:p,layout:"vertical",onFinish:async z=>{if(!s){l.error("No learning project is available");return}f(!0);try{let{roundTaskId:S,threadId:x}=await ba({goal:z.goal,targetAgentId:t,workspaceId:s.workspaceId,projectId:s.id,existingThreadId:w,files:A,post:a,put:d});l.success("Learning task created. Preparing the Architect\u2026"),p.resetFields(),r(S,x,z.goal,A),I([])}catch(S){l.error(S instanceof Error?S.message:"Failed to create the learning task. Please try again.")}finally{f(!1)}},children:[(0,Ue.jsx)(pe.Item,{label:"Learning Goal for This Round",name:"goal",rules:[{required:!0,message:"Please describe what you want this agent to learn or improve in this round"}],children:(0,Ue.jsx)(De.TextArea,{rows:3,placeholder:"e.g. Improve the agent's accuracy when handling price disputes based on the price protection policy"})}),s&&(0,Ue.jsx)(pe.Item,{label:(0,Ue.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,Ue.jsx)("span",{children:"Reference Materials"}),(0,Ue.jsx)(cr,{project:s,selectable:!1,loading:u})]}),extra:"Optional. These materials will be used as reference for this learning round.",style:{marginBottom:16},colon:!1,children:(0,Ue.jsx)(ya,{projectId:s.id,value:A,onChange:I})}),!s&&!u&&(0,Ue.jsx)(pe.Item,{style:{marginBottom:16},children:(0,Ue.jsx)(cr,{project:s,projects:g,loading:u})}),(0,Ue.jsxs)(pe.Item,{style:{marginBottom:0,textAlign:"right"},children:[(0,Ue.jsx)(ee,{onClick:o,style:{marginRight:8},children:"Cancel"}),(0,Ue.jsx)(ee,{type:"primary",htmlType:"submit",loading:y,disabled:!!v||u||!s,children:"Start Learning"})]})]})]})};var ve=T(Re());var mn=T(W()),xa=32,ll=8,dl=xa-ll,cl="Activity could not be loaded. Please try again shortly.",ul="Too many activity requests are still pending. Please try again shortly.",hr=ve.default.createContext(null),Ta=ve.default.createContext(()=>{});function pl(e){return e==="in_progress"?"Task retry started":e==="cancelled"?"Task cancelled":"Task updated"}function gl(e,t){return new Promise((n,o)=>{let r=window.setTimeout(()=>o(new Error("Work-item request timed out")),t);e.then(i=>{window.clearTimeout(r),n(i)},i=>{window.clearTimeout(r),o(i)})})}var br=({task:e,relatedTasks:t,onClose:n,onRefresh:o,height:r})=>{let{message:i}=Rn.useApp(),[a,d]=(0,ve.useState)(null),[l,c]=(0,ve.useState)([]),[g,u]=(0,ve.useState)([]),[s,p]=(0,ve.useState)(!1),[y,f]=(0,ve.useState)(null),[v,m]=(0,ve.useState)(()=>new Set),w=yt("__GLOBAL__"),A=ve.default.useContext(hr)??{getWorkItemRequest:(P,oe,Z,L)=>j(P,oe,Z,L),getDetailSession:()=>ce.current,bumpDetailSession:()=>{ce.current+=1}},I=(0,ve.useRef)(0),_=(0,ve.useRef)(null),z=(0,ve.useRef)(new Set),S=(0,ve.useRef)(!0),x=(0,ve.useRef)(new Map),B=(0,ve.useRef)(new Set),ce=(0,ve.useRef)(0),V=(0,ve.useRef)(w);V.current=w;let J=(0,ve.useRef)(A);J.current=A;let D=a??e,j=(P,oe,Z=ce.current,L=!1)=>{let H=x.current.get(P);if(H&&(!L||H.detailSession===Z))return H;H&&(x.current.delete(P),B.current.add(H.promise),H.promise.finally(()=>{B.current.delete(H.promise)}).catch(()=>{}));let ke=L?xa:dl;if(x.current.size+B.current.size>=ke){let Ee=Promise.reject(new Error("Work-item request capacity reached"));return Ee.catch(()=>{}),{promise:Ee,source:oe,detailSession:Z}}let we;try{we=Promise.resolve(V.current.tasks.workItems.list(P))}catch(Ee){we=Promise.reject(Ee)}let fe={promise:we,source:oe,detailSession:Z};return x.current.set(P,fe),we.finally(()=>{x.current.get(P)?.promise===we&&x.current.delete(P)}).catch(()=>{}),fe};(0,ve.useEffect)(()=>(S.current=!0,()=>{S.current=!1,_.current=null,I.current+=1,J.current.bumpDetailSession(),Promise.resolve().then(()=>{S.current||(x.current.clear(),B.current.clear(),z.current.clear())})}),[]);let G=(P,oe=!0)=>{let Z=oe?++I.current:I.current;oe&&S.current&&p(!0);let L=A.getDetailSession(),H=A.getWorkItemRequest(P,"detail",L,oe),ke=H.detailSession===L;return gl(H.promise,4e3).then(N=>{ke&&S.current&&Z===I.current&&_.current===P&&(u(N),f(null))}).catch(N=>{ke&&oe&&S.current&&Z===I.current&&_.current===P&&(u([]),f(N instanceof Error&&N.message==="Work-item request capacity reached"?ul:cl))}).finally(()=>{ke&&S.current&&Z===I.current&&_.current===P&&p(!1)})},M=(P,oe)=>{oe&&c(Z=>D?[...Z,D]:Z),_.current=P.id,d(P),u([]),f(null),G(P.id)},ie=P=>M(P,!0),E=()=>{if(l.length===0)return;let P=l[l.length-1];c(l.slice(0,-1)),M(P,!1)},Y=()=>{A.bumpDetailSession(),_.current=null,I.current+=1,d(null),c([]),u([]),p(!1),f(null),n()},ue=async(P,oe)=>{let Z=_.current;if(!Z||z.current.has(Z))return;let L=pl(P);z.current.add(Z),m(H=>new Set(H).add(Z));try{try{await V.current.tasks.update(Z,oe?{status:P,failureReason:oe}:{status:P})}catch{S.current&&i.error("Operation failed, please retry");return}if(!S.current)return;_.current===Z&&d(H=>!S.current||H?.id!==Z||_.current!==Z?H:(G(Z,!1),{...H,status:P,...oe?{failureReason:oe}:{}})),S.current&&i.success(L),o&&Promise.resolve().then(o).catch(()=>{S.current&&i.warning(`${L}, but the task list could not be refreshed`)})}finally{z.current.delete(Z),S.current&&m(H=>{let ke=new Set(H);return ke.delete(Z),ke})}};(0,ve.useEffect)(()=>{_.current!==e.id&&(c([]),M(e,!1))},[e]),(0,ve.useEffect)(()=>{let P=_.current;if(!P)return;let oe=t.find(L=>L.id===P);if(!oe){Y();return}d(L=>L&&L.id===P?oe:L);let Z=new Map(t.map(L=>[L.id,L]));c(L=>L.flatMap(H=>{let ke=Z.get(H.id);return ke?[ke]:[]})),G(P,!1)},[e,t]),(0,ve.useEffect)(()=>{if(!D?.id)return;let P=D.id,oe=!1,Z,L=async()=>{document.hidden||(await G(P,!1),!oe&&S.current&&_.current===P&&!document.hidden&&(Z=window.setTimeout(()=>void L(),5e3)))},H=()=>{oe||!S.current||document.hidden||(Z!==void 0&&window.clearTimeout(Z),Z=void 0,L())};return document.addEventListener("visibilitychange",H),L(),()=>{oe=!0,Z!==void 0&&window.clearTimeout(Z),document.removeEventListener("visibilitychange",H)}},[D?.id]);let ye=xo(D),Se=ve.default.useContext(Ta);(0,ve.useEffect)(()=>{Se(e,D)},[Se,e,D]);let me=D?v.has(D.id):!1,F=D?.ownerType==="agent"?{onApprove:void 0,onReject:void 0,onRetry:void 0,onCancel:void 0}:{onApprove:void 0,onReject:void 0,onRetry:()=>void ue("in_progress"),onCancel:()=>void ue("cancelled")};return(0,mn.jsx)("div",{style:{display:"flex",flexDirection:"column",height:"100%",background:"#fff",border:"1px solid rgba(5,5,5,0.15)",borderRadius:12,overflow:"hidden"},children:(0,mn.jsx)("div",{style:{flex:1,minHeight:0},children:(0,mn.jsx)(wo,{task:D,relatedTasks:t,onRelatedTaskClick:ie,workItems:g,loading:s,activityError:y??void 0,transitionPending:me,...F,onViewChat:ye,onBack:E,canGoBack:l.length>0,maxHeight:r,focusKey:`${D.id}:${me?"updating":D.status}`,subtasks:t.filter(P=>P.parentId===D.id),onSubtaskClick:ie,parent:t.find(P=>P.id===D.parentId)??null,onParentClick:ie})})})},Ra=({task:e,relatedTasks:t,onClose:n,onRefresh:o})=>{let[r,i]=(0,ve.useState)(null),a=(0,ve.useCallback)((l,c)=>{i({rootId:l.id,title:c.title})},[]);(0,ve.useEffect)(()=>{e||i(null)},[e]);let d=e?r&&r.rootId===e.id?r.title:e.title:"";return(0,mn.jsx)(Fe,{open:e!==null,onCancel:n,footer:null,title:d,width:960,style:{maxWidth:"calc(100vw - 32px)"},styles:{header:{padding:"16px 24px 0"},content:{padding:0},body:{padding:"12px 24px 24px"}},centered:!0,children:(0,mn.jsx)(Ta.Provider,{value:a,children:e&&(0,mn.jsx)(br,{task:e,relatedTasks:t,onClose:n,onRefresh:o,height:"calc(100dvh - 96px)"})})})};var Ce=T(W()),vr=32,fl=8,ml=vr-fl;function yl(e){for(let t of e.split(`
|
|
233
233
|
`)){let n=t.trim().match(/^#{1,6}\s+(.*)$/);if(n){let o=n[1].trim();if(o.length>0)return o}}}function hl(e){let t=typeof e.detail?.markdown=="string"&&e.detail.markdown.length>0?e.detail.markdown:void 0;if(t){let n=yl(t);if(n)return n}return e.summary||e.action||""}function bl(e){let t=e.context?.interruption;return e.status==="interrupted"&&typeof t=="object"&&t!==null&&t.type==="review_required"}function vl(e,t){return new Promise((n,o)=>{let r=window.setTimeout(()=>o(new Error("Work-item request timed out")),t);e.then(i=>{window.clearTimeout(r),n(i)},i=>{window.clearTimeout(r),o(i)})})}var Ia=({assistantId:e,projectId:t,onLearningStarted:n,round:o,subTasks:r,rounds:i,subTasksByRound:a,selectedRoundId:d,onSelectedRoundChange:l,loading:c,onRefresh:g,onStartRequest:u,onExpandWorkflow:s})=>{let{message:p}=Rn.useApp(),[y,f]=(0,ze.useState)(!1),[v,m]=(0,ze.useState)(!1),[w,C]=(0,ze.useState)(null),[A,I]=(0,ze.useState)(null),_=yt("__GLOBAL__"),z=(0,ze.useRef)(!0),S=(0,ze.useRef)(new Map),x=(0,ze.useRef)(new Set),B=(0,ze.useRef)(0),ce=(0,ze.useRef)(0),V=i&&i.length>0?i:o?[o]:[],[J,D]=(0,ze.useState)(null),j=d!==void 0,G=j?d:J,M=V.map(N=>N.id).join(",");(0,ze.useEffect)(()=>{if(V.length===0){D(null);return}D(N=>N&&M.split(",").includes(N)?N:V[0].id)},[M]);let ie=V.find(N=>N.id===G)??V[0]??null,E=N=>{j||D(N),l?.(N)},Y=a&&ie?a[ie.id]??[]:ie&&ie.id===o?.id?r:[],ue=(0,ze.useMemo)(()=>[ie,...Y].filter(N=>N!==null),[o,r,i,a,G]),ye=Y.filter(N=>N.status==="in_progress"),Se=ye[0]??null,me=ie?.status==="in_progress",F=(ye.length>0?ye.map(N=>N.id):me&&ie?[ie.id]:[]).sort(),P=F.join(","),oe=(0,ze.useRef)(_);oe.current=_;let Z=(0,ze.useRef)(null);Z.current||(Z.current={getWorkItemRequest:(N,we,fe,Ee)=>L(N,we,fe,Ee),getDetailSession:()=>B.current,bumpDetailSession:()=>{B.current+=1}});let L=(N,we,fe=B.current,Ee=!1)=>{let Le=S.current.get(N);if(Le&&(!Ee||Le.detailSession===fe))return Le;Le&&(S.current.delete(N),x.current.add(Le.promise),Le.promise.finally(()=>{x.current.delete(Le.promise)}).catch(()=>{}));let nt=Ee?vr:ml;if(S.current.size+x.current.size>=nt){let $e=Promise.reject(new Error("Work-item request capacity reached"));return $e.catch(()=>{}),{promise:$e,source:we,detailSession:fe}}let Ye;try{Ye=Promise.resolve(oe.current.tasks.workItems.list(N))}catch($e){Ye=Promise.reject($e)}let ot={promise:Ye,source:we,detailSession:fe};return S.current.set(N,ot),Ye.finally(()=>{S.current.get(N)?.promise===Ye&&S.current.delete(N)}).catch(()=>{}),ot};(0,ze.useEffect)(()=>(z.current=!0,()=>{z.current=!1,Promise.resolve().then(()=>{z.current||(S.current.clear(),x.current.clear())})}),[]),(0,ze.useEffect)(()=>{if(F.length===0){I(null);return}I(null);let N=!1,we,fe=()=>{if(document.hidden)return Promise.resolve();let Le=ce.current%F.length,nt=[...F.slice(Le),...F.slice(0,Le)];return ce.current=(Le+vr)%F.length,Promise.allSettled(nt.map(ut=>vl(L(ut,"live").promise,4e3))).then(ut=>{if(N||!z.current)return;let Ye=ut.filter(Be=>Be.status==="fulfilled").map(Be=>Be.value);if(Ye.length===0)return;let $e=[...Ye.flat().filter(Be=>!/^Status changed to\b/i.test(Be.summary??""))].sort((Be,kt)=>new Date(kt.createdAt).getTime()-new Date(Be.createdAt).getTime());I($e[0]??null)}).finally(()=>{!N&&z.current&&!document.hidden&&(we=window.setTimeout(()=>void fe(),5e3))})},Ee=()=>{N||!z.current||document.hidden||(we!==void 0&&window.clearTimeout(we),we=void 0,fe())};return document.addEventListener("visibilitychange",Ee),fe(),()=>{N=!0,we!==void 0&&window.clearTimeout(we),document.removeEventListener("visibilitychange",Ee)}},[P]);let H=N=>C(N),ke=(N,we,fe,Ee)=>{E(N),f(!1);let Le;try{Le=Promise.resolve(g())}catch{Le=Promise.reject(new Error("Task-list refresh failed"))}Le.catch(()=>{z.current&&p.error("Task created, but the task list could not be refreshed")}),n?.(fe,N,Ee)};return(0,Ce.jsxs)("div",{style:{background:"rgba(255, 255, 255, 0.6)",border:"1px solid rgba(240, 240, 240, 0.7)",borderRadius:10,padding:"8px 10px",boxShadow:"0 2px 10px rgba(0,0,0,0.06)",backdropFilter:"blur(8px)",pointerEvents:"auto",width:300},children:[c?(0,Ce.jsx)("div",{style:{fontSize:12,color:"#bbb",padding:"4px 2px"},children:"Loading..."}):ie?(0,Ce.jsxs)("div",{children:[(0,Ce.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:6,padding:"0 2px 6px",borderBottom:"1px solid rgba(240,240,240,0.7)",marginBottom:6},children:[(0,Ce.jsx)("span",{style:{fontSize:12,fontWeight:600,color:"#595959"},children:"Learning Tasks"}),(0,Ce.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:2},children:[s&&(0,Ce.jsx)(ee,{size:"small",type:"text","aria-label":"Open workflow view",icon:(0,Ce.jsx)(lo,{}),onClick:s}),(0,Ce.jsx)(ee,{size:"small",type:"text",icon:(0,Ce.jsx)(Qt,{}),onClick:()=>u?u():f(!0),style:{fontSize:12},children:"New Learning Task"})]})]}),V.length>1&&(0,Ce.jsx)(mt,{size:"small","data-testid":"round-filter",style:{width:"100%",marginBottom:6},value:ie.id,onChange:E,options:V.map(N=>({value:N.id,label:`${N.title||N.id} (${N.status})`}))}),(()=>{let N=ue.filter(bl);return N.length>0?(0,Ce.jsxs)(ee,{type:"text","data-testid":"review-banner","aria-label":`Open ${N.length} task${N.length>1?"s":""} waiting for approval`,onClick:()=>H(N[0]),style:{display:"flex",alignItems:"center",justifyContent:"flex-start",gap:6,cursor:"pointer",width:"100%",height:"auto",fontSize:12,fontWeight:600,color:"#b45309",background:"rgba(245,158,11,0.12)",border:"1px solid rgba(245,158,11,0.35)",borderRadius:8,padding:"5px 8px",marginBottom:6},children:[N.length," item",N.length>1?"s":""," waiting for approval"]}):null})(),A&&(0,Ce.jsxs)("div",{"data-testid":"live-status",style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:"#666",padding:"2px 2px 6px",borderBottom:"1px solid rgba(240,240,240,0.7)",marginBottom:4},children:[(0,Ce.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",flexShrink:0,background:Se?"#3b82f6":"#bbb",animation:Se?"live-pulse 1.2s ease-in-out infinite":void 0}}),(0,Ce.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:hl(A)}),(0,Ce.jsx)("style",{children:"@keyframes live-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.3; } }"})]}),(0,Ce.jsx)("div",{style:{maxHeight:240,overflow:"auto"},children:(0,Ce.jsx)(_i,{tasks:[ie,...Y],loading:!1,onTaskClick:H,hideCompleted:v,onHideCompletedChange:m})})]}):(0,Ce.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"4px 2px"},children:[(0,Ce.jsx)("span",{style:{fontSize:12,color:"#999"},children:"No learning tasks yet"}),(0,Ce.jsx)(ee,{size:"small",icon:(0,Ce.jsx)(Qt,{}),onClick:()=>u?u():f(!0),children:"New Learning Task"})]}),!u&&(0,Ce.jsx)(_o,{open:y,agentId:e,defaultProjectId:t,onClose:()=>f(!1),onCreated:ke}),(0,Ce.jsx)(hr.Provider,{value:Z.current,children:(0,Ce.jsx)(Ra,{task:w,relatedTasks:ue,onClose:()=>C(null),onRefresh:g})})]})};var _e=T(Re());function Sa(e,t){let n=[...t],o=new Set(t.map(d=>`${d.from}|${d.to}`)),r=new Set(t.filter(d=>d.kind==="dependency").map(d=>d.to)),i=new Set(e.map(d=>d.id)),a=new Map;for(let d of e){if(!d.parentId||!i.has(d.parentId))continue;let l=a.get(d.parentId)??[];l.push(d),a.set(d.parentId,l)}for(let d of a.values()){let l=[...d].sort((c,g)=>new Date(c.createdAt).getTime()-new Date(g.createdAt).getTime());for(let c=1;c<l.length;c++){let g=l[c];if(r.has(g.id))continue;let u=l[c-1].id,s=`${u}|${g.id}`;o.has(s)||o.has(`${g.id}|${u}`)||(n.push({from:u,to:g.id,kind:"sequence"}),o.add(s))}}return n}function Ca(e,t){return e!=="completed"?"idle":t==="in_progress"?"flowing":t==="pending"?"idle":"traversed"}function Aa(e){return e==="completed"?"traversed":e==="in_progress"?"flowing":"idle"}var Gt={pending:{label:"Pending",color:"#9ca3af",active:!1},in_progress:{label:"Running",color:"#3b82f6",active:!0},review:{label:"Review",color:"#8b5cf6",active:!1},failed:{label:"Failed",color:"#ef4444",active:!1},interrupted:{label:"Interrupted",color:"#f59e0b",active:!1},completed:{label:"Done",color:"#22c55e",active:!1},cancelled:{label:"Cancelled",color:"#9ca3af",active:!1}};var Dt=T(W()),Ea=({data:e})=>{let{task:t}=e,n=Gt[t.status];return(0,Dt.jsxs)("div",{"data-testid":"workflow-task-node","data-active":String(n.active),style:{width:180,padding:"8px 10px",borderRadius:10,border:`1.5px solid ${n.color}`,background:"#fff",animation:n.active?"workflow-node-pulse 1.6s ease-in-out infinite":void 0},children:[(0,Dt.jsx)(xt,{type:"target",position:it.Left,style:{opacity:0}}),(0,Dt.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,marginBottom:4},children:[(0,Dt.jsx)("span",{style:{width:8,height:8,borderRadius:9999,background:n.color,flexShrink:0}}),(0,Dt.jsx)("span",{style:{fontSize:12,fontWeight:600,color:"#262626",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:t.title,children:t.title})]}),(0,Dt.jsx)("div",{style:{fontSize:10,color:"#8c8c8c"},children:n.label}),(0,Dt.jsx)(xt,{type:"source",position:it.Right,style:{opacity:0}}),n.active&&(0,Dt.jsx)("style",{children:"@keyframes workflow-node-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(59,130,246,0.35); } 50% { box-shadow: 0 0 0 6px rgba(59,130,246,0.08); } }"})]})};var at=T(W()),kl={workflowTask:Ea},wl=180,xl=56,Tl={traversed:{stroke:"#22c55e",strokeWidth:1.5},flowing:{stroke:"#6366f1",strokeWidth:2},idle:{stroke:"#d1d5db",strokeWidth:1,strokeDasharray:"5 5"}},Pa=({rounds:e,subTasksByRound:t,loading:n})=>{let o=yt("__GLOBAL__"),[r,i]=(0,_e.useState)(null),[a,d]=(0,_e.useState)(null),[l,c]=(0,_e.useState)([]),[g,u]=(0,_e.useState)(!1),[s,p]=(0,_e.useState)(null),y=(0,_e.useRef)(0),f=(0,_e.useRef)(o);f.current=o;let v=e.map(E=>E.id).join(",");(0,_e.useEffect)(()=>{i(E=>E&&v.split(",").includes(E)?E:e[0]?.id??null)},[v]);let m=e.find(E=>E.id===r)??e[0]??null,w=(0,_e.useMemo)(()=>[m,...m?t[m.id]??[]:[]].filter(E=>E!==null),[m,t]),{nodes:C,edges:A}=(0,_e.useMemo)(()=>ko(w),[w]),I=(0,_e.useMemo)(()=>Sa(w,A),[w,A]),_=(0,_e.useMemo)(()=>new Map(w.map(E=>[E.id,E])),[w]),z=(0,_e.useMemo)(()=>{let E=bo(C.map(Y=>({id:Y.id})),I.map(Y=>({from:Y.from,to:Y.to})),{nodeWidth:wl,nodeHeight:xl,nodesep:24,ranksep:60,rankdir:"LR"});return C.map(Y=>({id:Y.id,type:"workflowTask",position:E.get(Y.id)??{x:0,y:0},data:{task:Y.task}}))},[C,I]),S=(0,_e.useMemo)(()=>I.map(E=>{let Y=Ca(_.get(E.from)?.status??"pending",_.get(E.to)?.status??"pending");return{id:`${E.from}->${E.to}:${E.kind}`,source:E.from,target:E.to,animated:Y==="flowing",style:{...Tl[Y],...E.kind==="sequence"&&Y!=="idle"?{strokeDasharray:"2 3"}:{}}}}),[I,_]),[x,B,ce]=Cn(z),[V,J,D]=An(S);(0,_e.useEffect)(()=>{B(E=>{let Y=E.map(ye=>ye.id).sort().join("|"),ue=z.map(ye=>ye.id).sort().join("|");if(Y===ue){let ye=new Map(E.map(Se=>[Se.id,Se]));return z.map(Se=>{let me=ye.get(Se.id);return me?{...Se,position:me.position}:Se})}return z}),J(S)},[z,S,B,J]);let j=(0,_e.useCallback)(E=>{let Y=++y.current;u(!0),p(null),f.current.tasks.workItems.list(E).then(ue=>{Y===y.current&&c(ue)}).catch(()=>{Y===y.current&&(c([]),p("Activity could not be loaded. Please try again shortly."))}).finally(()=>{Y===y.current&&u(!1)})},[]),G=(0,_e.useCallback)((E,Y)=>{let ue=Y.data?.task;ue&&(c([]),d(ue),j(ue.id))},[j]),M=(0,_e.useCallback)(()=>{y.current+=1,d(null),c([]),p(null),u(!1)},[]),ie=xo(a);return n?(0,at.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,at.jsx)(wt,{size:"large"})}):!m||w.length===0?(0,at.jsx)("div",{style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,at.jsx)(Wt,{description:"No tasks"})}):(0,at.jsxs)("div",{style:{display:"flex",flexDirection:"column",height:"100%",minHeight:0},children:[e.length>1&&(0,at.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",paddingBottom:12,flexShrink:0},children:e.map((E,Y)=>{let ue=Gt[E.status],ye=E.id===m.id;return(0,at.jsxs)("button",{type:"button","data-testid":`round-chip-${E.id}`,onClick:()=>{i(E.id),M()},title:E.title,style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:11,fontWeight:600,padding:"3px 10px",borderRadius:9999,cursor:"pointer",border:ye?"1.5px solid #6366f1":"1px solid #e5e7eb",background:ye?"rgba(99,102,241,0.08)":"#fff",color:ye?"#6366f1":"#6b7280"},children:[(0,at.jsx)("span",{style:{width:6,height:6,borderRadius:9999,background:ue.color}}),"R",e.length-Y]},E.id)})}),(0,at.jsx)("div",{style:{flex:1,minHeight:0,position:"relative"},children:(0,at.jsx)(vo,{nodes:x,edges:V,nodeTypes:kl,onNodesChange:ce,onEdgesChange:D,onNodeClick:G,fitView:!0,fitViewOptions:{padding:.15},nodesDraggable:!0,nodesConnectable:!1,miniMap:!0,attributionPosition:"bottom-right"})}),a&&(0,at.jsx)("div",{"data-testid":"workflow-detail",style:{height:"40%",minHeight:200,flexShrink:0,borderTop:"1px solid #f0f0f0",overflow:"hidden"},children:(0,at.jsx)(wo,{task:a,relatedTasks:w,workItems:l,loading:g,activityError:s??void 0,onApprove:void 0,onReject:void 0,onRetry:void 0,onCancel:void 0,onViewChat:ie,onBack:M,subtasks:w.filter(E=>E.parentId===a.id),onSubtaskClick:E=>{c([]),d(E),j(E.id)},parent:w.find(E=>E.id===a.parentId)??null,onParentClick:E=>{c([]),d(E),j(E.id)}})})]})};var Rt=T(Re());var Lt=T(W()),Rl=0,La=360,Na=48,Da=16;function kr(e){let t=typeof window>"u"?1200:window.innerWidth-Na;return Math.min(Math.max(e,La),t)}var ht=({open:e,width:t,mobileWidth:n,left:o,top:r=56,bottom:i=12,height:a,title:d,onClose:l,bodyStyle:c,restoreFocusRef:g,focusControlRef:u,escapeEnabled:s=!0,zIndex:p=25,children:y})=>{let f=Ri("(max-width: 720px)"),v=(0,Rt.useRef)(null),m=(0,Rt.useRef)(null),w=(0,Rt.useRef)(null);w.current||(w.current=`canvas-dock-title-${++Rl}`);let C=w.current,[A,I]=(0,Rt.useState)(null);(0,Rt.useEffect)(()=>I(null),[t,n]);let _=!f&&typeof t=="number",z=f?n??t:A??t,S=typeof z=="number"?z:null,x=o===void 0?-1:1,B=V=>{if(!_||S===null)return;V.preventDefault();let J={startX:V.clientX,startWidth:S},D=G=>{I(kr(J.startWidth+x*(G.clientX-J.startX)))},j=()=>{window.removeEventListener("pointermove",D),window.removeEventListener("pointerup",j)};window.addEventListener("pointermove",D),window.addEventListener("pointerup",j)},ce=V=>{!_||S===null||(V.key==="ArrowLeft"?(V.preventDefault(),I(kr(S-x*Da))):V.key==="ArrowRight"&&(V.preventDefault(),I(kr(S+x*Da))))};return(0,Rt.useEffect)(()=>{if(!e||!s)return;let V=J=>{J.key==="Escape"&&!J.defaultPrevented&&l()};return document.addEventListener("keydown",V),()=>document.removeEventListener("keydown",V)},[s,e,l]),(0,Rt.useEffect)(()=>{if(u)return u.current=()=>v.current?.focus(),()=>{u.current=null}},[u]),(0,Rt.useEffect)(()=>{if(!e)return;let V=g?.current??document.activeElement;return V instanceof HTMLElement&&(m.current=V),v.current?.focus(),()=>{m.current?.focus(),m.current=null}},[e]),e?(0,Lt.jsxs)("div",{"data-testid":"canvas-dock",role:"region","aria-labelledby":C,style:{position:"absolute",top:r,...o===void 0?{right:12}:{left:o},...a===void 0?{bottom:i}:{height:a},width:z,maxWidth:"calc(100% - 24px)",boxSizing:"border-box",zIndex:p,display:"flex",flexDirection:"column",background:"rgba(255,255,255,0.92)",backdropFilter:"blur(12px)",borderRadius:16,border:"1px solid rgba(240,240,240,0.9)",boxShadow:"0 8px 32px rgba(0,0,0,0.12)",animation:"canvas-dock-in 0.2s ease",overflow:"hidden"},children:[(0,Lt.jsx)("style",{children:"@keyframes canvas-dock-in { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } }"}),_&&(0,Lt.jsx)("div",{"data-testid":"canvas-dock-resize-handle",role:"separator","aria-orientation":"vertical","aria-label":"Resize panel","aria-valuenow":S??void 0,"aria-valuemin":La,"aria-valuemax":typeof window>"u"?void 0:window.innerWidth-Na,tabIndex:0,onPointerDown:B,onKeyDown:ce,style:{position:"absolute",...o===void 0?{left:0}:{right:0},top:0,bottom:0,width:6,cursor:"ew-resize",zIndex:1,touchAction:"none"}}),(0,Lt.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,padding:"12px 16px",borderBottom:"1px solid rgba(240,240,240,0.9)",flexShrink:0,fontSize:13,fontWeight:600,color:"#333"},children:[(0,Lt.jsx)("div",{id:C,style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:8,overflow:"hidden"},children:d}),(0,Lt.jsx)("button",{ref:v,type:"button","aria-label":"Close dock",onClick:l,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:24,height:24,border:"none",borderRadius:6,background:"transparent",color:"#999",cursor:"pointer",flexShrink:0},children:(0,Lt.jsx)(xi,{size:14})})]}),(0,Lt.jsx)("div",{"data-testid":"canvas-dock-body",style:{flex:1,minHeight:0,overflow:"auto",padding:16,...c},children:y})]}):null};var Nt=T(Re());var Fo=80;function en(e){return e>=80?"#22c55e":e>=50?"#f59e0b":"#ef4444"}function Qn(e){return e.filter(t=>t.status==="completed"&&t.holdout!==!0).sort(zt)}function Ma(e){let t=Qn(e),n=t[t.length-1];if(!n)return{latestScore:null,delta:null,passRate:null,passedCases:0,totalCases:0,interruptedCases:0,latestRunId:null};let o=t[t.length-2],r=n.totalCases??0,i=n.passedCases??0;return{latestScore:n.avgScore,delta:o?Math.round(n.avgScore-o.avgScore):null,passRate:r>0?Math.round(i/r*100):null,passedCases:i,totalCases:r,interruptedCases:n.interruptedCases??0,latestRunId:n.id}}function Oa(e){let t=new Map;for(let n of e)if(!n.interrupted)for(let o of n.dimensionResults??[]){let r=t.get(o.name)??{sum:0,count:0};r.sum+=o.score,r.count+=1,t.set(o.name,r)}return[...t.entries()].map(([n,{sum:o,count:r}])=>({name:n,avgScore:Math.round(o/r*10)/10,count:r})).sort((n,o)=>n.avgScore-o.avgScore)}var Il=.15,_a={left:36,right:12,top:16,bottom:24},wr={fontSize:9,color:"#999"};function Fa(){return{type:"value",min:0,max:100,axisLabel:{...wr},splitLine:{lineStyle:{color:"#f5f5f5"}}}}function Wa({rounds:e,runs:t,selectedRoundId:n}){let o=[...e].sort((s,p)=>new Date(s.createdAt).getTime()-new Date(p.createdAt).getTime()),r=t.filter(s=>s.status==="completed").sort(zt),i=new Map(o.map((s,p)=>[s.id,p+1])),a=new Map;for(let s of r){let p=s.taskId?i.get(s.taskId):void 0;p!==void 0&&a.set(p,(a.get(p)??0)+1)}let d=new Map,l=[],c=new Map;for(let s of r){let p=s.taskId?i.get(s.taskId):void 0;if(p===void 0)continue;let y=d.get(p)??0;if(d.set(p,y+1),s.holdout===!0){let f=(y-((a.get(p)??1)-1)/2)*Il;l.push([Math.round((p+f)*100)/100,s.avgScore])}else c.set(p,s.avgScore)}let g=n??null;if(g===null){for(let s=o.length-1;s>=0;s--)if(c.has(s+1)){g=o[s].id;break}}let u=o.map((s,p)=>{let y=c.get(p+1);if(y===void 0)return null;let f=s.id===g;return{value:[p+1,y],itemStyle:{color:en(y),borderRadius:[4,4,0,0],...f?{borderColor:"#6366f1",borderWidth:2}:{}}}});return{grid:_a,tooltip:{trigger:"item"},xAxis:{type:"value",min:.5,max:o.length+.5,interval:1,axisLabel:{...wr,formatter:s=>Number.isInteger(s)?`R${s}`:""},axisLine:{lineStyle:{color:"#eee"}},splitLine:{show:!1}},yAxis:Fa(),series:[{type:"bar",data:u,barWidth:22,markLine:{silent:!0,symbol:"none",lineStyle:{type:"dashed",color:"#d9d9d9"},label:{fontSize:9,color:"#999",formatter:`target ${Fo}`},data:[{yAxis:Fo}]}},{type:"scatter",data:l,symbol:"diamond",symbolSize:9,itemStyle:{color:"#fff",borderColor:"#f59e0b",borderWidth:1.5},z:4}]}}function za(e){let t=e.filter(r=>r.status==="completed").sort(zt),n=[],o=[];return t.forEach((r,i)=>{r.holdout===!0?o.push([i+1,r.avgScore]):n.push([i+1,r.avgScore])}),{grid:_a,tooltip:{trigger:"item"},xAxis:{type:"value",min:.5,max:Math.max(t.length,1)+.5,interval:1,axisLabel:{...wr,formatter:r=>Number.isInteger(r)?`#${r}`:""},axisLine:{lineStyle:{color:"#eee"}},splitLine:{show:!1}},yAxis:Fa(),series:[{type:"line",data:n,symbol:"circle",symbolSize:6,lineStyle:{color:"#6366f1",width:1.5},itemStyle:{color:"#6366f1"},markLine:{silent:!0,symbol:"none",lineStyle:{type:"dashed",color:"#d9d9d9"},label:{fontSize:9,color:"#999",formatter:`target ${Fo}`},data:[{yAxis:Fo}]}},{type:"scatter",data:o,symbol:"diamond",symbolSize:9,itemStyle:{color:"#fff",borderColor:"#f59e0b",borderWidth:1.5},z:4}]}}var st=T(W()),xr={fontSize:10,color:"#999"},Tr={fontSize:22,fontWeight:700,lineHeight:1.2},Ba=({summary:e})=>e.latestScore===null?null:(0,st.jsxs)("div",{"data-testid":"eval-summary",style:{display:"flex",gap:28},children:[(0,st.jsxs)("div",{children:[(0,st.jsxs)("div",{style:{...Tr,color:en(e.latestScore)},children:[e.latestScore.toFixed(1),e.delta!==null&&(0,st.jsxs)("span",{"data-testid":"summary-delta",style:{fontSize:11,fontWeight:600,color:e.delta>=0?"#22c55e":"#ef4444",marginLeft:6},children:[e.delta>=0?"\u25B2":"\u25BC"," ",Math.abs(e.delta)]})]}),(0,st.jsx)("div",{style:xr,children:"latest score"})]}),(0,st.jsxs)("div",{children:[(0,st.jsx)("div",{"data-testid":"summary-pass",style:{...Tr,color:"#262626"},children:e.passRate!==null?`${e.passRate}%`:"\u2014"}),(0,st.jsxs)("div",{style:xr,children:["pass \xB7 ",e.passedCases,"/",e.totalCases]})]}),e.interruptedCases>0&&(0,st.jsxs)("div",{"data-testid":"summary-interrupted",children:[(0,st.jsx)("div",{style:{...Tr,color:"#b45309"},children:e.interruptedCases}),(0,st.jsx)("div",{style:xr,children:"interrupted"})]})]});var lt=T(Re());var On=T(W()),ja=({agentId:e,projectId:t,runs:n,selectedRoundId:o,onSelectRound:r})=>{let{get:i}=Qe(),[a,d]=(0,lt.useState)([]),[l,c]=(0,lt.useState)(!1),[g,u]=(0,lt.useState)(null),s=lt.default.useRef(i);s.current=i,(0,lt.useEffect)(()=>{let v=!1;return s.current(Mn(e,t)).then(m=>{if(v)return;let w=(m.data??[]).filter(Nn);w.sort((C,A)=>new Date(C.createdAt).getTime()-new Date(A.createdAt).getTime()),d(w),c(!0)}).catch(()=>{v||c(!0)}),()=>{v=!0}},[e,t]),(0,lt.useEffect)(()=>{g&&!a.some(v=>v.id===g)&&u(null)},[a,g]);let p=(0,lt.useMemo)(()=>Wa({rounds:a,runs:n,selectedRoundId:o??g}),[a,n,o,g]),y=(0,lt.useMemo)(()=>({click:v=>{let m=v;if(m.seriesType!=="bar"||typeof m.dataIndex!="number")return;let w=a[m.dataIndex];w&&(u(w.id),r?.(w.id))}}),[a,r]),f=(0,lt.useMemo)(()=>{if(a.length===0)return!1;let v=new Set(a.map(m=>m.id));return Qn(n).some(m=>m.taskId!==void 0&&v.has(m.taskId))},[a,n]);return l?f?(0,On.jsxs)("div",{"data-testid":"round-trend-chart",style:{border:"1px solid #f0f0f0",borderRadius:12,padding:12},children:[(0,On.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"rgba(0,0,0,0.65)",marginBottom:8},children:"Score by learning round"}),(0,On.jsx)(gn,{option:p,height:100,onEvents:y})]}):(0,On.jsx)("div",{"data-testid":"round-trend-empty",style:{display:"none"}}):null};var tn=T(W()),Ga=({dimensions:e})=>e.length===0?null:(0,tn.jsx)("div",{"data-testid":"dimension-panorama",style:{display:"flex",flexDirection:"column",gap:4},children:e.map(t=>{let n=Math.min(Math.max(t.avgScore,0),100);return(0,tn.jsxs)("div",{"data-testid":`dimension-row-${t.name}`,style:{display:"flex",alignItems:"center",gap:8,fontSize:11},children:[(0,tn.jsx)("span",{"data-testid":`dimension-label-${t.name}`,style:{flexShrink:0,maxWidth:"60%",color:"#595959",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:t.name,children:t.name}),(0,tn.jsx)("div",{style:{flex:1,height:8,background:"#f5f5f5",borderRadius:4,overflow:"hidden"},children:(0,tn.jsx)("div",{"data-testid":`dimension-fill-${t.name}`,style:{width:`${n}%`,height:"100%",background:en(t.avgScore),borderRadius:4}})}),(0,tn.jsx)("span",{style:{width:28,textAlign:"right",flexShrink:0,fontWeight:600,color:en(t.avgScore)},children:Math.round(t.avgScore)})]},t.name)})});var $t=T(W());function $a(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(!n.holdout&&n.status==="completed"&&typeof n.id=="string")return n.id}return null}var qa=({results:e})=>{if(e===null)return null;let t=e.filter(o=>o.interrupted).length,n=e.filter(o=>!o.pass&&!o.interrupted).flatMap(o=>o.dimensionResults??[]).sort((o,r)=>o.score-r.score).slice(0,3);return(0,$t.jsxs)("div",{style:{marginTop:8},"data-testid":"run-insights",children:[t>0&&(0,$t.jsxs)("div",{"data-testid":"interrupted-count",style:{fontSize:12,color:"#b45309",marginBottom:6},children:[t," interrupted"]}),n.length===0?(0,$t.jsx)("div",{style:{fontSize:12,color:"#22c55e"},children:"All cases passed"}):n.map((o,r)=>(0,$t.jsxs)("div",{style:{fontSize:12,padding:"3px 0",display:"flex",gap:6,alignItems:"baseline"},children:[(0,$t.jsx)("span",{style:{color:"#333",fontWeight:600,flexShrink:0},children:o.name}),(0,$t.jsx)("span",{style:{color:o.score>=50?"#f59e0b":"#ef4444",flexShrink:0},children:o.score}),(0,$t.jsx)("span",{style:{color:"#888",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:o.reason.length>80?`${o.reason.slice(0,80)}\u2026`:o.reason})]},`${o.name}-${r}`))]})};var dt=T(W()),Ka={fontSize:12,fontWeight:600,color:"rgba(0,0,0,0.65)",marginBottom:8},Ha={border:"1px solid #f0f0f0",borderRadius:12,padding:12},_n=({agentId:e,projectId:t,runs:n,showRoundTrend:o=!0})=>{let{get:r}=Qe(),i=(0,Nt.useMemo)(()=>Ma(n),[n]),a=$a(n),d=n.find(y=>y.id===a),[l,c]=(0,Nt.useState)(null),g=Nt.default.useRef(r);g.current=r,(0,Nt.useEffect)(()=>{if(!a){c(null);return}let y=!1;return g.current(`/api/eval/runs/${a}`).then(f=>!y&&c(f.data?.results??[])).catch(()=>!y&&c([])),()=>{y=!0}},[a]);let u=(0,Nt.useMemo)(()=>Oa(l??[]),[l]),s=(0,Nt.useMemo)(()=>za(n),[n]),p=Qn(n).length>0;return i.latestScore===null?(0,dt.jsx)("div",{style:{height:120,display:"flex",alignItems:"center",justifyContent:"center",color:"#bfbfbf",fontSize:12},children:"No eval runs yet"}):(0,dt.jsxs)("div",{"data-testid":"eval-quality-panel",style:{display:"flex",flexDirection:"column",gap:12},children:[(0,dt.jsx)(Ba,{summary:i}),o&&(0,dt.jsx)(ja,{agentId:e,projectId:t,runs:n}),p&&(0,dt.jsxs)("div",{"data-testid":"run-trend-card",style:Ha,children:[(0,dt.jsx)("div",{style:Ka,children:"Score by run"}),(0,dt.jsx)(gn,{option:s,height:160})]}),a&&l!==null&&(0,dt.jsxs)("div",{"data-testid":"run-diagnosis-card",style:Ha,children:[(0,dt.jsxs)("div",{style:Ka,children:["Latest run",d?` \xB7 ${Lo(new Date(d.createdAt))}`:""," \xB7 ",i.passedCases,"/",i.totalCases," passed"]}),(0,dt.jsx)(Ga,{dimensions:u}),(0,dt.jsx)(qa,{results:l})]})]})};var se=T(W()),Ua={background:"rgba(255, 255, 255, 0.6)",border:"1px solid rgba(240, 240, 240, 0.7)",borderRadius:10,padding:"8px 12px",boxShadow:"0 2px 10px rgba(0,0,0,0.06)",backdropFilter:"blur(8px)",pointerEvents:"auto",cursor:"pointer"},Sl=async()=>{},Cl={rounds:[],round:null,subTasks:[],subTasksByRound:{},loading:!1},Wo=({assistantId:e,projectId:t,onProjectChange:n,onLearningStarted:o,learningTasks:r=Cl,topOffset:i=12,onLearningRefresh:a,evalTick:d,showLearning:l=!0,variant:c="full"})=>{let[g,u]=(0,Yn.useState)(null),[s,p]=(0,Yn.useState)(!1),y=ua(e),f=No(e);return(0,Yn.useEffect)(()=>{d!==void 0&&d>0&&f.refresh()},[d]),c==="selector"?(0,se.jsx)("div",{style:{position:"absolute",left:12,top:i,zIndex:10,pointerEvents:"none"},children:(0,se.jsx)("div",{style:{pointerEvents:"auto"},children:(0,se.jsx)(dr,{kind:"training",disableDropdown:!1,showWorkspace:!1,value:t,onChange:n})})}):(0,se.jsxs)(se.Fragment,{children:[(0,se.jsxs)("div",{style:{position:"absolute",left:12,top:i,zIndex:10,display:"flex",flexDirection:"column",gap:8,pointerEvents:"none"},children:[(0,se.jsx)("div",{style:{pointerEvents:"auto"},children:(0,se.jsx)(dr,{kind:"training",disableDropdown:!1,showWorkspace:!1,value:t,onChange:n})}),(0,se.jsxs)("div",{onClick:()=>u(g==="runtime"?null:"runtime"),title:"Click for 30-day chart",style:Ua,children:[(0,se.jsx)("div",{style:{fontSize:10,fontWeight:600,color:"#999",marginBottom:4},children:"Runtime"}),(0,se.jsxs)("div",{style:{display:"flex",gap:14,fontSize:12,alignItems:"center"},children:[(0,se.jsxs)("span",{children:[(0,se.jsx)("strong",{style:{color:"#595959"},children:y.total})," ",(0,se.jsx)("span",{style:{color:"#bbb"},children:"threads"})]}),(0,se.jsxs)("span",{children:[(0,se.jsx)("strong",{style:{color:"#595959"},children:y.last7d})," ",(0,se.jsx)("span",{style:{color:"#bbb"},children:"7d"})]}),(0,se.jsxs)("span",{children:[(0,se.jsx)("strong",{style:{color:"#595959"},children:y.last30d})," ",(0,se.jsx)("span",{style:{color:"#bbb"},children:"30d"})]}),(0,se.jsx)("span",{style:{color:"#999"},children:Lo(y.lastActive)}),y.daily7d.length>0&&(0,se.jsx)(fa,{values:y.daily7d,width:56,height:20,color:"#8c8c8c"})]})]}),(0,se.jsxs)("div",{onClick:()=>u(g==="eval"?null:"eval"),title:"Click for score trend",style:Ua,children:[(0,se.jsx)("div",{style:{fontSize:10,fontWeight:600,color:"#999",marginBottom:4},children:"Eval quality"}),(0,se.jsxs)("div",{style:{display:"flex",gap:14,fontSize:12,alignItems:"center"},children:[(0,se.jsxs)("span",{children:[(0,se.jsx)("strong",{style:{color:f.score===null?"#d9d9d9":f.score>=80?"#22c55e":f.score>=50?"#f59e0b":"#ef4444"},children:f.score!==null?f.score.toFixed(1):"\u2014"})," ",(0,se.jsx)("span",{style:{color:"#bbb"},children:"score"})]}),(0,se.jsxs)("span",{children:[(0,se.jsx)("strong",{style:{color:"#595959"},children:f.passRate!==null?`${f.passRate}%`:"\u2014"})," ",(0,se.jsx)("span",{style:{color:"#bbb"},children:"pass"})]}),(0,se.jsxs)("span",{children:[(0,se.jsx)("strong",{style:{color:"#595959"},children:f.runCount})," ",(0,se.jsx)("span",{style:{color:"#bbb"},children:"runs"})]}),f.scores.length>1&&(0,se.jsx)(ma,{values:f.scores.slice(-10),width:64,height:20,color:f.score===null?"#d9d9d9":f.score>=80?"#22c55e":f.score>=50?"#f59e0b":"#ef4444"})]})]}),l&&(0,se.jsx)(Ia,{assistantId:e,projectId:t,onLearningStarted:o,round:r.round,subTasks:r.subTasks,rounds:r.rounds,subTasksByRound:r.subTasksByRound,loading:r.loading,onRefresh:a??Sl,onExpandWorkflow:()=>p(!0)})]}),g==="runtime"&&(0,se.jsxs)("div",{style:{position:"absolute",left:340,top:12,zIndex:11,background:"#fff",borderRadius:12,padding:16,border:"1px solid #f0f0f0",boxShadow:"0 6px 24px rgba(0,0,0,0.15)",width:420},children:[(0,se.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"rgba(0,0,0,0.65)",marginBottom:8},children:"Runtime \u2014 last 30 days"}),(0,se.jsx)(gn,{option:pa(y.daily30d),height:220})]}),g==="eval"&&(0,se.jsx)(ht,{open:!0,width:720,title:"Eval quality",onClose:()=>u(null),children:(0,se.jsx)(_n,{agentId:e,runs:f.runs??[]})}),s&&(0,se.jsx)(ht,{open:!0,width:860,title:"Learning workflow",onClose:()=>p(!1),children:(0,se.jsx)(Pa,{rounds:r.rounds,subTasksByRound:r.subTasksByRound,loading:r.loading})})]})};var Rr=T(Re());var yn=T(W()),Al=({data:e})=>{let[t,n]=Rr.default.useState(!1),o=!!e.pinned;return(0,yn.jsx)("div",{"data-testid":`canvas-zone-${e.label.toLowerCase()}`,style:{width:e.width,height:e.height,borderRadius:18,border:"1.5px dashed rgba(99,102,241,0.28)",background:"rgba(99,102,241,0.04)",pointerEvents:"none",position:"relative"},children:(0,yn.jsxs)("div",{style:{position:"absolute",top:-22,left:2,display:"flex",alignItems:"center",gap:6},children:[(0,yn.jsx)("span",{"data-testid":`canvas-zone-chip-${e.label.toLowerCase()}`,style:{fontSize:11,fontWeight:600,letterSpacing:1,color:"rgba(99,102,241,0.65)",userSelect:"none",pointerEvents:"auto",cursor:"grab"},children:e.label}),e.pinnable&&e.onPinToggle&&(0,yn.jsx)("button",{type:"button","data-testid":`canvas-zone-pin-${e.label.toLowerCase()}`,"aria-label":o?`Unpin ${e.label} zone`:`Pin ${e.label} zone`,"aria-pressed":o,onMouseDown:r=>r.stopPropagation(),onClick:r=>{r.stopPropagation(),e.onPinToggle?.()},onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:18,height:18,padding:0,border:"none",borderRadius:5,background:o?"rgba(99,102,241,0.12)":"transparent",color:o||t?"#6366f1":"rgba(99,102,241,0.45)",cursor:"pointer",pointerEvents:"auto",lineHeight:1},children:(0,yn.jsx)(hi,{size:11,fill:o?"currentColor":"none"})})]})})},Za=Rr.default.memo(Al);var Ze=T(Re());var zo=T(Re()),Xn="(max-width: 767px)",El=()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(Xn).matches:!1;function Va(){let[e,t]=(0,zo.useState)(El);return(0,zo.useEffect)(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;let n=window.matchMedia(Xn),o=r=>{t(r.matches)};return t(n.matches),typeof n.addEventListener=="function"?(n.addEventListener("change",o),()=>n.removeEventListener("change",o)):(n.addListener(o),()=>n.removeListener(o))},[]),e}var nn=T(Re()),Qa=(e,t)=>e?.requestId===t?.requestId&&e?.content===t?.content;function Fn({assistantId:e,initialMessageRequest:t,onInitialMessageSubmitted:n}){let o=(0,nn.useRef)(new Set),r=t??null,i=(0,nn.useRef)(null);i.current===null&&(i.current={assistantId:e,observedRequest:r,request:r});let[a,d]=(0,nn.useState)(i.current),l=(0,nn.useRef)(a);(0,nn.useLayoutEffect)(()=>{let u=l.current;if(u.assistantId===e&&Qa(u.observedRequest,r))return;let s={assistantId:e,observedRequest:r,request:r};l.current=s,d(s)},[e,r?.requestId,r?.content]);let c=a.assistantId===e&&Qa(a.observedRequest,r)?a.request:null;return{attemptedRequestIdsRef:o,effectivePendingRequest:c,handleInitialMessageSubmitted:u=>{let s=l.current;if(s.assistantId===e){if(s.request?.requestId===u){let p={...s,request:null};l.current=p,d(y=>y.assistantId===e&&y.request?.requestId===u?{...y,request:null}:y)}n?.(u)}}}}var bt=T(W()),Ya=()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia(Xn).matches:!1,Bo=({assistantId:e,assistantName:t,workspaceId:n,projectId:o,contextType:r,initialMessageRequest:i,onInitialMessageSubmitted:a,onToolCompleted:d,label:l="Architect",temporarilyHidden:c=!1,openSignal:g=0,showMobileTrigger:u=!0,restoreFocusRef:s})=>{let[p,y]=(0,Ze.useState)(Ya),[f,v]=(0,Ze.useState)(()=>!Ya()),[m,w]=(0,Ze.useState)(360),C=(0,Ze.useRef)(null),A=(0,Ze.useRef)(null),I=(0,Ze.useRef)(null),_=i??null,{attemptedRequestIdsRef:z,effectivePendingRequest:S,handleInitialMessageSubmitted:x}=Fn({assistantId:e,initialMessageRequest:i,onInitialMessageSubmitted:a});(0,Ze.useEffect)(()=>{C.current&&(C.current.inert=c||!f)},[p,c,f]),(0,Ze.useEffect)(()=>{p&&c&&v(!1)},[p,c]),(0,Ze.useEffect)(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;let J=window.matchMedia(Xn),D=j=>{y(j.matches),v(!j.matches)};return y(J.matches),typeof J.addEventListener=="function"?(J.addEventListener("change",D),()=>J.removeEventListener("change",D)):(J.addListener(D),()=>J.removeListener(D))},[]),(0,Ze.useEffect)(()=>{g>0&&v(!0)},[g]),(0,Ze.useEffect)(()=>{_&&!p&&v(!0)},[e,_?.requestId,_?.content,p]);let B=(0,Ze.useCallback)(J=>{J.preventDefault(),I.current={startX:J.clientX,startWidth:m}},[m]);(0,Ze.useEffect)(()=>{let J=j=>{if(!I.current)return;let G=I.current.startX-j.clientX,M=Math.min(900,Math.max(320,I.current.startWidth+G));w(M)},D=()=>{I.current=null};return window.addEventListener("mousemove",J),window.addEventListener("mouseup",D),()=>{window.removeEventListener("mousemove",J),window.removeEventListener("mouseup",D)}},[]);let ce=(0,bt.jsxs)("div",{ref:C,"data-testid":"architect-copilot-container","aria-hidden":c||!f||void 0,style:p?{width:"100%",height:"100%",overflow:"hidden",visibility:c||!f?"hidden":"visible",pointerEvents:c||!f?"none":void 0}:{position:"absolute",right:12,top:56,bottom:12,width:m,zIndex:15,borderRadius:12,overflow:"hidden",boxShadow:"0 4px 24px rgba(0,0,0,0.12)",visibility:c||!f?"hidden":"visible",pointerEvents:c||!f?"none":void 0},children:[!p&&(0,bt.jsx)("div",{onMouseDown:B,style:{position:"absolute",left:0,top:0,bottom:0,width:6,cursor:"ew-resize",zIndex:2,background:"transparent"}}),(0,bt.jsx)(En,{defaultWorkspaceId:n??void 0,defaultProjectId:o??void 0,children:(0,bt.jsx)(Pn,{workflowContext:{id:e,name:t??"",type:r},onClose:()=>v(!1),onToolCompleted:d,initialMessageRequest:S,attemptedInitialMessageRequestIdsRef:z,rawInitialMessage:!0,onInitialMessageSubmitted:x},e)},`${n??"default"}:${o??"default"}`)]});return(0,bt.jsxs)(bt.Fragment,{children:[!f&&!c&&(!p||u)?(0,bt.jsx)("div",{style:p?{position:"absolute",right:12,bottom:16,zIndex:20}:{position:"absolute",right:0,top:"50%",transform:"translateY(-50%)",zIndex:20},children:(0,bt.jsx)("button",{ref:A,type:"button","aria-label":"Open copilot",onClick:()=>v(!0),style:p?{padding:"9px 14px",background:"#6366f1",color:"#fff",borderRadius:9999,cursor:"pointer",fontSize:12,fontWeight:500,userSelect:"none",border:"none",boxShadow:"0 4px 16px rgba(79,70,229,0.28)"}:{writingMode:"vertical-rl",textOrientation:"mixed",padding:"16px 8px",background:"#6366f1",color:"#fff",borderRadius:"8px 0 0 8px",cursor:"pointer",fontSize:12,fontWeight:500,userSelect:"none",border:"none"},children:l})}):null,p?(0,bt.jsx)(Kr,{title:l,"aria-label":l,placement:"right",width:"100vw",open:f&&!c,onClose:()=>v(!1),forceRender:!0,destroyOnHidden:!1,styles:{body:{padding:0,overflow:"hidden",height:"100%"}},afterOpenChange:J=>{!J&&!f&&(s?.current??A.current)?.focus()},children:ce}):ce]})};var hn=T(Re());var on=T(W()),Jn="node:architect-copilot",Pl=({data:e})=>{let{assistantId:t,assistantName:n,workspaceId:o,projectId:r,initialMessageRequest:i,onInitialMessageSubmitted:a,onToolCompleted:d,temporarilyHidden:l=!1,openSignal:c=0,width:g,height:u,center:s}=e,p=yo(),y=(0,hn.useRef)(null),{attemptedRequestIdsRef:f,effectivePendingRequest:v,handleInitialMessageSubmitted:m}=Fn({assistantId:t,initialMessageRequest:i,onInitialMessageSubmitted:a}),w=l,C=()=>p.setCenter(s.x,s.y,{zoom:1,duration:400});return(0,hn.useEffect)(()=>{y.current&&(y.current.inert=w)},[w]),(0,hn.useEffect)(()=>{c>0&&C()},[c]),(0,on.jsxs)("div",{style:{width:g,height:u,position:"relative",fontFamily:"inherit"},children:[(0,on.jsx)("div",{ref:y,"data-testid":"architect-copilot-node-panel","aria-hidden":w||void 0,className:"nodrag nowheel nopan",style:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:12,overflow:"hidden",background:"#fff",visibility:w?"hidden":"visible",pointerEvents:w?"none":void 0,userSelect:"text",WebkitUserSelect:"text"},children:(0,on.jsx)(En,{defaultWorkspaceId:o??void 0,defaultProjectId:r??void 0,children:(0,on.jsx)(Pn,{workflowContext:{id:t,name:n??"",type:"agent"},onToolCompleted:d,initialMessageRequest:v,attemptedInitialMessageRequestIdsRef:f,rawInitialMessage:!0,showHeader:!1,onInitialMessageSubmitted:m},t)},`${o??"default"}:${r??"default"}`)}),w&&(0,on.jsxs)("button",{type:"button","data-testid":"architect-copilot-node-badge","aria-label":"Expand architect copilot",onClick:C,style:{position:"absolute",left:12,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",gap:6,padding:"9px 14px",background:"#6366f1",color:"#fff",borderRadius:9999,border:"none",cursor:"pointer",fontSize:12,fontWeight:500,userSelect:"none"},children:[(0,on.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:"#22c55e",display:"inline-block"}}),"Architect"]})]})},Xa=hn.default.memo(Pl);var Cr=T(Re());var Go=(e,t,n,o,r)=>({id:e,label:t,x:n-o/2,y:-r/2,width:o,height:r}),bn=Go("zone:config","CONFIG",-767,900,620),Wn=Go("zone:testing","EVALUATION",-69,400,560),jo=Go("zone:learning","LEARNING",459,560,680),Ja=Go("zone:copilot","COPILOT",1147,720,740);var es=[bn.id,Wn.id,jo.id,Ja.id],ts=.45,Dl=220,Ll=110,Nl=200,$o=90,qo={"group:subagents":{x:0,y:-190},"group:capabilities":{x:330,y:0},"group:tools":{x:0,y:190},"group:skills":{x:-330,y:0}},ns=e=>({x:e.x+e.width/2-Dl/2,y:e.y+e.height/2-Ll/2}),os=(e,t,n)=>{let o=qo[t]??{x:0,y:0};return{x:e.x+e.width/2+o.x-Nl/2,y:e.y+e.height/2+o.y-n/2}},Ml=310,Ol=e=>{let t=bn.x+bn.width/2,n=Ml;for(let[o,r]of Object.entries(e)){let i=qo[o];i&&(n=Math.max(n,Math.abs(i.y)+r/2+40))}return{id:bn.id,label:bn.label,x:t-bn.width/2,y:-n,width:bn.width,height:n*2}},_l=900,Ir={x:20,y:20},eo=110,to=48,Fl=220,Wl=560,zl=e=>({id:Wn.id,label:Wn.label,x:Wn.x,y:Wn.y,width:Wn.width,height:Math.max(Wl,Fl+e+24)}),rs=(e,t,n)=>({x:e.x+e.width/2-eo/2,y:e.y+e.height/2-to/2}),Bl=48,jl=520,Gl=720,vt=20,Sr=150,$l=12,ql=56,Kl=12,is=(e,t,n)=>{let o={},r=$l,i=ql,a=Kl,d=Math.round((e-r*2-a)/2),l=e-r*2-a-d,c=t-i-r,g=Math.round((c-a)/2),u=n.has("learning"),s=n.has("evaluation");return n.has("copilot")?(o.copilot={width:d},u&&(o.learning=s?{left:r,top:i,width:l,height:g}:{left:r,top:i,width:l,height:c}),s&&(o.evaluation=u?{left:r,top:i+g+a,width:l,height:c-g-a}:{left:r,top:i,width:l,height:c}),o):u&&s?(o.learning={left:r,top:i,width:l,height:c},o.evaluation={left:r+l+a,top:i,width:d,height:c},o):(u&&(o.learning={width:d}),s&&(o.evaluation={width:d}),o)},as=e=>{let t=Ol(e.groupHeights),n={...zl(e.suitesGroupHeight),width:jl},o=Math.max(jo.width,e.learningDagBBox.width+vt*2),r={...jo,width:o,height:Math.max(jo.height,e.learningDagBBox.height+Sr+vt*2)},i={...Ja,width:Gl},a=Math.max(_l,t.height,n.height,r.height,i.height),d=t.x,l=c=>{let g={x:d,y:-a/2,width:c.width,height:a};return d+=c.width+Bl,g};return{config:{...l(t),label:t.label,id:t.id},learning:{...l(r),label:r.label,id:r.id},testing:{...l(n),label:n.label,id:n.id},copilot:{...l(i),label:i.label,id:i.id},height:a}};var ct=T(W()),Hl=.4,Ul=.45,ss=(e,t)=>t==="badge"?e>=Ul?"overview":"badge":e<Hl?"badge":"overview",Zl={background:"rgba(255,255,255,0.92)",border:"1px solid rgba(240,240,240,0.9)",borderRadius:14},Vl=({data:e})=>(0,ct.jsxs)("div",{"data-testid":"testing-panel",style:{...Zl,width:e.width,minHeight:e.height,boxSizing:"border-box",padding:12,overflow:"auto",display:"flex",flexDirection:"column",gap:12},children:[(0,ct.jsx)(_n,{agentId:e.agentId,runs:e.runs}),e.suites.length>0&&(0,ct.jsxs)("div",{"data-testid":"testing-suites",style:{borderTop:"1px solid #f0f0f0",paddingTop:10,display:"flex",flexDirection:"column",gap:8},children:[(0,ct.jsx)("div",{style:{fontSize:12,fontWeight:600,color:"rgba(0,0,0,0.65)"},children:"Evaluation suites"}),(0,ct.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:e.suites.map(t=>(0,ct.jsxs)("div",{"data-testid":"testing-suite-chip",onClick:()=>e.onSuiteClick(t),style:{display:"inline-flex",alignItems:"center",gap:5,padding:"4px 10px",borderRadius:9999,background:"#fff",border:`1px solid ${Po("eval")}55`,fontSize:11,color:"#333",cursor:"pointer",whiteSpace:"nowrap"},children:[(0,ct.jsx)("span",{style:{overflow:"hidden",textOverflow:"ellipsis"},children:t.label}),t.description&&(0,ct.jsx)("span",{style:{fontSize:10,color:"#999"},children:t.description})]},t.id))})]})]}),ls=Cr.default.memo(Vl),Ql=({data:e})=>(0,ct.jsxs)("div",{"data-testid":"testing-badge",style:{width:eo,height:to,borderRadius:10,background:"rgba(255,255,255,0.92)",border:"1px solid rgba(240,240,240,0.9)",display:"flex",alignItems:"center",justifyContent:"center",gap:6},children:[(0,ct.jsx)("span",{style:{width:10,height:10,borderRadius:9999,background:e.score===null?"#d1d5db":en(e.score),flexShrink:0}}),(0,ct.jsx)("span",{style:{fontSize:12,fontWeight:600,color:"#6b7280"},children:e.suiteCount})]}),ds=Cr.default.memo(Ql);var It=T(Re());var te=T(W());function Pr(e,t){for(let n of e.rounds){let o=e.subTasksByRound[n.id]??[];if(n.id===t)return{task:n,related:[n,...o]};let r=o.find(i=>i.id===t);if(r)return{task:r,related:[n,...o]}}return null}function Yl(e,t){let n=e.rounds;if(t){let o=n.find(r=>r.id===t);if(o)return o}for(let o of n)if(Oo(o))return o;return e.round??n[0]??null}function Dr(e,t){let n=Yl(e,t);return n?[n,...e.subTasksByRound[n.id]??[]]:[]}var Ko=200,cs=80,Xl=40,Jl=70,Er={width:0,height:0},ed=e=>({headerOffset:{x:e.x+vt,y:e.y+vt},headerWidth:e.width-vt*2,dagOffset:{x:e.x+vt,y:e.y+Sr+vt}}),td={background:"rgba(255,255,255,0.92)",border:"1px solid rgba(240,240,240,0.9)",borderRadius:14,padding:"10px 12px"},nd={traversed:{stroke:"#22c55e",strokeWidth:1.5},flowing:{stroke:"#6366f1",strokeWidth:2},idle:{stroke:"#d1d5db",strokeWidth:1}},od={stroke:"#cbd5e1",strokeOpacity:.55,strokeWidth:1,strokeDasharray:"5 4"},rd={type:"arrowclosed",color:"#cbd5e1",width:16,height:16};function us(e){let t=e.context?.interruption;return e.status==="interrupted"&&typeof t=="object"&&t!==null&&t.type==="review_required"}function ps(e){if(!e)return null;let t=new Date(e).getTime();if(!Number.isFinite(t))return null;let n=Math.floor((Date.now()-t)/6e4);return n<1?"just now":n<60?`${n}m ago`:n<1440?`${Math.floor(n/60)}h ago`:`${Math.floor(n/1440)}d ago`}function gs(e){let t=e.length>0?e[0]:null,n=new Map(e.map(r=>[r.id,r])),o=new Map;for(let r of e){if(t&&r.id===t.id)continue;let i=r.parentId&&r.parentId!==r.id&&n.has(r.parentId)?r.parentId:t?.id;if(!i)continue;let a=o.get(i)??[];a.push(r),o.set(i,a)}return{byId:n,round:t,childrenOf:o}}function id(e,t){let n=[],o=[...e.childrenOf.get(t)??[]];for(;o.length>0;){let r=o.pop();if(!r)break;n.push(r),o.push(...e.childrenOf.get(r.id)??[])}return n}function ad(e){return e.some(t=>t.status==="review"||us(t))?"#f59e0b":e.some(t=>t.status==="in_progress")?"#3b82f6":"#9ca3af"}function sd(e,t){let n=(e.dependencies??[]).filter(r=>t.has(r));if(n.length===0)return null;let o=n.filter(r=>{let i=t.get(r);return i?!Oi(i.status):!1});return o.length>0?{kind:"waiting",count:o.length}:{kind:"done",count:n.length}}function fs(e,t){let n=e[0]??null;return!n||!t||t===n.id?null:e.some(o=>o.id===t)?t:null}function ms(e){let t=new Map(e.map(l=>[l.id,l])),n=new Set(e.map(l=>l.id)),o=new Map([...e].sort((l,c)=>new Date(l.createdAt).getTime()-new Date(c.createdAt).getTime()).map((l,c)=>[l.id,c])),r=new Map,i=new Map;for(let l of e)r.set(l.id,[]),i.set(l.id,0);for(let l of e)for(let c of l.dependencies??[])n.has(c)&&c!==l.id&&(r.get(c)?.push(l.id),i.set(l.id,(i.get(l.id)??0)+1));let a=new Set(n),d=[];for(;a.size>0;){let l=null,c=1/0;for(let u of a){if((i.get(u)??0)!==0)continue;let s=o.get(u)??1/0;s<c&&(l=u,c=s)}if(l===null)break;a.delete(l);let g=t.get(l);g&&d.push(g);for(let u of r.get(l)??[])i.set(u,(i.get(u)??0)-1)}for(let l of[...a].sort((c,g)=>(o.get(c)??1/0)-(o.get(g)??1/0))){let c=t.get(l);c&&d.push(c)}return d}function ld(e,t){let n=new Set(t.map(i=>i.id));if(t.some(i=>(i.dependencies??[]).some(a=>a!==i.id&&n.has(a))))return[];let r=[];for(let i=0;i+1<e.length;i++)r.push({from:e[i].id,to:e[i+1].id,kind:"sequence"});return r}function Ho(e,t,n=null){let o={root:null,tasks:[],edges:[],positions:new Map,bbox:{...Er}},r=gs(e),i=r.round;if(!i)return o;let a=fs(e,t),d=a??i.id,l=r.childrenOf.get(d)??[],c=x=>{let B=id(r,x.id);return B.length===0?null:{count:B.length,dotColor:ad(B)}},g=(x,B,ce)=>({id:x.id,task:x,seq:B,fold:ce?c(x):null,depBadge:sd(x,r.byId)}),u=[],s=[],p=x=>{let B=ms(x);return s.push(...ld(B,x)),B};p(l).forEach((x,B)=>{u.push(g(x,B+1,!1)),p(r.childrenOf.get(x.id)??[]).forEach((ce,V)=>{u.push(g(ce,V+1,!0))})});let y=a?u.map(x=>x.task):[i,...u.map(x=>x.task)],v=ko(y).edges.map(x=>({from:x.from,to:x.to,kind:x.kind==="parent"?"structure":"dependency"}));v.push(...s);let m=null;if(!a){m={id:i.id,label:n!==null?`R${n}`:"R",title:i.title,status:i.status,doneCount:e.filter(B=>B.status==="completed").length,totalCount:e.length};let x=new Set(v.filter(B=>B.from===i.id).map(B=>`${B.to}:${B.kind}`));for(let B of l)x.has(`${B.id}:structure`)||(v.push({from:i.id,to:B.id,kind:"structure"}),x.add(`${B.id}:structure`))}let w=y.map(x=>({id:x.id})),C=bo(w,v.map(x=>({from:x.from,to:x.to})),{nodeWidth:Ko,nodeHeight:cs,nodesep:Xl,ranksep:Jl,rankdir:"TB"}),A=1/0,I=1/0;for(let x of C.values())A=Math.min(A,x.x),I=Math.min(I,x.y);let _=new Map;if(Number.isFinite(A)&&Number.isFinite(I))for(let[x,B]of C)_.set(x,{x:B.x-A,y:B.y-I});let z=0,S=0;for(let x of _.values())z=Math.max(z,x.x+Ko),S=Math.max(S,x.y+cs);return{root:m,tasks:u,edges:v,positions:_,bbox:{width:z,height:S}}}function ys(e,t=null){return e.length===0?{width:0,height:0}:Ho(e,t).bbox}var Ar={draggable:!1,selectable:!1,focusable:!1,deletable:!1,connectable:!1};function Lr(e,t,n){let o=e.rounds,r=Dr(e,t),i=r[0]??null,a=r.filter(us),d=gs(r),l=r.filter(f=>f.status==="completed").length,c=i?o.findIndex(f=>f.id===i.id):-1,g=i?o.length-c:null,u=o.map((f,v)=>({id:f.id,label:`R${o.length-v}`,title:f.title,status:f.status,createdAt:f.createdAt})),s=r.reduce((f,v)=>f?new Date(v.updatedAt).getTime()>new Date(f.updatedAt).getTime()?v:f:v,null),p=fs(r,n),y=[];if(i&&(y.push({id:i.id,label:`R${g}`}),p)){let f=[],v=d.byId.get(p)??null;for(;v&&v.id!==i.id;)f.unshift(v),v=v.parentId?d.byId.get(v.parentId)??null:null;for(let m of f){let C=ms(d.childrenOf.get(m.parentId??"")??[]).findIndex(A=>A.id===m.id)+1;y.push({id:m.id,label:`${C}.${m.title}`})}}return{tree:r,selectedRound:i,roundTreeById:d.byId,focusId:p,reviewTasks:a,doneCount:l,roundNumber:g,roundOptions:u,roundLatestActivity:ps(s?.updatedAt),breadcrumb:y}}var Nr=({hasRounds:e,reviewCount:t,onReviewClick:n,roundOptions:o,selectedRoundValue:r,onSelectRound:i,roundTitle:a,roundStatus:d,roundDoneCount:l,roundTotalCount:c,roundWaitingCount:g,roundLatestActivity:u,breadcrumb:s,onFocusTask:p,actions:y})=>{let f=d?Gt[d]:null;return(0,te.jsxs)(te.Fragment,{children:[(0,te.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8,marginBottom:6},children:[(0,te.jsx)("div",{className:"nodrag nopan nowheel","data-testid":"learning-round-select",children:(0,te.jsx)(mt,{size:"small",style:{width:260},placeholder:"Select round",value:r??void 0,allowClear:!0,disabled:o.length===0,onChange:v=>i(v??null),options:o.map(v=>{let m=Gt[v.status],w=ps(v.createdAt);return{value:v.id,label:`${v.label} ${v.title} \xB7 ${m.label}${w?` \xB7 ${w}`:""}`}})})}),y]}),!e&&(0,te.jsx)("div",{"data-testid":"learning-empty",style:{fontSize:12,color:"#999",paddingBottom:4},children:"No learning tasks yet"}),f&&a&&(0,te.jsxs)("div",{"data-testid":"learning-round-stats",style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",marginBottom:6},children:[(0,te.jsx)("span",{style:{width:8,height:8,borderRadius:9999,background:f.color,flexShrink:0}}),(0,te.jsx)("span",{style:{fontSize:12,fontWeight:600,color:"#262626"},children:f.label}),(0,te.jsx)("span",{style:{fontSize:11,color:"#d1d5db"},children:"\xB7"}),(0,te.jsxs)("span",{style:{fontSize:11,color:"#8c8c8c"},children:[l,"/",c," tasks"]}),g>0&&(0,te.jsxs)("span",{style:{fontSize:11,fontWeight:600,color:"#b45309",background:"rgba(245,158,11,0.12)",border:"1px solid rgba(245,158,11,0.35)",borderRadius:9999,padding:"1px 8px"},children:["\u23F8 ",g," waiting"]}),u&&(0,te.jsxs)(te.Fragment,{children:[(0,te.jsx)("span",{style:{fontSize:11,color:"#d1d5db"},children:"\xB7"}),(0,te.jsx)("span",{style:{fontSize:11,color:"#9ca3af"},children:u})]})]}),s.length>1&&(0,te.jsxs)("div",{"data-testid":"learning-breadcrumb",style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap",marginBottom:6,fontSize:11,color:"#6b7280"},children:[s.map((v,m)=>(0,te.jsxs)(It.default.Fragment,{children:[m>0&&(0,te.jsx)("span",{style:{color:"#d1d5db"},children:"/"}),(0,te.jsx)("button",{type:"button","data-testid":`learning-crumb-${m}`,onClick:()=>p(m===0?null:v.id),style:{border:"none",background:"transparent",padding:0,cursor:"pointer",fontSize:11,fontWeight:600,color:m===s.length-1?"#4b5563":"#6366f1"},children:v.label})]},v.id)),(0,te.jsx)("button",{type:"button","data-testid":"learning-crumb-back",onClick:()=>p(s[s.length-2]?.id??null),style:{border:"none",background:"rgba(99,102,241,0.08)",borderRadius:9999,padding:"1px 8px",cursor:"pointer",fontSize:11,fontWeight:600,color:"#6366f1"},children:"\u2039 Back"})]}),t>0&&(0,te.jsxs)("button",{type:"button","data-testid":"learning-review-banner","aria-label":`Open ${t} task${t>1?"s":""} waiting for approval`,onClick:n,style:{display:"flex",alignItems:"center",justifyContent:"flex-start",gap:6,cursor:"pointer",width:"100%",fontSize:12,fontWeight:600,color:"#b45309",background:"rgba(245,158,11,0.12)",border:"1px solid rgba(245,158,11,0.35)",borderRadius:8,padding:"5px 8px",marginBottom:6},children:[t," item",t>1?"s":""," waiting for approval"]})]})},dd=({data:e})=>{let[t,n]=(0,It.useState)(!1);return(0,te.jsxs)("div",{style:{...td,width:e.width},children:[(0,te.jsx)(Nr,{hasRounds:e.hasRounds,reviewCount:e.reviewCount,onReviewClick:e.onReviewClick,roundOptions:e.roundOptions,selectedRoundValue:e.selectedRoundValue,onSelectRound:e.onSelectRound,roundNumber:e.roundNumber,roundTitle:e.roundTitle,roundStatus:e.roundStatus,roundDoneCount:e.roundDoneCount,roundTotalCount:e.roundTotalCount,roundWaitingCount:e.roundWaitingCount,roundLatestActivity:e.roundLatestActivity,breadcrumb:e.breadcrumb,onFocusTask:e.onFocusTask,actions:(0,te.jsx)(ee,{size:"small",type:"text",icon:(0,te.jsx)(Qt,{}),"data-testid":"learning-new-task",onClick:()=>n(!0),style:{fontSize:12},children:"New Learning Task"})}),(0,te.jsx)(_o,{open:t,agentId:e.agentId,defaultProjectId:e.projectId??void 0,onClose:()=>n(!1),onCreated:(o,r,i,a)=>{e.onLearningStarted?.(i,o,a),n(!1)}})]})},hs=It.default.memo(dd),cd=({data:e})=>{let t=Gt[e.task.status],[n,o]=(0,It.useState)(!1);return(0,te.jsxs)("div",{"data-testid":"learning-dag-task",onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:Ko,minHeight:46,padding:"8px 10px",borderRadius:10,cursor:"pointer",border:`1.5px solid ${n?"rgba(99,102,241,0.5)":t.color}`,background:n?"rgba(99,102,241,0.08)":"#fff",transition:"background 0.15s ease, border-color 0.15s ease",animation:t.active?"workflow-node-pulse 1.6s ease-in-out infinite":void 0},children:[(0,te.jsx)(xt,{type:"target",position:it.Top,style:{opacity:0}}),(0,te.jsx)(xt,{id:"left",type:"target",position:it.Left,style:{opacity:0}}),(0,te.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:6},children:[(0,te.jsx)("span",{style:{width:8,height:8,borderRadius:9999,background:t.color,flexShrink:0,marginTop:4}}),(0,te.jsxs)("span",{style:{fontSize:12,fontWeight:600,color:"#262626",flexShrink:0},children:[e.seq,"."]}),(0,te.jsx)("span",{"data-testid":"learning-task-title",title:e.task.title,style:{fontSize:12,fontWeight:600,color:"#262626",lineHeight:"17px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:e.task.title})]}),(e.depBadge||e.fold)&&(0,te.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:6,marginTop:5},children:[e.depBadge?(0,te.jsx)("span",{"data-testid":"learning-dep-badge",style:{fontSize:10,fontWeight:600,flexShrink:0,color:e.depBadge.kind==="done"?"#22c55e":"#f59e0b",background:e.depBadge.kind==="done"?"rgba(34,197,94,0.1)":"rgba(245,158,11,0.12)",borderRadius:9999,padding:"1px 6px"},children:e.depBadge.kind==="done"?`\u2B26 ${e.depBadge.count} deps \u2713`:`\u2B26 waits ${e.depBadge.count}`}):(0,te.jsx)("span",{}),e.fold&&(0,te.jsxs)("button",{type:"button","data-testid":"learning-fold",className:"nodrag","aria-label":`Expand ${e.fold.count} nested tasks in ${e.task.title}`,onClick:r=>{r.stopPropagation(),e.onFocusTask?.(e.task.id)},style:{display:"inline-flex",alignItems:"center",gap:4,cursor:"pointer",flexShrink:0,fontSize:10,fontWeight:600,color:"#6b7280",border:"1px solid #e5e7eb",background:"#fafafa",borderRadius:9999,padding:"1px 6px"},children:[(0,te.jsx)("span",{style:{width:6,height:6,borderRadius:9999,background:e.fold.dotColor,flexShrink:0}}),"\u25B8 ",e.fold.count]})]}),(0,te.jsx)(xt,{type:"source",position:it.Bottom,style:{opacity:0}}),t.active&&(0,te.jsx)("style",{children:"@keyframes workflow-node-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(59,130,246,0.35); } 50% { box-shadow: 0 0 0 6px rgba(59,130,246,0.08); } }"})]})},Uo=It.default.memo(cd),ud=({data:e})=>{let t=Gt[e.status],[n,o]=(0,It.useState)(!1);return(0,te.jsxs)("div",{"data-testid":"learning-round-root",onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),style:{width:Ko,minHeight:46,padding:"8px 10px",borderRadius:10,cursor:"pointer",border:`1.5px solid ${n?"rgba(99,102,241,0.5)":t.color}`,background:n?"rgba(99,102,241,0.14)":"rgba(99,102,241,0.04)",transition:"background 0.15s ease, border-color 0.15s ease"},children:[(0,te.jsx)(xt,{type:"target",position:it.Top,style:{opacity:0}}),(0,te.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:6},children:[(0,te.jsx)("span",{style:{width:8,height:8,borderRadius:9999,background:t.color,flexShrink:0,marginTop:4}}),(0,te.jsxs)("span",{"data-testid":"learning-round-root-title",title:e.title,style:{fontSize:12,fontWeight:700,color:"#262626",lineHeight:"17px",display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",wordBreak:"break-word"},children:[e.label," \xB7 ",e.title]})]}),(0,te.jsxs)("div",{style:{fontSize:11,color:"#8c8c8c",marginTop:4},children:[e.doneCount,"/",e.totalCount," tasks done"]}),(0,te.jsx)(xt,{type:"source",position:it.Bottom,style:{opacity:0}})]})},Zo=It.default.memo(ud);function Mr(e,t){let{nodeId:n,byId:o,prefix:r=""}=t;return e.edges.map(i=>{if(i.kind==="dependency"||i.kind==="sequence")return{id:`${r}${i.from}->${i.to}:${i.kind}`,source:n(i.from),target:n(i.to),type:"bezier",animated:!1,style:od,...i.kind==="dependency"?{markerEnd:rd}:{}};let a=Aa(o.get(i.to)?.status??"pending");return{id:`${r}${i.from}->${i.to}:structure`,source:n(i.from),target:n(i.to),targetHandle:"left",animated:a==="flowing",style:nd[a]}})}function bs(e){let{learningTasks:t,selectedRoundId:n,onSelectRound:o,onTaskClick:r,onFocusTask:i,focusTaskId:a,onLearningStarted:d,agentId:l,projectId:c,zone:g}=e;return(0,It.useMemo)(()=>{if(!l)return{nodes:[],edges:[],bbox:{...Er},breadcrumb:[]};let u=ed(g),s=Lr(t,n,a),{tree:p,selectedRound:y,roundTreeById:f,focusId:v,reviewTasks:m,doneCount:w,roundNumber:C,roundOptions:A,roundLatestActivity:I,breadcrumb:_}=s,S=[{id:"learning:header",type:"learningHeader",position:u.headerOffset,data:{width:u.headerWidth,hasRounds:t.rounds.length>0,reviewCount:m.length,onReviewClick:()=>{m[0]&&r(m[0],p)},onLearningStarted:d,agentId:l,projectId:c,roundOptions:A,selectedRoundId:n,selectedRoundValue:y?.id??null,onSelectRound:o,roundNumber:C,roundTitle:y?.title??null,roundStatus:y?.status??null,roundDoneCount:w,roundTotalCount:p.length,roundWaitingCount:m.length,roundLatestActivity:I,breadcrumb:_,onFocusTask:i},...Ar}];if(!y)return{nodes:S,edges:[],bbox:{...Er},breadcrumb:_};let x=Ho(p,v,C),B=g.width-vt*2,ce=u.dagOffset.x+Math.max(0,(B-x.bbox.width)/2);if(x.root){let D=x.positions.get(x.root.id)??{x:0,y:0};S.push({id:"learning:round-root",type:"learningRoundRoot",position:{x:ce+D.x,y:u.dagOffset.y+D.y},data:{label:x.root.label,title:x.root.title,status:x.root.status,doneCount:x.root.doneCount,totalCount:x.root.totalCount,onTaskClick:()=>r(y,p)},...Ar})}for(let D of x.tasks){let j=x.positions.get(D.id)??{x:0,y:0};S.push({id:`learning:task:${D.id}`,type:"learningTask",position:{x:ce+j.x,y:u.dagOffset.y+j.y},data:{task:D.task,seq:D.seq,depBadge:D.depBadge,fold:D.fold,onTaskClick:()=>r(D.task,p),onFocusTask:D.fold?()=>i(D.id):void 0},...Ar})}let J=Mr(x,{byId:f,nodeId:D=>D===y.id?"learning:round-root":`learning:task:${D}`,prefix:"learning:"});return{nodes:S,edges:J,bbox:x.bbox,breadcrumb:_}},[t,n,o,r,i,a,d,l,c,g])}var rn=T(Re()),tt=T(W()),Vo=[{title:"Welcome to the training canvas",description:"Four zones you can arrange freely. Press Next to learn the basics in 3 quick steps.",targetSelector:null,eventKind:null},{title:"Switch zones",description:"Press \u2318/Ctrl + 2 or 4 \u2014 or click a dot in the pill below \u2014 to jump between zones.",targetSelector:'[data-testid="zone-quick-nav"]',eventKind:"zoneActivated"},{title:"Move a zone",description:"Grab a zone label above any block and drag it anywhere. Positions reset next session.",targetSelector:'[data-testid^="canvas-zone-chip-"]',eventKind:"zoneDragged"},{title:"Pin the copilot",description:"Click \u{1F4CC} on the COPILOT label to dock it into the right split. Click again to unpin.",targetSelector:'[data-testid="canvas-zone-pin-copilot"]',eventKind:"copilotPinned"}],Qo=6,vs=({open:e,step:t,onStep:n,onDone:o,events:r,onEventConsumed:i})=>{let a=Vo[t]??null,[d,l]=(0,rn.useState)(null),c=e&&a?a.targetSelector:null;(0,rn.useEffect)(()=>{if(!c){l(null);return}let s=0,p=null,y=()=>{let v=document.querySelector(c);if(!v){p!==null&&(p=null,l(null));return}let m=v.getBoundingClientRect(),w={left:m.left-Qo,top:m.top-Qo,width:m.width+Qo*2,height:m.height+Qo*2},C=`${w.left}|${w.top}|${w.width}|${w.height}`;C!==p&&(p=C,l(w))};y();let f=()=>{y(),s=window.requestAnimationFrame(f)};return s=window.requestAnimationFrame(f),window.addEventListener("resize",y),()=>{window.cancelAnimationFrame(s),window.removeEventListener("resize",y)}},[c]);let g=(0,rn.useRef)(r);if((0,rn.useEffect)(()=>{let s=g.current;if(g.current=r,!e||!a)return;let p=a.eventKind;!p||!r[p]||s[p]||(i(p),t>=Vo.length-1?o():n(t+1))}),(0,rn.useEffect)(()=>{if(!e||!a)return;let s=a.eventKind;s&&r[s]&&i(s)},[e,t]),!e||!a)return null;let u=t>=Vo.length-1;return(0,tt.jsxs)(tt.Fragment,{children:[(0,tt.jsx)("style",{children:`
|
|
234
234
|
.axiom-onboarding-next:hover { background: #4f46e5 !important; }
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Aa as K,Ca as Q,Q as q,a as E,b as T,c as H,d as j,e as $,f as F,mb as V,nb as J,v as z,xa as G,ya as L}from"./embed-page-chunk-OBM5EUWZ.js";import{f as v,l as B,p as X}from"./embed-page-chunk-HMTKPZ5B.js";import{a as P}from"./embed-page-chunk-MB65DZAX.js";import{va as O}from"./embed-page-chunk-O4QK5LWZ.js";import{a as N}from"./embed-page-chunk-4BKXE5ON.js";import{e as R}from"./embed-page-chunk-6Y3UYJ6Z.js";var A=R(N());var f=class extends Error{code;retryable;status;constructor(t,n,r,o){super(n),this.name="AgentWebAppRuntimeClientError",this.code=t,this.retryable=r,this.status=o}};function C(){return new f("STREAM_FAILED","Stream failed",!0)}var ae=new Set(["WEB_APP_NOT_FOUND","WEB_APP_DISABLED","USER_ID_REQUIRED","INVALID_USER_ID","PROJECT_NOT_ALLOWED","PROJECT_SELECTOR_DISABLED","MODEL_NOT_ALLOWED","FEATURE_DISABLED","THREAD_NOT_FOUND","STREAM_CONFLICT","STREAM_FAILED","INVALID_REQUEST","INTERNAL_ERROR"]);function S(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function y(e,t){return Object.keys(e).length===t.length&&t.every(r=>r in e)}function ie(e){return S(e)&&y(e,["code","message","retryable"])&&typeof e.code=="string"&&ae.has(e.code)&&typeof e.message=="string"&&typeof e.retryable=="boolean"}function de(e){if(!S(e))return!1;let t=e.data===void 0?["id","type","prompt"]:["id","type","prompt","data"];return y(e,t)&&typeof e.id=="string"&&typeof e.type=="string"&&typeof e.prompt=="string"&&(e.data===void 0||S(e.data))}var pe=new Set([E.HUMAN,E.AI,E.TOOL,E.INTERRUPT,E.MESSAGE_COMPLETED,E.MESSAGE_FAILED,E.THREAD_IDLE]);function ce(e,t){let n;try{n=JSON.parse(e)}catch{throw C()}if(!S(n)||typeof n.type!="string")throw C();if(pe.has(n.type)||n.type==="error"&&S(n.data)&&!S(n.error)){let r=j(n,t);return r.length===0?[]:r}switch(n.type){case"message.delta":if(y(n,["type","text"])&&typeof n.text=="string")return[n];break;case"message.completed":if(y(n,["type","messageId"])&&typeof n.messageId=="string")return[n];break;case"tool.started":if(y(n,["type","id","name"])&&typeof n.id=="string"&&typeof n.name=="string")return[n];break;case"tool.completed":if(y(n,["type","id"])&&typeof n.id=="string")return[n];break;case"interrupt.created":if(y(n,["type","interrupt"])&&de(n.interrupt))return[n];break;case"genui.render":if(y(n,["type","block"])&&T(n.block))return[n];break;case"error":if(y(n,["type","error"])&&ie(n.error))return[n];break;case"stream.completed":if(y(n,["type"]))return[n];break}throw C()}function ue(e){return e instanceof Error&&e.name==="AbortError"}async function Y(e,t){let n=H({allowGenUI:!0,allowInterrupts:!0}),r=e.getReader(),o=new TextDecoder,s="",a=!1,d=!1;try{for(;!a;){let p;try{p=await r.read()}catch(b){if(ue(b))return;throw C()}p.done&&(d=!0);try{s+=o.decode(p.value,{stream:!p.done})}catch{throw C()}let c=s.split(/\r?\n\r?\n/);s=p.done?"":c.pop()??"";for(let b of c){let w=b.split(/\r?\n/).filter(h=>h==="data"||h.startsWith("data:")).map(h=>h==="data"?"":h.slice(5).replace(/^ /,""));if(w.length!==0){for(let h of ce(w.join(`
|
|
2
|
+
`),n))if(await t(h),a=h.type==="stream.completed",a)break;if(a)break}}if(p.done)break}if(!a)throw C()}finally{if(!d)try{await r.cancel()}catch{}r.releaseLock()}}var le=new Set(["WEB_APP_NOT_FOUND","WEB_APP_DISABLED","USER_ID_REQUIRED","INVALID_USER_ID","PROJECT_NOT_ALLOWED","PROJECT_SELECTOR_DISABLED","MODEL_NOT_ALLOWED","FEATURE_DISABLED","THREAD_NOT_FOUND","STREAM_CONFLICT","STREAM_FAILED","INVALID_REQUEST","INTERNAL_ERROR"]);function l(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function m(e,t,n=[]){let r=Object.keys(e);return t.every(o=>o in e)&&r.every(o=>t.includes(o)||n.includes(o))}function i(e){return typeof e=="string"}function M(e){if(!l(e)||!m(e,["id","projectId","createdAt","updatedAt"],["label"])||!i(e.id)||!i(e.projectId)||e.label!==void 0&&!i(e.label)||!i(e.createdAt)||!i(e.updatedAt))return;let t=new Date(e.createdAt),n=new Date(e.updatedAt);if(!(Number.isNaN(t.getTime())||Number.isNaN(n.getTime())))return{id:e.id,projectId:e.projectId,...e.label===void 0?{}:{label:e.label},createdAt:t,updatedAt:n}}function Z(e){if(!l(e)||e.success!==!1||!l(e.error))return!1;let t=e.error;return m(e,["success","error"])&&m(t,["code","message","retryable"])&&typeof t.code=="string"&&le.has(t.code)&&typeof t.message=="string"&&typeof t.retryable=="boolean"}function Ae(e){if(!l(e))return!1;let t=["projectSelector","modelSelector","threadManagement","attachments","hitl","genUI"];return m(e,t,["files"])&&t.every(n=>typeof e[n]=="boolean")&&(e.files===void 0||typeof e.files=="boolean")}function fe(e){return Array.isArray(e)&&e.length<=6&&e.every(t=>l(t)&&m(t,["label","text"])&&i(t.label)&&t.label.length>=1&&t.label.length<=40&&i(t.text)&&t.text.length>=1&&t.text.length<=500)}function me(e){return l(e)&&m(e,[],["title","welcomeMessage","primaryColor","quickPrompts"])&&(e.title===void 0||i(e.title))&&(e.welcomeMessage===void 0||i(e.welcomeMessage))&&(e.primaryColor===void 0||i(e.primaryColor))&&(e.quickPrompts===void 0||fe(e.quickPrompts))}function ge(e){if(!l(e)||!m(e,["webApp","projects","models"],["thread"])||!l(e.webApp))return;let t=e.webApp;if(!m(t,["id","name","assistant","defaultProjectId","features","appearance","identityAssurance"],["description","defaultModelKey"])||!i(t.id)||!i(t.name)||!i(t.defaultProjectId)||t.description!==void 0&&!i(t.description)||t.defaultModelKey!==void 0&&!i(t.defaultModelKey)||t.identityAssurance!=="unverified"||!l(t.assistant)||!m(t.assistant,["id","name"],["description"])||!i(t.assistant.id)||!i(t.assistant.name)||t.assistant.description!==void 0&&!i(t.assistant.description)||!Ae(t.features)||!me(t.appearance)||!Array.isArray(e.projects)||!e.projects.every(r=>l(r)&&m(r,["id","name"])&&i(r.id)&&i(r.name))||!Array.isArray(e.models)||!e.models.every(r=>l(r)&&m(r,["key","label"])&&i(r.key)&&i(r.label)))return;let n=e.thread===void 0?void 0:M(e.thread);if(!(e.thread!==void 0&&!n))return{...e,...n?{thread:n}:{}}}function he(e){if(!l(e)||!m(e,["records","total"])||!Array.isArray(e.records)||typeof e.total!="number")return;let t=e.records.map(M);return t.every(n=>n!==void 0)?{records:t,total:e.total}:void 0}function be(e){return l(e)&&i(e.id)&&(e.role==="human"||e.role==="ai")&&(e.content===void 0||i(e.content)||Array.isArray(e.content)&&e.content.every(t=>T(t)!==void 0))}function ye(e){return l(e)&&m(e,["messages"])&&Array.isArray(e.messages)&&e.messages.every(be)?e:void 0}function we(e){return l(e)&&m(e,["ref","name","mimeType","size"])&&i(e.ref)&&i(e.name)&&i(e.mimeType)&&typeof e.size=="number"?e:void 0}function ee(e,t){return n=>l(n)&&m(n,e)&&t(n)?n:void 0}var D=class{constructor(t){this.options=t;this.baseUrl=`${t.gatewayUrl.replace(/\/+$/,"")}/api/web-apps/${encodeURIComponent(t.webAppId)}/runtime`,this.fetchImplementation=t.fetch??globalThis.fetch.bind(globalThis)}baseUrl;fetchImplementation;async bootstrap(t={},n){return this.request("bootstrap",ge,{query:t,signal:n})}async listThreads(t={},n){return this.request("threads",he,{query:t,signal:n})}async createThread(t={},n){return this.request("threads",M,{method:"POST",body:t,signal:n})}async updateThread(t,n,r){return this.request(`threads/${encodeURIComponent(t)}`,M,{method:"PATCH",body:n,signal:r})}async deleteThread(t,n={},r){await this.request(`threads/${encodeURIComponent(t)}`,ee(["id"],o=>i(o.id)),{method:"DELETE",query:n,signal:r})}async getMessages(t,n={},r){return this.request(`threads/${encodeURIComponent(t)}/messages`,ye,{query:n,signal:r})}async streamMessage(t,n,r,o){return this.streamRequest(`threads/${encodeURIComponent(t)}/messages/stream`,n,r,o)}async resumeInterrupt(t,n,r,o,s){return this.streamRequest(`threads/${encodeURIComponent(t)}/interrupts/${encodeURIComponent(n)}/resume`,r,o,s)}async streamRequest(t,n,r,o){let s;try{s=await this.fetchRequest(t,{method:"POST",body:n,signal:o})}catch(a){throw te(a)||a instanceof f?a:new f("STREAM_FAILED","Stream failed",!0)}if(s.ok||await this.throwResponseError(s),!s.body||!s.headers.get("content-type")?.toLowerCase().includes("text/event-stream")){if(s.body)try{await s.body.cancel()}catch{}throw new f("STREAM_FAILED","Stream failed",!0,s.status)}await Y(s.body,r)}async abort(t,n={},r){await this.request(`threads/${encodeURIComponent(t)}/abort`,ee(["aborted"],o=>typeof o.aborted=="boolean"),{method:"POST",query:n,signal:r})}async uploadAttachment(t,n,r={},o){let s=new FormData,a=typeof File<"u"&&n instanceof File?n.name:"attachment";return s.append("file",n,a),this.request(`threads/${encodeURIComponent(t)}/attachments`,we,{method:"POST",query:r,body:s,signal:o})}async request(t,n,r={}){let o;try{o=await this.fetchRequest(t,r)}catch(d){throw te(d)||d instanceof f?d:new f("INTERNAL_ERROR","Request failed",!0)}let s;try{s=await o.json()}catch{throw this.internalError(o.status)}if(Z(s))throw new f(s.error.code,s.error.message,s.error.retryable,o.status);if(!o.ok||!l(s)||!m(s,["success","data"])||s.success!==!0)throw this.internalError(o.status);let a=n(s.data);if(a===void 0)throw this.internalError(o.status);return a}async fetchRequest(t,n){let r=await this.options.identityProvider.getIdentity(n.signal),o=new URL(`${this.baseUrl}/${t}`);for(let[d,p]of Object.entries(n.query??{}))p!==void 0&&o.searchParams.set(d,p);let s=new Headers;r.bearerToken!==void 0?s.set("Authorization",`Bearer ${r.bearerToken}`):s.set("X-Axiom-External-User-Id",r.externalUserId??"");let a;return n.body instanceof FormData?a=n.body:n.body!==void 0&&(s.set("Content-Type","application/json"),a=JSON.stringify(n.body)),this.fetchImplementation(o,{method:n.method??"GET",headers:s,body:a,signal:n.signal,credentials:"omit"})}async throwResponseError(t){let n;try{n=await t.json()}catch{throw this.internalError(t.status)}throw Z(n)?new f(n.error.code,n.error.message,n.error.retryable,t.status):this.internalError(t.status)}internalError(t){return new f("INTERNAL_ERROR","Invalid server response",!1,t)}};function te(e){return typeof e=="object"&&e!==null&&"name"in e&&e.name==="AbortError"}var _=R(N());var I=R(P());function ne(){let{createThread:e}=L(),{menuCollapsed:t,setMenuCollapsed:n}=K();(0,_.useEffect)(()=>{t===void 0&&n(!0)},[t,n]);let r=(0,_.useCallback)(async()=>{try{await e("New Thread")}catch(c){console.error("Failed to create new thread:",c)}},[e]),o=t??!0,p=[{id:"new-analysis",builtin:"new-analysis",type:"action",name:"New Thread",icon:(0,I.jsx)(z,{size:20}),order:0},...o?[{id:"thread-history-toggle",type:"action",name:"History",icon:(0,I.jsx)(q,{size:20}),order:1}]:[{id:"thread-history",builtin:"thread-history",type:"drawer",name:"History",icon:(0,I.jsx)(q,{size:20}),order:1,title:"Conversation History",width:320,inline:!0,inlineDefaultExpanded:!0,content:(0,I.jsx)(V,{})}]];return(0,I.jsx)(Q,{items:p,showBranding:!1,showToggle:!0,showNewAnalysis:!1,defaultExpanded:!o,collapsed:o,onCollapsedChange:n,onNewAnalysis:r,onItemClick:c=>{c.type==="action"&&c.builtin==="new-analysis"?r():c.type==="action"&&c.id==="thread-history-toggle"&&n(!1)}},o?"agent-chat-sidebar-collapsed":"agent-chat-sidebar-expanded")}function re(e){if(typeof window>"u"||typeof XMLHttpRequest>"u")return()=>{};let t=`${e.gatewayUrl.replace(/\/+$/,"")}/api/web-apps/${encodeURIComponent(e.webAppId)}/runtime/`,n=XMLHttpRequest.prototype.open,r=XMLHttpRequest.prototype.send,o=new WeakMap;return XMLHttpRequest.prototype.open=function(a,d){o.set(this,String(d)),n.call(this,a,d,!0)},XMLHttpRequest.prototype.send=function(a){let d=o.get(this)??"";if(!d.startsWith(t)||!/\/sandbox\/uploadfile$/.test(d)){r.call(this,a);return}if(e.identity.mode==="unverified"){this.setRequestHeader("X-Axiom-External-User-Id",e.identity.userId),r.call(this,a);return}e.identity.tokenProvider().then(p=>{this.setRequestHeader("Authorization",`Bearer ${p}`),r.call(this,a)}).catch(()=>{r.call(this,a)})},()=>{XMLHttpRequest.prototype.open=n,XMLHttpRequest.prototype.send=r}}var u=R(P());function Ee(e,t){let r=oe(e.welcome)??oe(t.welcomeMessage),o=e.quickPrompts??t.quickPrompts??[];return{...r!==void 0?{welcome:r}:{},quickPrompts:o}}function oe(e){return typeof e=="string"&&e.length>0?e:void 0}function Ce(e){if(!e.gatewayUrl.trim())throw new Error("AgentChatApp requires gatewayUrl");try{new URL(e.gatewayUrl)}catch{throw new Error("AgentChatApp gatewayUrl must be a valid URL")}if(!e.webAppId.trim())throw new Error("AgentChatApp requires webAppId");if(e.identity.mode==="unverified"){if(!e.identity.userId.trim())throw new Error("AgentChatApp requires identity.userId")}else if(typeof e.identity.tokenProvider!="function")throw new Error("AgentChatApp requires identity.tokenProvider");if(!e.fetch&&typeof globalThis.fetch!="function")throw new Error("AgentChatApp requires a fetch implementation")}function Re(e){return e instanceof f?e:new f("INTERNAL_ERROR","Request failed",!0)}function Se(e){return e.mode==="unverified"?`unverified:${e.userId}`:"verified:token"}function rt(e){Ce(e);let t=`${e.gatewayUrl}\0${e.webAppId}\0${Se(e.identity)}`;return(0,u.jsx)(Ie,{...e},t)}function Ie({gatewayUrl:e,webAppId:t,identity:n,onError:r,onChatReady:o,onChatMessage:s,fetch:a,className:d,welcome:p,quickPrompts:c}){let[b,w]=(0,A.useState)({status:"loading"}),h=(0,A.useRef)(n);h.current=n;let W=(0,A.useRef)(r);W.current=r;let k=(0,A.useRef)();return k.current||(k.current=new D({gatewayUrl:e,webAppId:t,identityProvider:{getIdentity:async()=>{let g=h.current;if(g.mode!=="verified")return{externalUserId:g.userId};try{return{bearerToken:await g.tokenProvider()}}catch{throw new f("USER_ID_REQUIRED","Identity token provider failed",!0)}}},...a?{fetch:a}:{}})),(0,A.useEffect)(()=>re({gatewayUrl:e,webAppId:t,identity:n}),[e,t,n]),(0,A.useEffect)(()=>{let g=!1,se=k.current;return(async()=>{try{let U=await se.bootstrap({});if(g)return;w({status:"ready",bootstrap:U})}catch(U){if(g)return;let x=Re(U);w({status:"error",error:x}),W.current?.(x)}})(),()=>{g=!0}},[]),b.status==="loading"?(0,u.jsx)("div",{className:d}):b.status==="error"?(0,u.jsxs)("div",{className:d,role:"alert",children:[(0,u.jsx)("strong",{children:"Unable to load the assistant"}),(0,u.jsx)("div",{children:b.error.code}),(0,u.jsx)("button",{type:"button",onClick:()=>w({status:"loading"}),children:"Retry"})]}):(0,u.jsx)(ke,{className:d,gatewayUrl:e,webAppId:t,identity:n,bootstrap:b.bootstrap,onChatReady:o,onChatMessage:s,welcome:p,quickPrompts:c})}function We(e){return{id:e.id,name:e.name,...e.description!==void 0?{description:e.description}:{},graphDefinition:void 0,createdAt:new Date(0),updatedAt:new Date(0)}}function ke({gatewayUrl:e,webAppId:t,identity:n,bootstrap:r,onChatReady:o,onChatMessage:s,className:a,welcome:d,quickPrompts:p}){let c=(0,A.useMemo)(()=>We(r.webApp.assistant),[r.webApp.assistant]),b=(0,A.useMemo)(()=>Ee({welcome:d,quickPrompts:p},r.webApp.appearance),[d,p,r.webApp.appearance]),w=(0,A.useMemo)(()=>n.mode==="unverified"?{mode:"unverified",userId:n.userId}:{mode:"verified",tokenProvider:n.tokenProvider},[n]),h=(0,A.useCallback)(g=>new v({gatewayUrl:e,webAppId:t,identity:w,assistantId:g.assistantId,transport:g.transport,...g.timeout!==void 0?{timeout:g.timeout}:{},...g.headers!==void 0?{headers:g.headers}:{}}),[e,t,w]),W=(0,A.useMemo)(()=>({baseURL:`${e.replace(/\/$/,"")}/api/web-apps/${t}/runtime`,apiKey:"",transport:"sse",assistantId:c.id,enableSkillSlot:!1,enableDatabaseSlot:!1,enableAgentSlot:!1,enableMetricsDataSourceSlot:!1,enableModelSelector:!1,enableWorkspace:!1,enableCustomMenu:!1,showSideMenu:!1,enableAssistantCreation:!1,enableAssistantEditing:!1,enableThreadCreation:!0,enableThreadList:!0}),[c.id,e,t]),k=(0,A.useMemo)(()=>({assistants:[c],currentAssistant:c,isLoading:!1,error:null,listAssistants:async()=>{},getAssistant:async()=>c,createAssistant:async()=>{throw new Error("Not implemented in a Web App")},updateAssistant:async()=>{throw new Error("Not implemented in a Web App")},deleteAssistant:async()=>{},selectAssistant:async()=>{},clearCurrentAssistant:()=>{},refresh:async()=>{}}),[c]);return(0,u.jsx)(B,{config:{baseURL:W.baseURL,apiKey:"",assistantId:"__BASE__",transport:"sse"},createClient:h,children:(0,u.jsx)(X,{initialConfig:W,persistToLocalStorage:!1,children:(0,u.jsx)($.Provider,{value:k,children:(0,u.jsx)(G,{children:(0,u.jsx)(Te,{className:a,onChatReady:o,onChatMessage:s,welcome:b.welcome,quickPrompts:b.quickPrompts})})})})})}function Te({className:e,onChatReady:t,onChatMessage:n,welcome:r,quickPrompts:o=[]}){let{threadId:s}=L(),{currentAssistant:a}=F();if(!a)return null;let d=s??"";return d?(0,u.jsx)("div",{className:e,children:(0,u.jsx)(J,{thread_id:d,assistant_id:a.id,name:a.name,description:a.description,menu:(0,u.jsx)(ne,{}),showProjectSelector:!1,showSkillSlot:!1,showDatabaseSlot:!1,showAgentSlot:!1,showMetricsDataSourceSlot:!1,headerRight:null,emptyStateGreeting:r?(0,u.jsx)("span",{children:r}):void 0,senderPromptsItems:o.length>0?o.map((p,c)=>({key:`quick-${c}`,label:p.label,description:p.text})):void 0,showSkillPrompts:!1,showQuickAnalysis:!1,onChatReady:t,onChatMessage:n})}):(0,u.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%"},children:(0,u.jsx)(O,{tip:"Creating conversation..."})})}export{rt as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{ab as T,o as O,q as P,va as L}from"./embed-page-chunk-OBM5EUWZ.js";import{a as $}from"./embed-page-chunk-MB65DZAX.js";import{Fa as N,La as C,Z as v,va as S}from"./embed-page-chunk-O4QK5LWZ.js";import{a as z}from"./embed-page-chunk-4BKXE5ON.js";import{e as b}from"./embed-page-chunk-6Y3UYJ6Z.js";var u=b(z());var k={pending:"#7A7A7A",in_progress:"#3b82f6",review:"#f59e0b",failed:"#ef4444",interrupted:"#8b5cf6",completed:"#22c55e",cancelled:"#9ca3af"},w={high:{label:"High",color:"#ef4444"},medium:{label:"Medium",color:"#f59e0b"},low:{label:"Low",color:"#22c55e"}},Y=240,V=72;function F(e,o){if(e.parentId&&e.parentId!==e.id&&o.has(e.parentId))return e.parentId;for(let g of e.dependencies??[])if(g!==e.id&&o.has(g))return g}function R(e,o){let c=o?.hideCompleted??!1?e.filter(t=>!T(t.status)):e,m=new Map(c.map(t=>[t.id,t])),a=new Map;for(let t of c)a.set(t.id,F(t,m));let h=new Set;for(let t of a.keys()){if(h.has(t))continue;let f=new Map,l=t,x=0;for(;l!==void 0&&!h.has(l)&&!f.has(l);)f.set(l,x),x+=1,l=a.get(l);if(l!==void 0&&f.has(l)){let i=f.get(l);for(let[s,p]of f)p>=i&&h.add(s)}}for(let t of h)a.set(t,void 0);let r=new Map;for(let t of c)r.set(t.id,[]);for(let t of c){let f=a.get(t.id);f!==void 0&&r.get(f).push(t.id)}let d=t=>({task:m.get(t),children:(r.get(t)??[]).map(d)});return c.filter(t=>a.get(t.id)===void 0).map(t=>d(t.id))}var n=b($()),{Text:B}=C,U=16,j=3,G=L(({css:e,token:o})=>({root:e`
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
4
|
height: 100%;
|
package/dist/embed/embed-page.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a as f}from"./embed-page-chunk-TL2AYM76.js";import"./embed-page-chunk-OBM5EUWZ.js";import"./embed-page-chunk-HMTKPZ5B.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; }
|