@bigduu/lotus 2026.6.5 → 2026.6.13

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 (75) hide show
  1. package/dist/assets/App-aEEu_6Hn.js +247 -0
  2. package/dist/assets/{FeatureGuide-CeSU4k2J.js → FeatureGuide-pqK-Gb1K.js} +1 -1
  3. package/dist/assets/{MetricsService-IjMATLVA.js → MetricsService-jZTL2RqA.js} +1 -1
  4. package/dist/assets/SubAgentsPanel-DN9ao9nF.js +3 -0
  5. package/dist/assets/{architectureDiagram-3BPJPVTR-C7BxoVQN.js → architectureDiagram-3BPJPVTR-BFwlYqQC.js} +1 -1
  6. package/dist/assets/{blockDiagram-GPEHLZMM-D3ugWWuN.js → blockDiagram-GPEHLZMM-BwED8Et6.js} +1 -1
  7. package/dist/assets/{c4Diagram-AAUBKEIU-DnReHW7Q.js → c4Diagram-AAUBKEIU-DXOgcT_M.js} +1 -1
  8. package/dist/assets/{chunk-2J33WTMH-DUDFatLY.js → chunk-2J33WTMH-BfMzNpp2.js} +1 -1
  9. package/dist/assets/{chunk-4BX2VUAB-DF0FUXoV.js → chunk-4BX2VUAB-DtX8BD4A.js} +1 -1
  10. package/dist/assets/{chunk-55IACEB6-BN93Fcaq.js → chunk-55IACEB6-Dta0guet.js} +1 -1
  11. package/dist/assets/{chunk-727SXJPM-DOZ1cdYR.js → chunk-727SXJPM-0N57xPQO.js} +1 -1
  12. package/dist/assets/{chunk-AQP2D5EJ-BewtTDQ7.js → chunk-AQP2D5EJ-Dmiw86Ph.js} +1 -1
  13. package/dist/assets/{chunk-FMBD7UC4-tUDpDD2M.js → chunk-FMBD7UC4-Bi6YBFs3.js} +1 -1
  14. package/dist/assets/{chunk-ND2GUHAM-CoqI5beh.js → chunk-ND2GUHAM-DwmUWEAW.js} +1 -1
  15. package/dist/assets/{chunk-QZHKN3VN-mQJtPwti.js → chunk-QZHKN3VN-BYjSMnbQ.js} +1 -1
  16. package/dist/assets/classDiagram-4FO5ZUOK-DcG1nps5.js +1 -0
  17. package/dist/assets/classDiagram-v2-Q7XG4LA2-DcG1nps5.js +1 -0
  18. package/dist/assets/{cose-bilkent-S5V4N54A-D9j4sbxB.js → cose-bilkent-S5V4N54A-CtV8iJTu.js} +1 -1
  19. package/dist/assets/{dagre-BM42HDAG-Cuf0F8jg.js → dagre-BM42HDAG-cCQC0Mpc.js} +1 -1
  20. package/dist/assets/{diagram-2AECGRRQ-C4nlWCyH.js → diagram-2AECGRRQ-Qb3ZcOw7.js} +1 -1
  21. package/dist/assets/{diagram-5GNKFQAL-DNv01R7K.js → diagram-5GNKFQAL-DDeSA5NF.js} +1 -1
  22. package/dist/assets/{diagram-KO2AKTUF-w8QWGjwj.js → diagram-KO2AKTUF-lubMnCeg.js} +1 -1
  23. package/dist/assets/{diagram-LMA3HP47-D2zerT45.js → diagram-LMA3HP47-BnA076wo.js} +1 -1
  24. package/dist/assets/{diagram-OG6HWLK6-D4IaZt6w.js → diagram-OG6HWLK6-BIqja9_U.js} +1 -1
  25. package/dist/assets/{en-US-BQ4GPQ1L.js → en-US-C38EFxQK.js} +1 -1
  26. package/dist/assets/{erDiagram-TEJ5UH35-BE_v4wba.js → erDiagram-TEJ5UH35-P6kOaXLJ.js} +1 -1
  27. package/dist/assets/{flowDiagram-I6XJVG4X-H1x34qkx.js → flowDiagram-I6XJVG4X-Dslk_D5K.js} +1 -1
  28. package/dist/assets/{ganttDiagram-6RSMTGT7-C_MQhNSh.js → ganttDiagram-6RSMTGT7-BP9uqKyE.js} +1 -1
  29. package/dist/assets/{gitGraphDiagram-PVQCEYII-J4vbBKbe.js → gitGraphDiagram-PVQCEYII-DccxMKC1.js} +1 -1
  30. package/dist/assets/{index-DS5W71XQ.js → index-B0CXuJjP.js} +1 -1
  31. package/dist/assets/{index-LE9DgWWR.js → index-C6RJ0EzP.js} +1 -1
  32. package/dist/assets/{index-B6Wtq5ij.js → index-C_UOVWSI.js} +1 -1
  33. package/dist/assets/{index-DNaudOY7.js → index-Cqta1ICV.js} +1 -1
  34. package/dist/assets/{index-ZqRmVHVQ.js → index-CwHagCqo.js} +1 -1
  35. package/dist/assets/{index-BtgBZ406.js → index-D2r85Wzu.js} +1 -1
  36. package/dist/assets/{index-DLFurbGO.js → index-DIvIyhb4.js} +1 -1
  37. package/dist/assets/{index-DzQRDtjO.js → index-Di-CFZCC.js} +1 -1
  38. package/dist/assets/{index-DjV_isdj.js → index-Do83dUqx.js} +1 -1
  39. package/dist/assets/{index-DFCIrXAv.js → index-E4RVs2d5.js} +1 -1
  40. package/dist/assets/{index-CAqVl_mr.js → index-JeweDcVC.js} +1 -1
  41. package/dist/assets/index-KCmhbMww.js +22 -0
  42. package/dist/assets/{index-C0SPlGJa.js → index-hQIyav3f.js} +1 -1
  43. package/dist/assets/{index.es-Dg_ifvDP.js → index.es-DiBjIJ4P.js} +1 -1
  44. package/dist/assets/{infoDiagram-5YYISTIA-h192nXGV.js → infoDiagram-5YYISTIA-DTDNIrLR.js} +1 -1
  45. package/dist/assets/{ishikawaDiagram-YF4QCWOH-BxI12gkX.js → ishikawaDiagram-YF4QCWOH-DweU9Cl7.js} +1 -1
  46. package/dist/assets/{journeyDiagram-JHISSGLW-DCO5Rl_2.js → journeyDiagram-JHISSGLW-Bj86Z2Fm.js} +1 -1
  47. package/dist/assets/{kanban-definition-UN3LZRKU-ZnRHcGmD.js → kanban-definition-UN3LZRKU-D3PHn7fi.js} +1 -1
  48. package/dist/assets/{main-Ee10mQ7B.js → main-BwFLiHtZ.js} +3 -3
  49. package/dist/assets/{mindmap-definition-RKZ34NQL-CNrdccXV.js → mindmap-definition-RKZ34NQL-Dx23y5tj.js} +1 -1
  50. package/dist/assets/{pieDiagram-4H26LBE5-CbeY-r9Q.js → pieDiagram-4H26LBE5-B7hqMwij.js} +1 -1
  51. package/dist/assets/{quadrantDiagram-W4KKPZXB-CmIV5OV3.js → quadrantDiagram-W4KKPZXB-DegMJHWg.js} +1 -1
  52. package/dist/assets/{requirementDiagram-4Y6WPE33-DLUn445K.js → requirementDiagram-4Y6WPE33-BY7Ln-Rj.js} +1 -1
  53. package/dist/assets/{sankeyDiagram-5OEKKPKP-DMHvtkNI.js → sankeyDiagram-5OEKKPKP-CbESJ0oa.js} +1 -1
  54. package/dist/assets/{sequenceDiagram-3UESZ5HK-BCQQacRT.js → sequenceDiagram-3UESZ5HK-XCWIGgUk.js} +1 -1
  55. package/dist/assets/{stateDiagram-AJRCARHV-DsR-QFgp.js → stateDiagram-AJRCARHV-Byk_XTTS.js} +1 -1
  56. package/dist/assets/stateDiagram-v2-BHNVJYJU-CafEhiJi.js +1 -0
  57. package/dist/assets/{timeline-definition-PNZ67QCA-DzaI8x_B.js → timeline-definition-PNZ67QCA-T7JNxPqa.js} +1 -1
  58. package/dist/assets/{vendor-antd-BV9fXfUG.js → vendor-antd-Ce-qhZOr.js} +1 -1
  59. package/dist/assets/{vendor-charts-vIAeXmxC.js → vendor-charts-D320wYxx.js} +1 -1
  60. package/dist/assets/{vendor-markdown-CR3QKQo2.js → vendor-markdown-CgV5F7BD.js} +1 -1
  61. package/dist/assets/{vendor-mermaid-Db4IqfC2.js → vendor-mermaid-DNPswEMX.js} +4 -4
  62. package/dist/assets/{vendor-pdf-BFLLcV6C.js → vendor-pdf-CclUSsRE.js} +4 -4
  63. package/dist/assets/{vennDiagram-CIIHVFJN-DzyEl3d2.js → vennDiagram-CIIHVFJN-C959_nlC.js} +1 -1
  64. package/dist/assets/{wardley-L42UT6IY-BYuEE8FJ.js → wardley-L42UT6IY-DSQcl7OL.js} +1 -1
  65. package/dist/assets/{wardleyDiagram-YWT4CUSO-ChlBJ9ij.js → wardleyDiagram-YWT4CUSO-BQAzKnlN.js} +1 -1
  66. package/dist/assets/{xychartDiagram-2RQKCTM6-YuVbM3u9.js → xychartDiagram-2RQKCTM6-DRo-q-Vy.js} +1 -1
  67. package/dist/assets/{zh-CN-ClwJHuX0.js → zh-CN-COpGuCJ1.js} +1 -1
  68. package/dist/index.html +4 -4
  69. package/package.json +3 -2
  70. package/dist/assets/App-CniE_U1E.js +0 -245
  71. package/dist/assets/SubAgentsPanel-DqDHY5qg.js +0 -1
  72. package/dist/assets/classDiagram-4FO5ZUOK-BxdS4zho.js +0 -1
  73. package/dist/assets/classDiagram-v2-Q7XG4LA2-BxdS4zho.js +0 -1
  74. package/dist/assets/index-Tnb6z7YB.js +0 -22
  75. package/dist/assets/stateDiagram-v2-BHNVJYJU-DED_TFzZ.js +0 -1
@@ -1 +1 @@
1
- import{j as p}from"./vendor-markdown-CR3QKQo2.js";import{u as m,a as i}from"./vendor-i18n-Dm-c3D_C.js";import{i as u,m as b}from"./onboardingStorage-BVcEpmTy.js";import{T as g}from"./vendor-antd-BV9fXfUG.js";const f=["new-session","task-templates","model-picker","sidebar","open-settings"],T=()=>{const o={};for(const e of f)o[e]=document.querySelector(`[data-tour-id="${e}"]`);return o},x=({disabled:o=!1})=>{const{t:e}=m(),[s,n]=i.useState(!1),[t,r]=i.useState(null);i.useEffect(()=>{if(o||u())return;const l=setTimeout(()=>{const c=T();r(c),n(!0)},800);return()=>clearTimeout(l)},[o]);const a=i.useMemo(()=>[{title:e("onboarding.welcome.title"),description:e("onboarding.welcome.description"),target:null},{title:e("onboarding.newSession.title"),description:e("onboarding.newSession.description"),target:(t==null?void 0:t["new-session"])??void 0},{title:e("onboarding.taskTemplates.title"),description:e("onboarding.taskTemplates.description"),target:(t==null?void 0:t["task-templates"])??void 0},{title:e("onboarding.modelPicker.title"),description:e("onboarding.modelPicker.description"),target:(t==null?void 0:t["model-picker"])??void 0},{title:e("onboarding.sidebar.title"),description:e("onboarding.sidebar.description"),target:(t==null?void 0:t.sidebar)??void 0},{title:e("onboarding.settings.title"),description:e("onboarding.settings.description"),target:(t==null?void 0:t["open-settings"])??void 0}],[e,t]),d=()=>{b(),n(!1)};return p.jsx(g,{open:s,onClose:d,steps:a})};export{x as FeatureGuide};
1
+ import{j as p}from"./vendor-markdown-CgV5F7BD.js";import{u as m,a as i}from"./vendor-i18n-Dm-c3D_C.js";import{i as u,m as b}from"./onboardingStorage-BVcEpmTy.js";import{T as g}from"./vendor-antd-Ce-qhZOr.js";const f=["new-session","task-templates","model-picker","sidebar","open-settings"],T=()=>{const o={};for(const e of f)o[e]=document.querySelector(`[data-tour-id="${e}"]`);return o},x=({disabled:o=!1})=>{const{t:e}=m(),[s,n]=i.useState(!1),[t,r]=i.useState(null);i.useEffect(()=>{if(o||u())return;const l=setTimeout(()=>{const c=T();r(c),n(!0)},800);return()=>clearTimeout(l)},[o]);const a=i.useMemo(()=>[{title:e("onboarding.welcome.title"),description:e("onboarding.welcome.description"),target:null},{title:e("onboarding.newSession.title"),description:e("onboarding.newSession.description"),target:(t==null?void 0:t["new-session"])??void 0},{title:e("onboarding.taskTemplates.title"),description:e("onboarding.taskTemplates.description"),target:(t==null?void 0:t["task-templates"])??void 0},{title:e("onboarding.modelPicker.title"),description:e("onboarding.modelPicker.description"),target:(t==null?void 0:t["model-picker"])??void 0},{title:e("onboarding.sidebar.title"),description:e("onboarding.sidebar.description"),target:(t==null?void 0:t.sidebar)??void 0},{title:e("onboarding.settings.title"),description:e("onboarding.settings.description"),target:(t==null?void 0:t["open-settings"])??void 0}],[e,t]),d=()=>{b(),n(!1)};return p.jsx(g,{open:s,onClose:d,steps:a})};export{x as FeatureGuide};
@@ -1 +1 @@
1
- import{a as n}from"./App-CniE_U1E.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-aEEu_6Hn.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,3 @@
1
+ var Fe=Object.defineProperty;var Oe=(t,e,o)=>e in t?Fe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o;var pe=(t,e,o)=>Oe(t,typeof e!="symbol"?e+"":e,o);import{j as r}from"./vendor-markdown-CgV5F7BD.js";import{a as d,u as q}from"./vendor-i18n-Dm-c3D_C.js";import{x as X,D as Ae,F as Xe,G as De,H as Be,J as ze,K as Ne,L as We,M as Le,N as fe,O as me,I as Q,u as R,P as Ue,o as Ge}from"./App-aEEu_6Hn.js";import{o as W,F as I,N as _,av as Ke,a2 as Ye,l as ee,t as te,aw as qe,X as Je,x as ye,af as be,G as Ve}from"./vendor-antd-Ce-qhZOr.js";import"./vendor-mermaid-DNPswEMX.js";import"./main-BwFLiHtZ.js";const F=class F{static getInstance(){return F.instance||(F.instance=new F),F.instance}parseUserCommand(e){X("[ToolService]",`[ToolService] parseUserCommand: Parsing content: "${e}"`);const o=e.trim();if(!o.startsWith("/"))return X("[ToolService]",'[ToolService] parseUserCommand: Content does not start with "/", not a tool command.'),null;const n=o.indexOf(" ");let l,u;if(n===-1?(l=o.substring(1),u=""):(l=o.substring(1,n),u=o.substring(n+1).trim()),l){const a={tool_name:l,user_description:u};return X("[ToolService]","[ToolService] parseUserCommand: Successfully parsed command:",a),a}return X("[ToolService]","[ToolService] parseUserCommand: Failed to parse tool name from content."),null}parseAIResponseToToolCall(e){return this.parseUserCommand(e)}async executeTool(e){X("[ToolService]","[ToolService] executeTool: Attempting to execute tool via HTTP with request:",e);try{const o=await Ae.post("tools/execute",e),n=JSON.parse(o.result);if(!n||typeof n!="object"||typeof n.success!="boolean"||typeof n.result!="string")throw new Error("Tool execution returned a malformed result");const l=n;return X("[ToolService]","[ToolService] executeTool: Parsed structured result:",l),l}catch(o){throw console.error("[ToolService] executeTool: HTTP tool execution failed:",o),o instanceof Xe?new Error(`Workflow execution failed: ${o.message}`):o}}};pe(F,"instance");let Z=F;const J=new Z;class Qe{async listProfiles(){return Ae.get("subagent_profiles")}}const Ze=new Qe,et=[];function tt(t={}){const{enabled:e=!0,refreshKey:o}=t,[n,l]=d.useState(null),[u,a]=d.useState(!1),[p,b]=d.useState(null),S=d.useCallback(async()=>{a(!0);try{const f=await Ze.listProfiles();l(f),b(null)}catch(f){b(f instanceof Error?f:new Error(String(f)))}finally{a(!1)}},[]);d.useEffect(()=>{e&&S()},[e,S,o]);const x=d.useMemo(()=>{const f=new Map;if(n!=null&&n.profiles)for(const A of n.profiles)f.set(A.id,A);return f},[n]);return{profiles:(n==null?void 0:n.profiles)??et,fallbackId:(n==null?void 0:n.fallback_id)??null,loading:u,error:p,refresh:S,byId:x}}const Te=(t,e)=>{const o=De(t,e);return Be({key:o,atomFamily:ze,store:Ne,emptyState:We})},nt=(t,e)=>t.outputPreview||e||"",Se=(t,e,o)=>{var S,x,f,A,m;const n=t==null?void 0:t.trim();if(!n)return null;const l=e.get(n),u=((S=l==null?void 0:l.display_name)==null?void 0:S.trim())||n,a=(f=(x=l==null?void 0:l.ui)==null?void 0:x.icon)==null?void 0:f.trim(),p=((m=(A=l==null?void 0:l.ui)==null?void 0:A.color)==null?void 0:m.trim())||void 0;return(o==null?void 0:o.compact)??!1?r.jsx("span",{"data-testid":`sub-agent-role-tag-${n}`,style:{color:p||"inherit",lineHeight:"inherit",whiteSpace:"nowrap"},children:a?`${a} ${u}`:u}):r.jsx(W,{color:p,style:{marginInlineEnd:0,flex:"0 0 auto"},"data-testid":`sub-agent-role-tag-${n}`,children:a?`${a} ${u}`:u})},st={preview:"",connecting:!1};function rt(t,e,o){const[n,l]=d.useState(""),[u,a]=d.useState(!1),p=d.useRef(""),b=d.useRef(null);return d.useEffect(()=>{if(!o||!e)return;let S=!1;const x=new AbortController,f=Le(t,e).outputPreview??"";p.current=f,l(f),a(!0);const A=()=>{b.current=null,S||l(p.current)},m=()=>{b.current==null&&(b.current=setTimeout(A,80))},h=j=>{p.current=(p.current+j).slice(-me),m()};return f||(async()=>{try{const j=await fe.getHistory(e);if(S||p.current)return;const P=j.messages.filter(v=>v.role==="assistant"&&v.content).map(v=>v.content).join(`
2
+
3
+ `).slice(-me);P&&(p.current=P,l(P))}catch{}})(),fe.subscribeToEvents(e,{onToken:j=>h(j)},x).catch(()=>{}).finally(()=>{S||a(!1)}),()=>{S=!0,x.abort(),b.current!=null&&(clearTimeout(b.current),b.current=null)}},[o,t,e]),o?{preview:n,connecting:u}:st}const{Text:ot}=ee,{useToken:je}=te,Ce=d.memo(function({preview:e,maxHeight:o}){const n=d.useRef(null),{token:l}=je();return d.useEffect(()=>{const u=n.current;u&&(u.scrollTop=u.scrollHeight)},[e]),r.jsx("div",{ref:n,style:{maxHeight:o,overflowY:"auto",overflowX:"hidden",fontFamily:"monospace",fontSize:l.fontSizeSM,lineHeight:1.5,whiteSpace:"pre-wrap",wordBreak:"break-word",color:l.colorTextSecondary},children:e})}),we=({parentSessionId:t,childSessionId:e,childTitle:o,status:n,onOpenChild:l,children:u})=>{const{t:a}=q(),{token:p}=je(),[b,S]=d.useState(!1),[x,f]=d.useState(!1),A=Te(t,e),h=rt(t,e,b||x).preview||A.outputPreview,j=n==="running"?"processing":n==="completed"?"success":n==="error"||n==="failed"?"error":n==="cancelled"?"warning":"default",P=n==="running"?a("chat.subAgents.statusRunning"):n==="completed"?a("chat.subAgents.statusCompleted"):n==="pending"?a("chat.subAgents.statusPending"):n==="cancelled"?a("chat.subAgents.statusCancelled"):n==="error"||n==="failed"?a("chat.subAgents.statusFailed"):n??"",v=()=>{S(!1),f(!0)},T=()=>{f(!1),l(e)},w=r.jsxs("div",{children:[r.jsx(I,{justify:"flex-end",style:{marginBottom:p.marginXS},children:r.jsx(_,{size:"small",type:"link",onClick:v,children:a("chat.subAgents.previewExpand")})}),r.jsx(Ce,{preview:h,maxHeight:320})]});return r.jsxs(r.Fragment,{children:[r.jsx(Ke,{trigger:"hover",mouseEnterDelay:.3,open:b&&!x,onOpenChange:S,content:w,overlayInnerStyle:{width:420},children:u}),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:o||a("chat.subAgents.fallbackTitle")}),n?r.jsx(W,{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:a("chat.subAgents.previewClose")}),r.jsx(_,{type:"primary",onClick:T,children:a("chat.subAgents.previewOpenSession")})]}),children:r.jsx(Ce,{preview:h,maxHeight:"60vh"})})]})},{Text:z}=ee,{useToken:lt}=te,it=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"},at=d.memo(({parentSessionId:t,item:e,index:o,compact:n,isRetrying:l,isContinuing:u,isDeleting:a,subagentProfilesById:p,onOpenChild:b,onContinueChild:S,onRetryChild:x,onTogglePin:f,onDeleteChild:A})=>{const{token:m}=lt(),{t:h}=q(),j=Te(t,e.childSessionId),P=nt(j,e.outputPreview),v=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=it(e.status),D=w==="running",H=l||u||a,U=["running","completed","cancelled","error","failed"].includes(w),B=C=>C==="running"?h("chat.subAgents.statusRunning"):C==="completed"?h("chat.subAgents.statusCompleted"):C==="pending"?h("chat.subAgents.statusPending"):C==="cancelled"?h("chat.subAgents.statusCancelled"):C==="error"||C==="failed"?h("chat.subAgents.statusFailed"):C,k=C=>C==="running"?m.colorPrimary:C==="completed"?m.colorSuccess:C==="error"||C==="failed"?m.colorError:C==="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&&o>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(z,{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:B(w)}),e.pinned?h("chat.subAgents.pinned"):null,e.lifecycle==="resident"?h("chat.subAgents.residentBadge"):null,Se(e.subagentType,p,{compact:!0})]}):r.jsxs(r.Fragment,{children:[r.jsx(W,{color:w==="running"?"processing":w==="completed"?"success":w==="error"||w==="failed"?"error":w==="cancelled"?"warning":"default",style:v,children:B(w)}),e.pinned?r.jsx(W,{color:"warning",style:v,children:h("chat.subAgents.pinned")}):null,e.lifecycle==="resident"?r.jsx(W,{color:"purple",style:v,children:h("chat.subAgents.residentBadge")}):null,Se(e.subagentType,p)]})]}),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(z,{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(we,{parentSessionId:t,childSessionId:e.childSessionId,childTitle:e.title,status:w,onOpenChild:b,children:r.jsx(z,{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})}):U?r.jsx(we,{parentSessionId:t,childSessionId:e.childSessionId,childTitle:e.title,status:w,onOpenChild:b,children:r.jsx(z,{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(z,{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:()=>b(e.childSessionId),children:h("chat.subAgents.open")}),r.jsx(_,{size:"small",type:n?"text":"default",style:T,loading:u,disabled:a||l,"data-testid":`sub-agent-continue-${e.childSessionId}`,onClick:()=>S(e.childSessionId),children:h("chat.subAgents.continue")}),r.jsx(qe,{trigger:["click"],menu:{items:[{key:"regenerate",label:h("chat.actions.regenerate")},{key:"error_retry",label:h("chat.actions.retryFailed")}],onClick:({key:C})=>{x(e.childSessionId,C)}},disabled:a||D||u,children:r.jsx(_,{size:"small",type:n?"text":"default",style:T,loading:l,disabled:a||D||u,"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:a,disabled:l,"data-testid":`sub-agent-delete-${e.childSessionId}`,onClick:()=>A(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:N}=ee,{useToken:Ee}=te,ut="chat-session-sub-agents-collapsed:",ct=3,dt=600,L=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"},gt=(t,e)=>{if(e&&e.trim())return e;if(t.isRunning)return"running";if(t.lastRunStatus&&t.lastRunStatus.trim())return t.lastRunStatus;const o=t.messageCount??0;return o>2?"completed":(o>0,"pending")},ht=new Set(["running","pending"]),pt=t=>ht.has(L(t)),V=(t,e)=>{const o=a=>L(a)==="running"?0:1,n=o(t.status)-o(e.status);if(n!==0)return n;const l=a=>{const p=Date.parse(a.lastEventAt||a.updatedAt||"");return Number.isFinite(p)?p:0},u=l(e)-l(t);return u!==0?u:t.childSessionId.localeCompare(e.childSessionId)},Pe=t=>`${ut}${t}`,xe=t=>{if(typeof window>"u")return!1;try{const e=window.localStorage.getItem(Pe(t));return e==="1"?!0:e==="0"?!1:null}catch{return null}},ft=(t,e)=>{if(!(typeof window>"u"))try{window.localStorage.setItem(Pe(t),e?"1":"0")}catch{}},ve=(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&&t.lifecycle===e.lifecycle&&t.residentName===e.residentName,At=({parentSessionId:t,compact:e=!1})=>{const{t:o}=q(),{token:n}=Ee(),{message:l}=Je.useApp(),[u,a]=d.useState(()=>xe(t)??!1),[p,b]=d.useState(null),[S,x]=d.useState(null),[f,A]=d.useState(null),[m,h]=d.useState(!1),j=R(s=>Ue(t)(s)),P=R(s=>s.chats),v=R(s=>s.loadChatHistory),T=R(s=>s.refreshChats),w=R(s=>s.markOptimisticStart),D=R(s=>s.markRetryStart),H=R(s=>s.markSettleTimeout),U=R(s=>s.pinSession),B=R(s=>s.unpinSession),k=R(s=>s.applyChildProgress),C=R(s=>s.clearChildProgress),{byId:ke}=tt(),ne=d.useRef(new Map),se=d.useMemo(()=>Object.entries(j).map(([s,c])=>({childSessionId:s,...c})),[j]),re=d.useMemo(()=>P.filter(s=>s.kind==="child"&&s.parentSessionId===t).sort((s,c)=>{const y=Date.parse(s.updatedAt||"")||0;return(Date.parse(c.updatedAt||"")||0)-y}),[P,t]),$=d.useMemo(()=>{const s=new Map(se.map(i=>[i.childSessionId,i])),c=ne.current,y=[];for(const i of re){const g=s.get(i.id),E={childSessionId:i.id,title:i.title||(g==null?void 0:g.title),status:L(gt(i,g==null?void 0:g.status)),error:(g==null?void 0:g.error)||i.lastRunError,lastHeartbeatAt:g==null?void 0:g.lastHeartbeatAt,lastEventAt:g==null?void 0:g.lastEventAt,outputPreview:g==null?void 0:g.outputPreview,roundCount:g==null?void 0:g.roundCount,pinned:i.pinned,updatedAt:i.updatedAt,isRunning:i.isRunning,messageCount:i.messageCount,lastRunStatus:i.lastRunStatus,lastRunError:i.lastRunError,subagentType:i.subagentType??null,lifecycle:i.lifecycle??null,residentName:i.residentName??null},M=c.get(i.id);y.push(M&&ve(M,E)?M:E),s.delete(i.id)}for(const i of s.values()){const g={childSessionId:i.childSessionId,title:i.title,status:L(i.status),error:i.error,lastHeartbeatAt:i.lastHeartbeatAt,lastEventAt:i.lastEventAt,outputPreview:i.outputPreview,roundCount:i.roundCount},E=c.get(i.childSessionId);y.push(E&&ve(E,g)?E:g)}return ne.current=new Map(y.map(i=>[i.childSessionId,i])),y},[re,se]),{residentItems:G,activeItems:K,completedItems:O}=d.useMemo(()=>{const s=[],c=[],y=[];for(const i of $)i.lifecycle==="resident"?s.push(i):pt(i.status)?c.push(i):y.push(i);return s.sort(V),c.sort(V),y.sort(V),{residentItems:s,activeItems:c,completedItems:y}},[$]);d.useEffect(()=>{a(xe(t)??!1)},[t]);const Re=d.useCallback(()=>{a(s=>{const c=!s;return ft(t,c),c})},[t]),oe=d.useCallback(s=>s instanceof Error&&s.message.trim()?s.message:o("chat.subAgents.runChildFailed"),[o]),le=d.useCallback(async(s,c="regenerate")=>{b(s),k(t,s,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),D(s);try{const y=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(!y.success)throw new Error(y.result||"Failed to run sub-agent");k(t,s,{status:"running",error:void 0,lastEventAt:new Date().toISOString()}),await v(s,{mode:"replace"}),await T()}catch(y){H(s),k(t,s,{status:"error",error:oe(y),lastEventAt:new Date().toISOString()})}finally{b(y=>y===s?null:y)}},[v,t,T,D,H,oe,k]),ie=d.useCallback(async s=>{const c=typeof window<"u"?window.prompt.bind(window):null;if(!c)return;const y=c("Send a follow-up message to this sub-agent:","Continue from where you left off.");if(y===null)return;const i=y.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 g=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(!g.success)throw new Error(g.result||"Follow-up failed");let E="running";try{const M=JSON.parse(g.result);M.status==="message_delivered_live"?(E="running",l.success(o("chat.subAgents.steeredLive"))):M.status==="message_queued"?(E="pending",l.info(o("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(g){H(s),k(t,s,{status:"error",error:g instanceof Error&&g.message.trim()?g.message:o("chat.subAgents.continueChildFailed"),lastEventAt:new Date().toISOString()})}finally{x(g=>g===s?null:g)}},[t,T,w,H,k,o,l]),ae=d.useCallback(async s=>{A(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");C(t,s),await T()}finally{A(c=>c===s?null:c)}},[C,t,T]),_e=d.useCallback(s=>{Ge(s),v(s)},[v]),Ie=d.useCallback(s=>{ie(s)},[ie]),$e=d.useCallback((s,c)=>{le(s,c)},[le]),He=d.useCallback((s,c)=>{c?B(s):U(s)},[U,B]),Me=d.useCallback(s=>{ae(s)},[ae]);if($.length===0)return null;const ue=r.jsxs(N,{strong:!0,children:[o("chat.subAgents.title")," ",r.jsx(N,{type:"secondary",children:K.length>0?o("chat.subAgents.headerCount",{active:K.length,total:$.length}):`(${$.length})`})]}),ce=r.jsx(_,{type:"text",size:"small",icon:u?r.jsx(ye,{}):r.jsx(be,{}),onClick:Re,"data-testid":"sub-agents-toggle",style:e?{paddingInline:4}:void 0,children:o(u?"chat.subAgents.expand":"chat.subAgents.collapse")}),Y=(s,c)=>r.jsx(at,{parentSessionId:t,item:s,index:c,compact:e,isRetrying:p===s.childSessionId,isContinuing:S===s.childSessionId,isDeleting:f===s.childSessionId,subagentProfilesById:ke,onOpenChild:_e,onContinueChild:Ie,onRetryChild:$e,onTogglePin:He,onDeleteChild:Me},s.childSessionId),de=O.length<=ct,ge=u?r.jsx(N,{type:"secondary","data-testid":"sub-agents-collapsed-hint",children:o("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:`${dt}px`,overflowY:"auto",overflowX:"hidden",paddingRight:e?0:n.paddingXS},children:[G.length>0?r.jsxs(r.Fragment,{children:[r.jsx(N,{type:"secondary","data-testid":"sub-agents-resident-label",style:{fontSize:12,opacity:.75},children:o("chat.subAgents.residentGroup",{count:G.length})}),G.map((s,c)=>Y(s,c))]}):null,K.length>0?K.map((s,c)=>Y(s,c)):G.length===0&&O.length>0&&!de?r.jsx(N,{type:"secondary","data-testid":"sub-agents-no-active",children:o("chat.subAgents.noActive")}):null,O.length>0?de?O.map((s,c)=>Y(s,c)):r.jsxs(r.Fragment,{children:[r.jsx(_,{type:"text",size:"small","data-testid":"sub-agents-completed-toggle",icon:m?r.jsx(be,{}):r.jsx(ye,{}),onClick:()=>h(s=>!s),style:{alignSelf:"flex-start",paddingInline:4,color:n.colorTextSecondary},children:o("chat.subAgents.completedGroup",{count:O.length})}),m?O.map((s,c)=>Y(s,c)):null]}):null]}),he=!u&&$.length>1?r.jsx(mt,{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:ue}),r.jsx("div",{style:{flex:"0 0 auto"},children:ce})]}),r.jsxs("div",{style:{padding:`${n.paddingXS}px 0 0`},children:[ge,he]})]}):r.jsxs(Ve,{size:"small",className:"lotus-settings-card",style:{marginBottom:n.marginMD},"data-testid":"sub-agents-panel",title:ue,extra:ce,children:[ge,he]})},mt=({items:t})=>{const{token:e}=Ee(),{t:o}=q(),n=t.reduce((u,a)=>{const p=L(a.status);return p==="completed"?u.completed++:p==="running"?u.running++:p==="error"||p==="failed"?u.error++:p==="cancelled"?u.cancelled++:u.pending++,u},{completed:0,running:0,error:0,pending:0,cancelled:0}),l=[];return n.completed>0&&l.push(o("chat.subAgents.summaryCompleted",{count:n.completed})),n.running>0&&l.push(o("chat.subAgents.summaryRunning",{count:n.running})),n.pending>0&&l.push(o("chat.subAgents.summaryPending",{count:n.pending})),n.cancelled>0&&l.push(`${n.cancelled} ${o("chat.subAgents.statusCancelled")}`),n.error>0&&l.push(o("chat.subAgents.summaryFailed",{count:n.error})),l.length===0?null:r.jsx(Q,{block:!0,items:l,style:{marginTop:e.marginXS}})};export{At as SubAgentsPanel};