@bigduu/lotus 2026.5.30 → 2026.5.31

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.
Files changed (66) hide show
  1. package/dist/assets/App-BAFyf064.js +245 -0
  2. package/dist/assets/{MetricsService-dBlApAzA.js → MetricsService-BmWgjSY6.js} +1 -1
  3. package/dist/assets/SubAgentsPanel-CwthoMI_.js +1 -0
  4. package/dist/assets/{architectureDiagram-3BPJPVTR-BckxpZW_.js → architectureDiagram-3BPJPVTR-Dy1WYxWM.js} +1 -1
  5. package/dist/assets/{blockDiagram-GPEHLZMM-BfXz5GZp.js → blockDiagram-GPEHLZMM-aedwN9_l.js} +1 -1
  6. package/dist/assets/{c4Diagram-AAUBKEIU-Cd72GXZG.js → c4Diagram-AAUBKEIU-cg0iSka3.js} +1 -1
  7. package/dist/assets/{chunk-2J33WTMH-U_PdFANU.js → chunk-2J33WTMH-Db_IUuVS.js} +1 -1
  8. package/dist/assets/{chunk-4BX2VUAB-O_jazZ2T.js → chunk-4BX2VUAB-BUYjDrtk.js} +1 -1
  9. package/dist/assets/{chunk-55IACEB6-5UylDpQB.js → chunk-55IACEB6-C5iBqUl4.js} +1 -1
  10. package/dist/assets/{chunk-727SXJPM-DH2cqvYy.js → chunk-727SXJPM-Blb-tKDG.js} +1 -1
  11. package/dist/assets/{chunk-AQP2D5EJ-CT7Gc5S2.js → chunk-AQP2D5EJ-F4YtqWlO.js} +1 -1
  12. package/dist/assets/{chunk-FMBD7UC4-nXSVcWgU.js → chunk-FMBD7UC4-Bq8SpeDt.js} +1 -1
  13. package/dist/assets/{chunk-ND2GUHAM-zl6hPuET.js → chunk-ND2GUHAM-ByS3BRpp.js} +1 -1
  14. package/dist/assets/{chunk-QZHKN3VN-GNJt4FcN.js → chunk-QZHKN3VN-aUC9E4oT.js} +1 -1
  15. package/dist/assets/classDiagram-4FO5ZUOK-CdcCCQ8L.js +1 -0
  16. package/dist/assets/classDiagram-v2-Q7XG4LA2-CdcCCQ8L.js +1 -0
  17. package/dist/assets/{cose-bilkent-S5V4N54A-Kyzm36fn.js → cose-bilkent-S5V4N54A-Vu5Gdzcz.js} +1 -1
  18. package/dist/assets/{dagre-BM42HDAG-D49oMA8k.js → dagre-BM42HDAG-G5OewMg7.js} +1 -1
  19. package/dist/assets/{diagram-2AECGRRQ-DmFsRfUD.js → diagram-2AECGRRQ-D5JG5BbH.js} +1 -1
  20. package/dist/assets/{diagram-5GNKFQAL-uQtS07Me.js → diagram-5GNKFQAL-CwnMGQxg.js} +1 -1
  21. package/dist/assets/{diagram-KO2AKTUF-D1nppaIm.js → diagram-KO2AKTUF-DZYVd7GF.js} +1 -1
  22. package/dist/assets/{diagram-LMA3HP47-zqAs84Ke.js → diagram-LMA3HP47-CdJV02zy.js} +1 -1
  23. package/dist/assets/{diagram-OG6HWLK6-DhwNMDsy.js → diagram-OG6HWLK6-B0fpvJJt.js} +1 -1
  24. package/dist/assets/{erDiagram-TEJ5UH35-BrlM5CSe.js → erDiagram-TEJ5UH35-DT7eq9xF.js} +1 -1
  25. package/dist/assets/{flowDiagram-I6XJVG4X-DW8rny64.js → flowDiagram-I6XJVG4X-B49chWNh.js} +1 -1
  26. package/dist/assets/{ganttDiagram-6RSMTGT7-DAw-BWSY.js → ganttDiagram-6RSMTGT7-CHb8jAv1.js} +1 -1
  27. package/dist/assets/{gitGraphDiagram-PVQCEYII-BPa5-uQf.js → gitGraphDiagram-PVQCEYII-CngI0KWW.js} +1 -1
  28. package/dist/assets/{index-79boilyG.js → index-BGDt8oDL.js} +1 -1
  29. package/dist/assets/{index-CZufMAVA.js → index-BNXMB2Gh.js} +1 -1
  30. package/dist/assets/{index-BClD_Kuo.js → index-BVoCiggE.js} +1 -1
  31. package/dist/assets/{index-CpKeyar-.js → index-CJUZhol6.js} +1 -1
  32. package/dist/assets/{index-CW352hcn.js → index-Cg_ukrG-.js} +1 -1
  33. package/dist/assets/{index-D-NMfOT0.js → index-D6scerhZ.js} +1 -1
  34. package/dist/assets/{index-nKvapWnz.js → index-DVH1B_uO.js} +1 -1
  35. package/dist/assets/{index-BIexw-RU.js → index-Sgj4-nUv.js} +1 -1
  36. package/dist/assets/{index-Bt1I6ZoX.js → index-VJlNpEpx.js} +1 -1
  37. package/dist/assets/{index-EX0mHOrI.js → index-jNr_4aYr.js} +1 -1
  38. package/dist/assets/index-p5QnuY4O.js +22 -0
  39. package/dist/assets/{infoDiagram-5YYISTIA-9ipMATHw.js → infoDiagram-5YYISTIA-BaIG0z2C.js} +1 -1
  40. package/dist/assets/{ishikawaDiagram-YF4QCWOH-CMyDqtla.js → ishikawaDiagram-YF4QCWOH-D01QkFfb.js} +1 -1
  41. package/dist/assets/{journeyDiagram-JHISSGLW-BZYnoh6-.js → journeyDiagram-JHISSGLW-CKBuDJCY.js} +1 -1
  42. package/dist/assets/{kanban-definition-UN3LZRKU-Cys7RooC.js → kanban-definition-UN3LZRKU-CjX9GiJB.js} +1 -1
  43. package/dist/assets/{main-CgrLoRFE.js → main-C1pyfoEz.js} +3 -3
  44. package/dist/assets/{mindmap-definition-RKZ34NQL-D5UNfPbo.js → mindmap-definition-RKZ34NQL-6JLvFVXa.js} +1 -1
  45. package/dist/assets/{pieDiagram-4H26LBE5-Q8TIweQd.js → pieDiagram-4H26LBE5-D4cNQ3ti.js} +1 -1
  46. package/dist/assets/{quadrantDiagram-W4KKPZXB-CN2vkAO6.js → quadrantDiagram-W4KKPZXB-Dedmyssy.js} +1 -1
  47. package/dist/assets/{requirementDiagram-4Y6WPE33-BZPimYSg.js → requirementDiagram-4Y6WPE33-Dj4h0X4J.js} +1 -1
  48. package/dist/assets/{sankeyDiagram-5OEKKPKP-CbLGNQHF.js → sankeyDiagram-5OEKKPKP-BRBTHSKo.js} +1 -1
  49. package/dist/assets/{sequenceDiagram-3UESZ5HK-D1yJhogs.js → sequenceDiagram-3UESZ5HK-o8kMGEwZ.js} +1 -1
  50. package/dist/assets/{stateDiagram-AJRCARHV-B4B9uE8t.js → stateDiagram-AJRCARHV-DVQ3rByA.js} +1 -1
  51. package/dist/assets/{stateDiagram-v2-BHNVJYJU-CoHveFyA.js → stateDiagram-v2-BHNVJYJU-Bcon_ENq.js} +1 -1
  52. package/dist/assets/{timeline-definition-PNZ67QCA-fj8baLbI.js → timeline-definition-PNZ67QCA-CszgjZln.js} +1 -1
  53. package/dist/assets/{vendor-charts-CYC-iQBh.js → vendor-charts-BETi7DVC.js} +1 -1
  54. package/dist/assets/{vendor-mermaid-D1_CPXHE.js → vendor-mermaid-B_9yBBtL.js} +3 -3
  55. package/dist/assets/{vendor-pdf-DHC4XUDH.js → vendor-pdf-ByUYUPlZ.js} +3 -3
  56. package/dist/assets/{vennDiagram-CIIHVFJN-BqxKpPQ5.js → vennDiagram-CIIHVFJN-7OBV2019.js} +1 -1
  57. package/dist/assets/{wardley-L42UT6IY-DzDVarUL.js → wardley-L42UT6IY-C4EL3m5F.js} +1 -1
  58. package/dist/assets/{wardleyDiagram-YWT4CUSO-BdaarJgD.js → wardleyDiagram-YWT4CUSO-Ehr7A28a.js} +1 -1
  59. package/dist/assets/{xychartDiagram-2RQKCTM6-D0BGJUS2.js → xychartDiagram-2RQKCTM6-CRdOURrD.js} +1 -1
  60. package/dist/index.html +2 -2
  61. package/package.json +3 -10
  62. package/dist/assets/App-D3csea82.js +0 -245
  63. package/dist/assets/SubAgentsPanel-1J9eU6HS.js +0 -1
  64. package/dist/assets/classDiagram-4FO5ZUOK-qkEIsjts.js +0 -1
  65. package/dist/assets/classDiagram-v2-Q7XG4LA2-qkEIsjts.js +0 -1
  66. package/dist/assets/index-mh3nNjD-.js +0 -22
@@ -1 +1 @@
1
- import{a as n}from"./App-D3csea82.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
+ import{a as n}from"./App-BAFyf064.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};
@@ -0,0 +1 @@
1
+ var Se=Object.defineProperty;var Ce=(t,e,r)=>e in t?Se(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var oe=(t,e,r)=>Ce(t,typeof e!="symbol"?e+"":e,r);import{j as o}from"./vendor-markdown-DrYaLZhb.js";import{a as u,u as Y}from"./vendor-i18n-Dm-c3D_C.js";import{w as I,B as ie,D as we,F as xe,G as Ae,H as Te,J as ve,K as Ee,I as U,u as x,L as Pe,o as Re}from"./App-BAFyf064.js";import{o as K,F as H,l as ue,N as $,av as ke,t as de,x as je,af as _e,G as Ie}from"./vendor-antd-CKNrd1kL.js";import"./vendor-mermaid-B_9yBBtL.js";import"./main-C1pyfoEz.js";const j=class j{static getInstance(){return j.instance||(j.instance=new j),j.instance}parseUserCommand(e){I("[ToolService]",`[ToolService] parseUserCommand: Parsing content: "${e}"`);const r=e.trim();if(!r.startsWith("/"))return I("[ToolService]",'[ToolService] parseUserCommand: Content does not start with "/", not a tool command.'),null;const s=r.indexOf(" ");let a,c;if(s===-1?(a=r.substring(1),c=""):(a=r.substring(1,s),c=r.substring(s+1).trim()),a){const h={tool_name:a,user_description:c};return I("[ToolService]","[ToolService] parseUserCommand: Successfully parsed command:",h),h}return I("[ToolService]","[ToolService] parseUserCommand: Failed to parse tool name from content."),null}parseAIResponseToToolCall(e){return this.parseUserCommand(e)}async executeTool(e){I("[ToolService]","[ToolService] executeTool: Attempting to execute tool via HTTP with request:",e);try{const r=await ie.post("tools/execute",e),s=JSON.parse(r.result);if(!s||typeof s!="object"||typeof s.success!="boolean"||typeof s.result!="string")throw new Error("Tool execution returned a malformed result");const a=s;return I("[ToolService]","[ToolService] executeTool: Parsed structured result:",a),a}catch(r){throw console.error("[ToolService] executeTool: HTTP tool execution failed:",r),r instanceof we?new Error(`Workflow execution failed: ${r.message}`):r}}};oe(j,"instance");let N=j;const L=new N;class $e{async listProfiles(){return ie.get("subagent_profiles")}}const He=new $e,Oe=[];function Fe(t={}){const{enabled:e=!0,refreshKey:r}=t,[s,a]=u.useState(null),[c,h]=u.useState(!1),[b,k]=u.useState(null),w=u.useCallback(async()=>{h(!0);try{const y=await He.listProfiles();a(y),k(null)}catch(y){k(y instanceof Error?y:new Error(String(y)))}finally{h(!1)}},[]);u.useEffect(()=>{e&&w()},[e,w,r]);const E=u.useMemo(()=>{const y=new Map;if(s!=null&&s.profiles)for(const A of s.profiles)y.set(A.id,A);return y},[s]);return{profiles:(s==null?void 0:s.profiles)??Oe,fallbackId:(s==null?void 0:s.fallback_id)??null,loading:c,error:b,refresh:w,byId:E}}const Me=(t,e)=>{const r=xe(t,e);return Ae({key:r,atomFamily:Te,store:ve,emptyState:Ee})},De=(t,e)=>t.outputPreview||e||"",ae=(t,e,r)=>{var w,E,y,A,p;const s=t==null?void 0:t.trim();if(!s)return null;const a=e.get(s),c=((w=a==null?void 0:a.display_name)==null?void 0:w.trim())||s,h=(y=(E=a==null?void 0:a.ui)==null?void 0:E.icon)==null?void 0:y.trim(),b=((p=(A=a==null?void 0:a.ui)==null?void 0:A.color)==null?void 0:p.trim())||void 0;return(r==null?void 0:r.compact)??!1?o.jsx("span",{"data-testid":`sub-agent-role-tag-${s}`,style:{color:b||"inherit",lineHeight:"inherit",whiteSpace:"nowrap"},children:h?`${h} ${c}`:c}):o.jsx(K,{color:b,style:{marginInlineEnd:0,flex:"0 0 auto"},"data-testid":`sub-agent-role-tag-${s}`,children:h?`${h} ${c}`:c})},{Text:B}=ue,{useToken:Be}=de,Xe=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"},Le=u.memo(({parentSessionId:t,item:e,index:r,compact:s,isRetrying:a,isContinuing:c,isDeleting:h,subagentProfilesById:b,onOpenChild:k,onContinueChild:w,onRetryChild:E,onTogglePin:y,onDeleteChild:A})=>{const{token:p}=Be(),{t:g}=Y(),P=Me(t,e.childSessionId),O=De(P,e.outputPreview),F=s?{marginInlineEnd:0,flex:"0 0 auto",fontSize:10,lineHeight:"16px",paddingInline:6}:{marginInlineEnd:0,flex:"0 0 auto"},T=s?{paddingInline:0,height:22}:void 0,S=Xe(e.status),_=S==="running",C=a||c||h,M=m=>m==="running"?g("chat.subAgents.statusRunning"):m==="completed"?g("chat.subAgents.statusCompleted"):m==="pending"?g("chat.subAgents.statusPending"):m==="cancelled"?g("chat.subAgents.statusCancelled"):m==="error"||m==="failed"?g("chat.subAgents.statusFailed"):m,X=m=>m==="running"?p.colorPrimary:m==="completed"?p.colorSuccess:m==="error"||m==="failed"?p.colorError:m==="cancelled"?p.colorWarning:p.colorTextSecondary;return o.jsxs(H,{vertical:!0,gap:s?6:p.marginSM,className:s?void 0:"lotus-settings-list-item",style:{width:"100%",minWidth:0,padding:s?"6px 0":p.paddingSM,borderRadius:s?0:p.borderRadiusSM,borderTop:s&&r>0?`1px solid ${p.colorBorderSecondary}`:void 0,background:s?"transparent":void 0},children:[o.jsxs(H,{vertical:!0,style:{width:"100%",minWidth:0},children:[o.jsxs(H,{align:"center",gap:p.marginXS,wrap:!0,style:{width:"100%",minWidth:0},children:[o.jsx(B,{strong:!0,ellipsis:!0,style:{minWidth:0,flex:"1 1 180px",fontSize:s?13:void 0},children:e.title||g("chat.subAgents.fallbackTitle")}),s?o.jsx(U,{nowrap:!0,items:[o.jsx("span",{style:{color:X(S)},children:M(S)}),e.pinned?g("chat.subAgents.pinned"):null,ae(e.subagentType,b,{compact:!0})]}):o.jsxs(o.Fragment,{children:[o.jsx(K,{color:S==="running"?"processing":S==="completed"?"success":S==="error"||S==="failed"?"error":S==="cancelled"?"warning":"default",style:F,children:M(S)}),e.pinned?o.jsx(K,{color:"warning",style:F,children:g("chat.subAgents.pinned")}):null,ae(e.subagentType,b)]})]}),s?o.jsx(U,{block:!0,items:[e.childSessionId.slice(0,8),e.updatedAt,e.lastHeartbeatAt?`${g("chat.subAgents.heartbeat")}: ${e.lastHeartbeatAt}`:null,typeof e.roundCount=="number"?`${g("chat.subAgents.round")} ${e.roundCount+1}`:null]}):o.jsxs(B,{type:"secondary",style:{display:"block",minWidth:0,fontSize:12,marginTop:2},children:[e.childSessionId.slice(0,8),e.updatedAt?` • ${e.updatedAt}`:"",e.lastHeartbeatAt?` • ${g("chat.subAgents.heartbeat")}: ${e.lastHeartbeatAt}`:"",typeof e.roundCount=="number"?` • ${g("chat.subAgents.round")} ${e.roundCount+1}`:""]}),O?o.jsx(B,{type:"secondary",style:{display:"block",minWidth:0,marginTop:s?4:p.marginXS,fontSize:s?11:13,lineHeight:s?1.35:void 0},ellipsis:!0,children:O}):null,e.error?o.jsx(B,{type:"danger",style:{display:"block",minWidth:0,marginTop:s?4:p.marginXS,fontSize:s?11:void 0,lineHeight:s?1.35:void 0},children:e.error}):null]}),o.jsxs(H,{gap:s?4:8,wrap:!0,style:{width:"100%",minWidth:0,paddingTop:s?2:0},children:[o.jsx($,{size:"small",type:s?"text":"default",style:T,disabled:C,onClick:()=>k(e.childSessionId),children:g("chat.subAgents.open")}),o.jsx($,{size:"small",type:s?"text":"default",style:T,loading:c,disabled:h||a||_,"data-testid":`sub-agent-continue-${e.childSessionId}`,onClick:()=>w(e.childSessionId),children:g("chat.subAgents.continue")}),o.jsx(ke,{trigger:["click"],menu:{items:[{key:"regenerate",label:g("chat.actions.regenerate")},{key:"error_retry",label:g("chat.actions.retryFailed")}],onClick:({key:m})=>{E(e.childSessionId,m)}},disabled:h||_||c,children:o.jsx($,{size:"small",type:s?"text":"default",style:T,loading:a,disabled:h||_||c,"data-testid":`sub-agent-retry-${e.childSessionId}`,children:g("chat.subAgents.retry")})}),typeof e.pinned=="boolean"?o.jsx($,{size:"small",type:s?"text":"default",style:T,disabled:C,onClick:()=>y(e.childSessionId,e.pinned),children:e.pinned?g("chat.actions.unpin"):g("chat.actions.pin")}):null,o.jsx($,{danger:!0,type:s?"text":"default",style:T,size:"small",loading:h,disabled:a,"data-testid":`sub-agent-delete-${e.childSessionId}`,onClick:()=>A(e.childSessionId),children:g("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}=ue,{useToken:ce}=de,We="chat-session-sub-agents-collapsed:",ze=3,Ue=600,G=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"},Ke=(t,e)=>{if(e&&e.trim())return e;if(t.isRunning)return"running";if(t.lastRunStatus&&t.lastRunStatus.trim())return t.lastRunStatus;const r=t.messageCount??0;return r>2?"completed":(r>0,"pending")},ge=t=>`${We}${t}`,z=t=>{if(typeof window>"u")return!1;try{const e=window.localStorage.getItem(ge(t));return e==="1"?!0:e==="0"?!1:null}catch{return null}},Ne=(t,e)=>{if(!(typeof window>"u"))try{window.localStorage.setItem(ge(t),e?"1":"0")}catch{}},le=(t,e)=>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.isRunning===e.isRunning&&t.messageCount===e.messageCount&&t.lastRunStatus===e.lastRunStatus&&t.lastRunError===e.lastRunError&&t.subagentType===e.subagentType&&t.roundCount===e.roundCount,tt=({parentSessionId:t,compact:e=!1})=>{const{t:r}=Y(),{token:s}=ce(),[a,c]=u.useState(()=>z(t)??!1),[h,b]=u.useState(null),[k,w]=u.useState(null),[E,y]=u.useState(null),A=x(n=>Pe(t)(n)),p=x(n=>n.chats),g=x(n=>n.loadChatHistory),P=x(n=>n.refreshChats),O=x(n=>n.markOptimisticStart),F=x(n=>n.markRetryStart),T=x(n=>n.markSettleTimeout),S=x(n=>n.pinSession),_=x(n=>n.unpinSession),C=x(n=>n.applyChildProgress),M=x(n=>n.clearChildProgress),{byId:X}=Fe(),m=u.useRef(new Map),q=u.useMemo(()=>Object.entries(A).map(([n,d])=>({childSessionId:n,...d})),[A]),J=u.useMemo(()=>p.filter(n=>n.kind==="child"&&n.parentSessionId===t).sort((n,d)=>{const f=Date.parse(n.updatedAt||"")||0;return(Date.parse(d.updatedAt||"")||0)-f}),[p,t]),R=u.useMemo(()=>{const n=new Map(q.map(i=>[i.childSessionId,i])),d=m.current,f=[];for(const i of J){const l=n.get(i.id),v={childSessionId:i.id,title:i.title||(l==null?void 0:l.title),status:G(Ke(i,l==null?void 0:l.status)),error:(l==null?void 0:l.error)||i.lastRunError,lastHeartbeatAt:l==null?void 0:l.lastHeartbeatAt,lastEventAt:l==null?void 0:l.lastEventAt,outputPreview:l==null?void 0:l.outputPreview,roundCount:l==null?void 0:l.roundCount,pinned:i.pinned,updatedAt:i.updatedAt,isRunning:i.isRunning,messageCount:i.messageCount,lastRunStatus:i.lastRunStatus,lastRunError:i.lastRunError,subagentType:i.subagentType??null},D=d.get(i.id);f.push(D&&le(D,v)?D:v),n.delete(i.id)}for(const i of n.values()){const l={childSessionId:i.childSessionId,title:i.title,status:G(i.status),error:i.error,lastHeartbeatAt:i.lastHeartbeatAt,lastEventAt:i.lastEventAt,outputPreview:i.outputPreview,roundCount:i.roundCount},v=d.get(i.childSessionId);f.push(v&&le(v,l)?v:l)}return m.current=new Map(f.map(i=>[i.childSessionId,i])),f},[J,q]);u.useEffect(()=>{c(z(t)??!1)},[t]),u.useEffect(()=>{z(t)===null&&c(R.length>ze)},[t,R.length]);const he=u.useCallback(()=>{c(n=>{const d=!n;return Ne(t,d),d})},[t]),V=u.useCallback(n=>n instanceof Error&&n.message.trim()?n.message:r("chat.subAgents.runChildFailed"),[r]),Q=u.useCallback(async(n,d="regenerate")=>{b(n),C(t,n,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),F(n);try{const f=await L.executeTool({tool_name:"SubAgent",session_id:t,parameters:[{name:"action",value:"run"},{name:"child_session_id",value:n},{name:"reset_to_last_user",value:d==="error_retry"?"false":"true"}]});if(!f.success)throw new Error(f.result||"Failed to run sub-agent");C(t,n,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),await g(n,{mode:"replace"}),await P()}catch(f){T(n),C(t,n,{status:"error",error:V(f),lastEventAt:new Date().toISOString()})}finally{b(f=>f===n?null:f)}},[g,t,P,F,T,V,C]),Z=u.useCallback(async n=>{const d=typeof window<"u"?window.prompt.bind(window):null;if(!d)return;const f=d("Send a follow-up message to this sub-agent:","Continue from where you left off.");if(f===null)return;const i=f.trim();if(!i){C(t,n,{status:"error",error:"Follow-up message cannot be empty.",lastEventAt:new Date().toISOString()});return}w(n),C(t,n,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),O(n);try{const l=await L.executeTool({tool_name:"SubAgent",session_id:t,parameters:[{name:"action",value:"send_message"},{name:"child_session_id",value:n},{name:"message",value:i},{name:"auto_run",value:"true"}]});if(!l.success)throw new Error(l.result||"Follow-up failed");let v="running";try{JSON.parse(l.result).status==="pending"&&(v="pending")}catch{v="running"}C(t,n,{status:v,error:void 0,lastEventAt:new Date().toISOString()}),await P()}catch(l){T(n),C(t,n,{status:"error",error:l instanceof Error&&l.message.trim()?l.message:r("chat.subAgents.continueChildFailed"),lastEventAt:new Date().toISOString()})}finally{w(l=>l===n?null:l)}},[t,P,O,T,C,r]),ee=u.useCallback(async n=>{y(n);try{const d=await L.executeTool({tool_name:"SubAgent",session_id:t,parameters:[{name:"action",value:"delete"},{name:"child_session_id",value:n}]});if(!d.success)throw new Error(d.result||"Failed to delete sub-agent");M(t,n),await P()}finally{y(d=>d===n?null:d)}},[M,t,P]),pe=u.useCallback(n=>{Re(n),g(n)},[g]),me=u.useCallback(n=>{Z(n)},[Z]),fe=u.useCallback((n,d)=>{Q(n,d)},[Q]),ye=u.useCallback((n,d)=>{d?_(n):S(n)},[S,_]),be=u.useCallback(n=>{ee(n)},[ee]);if(R.length===0)return null;const te=o.jsxs(W,{strong:!0,children:[r("chat.subAgents.title")," ",o.jsxs(W,{type:"secondary",children:["(",R.length,")"]})]}),ne=o.jsx($,{type:"text",size:"small",icon:a?o.jsx(je,{}):o.jsx(_e,{}),onClick:he,"data-testid":"sub-agents-toggle",style:e?{paddingInline:4}:void 0,children:r(a?"chat.subAgents.expand":"chat.subAgents.collapse")}),se=a?o.jsx(W,{type:"secondary","data-testid":"sub-agents-collapsed-hint",children:r("chat.subAgents.hiddenHint",{count:R.length})}):o.jsx(H,{vertical:!0,gap:e?s.marginXS:s.marginSM,"data-testid":"sub-agents-list",style:{width:"100%",minWidth:0,maxHeight:`${Ue}px`,overflowY:"auto",overflowX:"hidden",paddingRight:e?0:s.paddingXS},children:R.map((n,d)=>o.jsx(Le,{parentSessionId:t,item:n,index:d,compact:e,isRetrying:h===n.childSessionId,isContinuing:k===n.childSessionId,isDeleting:E===n.childSessionId,subagentProfilesById:X,onOpenChild:pe,onContinueChild:me,onRetryChild:fe,onTogglePin:ye,onDeleteChild:be},n.childSessionId))}),re=!a&&R.length>1?o.jsx(Ge,{items:R}):null;return e?o.jsxs("section",{"data-testid":"sub-agents-panel",style:{width:"100%",minWidth:0,marginBottom:s.marginXS,overflow:"hidden"},children:[o.jsxs(H,{align:"center",justify:"space-between",gap:s.marginXS,style:{padding:`${s.paddingXXS??2}px 0 ${s.paddingXS}px`,borderBottom:`1px solid ${s.colorBorderSecondary}`},children:[o.jsx("div",{style:{flex:1,minWidth:0},children:te}),o.jsx("div",{style:{flex:"0 0 auto"},children:ne})]}),o.jsxs("div",{style:{padding:`${s.paddingXS}px 0 0`},children:[se,re]})]}):o.jsxs(Ie,{size:"small",className:"lotus-settings-card",style:{marginBottom:s.marginMD},"data-testid":"sub-agents-panel",title:te,extra:ne,children:[se,re]})},Ge=({items:t})=>{const{token:e}=ce(),{t:r}=Y(),s=t.reduce((c,h)=>{const b=G(h.status);return b==="completed"?c.completed++:b==="running"?c.running++:b==="error"||b==="failed"?c.error++:c.pending++,c},{completed:0,running:0,error:0,pending:0}),a=[];return s.completed>0&&a.push(r("chat.subAgents.summaryCompleted",{count:s.completed})),s.running>0&&a.push(r("chat.subAgents.summaryRunning",{count:s.running})),s.pending>0&&a.push(r("chat.subAgents.summaryPending",{count:s.pending})),s.error>0&&a.push(r("chat.subAgents.summaryFailed",{count:s.error})),a.length===0?null:o.jsx(U,{block:!0,items:a,style:{marginTop:e.marginXS}})};export{tt as SubAgentsPanel};