@bigduu/lotus 2026.7.4 → 2026.7.6
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/assets/App-B44S2ioC.js +247 -0
- package/dist/assets/{MetricsService-BpNiyy6I.js → MetricsService-DPbcp3hf.js} +1 -1
- package/dist/assets/{SubAgentsPanel-CsxecJ9n.js → SubAgentsPanel-NhdZiO0v.js} +1 -1
- package/dist/assets/{architectureDiagram-3BPJPVTR-BAU4oCet.js → architectureDiagram-3BPJPVTR-B-eOpq5N.js} +1 -1
- package/dist/assets/{blockDiagram-GPEHLZMM-lLSzShbw.js → blockDiagram-GPEHLZMM-B_fDUBQQ.js} +1 -1
- package/dist/assets/{c4Diagram-AAUBKEIU-avrokizu.js → c4Diagram-AAUBKEIU-Cgv5sLcn.js} +1 -1
- package/dist/assets/{chunk-2J33WTMH-CKbpaWng.js → chunk-2J33WTMH-CiK20euM.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-iiSyzKa3.js → chunk-4BX2VUAB-Bv7XvjZk.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-Cvj69ITN.js → chunk-55IACEB6-DmFm-CuJ.js} +1 -1
- package/dist/assets/{chunk-727SXJPM-pSz5mJJv.js → chunk-727SXJPM-BgqrvL-S.js} +1 -1
- package/dist/assets/{chunk-AQP2D5EJ-c3hDsSQl.js → chunk-AQP2D5EJ-Clmt9JEh.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-7V8N-Bvj.js → chunk-FMBD7UC4-BiyK0Md5.js} +1 -1
- package/dist/assets/{chunk-ND2GUHAM-DkBtLwC-.js → chunk-ND2GUHAM-DiekQVcH.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-MauNKCSB.js → chunk-QZHKN3VN-CzgjF9kn.js} +1 -1
- package/dist/assets/classDiagram-4FO5ZUOK-D8voJrey.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-D8voJrey.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-BJR0PzLI.js → cose-bilkent-S5V4N54A-CgpOdgeZ.js} +1 -1
- package/dist/assets/{dagre-BM42HDAG-B0bXBef5.js → dagre-BM42HDAG-HOKB0AnJ.js} +1 -1
- package/dist/assets/{diagram-2AECGRRQ-rlD89-xl.js → diagram-2AECGRRQ-D9j7LOBP.js} +1 -1
- package/dist/assets/{diagram-5GNKFQAL-DLiI0D2Q.js → diagram-5GNKFQAL-Xpr4Pq2n.js} +1 -1
- package/dist/assets/{diagram-KO2AKTUF-BzuBVQbz.js → diagram-KO2AKTUF-4CJ4BAex.js} +1 -1
- package/dist/assets/{diagram-LMA3HP47-C8MUjUqp.js → diagram-LMA3HP47-9hhwmir7.js} +1 -1
- package/dist/assets/{diagram-OG6HWLK6-CcZkvWxs.js → diagram-OG6HWLK6-CRzGekaE.js} +1 -1
- package/dist/assets/en-US-BHmVs299.js +3 -0
- package/dist/assets/{erDiagram-TEJ5UH35-D64d2VfK.js → erDiagram-TEJ5UH35-DPkTj4YL.js} +1 -1
- package/dist/assets/{flowDiagram-I6XJVG4X-1EOZ_GAk.js → flowDiagram-I6XJVG4X-s30yOGGe.js} +1 -1
- package/dist/assets/{ganttDiagram-6RSMTGT7-WRtjuLX1.js → ganttDiagram-6RSMTGT7-Dfh_9viz.js} +1 -1
- package/dist/assets/{gitGraphDiagram-PVQCEYII-098wvAID.js → gitGraphDiagram-PVQCEYII-DclEMb7K.js} +1 -1
- package/dist/assets/{index-DqbS0IEX.js → index-3JXohMeR.js} +1 -1
- package/dist/assets/{index-CBf_aPf0.js → index-BBXjNT5H.js} +1 -1
- package/dist/assets/{index-D6AvLrCJ.js → index-BVB1b37o.js} +1 -1
- package/dist/assets/{index-DyrMGCWu.js → index-BWuHVo5q.js} +1 -1
- package/dist/assets/{index-Cb7zjxC0.js → index-BcPIBpG_.js} +1 -1
- package/dist/assets/index-CewkB5M7.js +22 -0
- package/dist/assets/{index-CvBP85Fd.js → index-D6Igo5-D.js} +1 -1
- package/dist/assets/{index-Ckib79dI.js → index-D6r6knnj.js} +1 -1
- package/dist/assets/{index-BFqFK9mW.js → index-DA2nYNP1.js} +1 -1
- package/dist/assets/{index-BcnWQfG3.js → index-DQzMZTlu.js} +1 -1
- package/dist/assets/{index-Dnp1t4CF.js → index-fg23yQwR.js} +1 -1
- package/dist/assets/{index-BFpSJbZi.js → index-mtE61B8M.js} +1 -1
- package/dist/assets/{infoDiagram-5YYISTIA-B1abEuB0.js → infoDiagram-5YYISTIA-CLhyeUTy.js} +1 -1
- package/dist/assets/{ishikawaDiagram-YF4QCWOH-DYLMJ5LJ.js → ishikawaDiagram-YF4QCWOH-C1p4m4y6.js} +1 -1
- package/dist/assets/{journeyDiagram-JHISSGLW-DxQWxIBX.js → journeyDiagram-JHISSGLW-Bgmuyld5.js} +1 -1
- package/dist/assets/{kanban-definition-UN3LZRKU-DBHyhIEZ.js → kanban-definition-UN3LZRKU-Cwotpe_V.js} +1 -1
- package/dist/assets/{main-CKaJQsPs.js → main-DjNJqNsa.js} +3 -3
- package/dist/assets/{mindmap-definition-RKZ34NQL-DInH84fZ.js → mindmap-definition-RKZ34NQL-CoKRlqMr.js} +1 -1
- package/dist/assets/{pieDiagram-4H26LBE5-B92pWeJj.js → pieDiagram-4H26LBE5-BQV2ECAO.js} +1 -1
- package/dist/assets/{quadrantDiagram-W4KKPZXB-DorNY_YU.js → quadrantDiagram-W4KKPZXB-DWTUnlnm.js} +1 -1
- package/dist/assets/{requirementDiagram-4Y6WPE33-Bo_KiBEw.js → requirementDiagram-4Y6WPE33-3zIlHzJ6.js} +1 -1
- package/dist/assets/{sankeyDiagram-5OEKKPKP-C5oR4AWB.js → sankeyDiagram-5OEKKPKP-DBfMBDVn.js} +1 -1
- package/dist/assets/{sequenceDiagram-3UESZ5HK-C5smmjyb.js → sequenceDiagram-3UESZ5HK-erOQbu8s.js} +1 -1
- package/dist/assets/{stateDiagram-AJRCARHV-DzTexjGt.js → stateDiagram-AJRCARHV-Bn5O40D2.js} +1 -1
- package/dist/assets/{stateDiagram-v2-BHNVJYJU-jb4mAJYK.js → stateDiagram-v2-BHNVJYJU-CoerUX4X.js} +1 -1
- package/dist/assets/{timeline-definition-PNZ67QCA-Bj5sbbYL.js → timeline-definition-PNZ67QCA-CzvwF0a4.js} +1 -1
- package/dist/assets/{vendor-charts-Dn52GOJg.js → vendor-charts-DMFvXbSB.js} +1 -1
- package/dist/assets/{vendor-mermaid-ClcSc_uI.js → vendor-mermaid-sNXj_Vlj.js} +3 -3
- package/dist/assets/{vendor-pdf-D_TR_Yp2.js → vendor-pdf-AmDNX_F1.js} +3 -3
- package/dist/assets/{vennDiagram-CIIHVFJN-B5VJyCbS.js → vennDiagram-CIIHVFJN-C0lNZXxi.js} +1 -1
- package/dist/assets/{wardley-L42UT6IY-DFcnndz8.js → wardley-L42UT6IY-BbkX-qDZ.js} +1 -1
- package/dist/assets/{wardleyDiagram-YWT4CUSO-CUQwRPeI.js → wardleyDiagram-YWT4CUSO-BnwhbcIs.js} +1 -1
- package/dist/assets/{xychartDiagram-2RQKCTM6-CB4y3uep.js → xychartDiagram-2RQKCTM6-ZwnpxTie.js} +1 -1
- package/dist/assets/zh-CN-CVIA9qJS.js +3 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/App-4fU-kHUd.js +0 -247
- package/dist/assets/classDiagram-4FO5ZUOK-BkD0Yrlq.js +0 -1
- package/dist/assets/classDiagram-v2-Q7XG4LA2-BkD0Yrlq.js +0 -1
- package/dist/assets/en-US-Dk_lNS7j.js +0 -3
- package/dist/assets/index-DEp5u-uT.js +0 -22
- package/dist/assets/zh-CN-CTNNt86t.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as n}from"./App-
|
|
1
|
+
import{a as n}from"./App-B44S2ioC.js";const r=s=>{const t=new URLSearchParams;Object.entries(s).forEach(([i,a])=>{a===void 0||a===""||t.set(i,String(a))});const e=t.toString();return e?`?${e}`:""};class d{async getSummary(t={}){const e=r({start_date:t.startDate,end_date:t.endDate});return n.get(`metrics/summary${e}`)}async getByModel(t={}){const e=r({start_date:t.startDate,end_date:t.endDate});return n.get(`metrics/by-model${e}`)}async getSessions(t={}){const e=r({start_date:t.startDate,end_date:t.endDate,model:t.model,limit:t.limit});return n.get(`metrics/sessions${e}`)}async getSessionDetail(t){try{return await n.get(`metrics/sessions/${encodeURIComponent(t)}`)}catch(e){if(e instanceof Error&&e.message.includes("not found"))return null;throw e}}async getUsageBreakdown(t={}){const e=r({start_date:t.startDate,end_date:t.endDate,model:t.model});return n.get(`metrics/usage-breakdown${e}`)}async getDaily(t={}){const e=r({days:t.days,end_date:t.endDate,granularity:t.granularity});return n.get(`metrics/daily${e}`)}async getForwardSummary(t={}){const e=r({start_date:t.startDate,end_date:t.endDate,endpoint:t.endpoint,model:t.model,limit:t.limit});return n.get(`metrics/forward/summary${e}`)}async getForwardByEndpoint(t={}){const e=r({start_date:t.startDate,end_date:t.endDate,endpoint:t.endpoint,model:t.model,limit:t.limit});return n.get(`metrics/forward/by-endpoint${e}`)}async getForwardRequests(t={}){const e=r({start_date:t.startDate,end_date:t.endDate,endpoint:t.endpoint,model:t.model,limit:t.limit});return n.get(`metrics/forward/requests${e}`)}async getMemorySummary(t={}){const e=r({scope:t.scope,project_key:t.projectKey});return n.get(`metrics/memory/summary${e}`)}async getMemoryTimeline(t={}){const e=r({scope:t.scope,project_key:t.projectKey,days:t.days,end_date:t.endDate,granularity:t.granularity});return n.get(`metrics/memory/timeline${e}`)}async getUnifiedSummary(t={}){const e=r({start_date:t.startDate,end_date:t.endDate});return n.get(`metrics/v2/summary${e}`)}async getUnifiedTimeline(t={}){const e=r({days:t.days,end_date:t.endDate,granularity:t.granularity});return n.get(`metrics/v2/timeline${e}`)}}const m=new d;export{m};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Fe=Object.defineProperty;var Be=(t,e,l)=>e in t?Fe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:l}):t[e]=l;var pe=(t,e,l)=>Be(t,typeof e!="symbol"?e+"":e,l);import{j as r}from"./vendor-markdown-CARODNj-.js";import{a as u,u as Y}from"./vendor-i18n-Dm-c3D_C.js";import{B,H as Te,J as Xe,K as ze,L as De,M as We,N as Le,O as Ne,P as Ue,j as fe,Q as me,I as Q,u as R,R as Ge,q as Ke}from"./App-
|
|
1
|
+
var Fe=Object.defineProperty;var Be=(t,e,l)=>e in t?Fe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:l}):t[e]=l;var pe=(t,e,l)=>Be(t,typeof e!="symbol"?e+"":e,l);import{j as r}from"./vendor-markdown-CARODNj-.js";import{a as u,u as Y}from"./vendor-i18n-Dm-c3D_C.js";import{B,H as Te,J as Xe,K as ze,L as De,M as We,N as Le,O as Ne,P as Ue,j as fe,Q as me,I as Q,u as R,R as Ge,q as Ke}from"./App-B44S2ioC.js";import{x as L,Q as I,B as _,az as qe,a8 as Ye,j as ee,t as te,aA as Je,A as Ve,k as ye,l as Se,U as Qe}from"./vendor-antd-C-pjKgeW.js";import{M as Ce}from"./MachineTag-B76KAFbJ.js";import"./vendor-mermaid-sNXj_Vlj.js";import"./main-DjNJqNsa.js";const O=class O{static getInstance(){return O.instance||(O.instance=new O),O.instance}parseUserCommand(e){B("[ToolService]",`[ToolService] parseUserCommand: Parsing content: "${e}"`);const l=e.trim();if(!l.startsWith("/"))return B("[ToolService]",'[ToolService] parseUserCommand: Content does not start with "/", not a tool command.'),null;const n=l.indexOf(" ");let o,a;if(n===-1?(o=l.substring(1),a=""):(o=l.substring(1,n),a=l.substring(n+1).trim()),o){const g={tool_name:o,user_description:a};return B("[ToolService]","[ToolService] parseUserCommand: Successfully parsed command:",g),g}return B("[ToolService]","[ToolService] parseUserCommand: Failed to parse tool name from content."),null}parseAIResponseToToolCall(e){return this.parseUserCommand(e)}async executeTool(e){B("[ToolService]","[ToolService] executeTool: Attempting to execute tool via HTTP with request:",e);try{const l=await Te.post("tools/execute",e),n=JSON.parse(l.result);if(!n||typeof n!="object"||typeof n.success!="boolean"||typeof n.result!="string")throw new Error("Tool execution returned a malformed result");const o=n;return B("[ToolService]","[ToolService] executeTool: Parsed structured result:",o),o}catch(l){throw console.error("[ToolService] executeTool: HTTP tool execution failed:",l),l instanceof Xe?new Error(`Workflow execution failed: ${l.message}`):l}}};pe(O,"instance");let Z=O;const J=new Z;class Ze{async listProfiles(){return Te.get("subagent_profiles")}}const et=new Ze,tt=[];function nt(t={}){const{enabled:e=!0,refreshKey:l}=t,[n,o]=u.useState(null),[a,g]=u.useState(!1),[p,y]=u.useState(null),C=u.useCallback(async()=>{g(!0);try{const f=await et.listProfiles();o(f),y(null)}catch(f){y(f instanceof Error?f:new Error(String(f)))}finally{g(!1)}},[]);u.useEffect(()=>{e&&C()},[e,C,l]);const x=u.useMemo(()=>{const f=new Map;if(n!=null&&n.profiles)for(const v of n.profiles)f.set(v.id,v);return f},[n]);return{profiles:(n==null?void 0:n.profiles)??tt,fallbackId:(n==null?void 0:n.fallback_id)??null,loading:a,error:p,refresh:C,byId:x}}const je=(t,e)=>{const l=ze(t,e);return De({key:l,atomFamily:We,store:Le,emptyState:Ne})},st=(t,e)=>t.outputPreview||e||"",be=(t,e,l)=>{var C,x,f,v,m;const n=t==null?void 0:t.trim();if(!n)return null;const o=e.get(n),a=((C=o==null?void 0:o.display_name)==null?void 0:C.trim())||n,g=(f=(x=o==null?void 0:o.ui)==null?void 0:x.icon)==null?void 0:f.trim(),p=((m=(v=o==null?void 0:o.ui)==null?void 0:v.color)==null?void 0:m.trim())||void 0;return(l==null?void 0:l.compact)??!1?r.jsx("span",{"data-testid":`sub-agent-role-tag-${n}`,style:{color:p||"inherit",lineHeight:"inherit",whiteSpace:"nowrap"},children:g?`${g} ${a}`:a}):r.jsx(L,{color:p,style:{marginInlineEnd:0,flex:"0 0 auto"},"data-testid":`sub-agent-role-tag-${n}`,children:g?`${g} ${a}`:a})},rt={preview:"",connecting:!1};function lt(t,e,l){const[n,o]=u.useState(""),[a,g]=u.useState(!1),p=u.useRef(""),y=u.useRef(null);return u.useEffect(()=>{if(!l||!e)return;let C=!1;const x=new AbortController,f=Ue(t,e).outputPreview??"";p.current=f,o(f),g(!0);const v=()=>{y.current=null,C||o(p.current)},m=()=>{y.current==null&&(y.current=setTimeout(v,80))},h=j=>{p.current=(p.current+j).slice(-me),m()};return f||(async()=>{try{const j=await fe.getHistory(e);if(C||p.current)return;const P=j.messages.filter(A=>A.role==="assistant"&&A.content).map(A=>A.content).join(`
|
|
2
2
|
|
|
3
3
|
`).slice(-me);P&&(p.current=P,o(P))}catch{}})(),fe.subscribeToEvents(e,{onToken:j=>h(j)},x).catch(()=>{}).finally(()=>{C||g(!1)}),()=>{C=!0,x.abort(),y.current!=null&&(clearTimeout(y.current),y.current=null)}},[l,t,e]),l?{preview:n,connecting:a}:rt}const{Text:ot}=ee,{useToken:Ee}=te,we=u.memo(function({preview:e,maxHeight:l}){const n=u.useRef(null),{token:o}=Ee();return u.useEffect(()=>{const a=n.current;a&&(a.scrollTop=a.scrollHeight)},[e]),r.jsx("div",{ref:n,style:{maxHeight:l,overflowY:"auto",overflowX:"hidden",fontFamily:"monospace",fontSize:o.fontSizeSM,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",color:o.colorTextSecondary},children:e})}),xe=({parentSessionId:t,childSessionId:e,childTitle:l,status:n,onOpenChild:o,children:a})=>{const{t:g}=Y(),{token:p}=Ee(),[y,C]=u.useState(!1),[x,f]=u.useState(!1),v=je(t,e),h=lt(t,e,y||x).preview||v.outputPreview,j=n==="running"?"processing":n==="completed"?"success":n==="error"||n==="failed"?"error":n==="cancelled"?"warning":"default",P=n==="running"?g("chat.subAgents.statusRunning"):n==="completed"?g("chat.subAgents.statusCompleted"):n==="pending"?g("chat.subAgents.statusPending"):n==="cancelled"?g("chat.subAgents.statusCancelled"):n==="error"||n==="failed"?g("chat.subAgents.statusFailed"):n??"",A=()=>{C(!1),f(!0)},T=()=>{f(!1),o(e)},w=r.jsxs("div",{children:[r.jsx(I,{justify:"flex-end",style:{marginBottom:p.marginXS},children:r.jsx(_,{size:"small",type:"link",onClick:A,children:g("chat.subAgents.previewExpand")})}),r.jsx(we,{preview:h,maxHeight:320})]});return r.jsxs(r.Fragment,{children:[r.jsx(qe,{trigger:"hover",mouseEnterDelay:.3,open:y&&!x,onOpenChange:C,content:w,overlayInnerStyle:{width:420},children:a}),r.jsx(Ye,{open:x,mask:!1,width:640,onCancel:()=>f(!1),title:r.jsxs(I,{align:"center",gap:p.marginXS,children:[r.jsx(ot,{strong:!0,ellipsis:!0,style:{minWidth:0},children:l||g("chat.subAgents.fallbackTitle")}),n?r.jsx(L,{color:j,style:{flex:"0 0 auto"},children:P}):null]}),footer:r.jsxs(I,{justify:"flex-end",gap:p.marginSM,children:[r.jsx(_,{onClick:()=>f(!1),children:g("chat.subAgents.previewClose")}),r.jsx(_,{type:"primary",onClick:T,children:g("chat.subAgents.previewOpenSession")})]}),children:r.jsx(we,{preview:h,maxHeight:"60vh"})})]})},{Text:D}=ee,{useToken:it}=te,at=t=>{const e=(t||"").trim().toLowerCase();return e?e==="started"||e==="already_running"?"running":e==="success"||e==="done"?"completed":e==="canceled"?"cancelled":e==="queued"||e==="created"?"pending":e:"pending"},ct=u.memo(({parentSessionId:t,item:e,index:l,compact:n,isRetrying:o,isContinuing:a,isDeleting:g,subagentProfilesById:p,onOpenChild:y,onContinueChild:C,onRetryChild:x,onTogglePin:f,onDeleteChild:v})=>{const{token:m}=it(),{t:h}=Y(),j=je(t,e.childSessionId),P=st(j,e.outputPreview),A=n?{marginInlineEnd:0,flex:"0 0 auto",fontSize:10,lineHeight:"16px",paddingInline:6}:{marginInlineEnd:0,flex:"0 0 auto"},T=n?{paddingInline:0,height:22}:void 0,w=at(e.status),X=w==="running",H=o||a||g,N=["running","completed","cancelled","error","failed"].includes(w),z=b=>b==="running"?h("chat.subAgents.statusRunning"):b==="completed"?h("chat.subAgents.statusCompleted"):b==="pending"?h("chat.subAgents.statusPending"):b==="cancelled"?h("chat.subAgents.statusCancelled"):b==="error"||b==="failed"?h("chat.subAgents.statusFailed"):b,k=b=>b==="running"?m.colorPrimary:b==="completed"?m.colorSuccess:b==="error"||b==="failed"?m.colorError:b==="cancelled"?m.colorWarning:m.colorTextSecondary;return r.jsxs(I,{vertical:!0,gap:n?6:m.marginSM,className:n?void 0:"lotus-settings-list-item",style:{width:"100%",minWidth:0,padding:n?"6px 0":m.paddingSM,borderRadius:n?0:m.borderRadiusSM,borderTop:n&&l>0?`1px solid ${m.colorBorderSecondary}`:void 0,background:n?"transparent":void 0},children:[r.jsxs(I,{vertical:!0,style:{width:"100%",minWidth:0},children:[r.jsxs(I,{align:"center",gap:m.marginXS,wrap:!0,style:{width:"100%",minWidth:0},children:[r.jsx(D,{strong:!0,ellipsis:!0,style:{minWidth:0,flex:"1 1 180px",fontSize:n?13:void 0},children:(e.lifecycle==="resident"?e.residentName:null)||e.title||h("chat.subAgents.fallbackTitle")}),n?r.jsx(Q,{nowrap:!0,items:[r.jsx("span",{style:{color:k(w)},children:z(w)}),e.pinned?h("chat.subAgents.pinned"):null,e.lifecycle==="resident"?h("chat.subAgents.residentBadge"):null,be(e.subagentType,p,{compact:!0}),e.placement?r.jsx(Ce,{placement:e.placement,compact:!0}):null]}):r.jsxs(r.Fragment,{children:[r.jsx(L,{color:w==="running"?"processing":w==="completed"?"success":w==="error"||w==="failed"?"error":w==="cancelled"?"warning":"default",style:A,children:z(w)}),e.pinned?r.jsx(L,{color:"warning",style:A,children:h("chat.subAgents.pinned")}):null,e.lifecycle==="resident"?r.jsx(L,{color:"purple",style:A,children:h("chat.subAgents.residentBadge")}):null,be(e.subagentType,p),e.placement?r.jsx(Ce,{placement:e.placement,compact:!0}):null]})]}),n?r.jsx(Q,{block:!0,items:[e.childSessionId.slice(0,8),e.updatedAt,e.lastHeartbeatAt?`${h("chat.subAgents.heartbeat")}: ${e.lastHeartbeatAt}`:null,typeof e.roundCount=="number"?`${h("chat.subAgents.round")} ${e.roundCount+1}`:null]}):r.jsxs(D,{type:"secondary",style:{display:"block",minWidth:0,fontSize:12,marginTop:2},children:[e.childSessionId.slice(0,8),e.updatedAt?` • ${e.updatedAt}`:"",e.lastHeartbeatAt?` • ${h("chat.subAgents.heartbeat")}: ${e.lastHeartbeatAt}`:"",typeof e.roundCount=="number"?` • ${h("chat.subAgents.round")} ${e.roundCount+1}`:""]}),P?r.jsx(xe,{parentSessionId:t,childSessionId:e.childSessionId,childTitle:e.title,status:w,onOpenChild:y,children:r.jsx(D,{type:"secondary",style:{display:"block",minWidth:0,marginTop:n?4:m.marginXS,fontSize:n?11:13,lineHeight:n?1.35:void 0},ellipsis:!0,children:P})}):N?r.jsx(xe,{parentSessionId:t,childSessionId:e.childSessionId,childTitle:e.title,status:w,onOpenChild:y,children:r.jsx(D,{type:"secondary",italic:!0,style:{display:"block",minWidth:0,marginTop:n?4:m.marginXS,fontSize:n?11:12,lineHeight:n?1.35:void 0,opacity:.65,cursor:"pointer"},children:h("chat.subAgents.previewHint")})}):null,e.error?r.jsx(D,{type:"danger",style:{display:"block",minWidth:0,marginTop:n?4:m.marginXS,fontSize:n?11:void 0,lineHeight:n?1.35:void 0},children:e.error}):null]}),r.jsxs(I,{gap:n?4:8,wrap:!0,style:{width:"100%",minWidth:0,paddingTop:n?2:0},children:[r.jsx(_,{size:"small",type:n?"text":"default",style:T,disabled:H,onClick:()=>y(e.childSessionId),children:h("chat.subAgents.open")}),r.jsx(_,{size:"small",type:n?"text":"default",style:T,loading:a,disabled:g||o,"data-testid":`sub-agent-continue-${e.childSessionId}`,onClick:()=>C(e.childSessionId),children:h("chat.subAgents.continue")}),r.jsx(Je,{trigger:["click"],menu:{items:[{key:"regenerate",label:h("chat.actions.regenerate")},{key:"error_retry",label:h("chat.actions.retryFailed")}],onClick:({key:b})=>{x(e.childSessionId,b)}},disabled:g||X||a,children:r.jsx(_,{size:"small",type:n?"text":"default",style:T,loading:o,disabled:g||X||a,"data-testid":`sub-agent-retry-${e.childSessionId}`,children:h("chat.subAgents.retry")})}),typeof e.pinned=="boolean"?r.jsx(_,{size:"small",type:n?"text":"default",style:T,disabled:H,onClick:()=>f(e.childSessionId,e.pinned),children:e.pinned?h("chat.actions.unpin"):h("chat.actions.pin")}):null,r.jsx(_,{danger:!0,type:n?"text":"default",style:T,size:"small",loading:g,disabled:o,"data-testid":`sub-agent-delete-${e.childSessionId}`,onClick:()=>v(e.childSessionId),children:h("common.delete")})]})]})},(t,e)=>t.parentSessionId===e.parentSessionId&&t.item===e.item&&t.index===e.index&&t.compact===e.compact&&t.isRetrying===e.isRetrying&&t.isContinuing===e.isContinuing&&t.isDeleting===e.isDeleting&&t.subagentProfilesById===e.subagentProfilesById&&t.onOpenChild===e.onOpenChild&&t.onContinueChild===e.onContinueChild&&t.onRetryChild===e.onRetryChild&&t.onTogglePin===e.onTogglePin&&t.onDeleteChild===e.onDeleteChild),{Text:W}=ee,{useToken:Pe}=te,ut="chat-session-sub-agents-collapsed:",dt=3,gt=600,q=t=>{const e=(t||"").trim().toLowerCase();return e?e==="started"||e==="already_running"?"running":e==="success"||e==="done"?"completed":e==="canceled"?"cancelled":e==="queued"||e==="created"?"pending":e:"pending"},ht=(t,e)=>{if(e&&e.trim())return e;if(t.isRunning)return"running";if(t.lastRunStatus&&t.lastRunStatus.trim())return t.lastRunStatus;const l=t.messageCount??0;return l>2?"completed":(l>0,"pending")},pt=new Set(["running","pending"]),ft=t=>pt.has(q(t)),V=(t,e)=>{const l=(e.createdAt??0)-(t.createdAt??0);return l!==0?l:t.childSessionId.localeCompare(e.childSessionId)},ke=t=>`${ut}${t}`,Ae=t=>{if(typeof window>"u")return!1;try{const e=window.localStorage.getItem(ke(t));return e==="1"?!0:e==="0"?!1:null}catch{return null}},mt=(t,e)=>{if(!(typeof window>"u"))try{window.localStorage.setItem(ke(t),e?"1":"0")}catch{}},ve=(t,e)=>{var l,n,o,a;return t.childSessionId===e.childSessionId&&t.title===e.title&&t.status===e.status&&t.error===e.error&&t.lastHeartbeatAt===e.lastHeartbeatAt&&t.lastEventAt===e.lastEventAt&&t.outputPreview===e.outputPreview&&t.pinned===e.pinned&&t.updatedAt===e.updatedAt&&t.createdAt===e.createdAt&&t.isRunning===e.isRunning&&t.messageCount===e.messageCount&&t.lastRunStatus===e.lastRunStatus&&t.lastRunError===e.lastRunError&&t.subagentType===e.subagentType&&t.roundCount===e.roundCount&&t.lifecycle===e.lifecycle&&t.residentName===e.residentName&&((l=t.placement)==null?void 0:l.kind)===((n=e.placement)==null?void 0:n.kind)&&((o=t.placement)==null?void 0:o.host)===((a=e.placement)==null?void 0:a.host)},jt=({parentSessionId:t,compact:e=!1})=>{const{t:l}=Y(),{token:n}=Pe(),{message:o}=Ve.useApp(),[a,g]=u.useState(()=>Ae(t)??!1),[p,y]=u.useState(null),[C,x]=u.useState(null),[f,v]=u.useState(null),[m,h]=u.useState(!1),j=R(s=>Ge(t)(s)),P=R(s=>s.chats),A=R(s=>s.loadChatHistory),T=R(s=>s.refreshChats),w=R(s=>s.markOptimisticStart),X=R(s=>s.markRetryStart),H=R(s=>s.markSettleTimeout),N=R(s=>s.pinSession),z=R(s=>s.unpinSession),k=R(s=>s.applyChildProgress),b=R(s=>s.clearChildProgress),{byId:Re}=nt(),ne=u.useRef(new Map),se=u.useMemo(()=>Object.entries(j).map(([s,c])=>({childSessionId:s,...c})),[j]),re=u.useMemo(()=>P.filter(s=>s.kind==="child"&&s.parentSessionId===t).sort((s,c)=>(c.createdAt??0)-(s.createdAt??0)),[P,t]),$=u.useMemo(()=>{const s=new Map(se.map(i=>[i.childSessionId,i])),c=ne.current,S=[];for(const i of re){const d=s.get(i.id),E={childSessionId:i.id,title:i.title||(d==null?void 0:d.title),status:q(ht(i,d==null?void 0:d.status)),error:(d==null?void 0:d.error)||i.lastRunError,lastHeartbeatAt:d==null?void 0:d.lastHeartbeatAt,lastEventAt:d==null?void 0:d.lastEventAt,outputPreview:d==null?void 0:d.outputPreview,roundCount:d==null?void 0:d.roundCount,pinned:i.pinned,updatedAt:i.updatedAt,createdAt:i.createdAt,isRunning:i.isRunning,messageCount:i.messageCount,lastRunStatus:i.lastRunStatus,lastRunError:i.lastRunError,subagentType:i.subagentType??null,lifecycle:i.lifecycle??null,residentName:i.residentName??null,placement:i.placement??null},M=c.get(i.id);S.push(M&&ve(M,E)?M:E),s.delete(i.id)}for(const i of s.values()){const d={childSessionId:i.childSessionId,title:i.title,status:q(i.status),error:i.error,lastHeartbeatAt:i.lastHeartbeatAt,lastEventAt:i.lastEventAt,outputPreview:i.outputPreview,roundCount:i.roundCount,createdAt:Date.now()},E=c.get(i.childSessionId);S.push(E&&ve(E,d)?E:d)}return ne.current=new Map(S.map(i=>[i.childSessionId,i])),S},[re,se]),{residentItems:U,activeItems:G,completedItems:F}=u.useMemo(()=>{const s=[],c=[],S=[];for(const i of $)i.lifecycle==="resident"?s.push(i):ft(i.status)?c.push(i):S.push(i);return s.sort(V),c.sort(V),S.sort(V),{residentItems:s,activeItems:c,completedItems:S}},[$]);u.useEffect(()=>{g(Ae(t)??!1)},[t]);const _e=u.useCallback(()=>{g(s=>{const c=!s;return mt(t,c),c})},[t]),le=u.useCallback(s=>s instanceof Error&&s.message.trim()?s.message:l("chat.subAgents.runChildFailed"),[l]),oe=u.useCallback(async(s,c="regenerate")=>{y(s),k(t,s,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),X(s);try{const S=await J.executeTool({tool_name:"SubAgent",session_id:t,parameters:[{name:"action",value:"run"},{name:"child_session_id",value:s},{name:"reset_to_last_user",value:c==="error_retry"?"false":"true"}]});if(!S.success)throw new Error(S.result||"Failed to run sub-agent");k(t,s,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),await A(s,{mode:"replace"}),await T()}catch(S){H(s),k(t,s,{status:"error",error:le(S),lastEventAt:new Date().toISOString()})}finally{y(S=>S===s?null:S)}},[A,t,T,X,H,le,k]),ie=u.useCallback(async s=>{const c=typeof window<"u"?window.prompt.bind(window):null;if(!c)return;const S=c("Send a follow-up message to this sub-agent:","Continue from where you left off.");if(S===null)return;const i=S.trim();if(!i){k(t,s,{status:"error",error:"Follow-up message cannot be empty.",lastEventAt:new Date().toISOString()});return}x(s),k(t,s,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),w(s);try{const d=await J.executeTool({tool_name:"SubAgent",session_id:t,parameters:[{name:"action",value:"send_message"},{name:"child_session_id",value:s},{name:"message",value:i},{name:"auto_run",value:"true"}]});if(!d.success)throw new Error(d.result||"Follow-up failed");let E="running";try{const M=JSON.parse(d.result);M.status==="message_delivered_live"?(E="running",o.success(l("chat.subAgents.steeredLive"))):M.status==="message_queued"?(E="pending",o.info(l("chat.subAgents.queuedNextTurn"))):M.status==="pending"&&(E="pending")}catch{E="running"}k(t,s,{status:E,error:void 0,lastEventAt:new Date().toISOString()}),await T()}catch(d){H(s),k(t,s,{status:"error",error:d instanceof Error&&d.message.trim()?d.message:l("chat.subAgents.continueChildFailed"),lastEventAt:new Date().toISOString()})}finally{x(d=>d===s?null:d)}},[t,T,w,H,k,l,o]),ae=u.useCallback(async s=>{v(s);try{const c=await J.executeTool({tool_name:"SubAgent",session_id:t,parameters:[{name:"action",value:"delete"},{name:"child_session_id",value:s}]});if(!c.success)throw new Error(c.result||"Failed to delete sub-agent");b(t,s),await T()}finally{v(c=>c===s?null:c)}},[b,t,T]),Ie=u.useCallback(s=>{Ke(s),A(s)},[A]),$e=u.useCallback(s=>{ie(s)},[ie]),He=u.useCallback((s,c)=>{oe(s,c)},[oe]),Me=u.useCallback((s,c)=>{c?z(s):N(s)},[N,z]),Oe=u.useCallback(s=>{ae(s)},[ae]);if($.length===0)return null;const ce=r.jsxs(W,{strong:!0,children:[l("chat.subAgents.title")," ",r.jsx(W,{type:"secondary",children:G.length>0?l("chat.subAgents.headerCount",{active:G.length,total:$.length}):`(${$.length})`})]}),ue=r.jsx(_,{type:"text",size:"small",icon:a?r.jsx(ye,{}):r.jsx(Se,{}),onClick:_e,"data-testid":"sub-agents-toggle",style:e?{paddingInline:4}:void 0,children:l(a?"chat.subAgents.expand":"chat.subAgents.collapse")}),K=(s,c)=>r.jsx(ct,{parentSessionId:t,item:s,index:c,compact:e,isRetrying:p===s.childSessionId,isContinuing:C===s.childSessionId,isDeleting:f===s.childSessionId,subagentProfilesById:Re,onOpenChild:Ie,onContinueChild:$e,onRetryChild:He,onTogglePin:Me,onDeleteChild:Oe},s.childSessionId),de=F.length<=dt,ge=a?r.jsx(W,{type:"secondary","data-testid":"sub-agents-collapsed-hint",children:l("chat.subAgents.hiddenHint",{count:$.length})}):r.jsxs(I,{vertical:!0,gap:e?n.marginXS:n.marginSM,"data-testid":"sub-agents-list",style:{width:"100%",minWidth:0,maxHeight:`${gt}px`,overflowY:"auto",overflowX:"hidden",paddingRight:e?0:n.paddingXS},children:[U.length>0?r.jsxs(r.Fragment,{children:[r.jsx(W,{type:"secondary","data-testid":"sub-agents-resident-label",style:{fontSize:12,opacity:.75},children:l("chat.subAgents.residentGroup",{count:U.length})}),U.map((s,c)=>K(s,c))]}):null,G.length>0?G.map((s,c)=>K(s,c)):U.length===0&&F.length>0&&!de?r.jsx(W,{type:"secondary","data-testid":"sub-agents-no-active",children:l("chat.subAgents.noActive")}):null,F.length>0?de?F.map((s,c)=>K(s,c)):r.jsxs(r.Fragment,{children:[r.jsx(_,{type:"text",size:"small","data-testid":"sub-agents-completed-toggle",icon:m?r.jsx(Se,{}):r.jsx(ye,{}),onClick:()=>h(s=>!s),style:{alignSelf:"flex-start",paddingInline:4,color:n.colorTextSecondary},children:l("chat.subAgents.completedGroup",{count:F.length})}),m?F.map((s,c)=>K(s,c)):null]}):null]}),he=!a&&$.length>1?r.jsx(yt,{items:$}):null;return e?r.jsxs("section",{"data-testid":"sub-agents-panel",style:{width:"100%",minWidth:0,marginBottom:n.marginXS,overflow:"hidden"},children:[r.jsxs(I,{align:"center",justify:"space-between",gap:n.marginXS,style:{padding:`${n.paddingXXS??2}px 0 ${n.paddingXS}px`,borderBottom:`1px solid ${n.colorBorderSecondary}`},children:[r.jsx("div",{style:{flex:1,minWidth:0},children:ce}),r.jsx("div",{style:{flex:"0 0 auto"},children:ue})]}),r.jsxs("div",{style:{padding:`${n.paddingXS}px 0 0`},children:[ge,he]})]}):r.jsxs(Qe,{size:"small",className:"lotus-settings-card",style:{marginBottom:n.marginMD},"data-testid":"sub-agents-panel",title:ce,extra:ue,children:[ge,he]})},yt=({items:t})=>{const{token:e}=Pe(),{t:l}=Y(),n=t.reduce((a,g)=>{const p=q(g.status);return p==="completed"?a.completed++:p==="running"?a.running++:p==="error"||p==="failed"?a.error++:p==="cancelled"?a.cancelled++:a.pending++,a},{completed:0,running:0,error:0,pending:0,cancelled:0}),o=[];return n.completed>0&&o.push(l("chat.subAgents.summaryCompleted",{count:n.completed})),n.running>0&&o.push(l("chat.subAgents.summaryRunning",{count:n.running})),n.pending>0&&o.push(l("chat.subAgents.summaryPending",{count:n.pending})),n.cancelled>0&&o.push(`${n.cancelled} ${l("chat.subAgents.statusCancelled")}`),n.error>0&&o.push(l("chat.subAgents.summaryFailed",{count:n.error})),o.length===0?null:r.jsx(Q,{block:!0,items:o,style:{marginTop:e.marginXS}})};export{jt as SubAgentsPanel};
|